From 6aad85204b92b3092a09dda58e17cea316d21e28 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 01 Feb 2024 16:23:58 +0800
Subject: [PATCH] 会员列表增加波卷功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index 5fe8162..2640d2a 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -863,9 +863,10 @@
                     mallProductBuy.setMateState(ProductEnum.PRODUCT_BUY_MATE_STATE_SUCCESS.getValue());
                     mallProductBuyMapper.updateById(mallProductBuy);
                     BigDecimal nftTotal = mallProductBuy.getNftTotal();
-                    insertSell(mallProductBuy.getMemberId(),nftTotal,nftTotal,BigDecimal.ZERO,BigDecimal.ZERO);
                     BigDecimal profit = nftTotal.multiply(profitPercent.multiply(new BigDecimal(0.01)));
-                    insertSell(mallProductBuy.getMemberId(),profit,profit,BigDecimal.ZERO,BigDecimal.ZERO);
+                    BigDecimal add = nftTotal.add(profit);
+                    insertSell(mallProductBuy.getMemberId(),add,add,BigDecimal.ZERO,BigDecimal.ZERO);
+//                    insertSell(mallProductBuy.getMemberId(),profit,profit,BigDecimal.ZERO,BigDecimal.ZERO);
 
                     /**
                      * 更新用户上级收益,冻结7天,7天时间到期自动释放到动态钱包
@@ -881,7 +882,8 @@
                                     DataDictionaryEnum.BASIC_PERK_DIRECT.getType(),
                                     DataDictionaryEnum.BASIC_PERK_DIRECT.getCode()
                             ).getValue()).multiply(new BigDecimal("0.01"));
-                            BigDecimal basicPerkDirect = profit.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN);
+//                            BigDecimal basicPerkDirect = profit.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN);
+                            BigDecimal basicPerkDirect = nftTotal.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN);
                             /**
                              * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行
                              */
@@ -923,7 +925,8 @@
                                 );
                                 TeamPerkDto teamPerkDto = JSONObject.parseObject(dataDictionaryCustom.getValue(), TeamPerkDto.class);
                                 if(compareLevel == 0){//团队奖励
-                                    BigDecimal PerkPercent = new BigDecimal(teamPerkDto.getPerkPercent());
+                                    BigDecimal PerkPercent = new BigDecimal(teamPerkDto.getPerkPercent())
+                                            .multiply(new BigDecimal("0.01"));
                                     BigDecimal teamPerk = PerkPercent.multiply(profit).setScale(2,BigDecimal.ROUND_DOWN);
                                     /**
                                      * 先插入流水记录,然后定时器循环,找寻对应的数据执行
@@ -943,7 +946,8 @@
                                     equalsPerkBasic = teamPerk;
                                     level = levelRef;
                                 }else if(compareLevel == 2){//平级奖励
-                                    BigDecimal equalsPerkPercent = new BigDecimal(teamPerkDto.getEqualsPerkPercent());
+                                    BigDecimal equalsPerkPercent = new BigDecimal(teamPerkDto.getEqualsPerkPercent())
+                                            .multiply(new BigDecimal("0.01"));
                                     BigDecimal equalsPerk = equalsPerkPercent.multiply(equalsPerkBasic).setScale(2,BigDecimal.ROUND_DOWN);
                                     String orderNo = MallUtils.getOrderNum("PJNFT");
                                     if(equalsPerk.compareTo(BigDecimal.ZERO) > 0){
@@ -1374,6 +1378,7 @@
             //上级
             String referrerId = mallMember.getReferrerId();
             MallMember mallMemberRef = memberMapper.selectInfoByInviteId(referrerId);
+            List<MallMember> mallMembersAll = memberMapper.selectAllChildAgentListByInviteId(referrerId);
 
             List<MallMember> mallMembers = memberMapper.selectByRefererId(referrerId);
             Set<Long> mallMembersSet = mallMembers.stream().map(MallMember::getId).collect(Collectors.toSet());
@@ -1387,6 +1392,7 @@
             /**
              * 从会员等级最低到最高,比较intersection与会员设置的直推人数directCntLevel比较
              * directCntLevel >= intersection.size(),则满足升级会员等级条件,跳出循环
+             * teamCnt >= mallMembersAll.size(),则满足升级会员等级条件,跳出循环
              * 达到最高级别后,升级会员等级,跳出循环
              */
             String level = MemberLevelNewEnum.ZERO_LEVEL.getType();
@@ -1397,7 +1403,9 @@
                 );
                 TeamPerkDto teamPerkDto = JSONObject.parseObject(levelDic.getValue(), TeamPerkDto.class);
                 Integer directCntLevel = teamPerkDto.getDirectCnt();
-                if(directCntLevel >= intersection.size()){
+                Integer teamCnt = teamPerkDto.getTeamCnt();
+                if(directCntLevel >= intersection.size() &&
+                        teamCnt >= mallMembersAll.size()){
                     mallMemberRef.setLevel(level);
                     memberMapper.updateById(mallMemberRef);
                     flag = true;

--
Gitblit v1.9.1