From 9b93e015970c3257f3e7ae866bc6832a14246040 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 25 Aug 2023 13:02:34 +0800
Subject: [PATCH] 后台修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   96 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml                |    6 +++
 src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java     |    2 +
 src/test/java/cc/mrbird/febs/JunitTest.java                               |   10 ++++
 4 files changed, 113 insertions(+), 1 deletions(-)

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 1cb55ae..9411f9e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/MallAchieveRecordMapper.java
@@ -27,6 +27,8 @@
 
     List<MallAchieveRecord> selectListByMemberId(@Param("memberId")Long memberId);
 
+    List<MallAchieveRecord> selectListCostAmountByMemberId(@Param("memberId")Long memberId);
+
     BigDecimal selectAchieveTotalByMemberIdAndCreateTime(@Param("memberId")Long id, @Param("date")Date createTime);
 
     BigDecimal selectAchieveTotalByCreateTime(@Param("date")Date createTime);
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..0ec6d3e 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
@@ -2952,6 +2952,102 @@
             BigDecimal amountMagic = amount;
             List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
             if(CollUtil.isEmpty(mallAchieveRecords)){
+
+                BigDecimal localTotalAchieve = amount;
+                /**
+                 * 用户减少赠送积分
+                 */
+                DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+                DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
+                BigDecimal totalScore = dappWalletMineEntity.getTotalAmount();
+                BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount();
+
+                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;
             }
             //实际获取总收益
diff --git a/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml b/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
index 12d216f..573991c 100644
--- a/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
+++ b/src/main/resources/mapper/dapp/MallAchieveRecordMapper.xml
@@ -44,6 +44,12 @@
         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}
+        order by CREATE_TIME asc
+    </select>
+
     <select id="selectAchieveTotalByMemberIdAndCreateTime" resultType="java.math.BigDecimal">
         select IFNULL(sum(IFNULL(amount,0)),0) from mall_achieve_record
         where
diff --git a/src/test/java/cc/mrbird/febs/JunitTest.java b/src/test/java/cc/mrbird/febs/JunitTest.java
index e5aba90..e8caa14 100644
--- a/src/test/java/cc/mrbird/febs/JunitTest.java
+++ b/src/test/java/cc/mrbird/febs/JunitTest.java
@@ -7,6 +7,7 @@
 import cc.mrbird.febs.dapp.service.DappMemberService;
 import cc.mrbird.febs.dapp.service.DappSystemService;
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
@@ -25,6 +26,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @author 
@@ -99,7 +101,13 @@
         /**
          * 实际更新账户业绩余额和积分
          */
-        dappSystemService.updateAchieve();
+        Set<DappMemberEntity> dappMemberEntities = dappSystemService.updateAchieve();
+        if(CollUtil.isNotEmpty(dappMemberEntities)){
+            /**
+             * 奖励;团队产生的收益1%奖励积分,对标价格
+             */
+            dappSystemService.updatePackage(dappMemberEntities);
+        }
     }
 //
 //    @Test

--
Gitblit v1.9.1