From 65cf739fe077c398d35e58a083a1c7be40a3b7a2 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Sun, 06 Aug 2023 23:32:39 +0800
Subject: [PATCH] 数据修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |  107 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 91 insertions(+), 16 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 4315ec3..4bc2400 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
@@ -2,6 +2,7 @@
 
 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;
@@ -2488,26 +2489,100 @@
             return;
         }
 
-        List<DataDictionaryCustom> dicList = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL);
-        DataDictionaryCustom dic = null;
-        for (DataDictionaryCustom dataDictionaryCustom : dicList) {
-            if (Integer.parseInt(dataDictionaryCustom.getValue()) == parentNode.CHILD.size()) {
-                dic = dataDictionaryCustom;
-                break;
-            }
-        }
-
-        if (dic == null) {
+        MatrixTree matrixTree = MatrixTree.getInstance();
+        List<MemberNode> allNodes = matrixTree.getAllAncestors(parentNode); // 获取某一个MemberNode的所有上级节点
+        allNodes.add(parentNode);
+        if(CollUtil.isEmpty(allNodes)){
             return;
         }
+        /**
+         * 更新所有上级的小区业绩
+         */
+        for(MemberNode memberNode : allNodes){
+            BigDecimal smallAchieve = BigDecimal.ZERO;
+            List<MemberNode> allNodesChildList = memberNode.getCHILD();
+            if(CollUtil.isNotEmpty(allNodesChildList)){
+                List<Long> left = allNodesChildList.stream().filter(allNodesChild -> allNodesChild.getType() == 1).map(MemberNode::getMemberId).collect(Collectors.toList());
+                List<Long> right = allNodesChildList.stream().filter(allNodesChild -> allNodesChild.getType() == 2).map(MemberNode::getMemberId).collect(Collectors.toList());
 
-        MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
-        parentMember.setChildNodeCnt(parentNode.CHILD.size());
-        int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel());
-        if (Integer.parseInt(dic.getValue()) >= levelCode) {
-            parentMember.setLevel(dic.getCode());
+                BigDecimal leftAmount = mallAchieveRecordMapper.selectSumAchieveByMemberIdList(left);
+
+                BigDecimal rightAmount = mallAchieveRecordMapper.selectSumAchieveByMemberIdList(right);
+                if(leftAmount.compareTo(rightAmount) > 0){
+                    smallAchieve = rightAmount;
+                }else{
+                    smallAchieve = leftAmount;
+                }
+                //更新用户的区域业绩
+                DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberNode.getMemberId());
+                dappMemberEntity.setUsdtBalance(smallAchieve);
+                dappMemberEntity.setLeftAchieve(leftAmount);
+                dappMemberEntity.setRightAchieve(rightAmount);
+                dappMemberDao.updateById(dappMemberEntity);
+                log.info("用户:{},leftAchieve :{}, rightAchieve:{}, smallAchieve:{}",
+                        dappMemberEntity.getAddress(), leftAmount, rightAmount, smallAchieve);
+
+                /**
+                 * 判断是否符合升级条件
+                 */
+                String nextLevel = MemberLevelEnum.MEMBER.getNextLevel(dappMemberEntity.getAccountType());
+                DataDictionaryCustom memberLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                        DataDictionaryEnum.V1.getType()
+                        , nextLevel);
+                if(ObjectUtil.isNotEmpty(memberLevelDic)){
+                    String value = memberLevelDic.getValue();
+                    cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj(value);
+                    BigDecimal smallAchieveDic = new BigDecimal(parseObj.get("smallAchieve").toString());
+                    if(smallAchieve.compareTo(smallAchieveDic) >= 0){
+                        //升级
+                        dappMemberEntity.setAccountType(nextLevel);
+                        dappMemberDao.updateById(dappMemberEntity);
+                    }
+                }
+            }
         }
-        memberMapper.updateById(parentMember);
+    }
+
+    @Override
+    public void memberPerk() {
+        List<DappMemberEntity> dappMemberEntityList = dappMemberDao.selectMemberByActiveStatus();
+        if(CollUtil.isEmpty(dappMemberEntityList)){
+            return;
+        }
+        DataDictionaryCustom staticReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.STATIC_RELEASE.getType(),
+                DataDictionaryEnum.STATIC_RELEASE.getCode()
+        );
+        if(ObjectUtil.isEmpty(staticReleaseDic)){
+            return;
+        }
+        BigDecimal staticRelease = new BigDecimal(staticReleaseDic.getValue() == null ? "0" : staticReleaseDic.getValue());
+        if(BigDecimal.ZERO.compareTo(staticRelease) >= 0){
+            return;
+        }
+        for(DappMemberEntity dappMemberEntity :  dappMemberEntityList){
+            if(1 != dappMemberEntity.getActiveStatus()){
+                break;
+            }
+            List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
+            /**
+             * 按照订单、比例生成对应的静态释放
+             */
+            for(MallAchieveRecord mallAchieveRecord : mallAchieveRecords){
+                BigDecimal costAmount = mallAchieveRecord.getCostAmount();
+                BigDecimal amount = mallAchieveRecord.getAmount();
+                BigDecimal eachDayPerk = costAmount.multiply(staticRelease).setScale(2,BigDecimal.ROUND_DOWN);
+                /**
+                 * 生成一条静态补贴的流水
+                 * 增加账户余额
+                 * 生成减少赠送积分流水
+                 * 减少账户的赠送积分
+                 * 业绩记录减少实际业绩amount
+                 *
+                 */
+            }
+
+        }
     }
 
     /**

--
Gitblit v1.9.1