KKSU
2024-07-30 c1af5cf94920702b6aa962881365116542e88ab0
src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
@@ -1,12 +1,20 @@
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
@@ -17,9 +25,20 @@
@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;
@@ -31,4 +50,85 @@
            return false;
        }
    }
    @Override
    public List<DataDictionaryCustom> findDataDicByType(String type) {
        return dataDictionaryCustomMapper.selectDicByType(type);
    }
    @Override
    public List<AppVersion> 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<MallOrderItem> 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.setCostAmount(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);
            }
        }
    }
}