xiaoyong931011
2023-05-08 f501ddfe054f23e50239dff36270fc2f56d15e7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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<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.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);
            }
        }
    }
}