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 +++++++++++++++++++---------------- src/main/resources/templates/febs/views/modules/runVip/buyVipList.html | 4 ++-- 2 files changed, 21 insertions(+), 18 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); + } } } //返利给上级 diff --git a/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html b/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html index 79512a9..faa2c5b 100644 --- a/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html +++ b/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html @@ -61,8 +61,8 @@ <script type="text/html" id="commissionOption"> {{# if(d.state == 2){ }} - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="user:update" lay-event="chargeAgreeEvent">确认</button> - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="user:update" lay-event="chargeDisAgreeEvent">取消</button> + <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="charge:update" lay-event="chargeAgreeEvent">确认</button> + <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="charge:update" lay-event="chargeDisAgreeEvent">取消</button> {{# } }} </script> <script data-th-inline="none" type="text/javascript"> -- Gitblit v1.9.1