From 8d326b853cd3f2d2ca5f9a70b343389da63d9af6 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 23 Dec 2024 18:00:00 +0800
Subject: [PATCH] feat(mall): 新增节点规则功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java |   27 ++++++++++++++++++++-------
 1 files changed, 20 insertions(+), 7 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 507313d..37fad9e 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
@@ -50,12 +50,13 @@
     private final MallMemberMapper mallMemberMapper;
     @Override
     public List<ApiRunVipVo> vipInfo() {
-        MallMember member = LoginUserUtil.getLoginUser();
+        Long memberId = LoginUserUtil.getLoginUser().getId();
         List<ApiRunVipVo> apiRunVipVos = new ArrayList<>();
-        if (StrUtil.isEmpty(member.getLevel())) {
+        MallMember mallMember = mallMemberMapper.selectById(memberId);
+        if (StrUtil.isEmpty(mallMember.getLevel())) {
             return apiRunVipVos;
         }
-        String level = member.getLevel();
+        String level = mallMember.getLevel();
         //获取当前用户的VIP等级
         RunVip runVip = this.baseMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, level));
         //获取大于当前用户等级序号的所有的VIP等级
@@ -161,6 +162,9 @@
         MallCharge mallCharge = mallChargeMapper.selectOne(objectLambdaQueryWrapper);
 
         ApiGoChargeVo apiGoChargeVo = new ApiGoChargeVo();
+        if(null == mallCharge){
+            throw new FebsException("记录不存在");
+        }
         apiGoChargeVo.setFailTime(mallCharge.getFailTime());
         apiGoChargeVo.setAddress(mallCharge.getAddress());
         apiGoChargeVo.setAmount(mallCharge.getAmount());
@@ -304,10 +308,19 @@
         );
         if(CollUtil.isNotEmpty(mallMoneyFlows)){
             BigDecimal reduce = mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-            if(reduce.intValue() > realScore){
-                apiRunHealthVo.setScoreUsed(reduce.intValue() - realScore);
-                apiRunHealthVo.setScoreTotal(reduce.intValue());
-            }
+            apiRunHealthVo.setScoreTotal(reduce.intValue());
+        }
+        List<MallMoneyFlow> mallMoneyFlowScoreOuts = mallMoneyFlowMapper.selectList(
+                new LambdaQueryWrapper<MallMoneyFlow>()
+                        .eq(MallMoneyFlow::getMemberId, memberId)
+                        .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.SCORE.getValue())
+                        .eq(MallMoneyFlow::getType, RunVipMoneyFlowTypeEnum.SCORE_OUT_BALANCE.getValue())
+                        .ge(MallMoneyFlow::getCreatedTime, DateUtil.beginOfDay(DateUtil.date()))
+                        .le(MallMoneyFlow::getCreatedTime, DateUtil.endOfDay(DateUtil.date()))
+        );
+        if(CollUtil.isNotEmpty(mallMoneyFlowScoreOuts)){
+            BigDecimal reduce = mallMoneyFlowScoreOuts.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).abs();
+            apiRunHealthVo.setScoreUsed(reduce.intValue());
         }
         return apiRunHealthVo;
     }

--
Gitblit v1.9.1