From ff2845059d92bb71c7901e18a4936a246b7aa1e5 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 23 Dec 2024 18:13:28 +0800
Subject: [PATCH] perf(mall): 优化节点助力功能

---
 src/main/java/cc/mrbird/febs/mall/service/AsyncService.java                 |    2 +-
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java |   16 ++++++++++++++--
 src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java        |    4 ++--
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java b/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java
index dbedd8a..f913a72 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java
@@ -13,5 +13,5 @@
     void releaseScore(BigDecimal amount,Long memberId);
 
     @Async(FebsConstant.ASYNC_POOL)
-    void releaseNodeCoin(BigDecimal amount,BigDecimal percent,BigDecimal balanceToCoin,Long memberId);
+    void releaseNodeCoin(BigDecimal amount, BigDecimal percent, BigDecimal balanceToCoin, Long memberId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
index d661692..c3585fd 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
@@ -43,8 +43,8 @@
     }
 
     @Override
-    public void releaseNodeCoin(BigDecimal amount, BigDecimal percent, BigDecimal balanceToCoin,Long memberId) {
-        //实际节点返利的金额
+    public void releaseNodeCoin(BigDecimal amount, BigDecimal percent, BigDecimal balanceToCoin, Long memberId) {
+        //实际节点助力的碳币
         BigDecimal multiply = amount.multiply(percent);
         if(BigDecimal.ZERO.compareTo(multiply) >=0){
             return;
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 c7e69f2..ad680eb 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
@@ -710,15 +710,25 @@
                         RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getType(),
                         RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getCode()).getValue()
         ).setScale(2, BigDecimal.ROUND_DOWN);
+
+        DateTime endTime = DateUtil.date();
         for (MallMember item : mallMembers) {
             //获取总业绩
-            BigDecimal achieve = getDirectAchieve(item.getInviteId());
+            BigDecimal achieve = getDirectAchieve(item.getInviteId(),item.getDirectorTime(),endTime);
+            if(BigDecimal.ZERO.compareTo(achieve) >= 0){
+                continue;
+            }
             BigDecimal nodePercent = getNodePercent(runNodeSets, achieve);
+            if(BigDecimal.ZERO.compareTo(nodePercent) >= 0){
+                continue;
+            }
             asyncService.releaseNodeCoin(achieve,nodePercent,balanceToCoin,item.getId());
+            item.setDirectorTime(endTime);
+            mallMemberMapper.updateById(item);
         }
     }
 
-    private BigDecimal getDirectAchieve(String inviteId) {
+    private BigDecimal getDirectAchieve(String inviteId,Date startTime,Date endTime) {
 
         try {
             // 获取直推成员和团队成员的ID集合
@@ -733,6 +743,8 @@
                     new LambdaQueryWrapper<MallCharge>()
                             .in(MallCharge::getMemberId, memberIds)
                             .eq(MallCharge::getState, YesOrNoEnum.YES.getValue())
+                            .ge(MallCharge::getCreatedTime, startTime)
+                            .lt(MallCharge::getCreatedTime, endTime)
             );
 
             if (CollUtil.isEmpty(mallCharges)) {

--
Gitblit v1.9.1