package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.enumerates.MemberLevelEnum; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.ICommonService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.List; /** * @author wzy * @date 2021-09-16 **/ @Slf4j @Service @RequiredArgsConstructor public class CommonService implements ICommonService { private final RedisUtils redisUtils; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final AppVersionMapper appVersionMapper; private final MallOrderInfoMapper mallOrderInfoMapper; private final MallMemberMapper memberMapper; private final MallGoodsMapper mallGoodsMapper; private final MallGoodsSkuMapper mallGoodsSkuMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; @Override public boolean verifyCode(String account, String code) { if ("SMS_CODE".equals(code)) { return true; } String cacheCode = redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + account); if (StrUtil.isBlank(cacheCode)) { return false; } if (code.equals(cacheCode)) { redisUtils.del(AppContants.VERIFY_CODE_PREFIX + account); return true; } else { return false; } } @Override public List findDataDicByType(String type) { return dataDictionaryCustomMapper.selectDicByType(type); } @Override public List findAppVersion() { return appVersionMapper.selectList(null); } @Override public void addDataDic(String type, String code, Object value, String description) { DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(type, code); String data = JSONObject.toJSONString(value); if (dic != null) { dic.setValue(data); dataDictionaryCustomMapper.updateById(dic); return; } dic = new DataDictionaryCustom(); dic.setCode(code); dic.setType(type); dic.setValue(data); dic.setDescription(description); dataDictionaryCustomMapper.insert(dic); } @Override public void updateDataDic(String type, String code, String value) { DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(type, code); if (dic != null) { dic.setValue(value); dataDictionaryCustomMapper.updateById(dic); } } @Override public void addAchieveAndUpdateLevel(Long orderId,Long memberId){ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(orderId); MallMember member = memberMapper.selectById(memberId); boolean hasTc = false; BigDecimal achieveAmount = BigDecimal.ZERO; List orderItems = mallOrderInfoMapper.getMallOrderItemByOrderId(orderId); if (CollUtil.isNotEmpty(orderItems)) { for (MallOrderItem orderItem : orderItems) { MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); if (mallGoods.getIsNormal() == 2) { hasTc = true; achieveAmount = achieveAmount.add(sku.getPresentPrice().multiply(new BigDecimal(orderItem.getCnt()))); } } } if (hasTc){ if(achieveAmount.compareTo(BigDecimal.ZERO) > 0) { // 添加业绩 MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); mallAchieveRecord.setMemberId(memberId); mallAchieveRecord.setAmount(achieveAmount); mallAchieveRecord.setAchieveTime(orderInfo.getPayTime()); mallAchieveRecord.setOrderId(orderInfo.getId()); mallAchieveRecord.setIsNormal(2); mallAchieveRecord.setPayTime(orderInfo.getPayTime()); mallAchieveRecordMapper.insert(mallAchieveRecord); //得到三倍补助 // BigDecimal multiply = achieveAmount.multiply(new BigDecimal(3)); // memberWalletService.add(multiply, memberId, "commission"); } if(member.getLevel().equals(MemberLevelEnum.FANS.getType())){ member.setLevel(MemberLevelEnum.NORMAL.getType()); memberMapper.updateById(member); } } } }