refactor(vip): 优化积分和返佣金额的计算逻辑
- 移除了不必要的除以100 操作,直接使用百分比进行计算
- 简化了计算过程,提高了代码可读性和性能
- 保留了原有的精度处理和四舍五入逻辑
1 files modified
8 ■■■■ changed files
src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
@@ -113,7 +113,7 @@
        if(ObjectUtil.isNotEmpty(happyMemberLevel)){
            // 计算自己获得的积分
            BigDecimal minePercent = happyMemberLevel.getMinePercent();
            BigDecimal mineScore = amount.multiply(minePercent.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN)).setScale(0, RoundingMode.HALF_DOWN);
            BigDecimal mineScore = amount.multiply(minePercent).setScale(0, RoundingMode.HALF_DOWN);
            if(BigDecimal.ZERO.compareTo(mineScore) < 0){
                recommendScoreMap.put(memberId, mineScore);
                recommendTypeScoreMap.put(memberId, ScoreFlowTypeEnum.MINE_RECOMMEND.getValue());
@@ -122,7 +122,7 @@
            if(StrUtil.isNotEmpty(member.getReferrerId())){
                MallMember refMember = mallMemberMapper.selectInfoByInviteId(member.getReferrerId());
                BigDecimal otherPercent = happyMemberLevel.getOtherPercent();
                BigDecimal otherScore = amount.multiply(otherPercent.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN)).setScale(0, RoundingMode.HALF_DOWN);
                BigDecimal otherScore = amount.multiply(otherPercent).setScale(0, RoundingMode.HALF_DOWN);
                if(BigDecimal.ZERO.compareTo(otherScore) < 0){
                    recommendScoreMap.put(refMember.getId(), otherScore);
                    recommendTypeScoreMap.put(memberId, ScoreFlowTypeEnum.OTHER_RECOMMEND.getValue());
@@ -275,8 +275,8 @@
            return;
        }
        // 计算返佣金额
        BigDecimal divide = happySaleLevel.getReturnPercent().divide(new BigDecimal(100));
        BigDecimal multiply = mallOrderInfo.getAmount().multiply(divide).setScale(2, RoundingMode.HALF_DOWN);
        BigDecimal returnPercent = happySaleLevel.getReturnPercent();
        BigDecimal multiply = mallOrderInfo.getAmount().multiply(returnPercent).setScale(2, RoundingMode.HALF_DOWN);
        // 如果返佣金额小于等于0,则直接返回
        if(BigDecimal.ZERO.compareTo(multiply) >=0){
            return;