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