From e6be1946f0a669385d5c27743c3d96113af6bf5a Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Tue, 14 Jan 2025 09:43:21 +0800
Subject: [PATCH] fix(mall): 修复直推成员缓存逻辑

---
 src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java |   44 +++++++++++++++++++-------------------------
 1 files changed, 19 insertions(+), 25 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
index 69534ef..d46432f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
@@ -33,7 +33,6 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -105,10 +104,12 @@
                         .orderByDesc(RunVipGrow::getId)
         ).stream().findFirst().orElse(null);
         if(runVipGrow != null){
-            BigDecimal amountNow = runVipGrow.getAmountNow();
-            reduceAmount = reduceAmount.add(amountNow);
+            reduceAmount = runVipGrow.getAmountNow();
         }
         presentAmount = presentAmount.subtract(reduceAmount);
+        if(BigDecimal.ZERO.compareTo(presentAmount) >= 0){
+            throw new FebsException("支付异常,请刷新页面重试");
+        }
 
         Long addressId = apiGoChargeDto.getAddressId();
         MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(addressId);
@@ -202,10 +203,12 @@
                         .orderByDesc(RunVipGrow::getId)
         ).stream().findFirst().orElse(null);
         if(runVipGrow != null){
-            BigDecimal amountNow = runVipGrow.getAmountNow();
-            reduceAmount = reduceAmount.add(amountNow);
+            reduceAmount = runVipGrow.getAmountNow();
         }
         presentAmount = presentAmount.subtract(reduceAmount);
+        if(BigDecimal.ZERO.compareTo(presentAmount) >= 0){
+            throw new FebsException("支付异常,请刷新页面重试");
+        }
 
         MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
         if(mallMemberWallet.getCommission().compareTo(BigDecimal.ZERO) <= 0){
@@ -493,7 +496,7 @@
         if(runVipNext == null){
             throw new FebsException("无法升级会员权益");
         }
-        if(runVip.getOrderNumber() < runVipNext.getOrderNumber()){
+        if(runVip.getOrderNumber() >= runVipNext.getOrderNumber()){
             throw new FebsException("用户无法升级");
         }
 
@@ -535,28 +538,18 @@
             BigDecimal subtract = amountAll.subtract(amountNow);
 
             if(subtract.compareTo(amount) <= 0){
-                runVipGrow.setAmountNow(amountAll);
-
                 mallCharge.setVipCode(runVipGrow.getLevelNext());
             }else{
-                runVipGrow.setAmountNow(amountNow.add(amount).setScale(2, RoundingMode.DOWN));
-
                 mallCharge.setVipCode(memberLevel);
             }
-            runVipGrow.setAmount(amount);
-            runVipGrowMapper.updateById(runVipGrow);
         }else{
-            runVipGrow = new RunVipGrow();
-            runVipGrow.setMemberId(memberId);
-            runVipGrow.setLevelNow(memberLevel);
-            runVipGrow.setLevelNext(runVipNext.getVipCode());
-            runVipGrow.setAmountAll(runVipNext.getPresentPrice());
-            runVipGrow.setAmount(amount);
-            runVipGrow.setAmountNow(amount);
-            runVipGrowMapper.insert(runVipGrow);
 
-            if(runVipGrow.getAmountAll().compareTo(amount) <= 0){
-                mallCharge.setVipCode(runVipGrow.getLevelNext());
+            BigDecimal presentPrice = runVip.getPresentPrice();
+            BigDecimal add = presentPrice.add(amount);
+
+            BigDecimal presentPriceNext = runVipNext.getPresentPrice();
+            if(presentPriceNext.compareTo(add) <= 0){
+                mallCharge.setVipCode(runVipNext.getVipCode());
             }
         }
         mallChargeMapper.insert(mallCharge);
@@ -597,7 +590,7 @@
         if(runVipNext == null){
             throw new FebsException("无法升级会员权益");
         }
-        if(runVip.getOrderNumber() < runVipNext.getOrderNumber()){
+        if(runVip.getOrderNumber() >= runVipNext.getOrderNumber()){
             throw new FebsException("用户无法升级");
         }
 
@@ -663,7 +656,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());
             }
         }
@@ -703,7 +697,7 @@
         ).stream().findFirst().orElse(null);
         if(runVipGrow != null){
             BigDecimal amountNow = runVipGrow.getAmountNow();
-            reduceAmount = reduceAmount.add(amountNow);
+            reduceAmount = amountNow;
         }
         apiReduceAmountVo.setReduceAmount(reduceAmount);
         return new FebsResponse().success().data(apiReduceAmountVo);

--
Gitblit v1.9.1