fix
Hentua
2024-01-24 2bcf4cc63c2838213cf580af3b53ca757fe8a374
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
package cc.mrbird.febs.vip.service.impl;
 
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.entity.MallOrderItem;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.vip.entity.MallVipBenefits;
import cc.mrbird.febs.vip.service.IMallVipConfigService;
import cc.mrbird.febs.vip.service.IVipCommonService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.math.BigDecimal;
 
@Slf4j
@Service
@RequiredArgsConstructor
public class VipCommonServiceImpl implements IVipCommonService {
 
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final IMallVipConfigService mallVipConfigService;
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final IApiMallMemberWalletService mallMemberWalletService;
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void getScore(Long orderId) {
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderDetailsById(orderId);
        if (mallOrderInfo == null) {
            return;
        }
 
        Long memberId = mallOrderInfo.getMemberId();
        MallVipBenefits mallVipBenefits = mallVipConfigService.hasVipBenefits(memberId);
 
        BigDecimal multiple = BigDecimal.ONE;
        String name = "";
        if (mallVipBenefits != null) {
            multiple = mallVipBenefits.getScoreMultiple();
            name = mallVipBenefits.getName();
        }
 
        double sum = mallOrderInfo.getItems().stream().map(MallOrderItem::getAmount).mapToDouble(BigDecimal::doubleValue).sum();
 
        int score = multiple.multiply(BigDecimal.valueOf(sum)).intValue();
 
        mallMoneyFlowService.addMoneyFlow(memberId, new BigDecimal(score), ScoreFlowTypeEnum.BUY.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue(), name, 2);
        mallMemberWalletService.add(new BigDecimal(score), memberId, "prize_score");
    }
}