From 3d3734ca69d0894e1e1f77db215c0ffc5a8811b2 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 22 Apr 2024 10:51:06 +0800
Subject: [PATCH] 滑点权重改成U计算

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |    1 +
 src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java    |   10 +++++++---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |   22 ++++++++++++++++++++--
 src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java                 |    1 +
 4 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java
index 2d04629..f2cf477 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java
@@ -19,6 +19,7 @@
 
     private Long memberId;
 
+    private BigDecimal price;//投入GFA数量
     private BigDecimal amount;//投入GFA数量
 
     private BigDecimal amountDone;//累计产出
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
index 08cbdba..c884515 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
@@ -442,7 +442,7 @@
             queryWrapper.eq("state",DappAchieve.STATUS_ING);
             List<DappAchieve> dappAchieveSumList = dappAchieveMapper.selectList(queryWrapper);
             //个人团队总业绩
-            BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add);
             if(BigDecimal.ZERO.compareTo(teamAchieveMemberSum) >= 0){
                 continue;
             }
@@ -517,10 +517,13 @@
         BigDecimal multiplyDivideEveryUsdt = divideEveryUsdt.multiply(selfPercentMultiply);
         BigDecimal multiplyDivideEveryCoin = divideEveryCoin.multiply(selfPercentMultiply);
         //当前生效中的质押总数
-        BigDecimal amountMemberTotal = dappAchieves.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal amountMemberTotal = dappAchieves.stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add);
         if(BigDecimal.ZERO.compareTo(amountMemberTotal) >= 0){
             return;
         }
+
+
+
         BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(amountMemberTotal,8,BigDecimal.ROUND_DOWN);
         BigDecimal everyCoin = multiplyDivideEveryCoin.divide(amountMemberTotal,8,BigDecimal.ROUND_DOWN);
 
@@ -528,7 +531,8 @@
         Set<Long> set = collect.keySet(); // 得到所有key的集合
         for (Long memberId : set) {
             //当前每个人生效中的质押总数
-            BigDecimal amountMember = collect.get(memberId).stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+//            BigDecimal amountMember = collect.get(memberId).stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal amountMember = collect.get(memberId).stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add);
             //这个人实际可以分到的数量USDT
             BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(8, BigDecimal.ROUND_DOWN);
             if(BigDecimal.ZERO.compareTo(multiplyUsdt) >= 0){
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index ddb6c7e..1f74ef7 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -379,10 +379,28 @@
             Set<Long> collect1 = filteredList.stream().map(DappAchieve::getMemberId).collect(Collectors.toSet());
             teamListVo.setAvaCount(CollUtil.isEmpty(collect1) ? 0 : collect1.size());
 
-            BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+//            BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add);
+//            BigDecimal teamAchieveMemberSum = BigDecimal.ZERO;
+//            if(CollUtil.isNotEmpty(dappAchieveSumList)){
+//                for(DappAchieve dappAchieve : dappAchieveSumList){
+//                    BigDecimal price = dappAchieve.getPrice();
+//                    BigDecimal amount = dappAchieve.getAmount();
+//                    teamAchieveMemberSum = teamAchieveMemberSum.add(price.multiply(amount)).setScale(2,BigDecimal.ROUND_DOWN);
+//                }
+//            }
             teamListVo.setTeamAmount(teamAchieveMemberSum);
 
-            BigDecimal avaAmount = filteredList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+//            BigDecimal avaAmount = filteredList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal avaAmount = filteredList.stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add);
+//            BigDecimal avaAmount = BigDecimal.ZERO;
+//            if(CollUtil.isNotEmpty(filteredList)){
+//                for(DappAchieve dappAchieve : filteredList){
+//                    BigDecimal price = dappAchieve.getPrice();
+//                    BigDecimal amount = dappAchieve.getAmount();
+//                    avaAmount = avaAmount.add(price.multiply(amount)).setScale(2,BigDecimal.ROUND_DOWN);
+//                }
+//            }
             teamListVo.setAvaAmount(avaAmount);
         }else{
             teamListVo.setAvaCount(0);
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 5ceb1cd..28c7560 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
@@ -323,6 +323,7 @@
             //新增一条用户质押记录
             DappAchieve dappAchieve = new DappAchieve();
             dappAchieve.setMemberId(memberId);
+            dappAchieve.setPrice(transferDto.getPrice());
             dappAchieve.setAmount(amount);
             BigDecimal achieveReleasePercent = new BigDecimal("0.01").multiply(
                     new BigDecimal(redisUtils.getString(DataDicEnum.GFA_ACHIEVE_RELEASE.getValue())).setScale(2,BigDecimal.ROUND_DOWN)

--
Gitblit v1.9.1