KKSU
2025-01-03 11e160c6ac65cba824596b0f4b718d766878ed82
fix(mall): 修复跑级计算错误

- 在 AgentServiceImpl 和 RunVipServiceImpl 中修正了跑级计算逻辑
- 将累计金额与当前等级的赠送金额相加,以正确计算下一个等级所需金额
- 优化了金额比较逻辑,确保正确判断是否达到下一个等级
2 files modified
22 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -350,13 +350,15 @@
                RunVip runVipNow = runVipMap.get(mallMember.getLevel());
                RunVip runVipNext = runVips.stream().filter(runVip -> runVip.getOrderNumber() == runVipNow.getOrderNumber() + 1).findFirst().orElse(null);
                if(null != runVipNext){
                    BigDecimal add = runVipNow.getPresentPrice().add(amount);
                    runVipGrow = new RunVipGrow();
                    runVipGrow.setMemberId(memberId);
                    runVipGrow.setLevelNow(mallMember.getLevel());
                    runVipGrow.setLevelNext(runVipNext.getVipCode());
                    runVipGrow.setAmountAll(runVipNext.getPresentPrice());
                    runVipGrow.setAmount(amount);
                    runVipGrow.setAmountNow(amount);
                    runVipGrow.setAmount(add);
                    runVipGrow.setAmountNow(add);
                    runVipGrowMapper.insert(runVipGrow);
                }
            }
src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
@@ -546,16 +546,21 @@
            runVipGrow.setAmount(amount);
            runVipGrowMapper.updateById(runVipGrow);
        }else{
            BigDecimal presentPrice = runVip.getPresentPrice();
            BigDecimal add = presentPrice.add(amount);
            BigDecimal presentPriceNext = runVipNext.getPresentPrice();
            runVipGrow = new RunVipGrow();
            runVipGrow.setMemberId(memberId);
            runVipGrow.setLevelNow(memberLevel);
            runVipGrow.setLevelNext(runVipNext.getVipCode());
            runVipGrow.setAmountAll(runVipNext.getPresentPrice());
            runVipGrow.setAmount(amount);
            runVipGrow.setAmountNow(amount);
            runVipGrow.setAmountAll(presentPriceNext);
            runVipGrow.setAmount(add);
            runVipGrow.setAmountNow(add);
            runVipGrowMapper.insert(runVipGrow);
            if(runVipGrow.getAmountAll().compareTo(amount) <= 0){
            if(presentPriceNext.compareTo(add) <= 0){
                mallCharge.setVipCode(runVipGrow.getLevelNext());
            }
        }
@@ -663,7 +668,8 @@
                mallCharge.setVipCode(runVipGrow.getLevelNext());
            }
        }else{
            if(runVipNext.getPresentPrice().compareTo(amount) <= 0){
            BigDecimal add = runVip.getPresentPrice().add(amount);
            if(runVipNext.getPresentPrice().compareTo(add) <= 0){
                mallCharge.setVipCode(runVipNext.getVipCode());
            }
        }