From 6ecb1b986263a544fd341830f388fd6263bf4349 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 23 Nov 2022 13:07:43 +0800
Subject: [PATCH] 20221117

---
 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java                |    3 
 src/main/java/cc/mrbird/febs/dapp/enumerate/MemberLevelEnum.java                |   54 ++++++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java       |   13 +++-
 src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java |   39 +++++++++++--
 src/test/java/cc/mrbird/febs/JunitTest.java                                     |   22 +++++++
 5 files changed, 121 insertions(+), 10 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/MemberLevelEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/MemberLevelEnum.java
new file mode 100644
index 0000000..a04fb6e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/MemberLevelEnum.java
@@ -0,0 +1,54 @@
+package cc.mrbird.febs.dapp.enumerate;
+
+import lombok.Getter;
+
+@Getter
+public enum MemberLevelEnum {
+    LEVEL_GP("LEVEL_GP",9),
+    LEVEL_SP("LEVEL_SP",8),
+    LEVEL_BP("LEVEL_BP",7),
+    LEVEL_GIB("LEVEL_GIB",6),
+    LEVEL_AIB("LEVEL_AIB",5),
+    LEVEL_CIB("LEVEL_CIB",4),
+    LEVEL_FIB("LEVEL_FIB",3),
+    LEVEL_IB("LEVEL_IB",2),
+    LEVEL_MB("LEVEL_MB",1);
+
+
+    private String type;
+
+    private Integer code;
+
+    MemberLevelEnum(String type, Integer code) {
+        this.type = type;
+        this.code = code;
+    }
+
+    public int getLevelCode(String Level){
+        int codeOne = 0;
+        for (MemberLevelEnum value : MemberLevelEnum.values()) {
+            if(value.type.equals(Level)){
+                codeOne = value.code;
+            }
+        }
+        return codeOne;
+    }
+
+    //比较两个级别的大小,levelOne大于levelTwo返回1,否则返回0
+    public int compareLevel(String levelOne ,String levelTwo) {
+        int codeOne = 0;
+        int codeTwo = 0;
+        for (MemberLevelEnum value : MemberLevelEnum.values()) {
+            if(value.type.equals(levelOne)){
+                codeOne = value.code;
+            }
+            if(value.type.equals(levelTwo)){
+                codeTwo = value.code;
+            }
+        }
+        if(codeOne > codeTwo){
+            return 1;
+        }
+        return 0;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
index e1af962..3e86d3c 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -66,7 +66,8 @@
      * 生成流水佣金和盈利分成和流水记录,返回剩余盈利
      * @param refererIds
      */
-    BigDecimal updateLSYJYLFC(List<String> refererIds, BigDecimal totalProfit,long id);
+    BigDecimal updateLSYJ(List<String> refererIds, BigDecimal totalProfit,long id);
+    BigDecimal updateYLFC(List<String> refererIds, BigDecimal totalProfit,long id);
 
     /**
      * 平台分成,返回剩余盈利
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
index b2e4574..cbf66ad 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
@@ -9,6 +9,7 @@
 import cc.mrbird.febs.dapp.dto.ApiStartDto;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
+import cc.mrbird.febs.dapp.enumerate.MemberLevelEnum;
 import cc.mrbird.febs.dapp.enumerate.MemberOnHookPlanEnum;
 import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.ApiIgtOnHookPlanService;
@@ -191,13 +192,25 @@
 //                }
 //            }
 //        }
+
+        //根据上下级,筛选用户的级别
+        ArrayList<String> refererIdLisstUp = new ArrayList<>();
+        String levelNext = MemberLevelEnum.LEVEL_MB.getType();
+        for(String inviteId : refererIdList){
+            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+            String identityUp = dappMemberUp.getIdentity();
+            int compareLevelResult = MemberLevelEnum.LEVEL_MB.compareLevel(identityUp, levelNext);
+            if(0 < compareLevelResult){
+                levelNext = identityUp;
+                refererIdLisstUp.add(inviteId);
+            }
+        }
         //生成流水佣金和盈利分成和流水记录,返回剩余盈利
-        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit.multiply(new BigDecimal(0.4)),igtOnHookPlanOrder.getId());
-        //生成流水佣金和盈利分成和流水记录,返回盈利分成和流水佣金总共分成
-//        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
+        BigDecimal profitSharingTotal = dappWalletService.updateLSYJ(refererIdLisstUp, totalProfit.multiply(new BigDecimal(0.2)),igtOnHookPlanOrder.getId());
+        BigDecimal profitFlowTotal = dappWalletService.updateYLFC(refererIdLisstUp, totalProfit.multiply(new BigDecimal(0.2)),igtOnHookPlanOrder.getId());
         //平台分成
         //平台拿走35%盈利分成和流水佣金剩下的全部
-        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal);
+        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal).subtract(profitFlowTotal);
         BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,systemAdd,igtOnHookPlanOrder.getId());
         //个人固定拿走60%
         totalProfit = totalProfit.multiply(new BigDecimal(0.6));
@@ -573,11 +586,25 @@
 //                }
 //            }
 //        }
+
+        //根据上下级,筛选用户的级别
+        ArrayList<String> refererIdLisstUp = new ArrayList<>();
+        String levelNext = MemberLevelEnum.LEVEL_MB.getType();
+        for(String inviteId : refererIdList){
+            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+            String identityUp = dappMemberUp.getIdentity();
+            int compareLevelResult = MemberLevelEnum.LEVEL_MB.compareLevel(identityUp, levelNext);
+            if(0 < compareLevelResult){
+                levelNext = identityUp;
+                refererIdLisstUp.add(inviteId);
+            }
+        }
         //生成流水佣金和盈利分成和流水记录,返回剩余盈利
-        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit.multiply(new BigDecimal(0.4)),igtOnHookPlanOrder.getId());
+        BigDecimal profitSharingTotal = dappWalletService.updateLSYJ(refererIdLisstUp, totalProfit.multiply(new BigDecimal(0.2)),igtOnHookPlanOrder.getId());
+        BigDecimal profitFlowTotal = dappWalletService.updateYLFC(refererIdLisstUp, totalProfit.multiply(new BigDecimal(0.2)),igtOnHookPlanOrder.getId());
         //平台分成
         //平台拿走35%盈利分成和流水佣金剩下的全部
-        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal);
+        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal).subtract(profitFlowTotal);
         BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,systemAdd,igtOnHookPlanOrder.getId());
         //个人固定拿走60%
         totalProfit = totalProfit.multiply(new BigDecimal(0.6));
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index 6cb1639..7cdb187 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -975,7 +975,7 @@
         return new FebsResponse().success().message(MessageSourceUtils.getString("Operation_001"));
     }
     @Override
-    public BigDecimal updateLSYJYLFC(List<String> refererIdList,BigDecimal totalProfit,long id) {
+    public BigDecimal updateLSYJ(List<String> refererIdList,BigDecimal totalProfit,long id) {
         //计算盈利分成
         BigDecimal profitSharingTotal = BigDecimal.ZERO;
         if(BigDecimal.ZERO.compareTo(totalProfit)>=0){
@@ -1187,10 +1187,17 @@
                     profitSharingTotal = profitSharingTotal.add(multiply);
                 }
             }
-
-
         }
+        return profitSharingTotal;
+    }
+
+    @Override
+    public BigDecimal updateYLFC(List<String> refererIdList, BigDecimal totalProfit, long id) {
         //计算流水佣金
+        BigDecimal profitSharingTotal = BigDecimal.ZERO;
+        if(BigDecimal.ZERO.compareTo(totalProfit)>=0){
+            return profitSharingTotal;
+        }
         if(CollUtil.isNotEmpty(refererIdList)){
             String LEVEL_AIB = isIdentity(refererIdList, DataDictionaryEnum.LEVEL_AIB.getCode());
             if(!DataDictionaryEnum.LEVEL_AIB.getCode().equals(LEVEL_AIB)){
diff --git a/src/test/java/cc/mrbird/febs/JunitTest.java b/src/test/java/cc/mrbird/febs/JunitTest.java
index 7e0386b..ffcf458 100644
--- a/src/test/java/cc/mrbird/febs/JunitTest.java
+++ b/src/test/java/cc/mrbird/febs/JunitTest.java
@@ -9,6 +9,7 @@
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
+import cc.mrbird.febs.dapp.enumerate.MemberLevelEnum;
 import cc.mrbird.febs.dapp.enumerate.MemberOnHookPlanEnum;
 import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.ApiIgtOnHookPlanService;
@@ -55,6 +56,27 @@
     @Autowired
     private DappMemberDao dappMemberDao;
 
+    @Test
+    public void referenceId(){
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(1129L);
+        String refererIds = dappMemberEntity.getRefererIds();
+        List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
+
+        //根据上下级,筛选用户的级别
+        ArrayList<String> refererIdLisstUp = new ArrayList<>();
+        String levelNext = MemberLevelEnum.LEVEL_MB.getType();
+        for(String inviteId : refererIdList){
+            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+            String identityUp = dappMemberUp.getIdentity();
+            int compareLevelResult = MemberLevelEnum.LEVEL_MB.compareLevel(identityUp, levelNext);
+            if(0 < compareLevelResult){
+                levelNext = identityUp;
+                refererIdLisstUp.add(inviteId);
+            }
+        }
+        System.out.println(refererIdLisstUp);
+    }
+
 //    @Test
 //    public void incomeTest() {
 //        mineProfitJob.start();

--
Gitblit v1.9.1