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