From eddc5253fd590be82fe689fb6eceea3f6c4fbb6b Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 19 Dec 2024 18:10:26 +0800 Subject: [PATCH] fix(mall): 修复跑路会员返利计算逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 35 +++++++++++++++++++---------------- 1 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index e4fbf32..ee71133 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -24,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; /** @@ -209,7 +210,7 @@ RunVip runVip = runVipMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, vipCode)); BigDecimal rebatePercent = runVip.getRebatePercent(); BigDecimal amount = mallCharge.getAmount(); - BigDecimal rebateAmount = amount.multiply(rebatePercent).setScale(2, BigDecimal.ROUND_DOWN); + BigDecimal rebateAmount = amount.multiply(rebatePercent).setScale(2, RoundingMode.DOWN); BigDecimal balanceToCoin = new BigDecimal( dataDictionaryCustomMapper.selectDicDataByTypeAndCode( @@ -217,7 +218,7 @@ RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getCode() ).getValue() ); - BigDecimal rebateCoin = rebateAmount.divide(balanceToCoin, 2, BigDecimal.ROUND_DOWN); + BigDecimal rebateCoin = rebateAmount.divide(balanceToCoin, 2, RoundingMode.DOWN); if(BigDecimal.ZERO.compareTo(rebateCoin) >= 0){ return; } @@ -227,22 +228,24 @@ } String orderNo = MallUtils.getOrderNum("FL"); if(null != parent.getReferrerId()){ - BigDecimal rebateCoinGrandpa = rebateCoin.multiply(rebatePercent); + BigDecimal rebateCoinGrandpa = rebateCoin.multiply(rebatePercent).setScale(2, RoundingMode.DOWN); MallMember grandpa = mallMemberMapper.selectInfoByInviteId(parent.getReferrerId()); if(null != grandpa){ - //返利给上上级 - walletService.addBalance(rebateCoinGrandpa,grandpa.getId()); - mallMemberService.runVipMoneyFlowAdd( - grandpa.getId(), - mallMember.getId(), - orderNo, - FlowTypeEnum.BALANCE.getValue(), - RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getValue(), - rebateCoinGrandpa, - StrUtil.format(RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getDescription(),mallMember.getPhone(),runVip.getVipName(),rebateCoinGrandpa), - YesOrNoEnum.YES.getValue() - ); - rebateCoin = rebateCoin.subtract(rebateCoinGrandpa); + if(BigDecimal.ZERO.compareTo(rebateCoinGrandpa) < 0){ + //返利给上上级 + walletService.addBalance(rebateCoinGrandpa,grandpa.getId()); + mallMemberService.runVipMoneyFlowAdd( + grandpa.getId(), + mallMember.getId(), + orderNo, + FlowTypeEnum.BALANCE.getValue(), + RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getValue(), + rebateCoinGrandpa, + StrUtil.format(RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getDescription(),mallMember.getPhone(),runVip.getVipName(),rebateCoinGrandpa), + YesOrNoEnum.YES.getValue() + ); + rebateCoin = rebateCoin.subtract(rebateCoinGrandpa).setScale(2, RoundingMode.DOWN); + } } } //返利给上级 -- Gitblit v1.9.1