From 7bf5945cdd7560922828f225c882d82f95405648 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 03 Jan 2025 10:27:31 +0800
Subject: [PATCH] feat(mall): 添加会员购买功能并优化节点助力逻辑

---
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index d6a9301..0324149 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -857,24 +857,28 @@
         }
         //获取节点设置
         List<RunNodeSet> runNodeSets = runNodeSetMapper.selectList(null);
-        BigDecimal balanceToCoin = new BigDecimal(
-                dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                        RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getType(),
-                        RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getCode()).getValue()
-        ).setScale(2, BigDecimal.ROUND_DOWN);
+
+        //获取节点设置runNodeSets中orderNumber最小的节点
+        RunNodeSet minRunNodeSet = runNodeSets.stream().min(Comparator.comparingInt(RunNodeSet::getOrderNumber)).orElse(null);
+        if(null == minRunNodeSet){
+            return;
+        }
 
         DateTime endTime = DateUtil.date();
         for (MallMember item : mallMembers) {
             //获取总业绩
             BigDecimal achieve = getDirectAchieve(item.getInviteId(),item.getDirectorTime(),endTime);
-            if(BigDecimal.ZERO.compareTo(achieve) >= 0){
+            //判断总业绩是否小于最小业绩
+            if(minRunNodeSet.getMinAchieve().compareTo(achieve) > 0){
+                item.setDirector(YesOrNoEnum.NO.getValue());
+                mallMemberMapper.updateById(item);
                 continue;
             }
             BigDecimal nodePercent = getNodePercent(runNodeSets, achieve);
             if(BigDecimal.ZERO.compareTo(nodePercent) >= 0){
                 continue;
             }
-            asyncService.releaseNodeCoin(achieve,nodePercent,balanceToCoin,item.getId());
+            asyncService.releaseNodeCoin(achieve,nodePercent,item.getId());
             item.setDirectorTime(endTime);
             mallMemberMapper.updateById(item);
         }

--
Gitblit v1.9.1