From f185d83c7a25c8ece24336fd889a09472d526688 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 03 Jan 2025 17:45:39 +0800
Subject: [PATCH] refactor(mall): 优化会员等级计算逻辑

---
 src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java |   24 +++++++-----------------
 1 files changed, 7 insertions(+), 17 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 8e99a59..9d1de84 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;
@@ -535,27 +534,17 @@
             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){
+            BigDecimal presentPrice = runVip.getPresentPrice();
+            BigDecimal add = presentPrice.add(amount);
+
+            BigDecimal presentPriceNext = runVipNext.getPresentPrice();
+            if(presentPriceNext.compareTo(add) <= 0){
                 mallCharge.setVipCode(runVipGrow.getLevelNext());
             }
         }
@@ -663,7 +652,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());
             }
         }

--
Gitblit v1.9.1