From 74cae02c58eb057e6f9422038d5b3ed30b7c9a2f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sat, 11 May 2024 10:40:07 +0800
Subject: [PATCH] 香港新环境

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |  169 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 141 insertions(+), 28 deletions(-)

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 2daa010..778c238 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
@@ -1,17 +1,14 @@
 package cc.mrbird.febs.dapp.service.impl;
 
 import cc.mrbird.febs.common.contants.AppContants;
-import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.tree.MatrixTree;
 import cc.mrbird.febs.common.tree.MemberNode;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
-import cc.mrbird.febs.common.utils.SpringContextUtil;
 import cc.mrbird.febs.dapp.chain.ChainEnum;
 import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.contract.ContractMain;
 import cc.mrbird.febs.dapp.dto.SystemDto;
-import cc.mrbird.febs.dapp.dto.TransferDto;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.enumerate.*;
 import cc.mrbird.febs.dapp.mapper.*;
@@ -25,24 +22,18 @@
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.Week;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
-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;
 
 import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.math.RoundingMode;
 import java.util.*;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
 
 /**
@@ -2469,7 +2460,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 +2620,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 +2935,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,13 +2945,116 @@
             }
             //当日预期总收益
             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;
+                /**
+                 * 用户减少赠送积分
+                 */
+                DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+                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;
+                    //当实际获取大于用户的赠送积分,将用户更新为未激活
+                    dappMemberEntity.setActiveStatus(2);
+                    dappMemberDao.updateById(dappMemberEntity);
+                }
+
+                DappAccountMoneyChangeEntity reduceScoreAMC = new DappAccountMoneyChangeEntity(
+                        memberId,
+                        totalScore,
+                        amountMagic.negate(),
+                        localTotalAchieve.negate(),
+                        AccountFlowEnum.SCORE.getCode(),
+                        null);
+                dappAccountMoneyChangeDao.insert(reduceScoreAMC);
+
+                //插入积分流水
+                DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+                        AccountFlowEnum.SCORE.getCode(),
+                        memberId,
+                        localTotalAchieve.negate(),
+                        FundFlowEnum.REDUCE_SCORE_REAL.getCode(),
+                        DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+                        BigDecimal.ZERO);
+                dappFundFlowDao.insert(scoreFlow);
+
+                BigDecimal totalScoreRelease = totalScore.subtract(localTotalAchieve);
+                BigDecimal availableScoreRelease = availableScore.subtract(localTotalAchieve);
+                //更新积分账户
+                dappWalletMineEntity.setTotalAmount(totalScoreRelease);
+                dappWalletMineEntity.setAvailableAmount(availableScoreRelease);
+                dappWalletMineDao.updateById(dappWalletMineEntity);
+
+
+                //用户增加余额
+                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
+                BigDecimal totalAmount = dappWalletCoinEntity.getTotalAmount();
+                BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+
+                DappAccountMoneyChangeEntity addAmountAMC = new DappAccountMoneyChangeEntity(
+                        memberId,
+                        totalAmount,
+                        amountMagic,
+                        localTotalAchieve,
+                        AccountFlowEnum.AMOUNT.getCode(),
+                        null);
+                dappAccountMoneyChangeDao.insert(addAmountAMC);
+                //插入余额流水
+                DappFundFlowEntity amountFlow = new DappFundFlowEntity(
+                        AccountFlowEnum.AMOUNT.getCode(),
+                        memberId,
+                        localTotalAchieve,
+                        FundFlowEnum.ADD_AMOUNT_REAL.getCode(),
+                        DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+                        BigDecimal.ZERO);
+                dappFundFlowDao.insert(amountFlow);
+
+                BigDecimal totalAmountRelease = totalAmount.add(localTotalAchieve);
+                BigDecimal availableAmountRelease = availableAmount.add(localTotalAchieve);
+                //更新余额账户
+                dappWalletCoinEntity.setTotalAmount(totalAmountRelease);
+                dappWalletCoinEntity.setAvailableAmount(availableAmountRelease);
+                dappWalletCoinDao.updateById(dappWalletCoinEntity);
+
+                StringBuffer content = new StringBuffer();
+                if(amountMagic.compareTo(localTotalAchieve) > 0){
+                    content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
+                            "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" +
+                            "限,增加消费金额可获得更多收益");
+                }else{
+                    content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
+                            "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN));
+                }
+                DappAccountMoneyChangeEntity record = new DappAccountMoneyChangeEntity(
+                        memberId,
+                        totalAmount,
+                        amountMagic,
+                        localTotalAchieve,
+                        AccountFlowEnum.AMOUNT_RECORD.getCode(),
+                        content.toString());
+                dappAccountMoneyChangeDao.insert(record);
+
+                //实时更新用户等级
+//                chainProducer.sendAutoLevelUpTeamMsg(memberId);
+
+                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(
@@ -2965,19 +3063,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{
                 /**
                  *
@@ -2986,12 +3088,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;
@@ -2999,9 +3107,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);
                     }
                 }
             }
@@ -3097,7 +3206,7 @@
             dappAccountMoneyChangeDao.insert(record);
 
             //实时更新用户等级
-            chainProducer.sendAutoLevelUpTeamMsg(memberId);
+//            chainProducer.sendAutoLevelUpTeamMsg(memberId);
 
             set.add(dappMemberEntity);
         }
@@ -3273,10 +3382,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;
             }

--
Gitblit v1.9.1