Administrator
2025-05-19 9b51a95fa8bc9b3a86108c6900e17fc55f8db467
refactor(vip): 优化积分和返佣计算逻辑

- 修改积分计算时的日志输出,增加下单获得积分和推荐人获得积分的日志
- 优化积分计算的比较逻辑,使用更简洁的方式
- 在返佣计算时增加日志输出,记录团长获得的返佣金额
- 修复返佣计算的比较逻辑,确保正确处理返佣金额小于等于 0 的情况
1 files modified
9 ■■■■ changed files
src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java 9 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
@@ -21,6 +21,7 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -110,11 +111,13 @@
        happyMemberLevelLambdaQueryWrapper.eq(HappyMemberLevel::getCode, director);
        happyMemberLevelLambdaQueryWrapper.last("limit 1");
        HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectOne(happyMemberLevelLambdaQueryWrapper);
        log.info("会员等级信息:{}", JSONUtil.toJsonStr(happyMemberLevel));
        if(ObjectUtil.isNotEmpty(happyMemberLevel)){
            // 计算自己获得的积分
            BigDecimal minePercent = happyMemberLevel.getMinePercent();
            BigDecimal mineScore = amount.multiply(minePercent).setScale(0, RoundingMode.HALF_DOWN);
            if(BigDecimal.ZERO.compareTo(mineScore) < 0){
            log.info("下单获得积分:{}", mineScore);
            if(mineScore.compareTo(BigDecimal.ZERO) > 0){
                recommendScoreMap.put(memberId, mineScore);
                recommendTypeScoreMap.put(memberId, ScoreFlowTypeEnum.MINE_RECOMMEND.getValue());
            }
@@ -123,7 +126,8 @@
                MallMember refMember = mallMemberMapper.selectInfoByInviteId(member.getReferrerId());
                BigDecimal otherPercent = happyMemberLevel.getOtherPercent();
                BigDecimal otherScore = amount.multiply(otherPercent).setScale(0, RoundingMode.HALF_DOWN);
                if(BigDecimal.ZERO.compareTo(otherScore) < 0){
                log.info("推荐人获得积分:{}", otherScore);
                if(otherScore.compareTo(BigDecimal.ZERO) > 0){
                    recommendScoreMap.put(refMember.getId(), otherScore);
                    recommendTypeScoreMap.put(memberId, ScoreFlowTypeEnum.OTHER_RECOMMEND.getValue());
                }
@@ -277,6 +281,7 @@
        // 计算返佣金额
        BigDecimal returnPercent = happySaleLevel.getReturnPercent();
        BigDecimal multiply = mallOrderInfo.getAmount().multiply(returnPercent).setScale(2, RoundingMode.HALF_DOWN);
        log.info("团长获得返佣:{}",multiply);
        // 如果返佣金额小于等于0,则直接返回
        if(BigDecimal.ZERO.compareTo(multiply) >=0){
            return;