From d03394c01ca1ae7f3431755c628e1bd2106dc287 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 28 Aug 2023 18:03:20 +0800
Subject: [PATCH] 后台修改

---
 src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java           |    8 ++++
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   63 ++++++++++++++++++++++---------
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |    6 ++-
 src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml                |    9 ++++
 src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java     |    1 
 5 files changed, 66 insertions(+), 21 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java b/src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java
index 19e60ff..a2df0e6 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/MallAchieveRecord.java
@@ -20,6 +20,10 @@
     private BigDecimal amount;
     //订单成本
     private BigDecimal costAmount;
+    //剩余积分
+    private BigDecimal score;
+    //总共积分
+    private BigDecimal costScore;
 
     private Date achieveTime;
 
@@ -34,6 +38,8 @@
 
 
     public MallAchieveRecord(Long memberId,
+                             BigDecimal score,
+                             BigDecimal costScore,
                              BigDecimal amount,
                              BigDecimal costAmount,
                              Date achieveTime,
@@ -41,6 +47,8 @@
                              Integer isNormal,
                              Date payTime) {
         this.memberId = memberId;
+        this.score = score;
+        this.costScore = costScore;
         this.amount = amount;
         this.costAmount = costAmount;
         this.achieveTime = achieveTime;
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java b/src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
index 9411f9e..83812ee 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
@@ -26,6 +26,7 @@
     List<MallAchieveRecord> selectListByDate(@Param("date")Date profitDate);
 
     List<MallAchieveRecord> selectListByMemberId(@Param("memberId")Long memberId);
+    List<MallAchieveRecord> selectListByMemberIdAndScore(@Param("memberId")Long memberId);
 
     List<MallAchieveRecord> selectListCostAmountByMemberId(@Param("memberId")Long memberId);
 
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 6cb3dc4..03eb2c8 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -218,7 +218,8 @@
             for(DappMemberEntity memberEntity : records){
                 Long memberId = memberEntity.getId();
 
-                List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
+//                List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
+                List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId);
                 BigDecimal myShareAchieve = BigDecimal.ZERO;
                 if(CollUtil.isNotEmpty(mallAchieveRecords)){
                     Date payTime = mallAchieveRecords.get(0).getPayTime();
@@ -545,7 +546,8 @@
         dappMemberInfoVo.setPayCnt(payCnt);
         dappMemberInfoVo.setCancelCnt(cancelCnt);
 
-        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(member.getId());
+//        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(member.getId());
+        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(member.getId());
         BigDecimal myShareAchieve = BigDecimal.ZERO;
         if(CollUtil.isNotEmpty(mallAchieveRecords)){
             Date payTime = mallAchieveRecords.get(0).getPayTime();
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index 0ec6d3e..41d4b9b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -33,6 +33,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.jline.utils.Log;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.web3j.utils.Convert;
@@ -2469,7 +2470,7 @@
          * 新增一条业绩
          */
         MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(
-                memberId,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime()
+                memberId,donateScore,donateScore,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime()
         );
         mallAchieveRecordMapper.insert(mallAchieveRecord);
 
@@ -2629,7 +2630,8 @@
             }
             Long perkMemberId = dappMemberEntity.getId();
             //获取当前用户所有进行中的业绩释放
-            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId);
+//            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId);
+            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(perkMemberId);
 
             if(CollUtil.isEmpty(mallAchieveRecords)){
                 continue;
@@ -2943,6 +2945,9 @@
         }
         for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){
             Long memberId = dappFundFlowEntity.getMemberId();
+            if(memberId == 2852L){
+                Log.info("1");
+            }
             //当日预期总收益
             BigDecimal amount = dappFundFlowEntity.getAmount();
             if(BigDecimal.ZERO.compareTo(amount) >= 0){
@@ -2950,8 +2955,9 @@
             }
             //当日预期总收益
             BigDecimal amountMagic = amount;
-            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
-            if(CollUtil.isEmpty(mallAchieveRecords)){
+//            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
+            List<MallAchieveRecord> mallAchieveRecordsScore = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId);
+            if(CollUtil.isEmpty(mallAchieveRecordsScore)){
 
                 BigDecimal localTotalAchieve = amount;
                 /**
@@ -2961,7 +2967,9 @@
                 DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
                 BigDecimal totalScore = dappWalletMineEntity.getTotalAmount();
                 BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount();
-
+                if(BigDecimal.ZERO.compareTo(totalScore) >= 0){
+                    continue;
+                }
                 if(localTotalAchieve.compareTo(totalScore) >= 0){
                     localTotalAchieve = totalScore;
                     //当实际获取大于用户的赠送积分,将用户更新为未激活
@@ -3050,9 +3058,13 @@
                 set.add(dappMemberEntity);
                 continue;
             }
+
+
             //实际获取总收益
             BigDecimal localTotalAchieve = BigDecimal.ZERO;
-            BigDecimal totalAchieve = mallAchieveRecords.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal totalAchieve = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal totalAchieveCostAmount = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getCostAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal totalScoreAva = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getScore).reduce(BigDecimal.ZERO, BigDecimal::add);
 
             //用户每日获取的最大值
             DataDictionaryCustom maxReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
@@ -3061,19 +3073,23 @@
             );
             BigDecimal maxRelease = new BigDecimal(ObjectUtil.isEmpty(maxReleaseDic) ? "1" : maxReleaseDic.getValue());
             //用户每日获取的最大值
-            BigDecimal maxReleaseMember = totalAchieve.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN);
+            BigDecimal maxReleaseMember = totalAchieveCostAmount.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN);
             if(amount.compareTo(maxReleaseMember) > 0){
                 amount = maxReleaseMember;
             }
             //当日获取总收益大于总业绩
-            if(amount.compareTo(totalAchieve) >= 0){
-                for(MallAchieveRecord memberAchieve : mallAchieveRecords){
+//            if(amount.compareTo(totalAchieve) >= 0){
+            if(amount.compareTo(totalScoreAva) >= 0){
+                for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){
                     memberAchieve.setIsNormal(2);
                     memberAchieve.setAmount(BigDecimal.ZERO);
+                    memberAchieve.setScore(BigDecimal.ZERO);
                     mallAchieveRecordMapper.updateById(memberAchieve);
                 }
-                localTotalAchieve = totalAchieve;
-                amount = amount.subtract(totalAchieve);
+//                localTotalAchieve = totalAchieve;
+//                amount = amount.subtract(totalAchieve);
+                localTotalAchieve = totalScoreAva;
+                amount = amount.subtract(totalScoreAva);
             }else{
                 /**
                  *
@@ -3082,12 +3098,18 @@
                  * amount 0 0
                  *
                  */
-                for(MallAchieveRecord memberAchieve : mallAchieveRecords){
+                for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){
                     BigDecimal achieveAmount = memberAchieve.getAmount();
-                    if(BigDecimal.ZERO.compareTo(amount) >= 0){
+                    BigDecimal achieveScoreAva = memberAchieve.getScore();
+                    if(BigDecimal.ZERO.compareTo(achieveScoreAva) >= 0){
                         break;
-                    }else if(amount.compareTo(achieveAmount) < 0){
-                        memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+                    }else if(amount.compareTo(achieveScoreAva) < 0){
+                        if(BigDecimal.ZERO.compareTo(achieveAmount.subtract(amount)) >= 0){
+                            memberAchieve.setAmount(BigDecimal.ZERO);
+                        }else{
+                            memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+                        }
+                        memberAchieve.setScore(achieveScoreAva.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
                         mallAchieveRecordMapper.updateById(memberAchieve);
                         localTotalAchieve = localTotalAchieve.add(amount);
                         amount = BigDecimal.ZERO;
@@ -3095,9 +3117,10 @@
                     }else{
                         memberAchieve.setIsNormal(2);
                         memberAchieve.setAmount(BigDecimal.ZERO);
+                        memberAchieve.setScore(BigDecimal.ZERO);
                         mallAchieveRecordMapper.updateById(memberAchieve);
-                        localTotalAchieve = localTotalAchieve.add(achieveAmount);
-                        amount = amount.subtract(achieveAmount);
+                        localTotalAchieve = localTotalAchieve.add(achieveScoreAva);
+                        amount = amount.subtract(achieveScoreAva);
                     }
                 }
             }
@@ -3369,10 +3392,14 @@
             return;
         }
         for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+            if(dappMemberEntity.getId() == 2852){
+                Log.info("1");
+            }
             /**
              * 每个人的第一次入单之后的业绩不一样
              */
-            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
+//            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
+            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(dappMemberEntity.getId());
             if(CollUtil.isEmpty(mallAchieveRecords)){
                 continue;
             }
diff --git a/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml b/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
index 573991c..1c41241 100644
--- a/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
+++ b/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
@@ -44,6 +44,13 @@
         order by CREATE_TIME asc
     </select>
 
+    <select id="selectListByMemberIdAndScore" resultType="cc.mrbird.febs.dapp.entity.MallAchieveRecord">
+        select * from mall_achieve_record
+        where member_id = #{memberId}
+        and score > 0
+        order by CREATE_TIME asc
+    </select>
+
     <select id="selectListCostAmountByMemberId" resultType="cc.mrbird.febs.dapp.entity.MallAchieveRecord">
         select * from mall_achieve_record
         where member_id = #{memberId}
@@ -51,7 +58,7 @@
     </select>
 
     <select id="selectAchieveTotalByMemberIdAndCreateTime" resultType="java.math.BigDecimal">
-        select IFNULL(sum(IFNULL(amount,0)),0) from mall_achieve_record
+        select IFNULL(sum(IFNULL(cost_amount,0)),0) from mall_achieve_record
         where
             member_id = #{memberId}
             and pay_time >= #{date}

--
Gitblit v1.9.1