From 2abf40714b49234e0111389f0651b5c5f7c22029 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 08 Aug 2023 12:37:13 +0800
Subject: [PATCH] 数据修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |  154 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 95 insertions(+), 59 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 4568cb3..34ed979 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
@@ -2764,10 +2764,7 @@
                 Long directMemberId = directMember.getId();
                 chainProducer.sendDirectPerkMsg(directMemberId);
             }
-
-
         }
-
     }
 
     @Override
@@ -2793,7 +2790,7 @@
          * 获取用户前一天的所有返利记录
          */
         List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectListByMemberIdAndTypeAndDate(memberId,
-                FundFlowEnum.STATIC_RELEASE.getCode(),DateUtil.now());
+                FundFlowEnum.STATIC_RELEASE.getCode(),DateUtil.offsetHour(DateUtil.date(),12));
         for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){
             BigDecimal staticReleaseAmount = dappFundFlowEntity.getAmount();
             BigDecimal directReleaseAmount = staticReleaseAmount.multiply(directRelease).setScale(2, BigDecimal.ROUND_DOWN);
@@ -2803,11 +2800,6 @@
 
     @Override
     public void teamStaticPerk() {
-        List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V1.getType());
-        if(CollUtil.isEmpty(dappMemberEntities)){
-            return;
-        }
-
         //平级
         DataDictionaryCustom teamPerkEqualsDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                 DataDictionaryEnum.TEAM_PERK_LEVEL_EQUALS.getType(),
@@ -2818,68 +2810,112 @@
                 DataDictionaryEnum.STATIC_RELEASE.getCode());
         BigDecimal staticRelease = new BigDecimal(ObjectUtil.isEmpty(staticReleaseDic) ? "0.006" : staticReleaseDic.getValue());
 
+        List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V1.getType());
+        teamStaticPerkMemberLevel(dappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V1.getCode());
+
+        List<DappMemberEntity> v2DappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V2.getType());
+        teamStaticPerkMemberLevel(v2DappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V2.getCode());
+
+        List<DappMemberEntity> v3DappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V3.getType());
+        teamStaticPerkMemberLevel(v3DappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V3.getCode());
+
+        List<DappMemberEntity> v4DappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V4.getType());
+        teamStaticPerkMemberLevel(v4DappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V4.getCode());
+
+        List<DappMemberEntity> v5DappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V5.getType());
+        teamStaticPerkMemberLevel(v5DappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V5.getCode());
+
+        List<DappMemberEntity> v6DappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V6.getType());
+        teamStaticPerkMemberLevel(v6DappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V6.getCode());
+
+        List<DappMemberEntity> v7DappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V7.getType());
+        teamStaticPerkMemberLevel(v7DappMemberEntities,teamPerkEquals,staticRelease,FundFlowEnum.TEAM_PERK_V7.getCode());
+
+    }
+
+    public void shareStaticPerk(List<DappMemberEntity> dappMemberEntities,int code) {
+        if(CollUtil.isEmpty(dappMemberEntities)){
+            return;
+        }
         for(DappMemberEntity dappMemberEntity : dappMemberEntities){
-            if(StrUtil.isNotEmpty(dappMemberEntity.getRefererIds())){
-                String referrerIds = dappMemberEntity.getRefererIds();
-                List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ",");
 
-                if(CollUtil.isNotEmpty(referrerIdList)){
-                    List<DappMemberEntity> mallMemberTeamPerk = dappMemberDao.selectByInviteIds(referrerIdList);
+        }
+    }
 
-                    if(CollUtil.isNotEmpty(mallMemberTeamPerk)){
-                        String levelNormal = MemberLevelEnum.V1.getType();
-                        BigDecimal cashPercentNormal = BigDecimal.ZERO;
-
-                        for(DappMemberEntity teamPerkMember : mallMemberTeamPerk){
-                            String level = teamPerkMember.getAccountType();
-                            //比较两个级别的大小,level大于levelNormal返回1
-                            int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal);
-                            int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V7.getType(), level);
-                            if(compareMin >= 1 && compareMax >= 1){
-                                DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                                        "TEAM_LEVEL", level);
-                                TeamLevelPerk adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), TeamLevelPerk.class);
-                                BigDecimal cashPercent = adminAgentInfo.getTeamPercent();
-                                //极差
-                                if(MemberLevelEnum.V1.compareLevel(levelNormal, level) == 0){
-                                    //平级
-                                    cashPercent = cashPercent.subtract(teamPerkEquals);
-                                }else{
-                                    cashPercent = cashPercent.subtract(cashPercentNormal);
-                                }
-                                //总业绩
-                                BigDecimal teamIncomeMax = BigDecimal.ZERO;
-                                //所有直推团队,就是这个会员的所有区域的业绩。
-
-                                // 直推用户
-                                List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(teamPerkMember.getInviteId());
-                                List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList());
-                                for(String inviteId : childsInviteIds){
-                                    BigDecimal totalIncomeMember = dappMemberDao.selectAllAchieveByInviteId(inviteId);
-                                    teamIncomeMax = teamIncomeMax.add(totalIncomeMember);
-                                }
-                                if(BigDecimal.ZERO.compareTo(teamIncomeMax) >= 0){
-                                    continue;
-                                }
-                                //V1加速团队静态收益的15%=每日静态的20000*6‰*15%=18元的额外释放加速
-                                BigDecimal cashAmount = teamIncomeMax.multiply(cashPercent).multiply(staticRelease).setScale(2, BigDecimal.ROUND_DOWN);
-
-                                BigDecimal bigDecimal = sendPerk(teamPerkMember, cashAmount, null, FundFlowEnum.TEAM_PERK.getCode());
-                                levelNormal = level;
-                                cashPercentNormal = adminAgentInfo.getTeamPercent();
-                            }
-                        }
-                    }
+    public void teamStaticPerkMemberLevel(List<DappMemberEntity> dappMemberEntities,
+                                          BigDecimal teamPerkEquals,
+                                          BigDecimal staticRelease,
+                                          int code) {
+        if(CollUtil.isEmpty(dappMemberEntities)){
+            return;
+        }
+        for(DappMemberEntity teamPerkMember : dappMemberEntities){
+            String level = teamPerkMember.getAccountType();
+            //比较两个级别的大小,level大于levelNormal返回1
+            int compareMin = MemberLevelEnum.V1.compareLevel(level, MemberLevelEnum.V1.getType());
+            int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V7.getType(), level);
+            if(compareMin >= 1 && compareMax >= 1){
+                DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                        "TEAM_LEVEL", level);
+                TeamLevelPerk adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), TeamLevelPerk.class);
+                BigDecimal cashPercent = adminAgentInfo.getTeamPercent();
+                // 直推用户
+                List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(teamPerkMember.getInviteId());
+                List<DappMemberEntity> collect = childs.stream()
+                        .filter(dappMemberEntity -> dappMemberEntity.getAccountType() == MemberLevelEnum.V1.getType())
+                        .collect(Collectors.toList());
+                //极差
+                if(CollUtil.isNotEmpty(collect)){
+                    //平级
+                    cashPercent = teamPerkEquals;
                 }
+                //所有直推团队,就是这个会员的所有区域的业绩。
+                List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList());
+                //总业绩
+                BigDecimal teamIncomeMax = BigDecimal.ZERO;
+                for(String inviteId : childsInviteIds){
+                    BigDecimal totalIncomeMember = dappMemberDao.selectAllAchieveByInviteId(inviteId);
+                    teamIncomeMax = teamIncomeMax.add(totalIncomeMember);
+                }
+                if(BigDecimal.ZERO.compareTo(teamIncomeMax) >= 0){
+                    continue;
+                }
+                //V1加速团队静态收益的15%=每日静态的20000*6‰*15%=18元的额外释放加速
+                BigDecimal cashAmount = teamIncomeMax.multiply(cashPercent).multiply(staticRelease).setScale(2, BigDecimal.ROUND_DOWN);
+
+                BigDecimal bigDecimal = sendPerk(teamPerkMember, cashAmount, null, code);
             }
         }
+
     }
 
     private BigDecimal sendPerk(DappMemberEntity parentMember,BigDecimal directReleaseAmount,Long orderId
                 ,Integer fundFlowEnumType){
 
         BigDecimal realScoreReduce = BigDecimal.ZERO;
-        //用户减少赠送积分
+        if(BigDecimal.ZERO.compareTo(directReleaseAmount) >= 0){
+            return realScoreReduce;
+        }
+        /**
+         * 减少业绩
+         */
+        List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(parentMember.getId());
+        if(CollUtil.isEmpty(mallAchieveRecords)){
+            return realScoreReduce;
+        }
+        BigDecimal totalAchieve = mallAchieveRecords.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        if(directReleaseAmount.compareTo(totalAchieve) >= 0){
+            realScoreReduce = totalAchieve;
+            for(MallAchieveRecord mallAchieveRecord : mallAchieveRecords){
+                mallAchieveRecord.setAmount(BigDecimal.ZERO);
+                mallAchieveRecord.setIsNormal(2);
+                mallAchieveRecordMapper.updateById(mallAchieveRecord);
+            }
+        }
+
+        /**
+         * 用户减少赠送积分
+         */
         DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(parentMember.getId());
         BigDecimal totalScore = dappWalletMineEntity.getTotalAmount();
         BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount();

--
Gitblit v1.9.1