Administrator
2025-05-19 d3e9f57c91ffc08e090bf8d4b8fcbf60f0d3a86f
src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
@@ -118,8 +118,15 @@
            BigDecimal mineScore = amount.multiply(minePercent).setScale(0, RoundingMode.HALF_DOWN);
            log.info("下单获得积分:{}", mineScore);
            if(mineScore.compareTo(BigDecimal.ZERO) > 0){
                recommendScoreMap.put(memberId, mineScore);
                recommendTypeScoreMap.put(memberId, ScoreFlowTypeEnum.MINE_RECOMMEND.getValue());
                mallMoneyFlowService.addMoneyFlow(
                        memberId,
                        mineScore,
                        ScoreFlowTypeEnum.MINE_RECOMMEND.getValue(),
                        mallOrderInfo.getOrderNo(),
                        FlowTypeEnum.PRIZE_SCORE.getValue(),
                        StrUtil.format( ScoreFlowTypeEnum.MINE_RECOMMEND.getDesc(),mineScore),
                        2);
                mallMemberWalletService.add(mineScore,memberId , "prizeScore");
            }
            // 计算推荐人获得的积分
            if(StrUtil.isNotEmpty(member.getReferrerId())){
@@ -128,29 +135,23 @@
                BigDecimal otherScore = amount.multiply(otherPercent).setScale(0, RoundingMode.HALF_DOWN);
                log.info("推荐人获得积分:{}", otherScore);
                if(otherScore.compareTo(BigDecimal.ZERO) > 0){
                    recommendScoreMap.put(refMember.getId(), otherScore);
                    recommendTypeScoreMap.put(memberId, ScoreFlowTypeEnum.OTHER_RECOMMEND.getValue());
                    mallMoneyFlowService.addMoneyFlow(
                            refMember.getId(),
                            otherScore,
                            ScoreFlowTypeEnum.OTHER_RECOMMEND.getValue(),
                            mallOrderInfo.getOrderNo(),
                            FlowTypeEnum.PRIZE_SCORE.getValue(),
                            StrUtil.format( ScoreFlowTypeEnum.OTHER_RECOMMEND.getDesc(),otherScore),
                            2);
                    mallMemberWalletService.add(otherScore,refMember.getId() , "prizeScore");
                }
            }
        }
        // 为推荐人和自己添加积分流动记录和更新钱包
        recommendScoreMap.forEach((key, value) -> {
            if (value != null) {
                mallMoneyFlowService.addMoneyFlow(
                        key,
                        value,
                        recommendTypeScoreMap.get(key),
                        mallOrderInfo.getOrderNo(),
                        FlowTypeEnum.PRIZE_SCORE.getValue(),
                        StrUtil.format(ScoreFlowTypeEnum.getDescByValue(recommendTypeScoreMap.get(key)),value),
                        2);
                mallMemberWalletService.add(value, key, "prizeScore");
            }
        });
        // 发送会员等级升级消息
        agentProducer.sendVipLevelUp(orderId);
        // 发送分销等级升级消息
        agentProducer.sendSaleLevelUp(orderId);
    }
@@ -161,6 +162,7 @@
     * @param orderId 订单ID
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void levelUp(Long orderId) {
        // 根据订单ID获取订单详细信息
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderDetailsById(orderId);
@@ -215,9 +217,6 @@
        member.setDirector(code);
        // 更新会员信息
        mallMemberMapper.updateById(member);
        // 发送分销等级升级消息
        agentProducer.sendSaleLevelUp(orderId);
    }
    /**
@@ -226,6 +225,7 @@
     * @param orderId 订单ID,用于识别和处理特定的订单
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saleLevelUp(Long orderId) {
        // 根据订单ID获取订单详细信息
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderDetailsById(orderId);
@@ -302,10 +302,10 @@
        );
        // 更新会员钱包中的余额
        mallMemberWalletService.add(multiply, storeMasterMember.getId(), "commission");
        mallMemberWalletService.add(multiply, storeMasterMember.getId(), "total_score");
        mallMemberWalletService.add(multiply, storeMasterMember.getId(), "totalScore");
        MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
        mallAchieveRecord.setMemberId(mallOrderInfo.getMemberId());
        mallAchieveRecord.setMemberId(storeMasterMember.getId());
        mallAchieveRecord.setAchieveTime(new Date());
        mallAchieveRecord.setAmount(mallOrderInfo.getAmount());
        mallAchieveRecord.setCostAmount(multiply);