From ed4d8807978a6eed32d2b2e1273fdcaa89c6d9a4 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 09 May 2024 17:38:14 +0800
Subject: [PATCH] 合约监听

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)

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 b4c3daf..1161fdd 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
@@ -87,10 +87,9 @@
         BigDecimal ccToday = BigDecimal.ZERO;
         if(CollUtil.isNotEmpty(ccTodays)){
             for(DappMemberFund dappMemberFund : ccTodays){
-                BigDecimal sameCoin = dappMemberFund.getSameCoin();
-                BigDecimal finxMineCoin = dappMemberFund.getFinxMineCoin();
-                BigDecimal price = dappMemberFund.getPrice();
-                BigDecimal add = sameCoin.divide(price, 8, BigDecimal.ROUND_DOWN).add(finxMineCoin);
+                BigDecimal usdtCoin = dappMemberFund.getUsdtCoin();
+                BigDecimal coinTarget = dappMemberFund.getCoinTarget();
+                BigDecimal add = coinTarget.add(usdtCoin);
                 ccToday = ccToday.add(add);
             }
         }
@@ -98,23 +97,23 @@
 
         List<DappMemberFund> dappMemberFunds = dappMemberFundMapper.selectList(null);
         walletInfo.setCcTotal(CollUtil.isEmpty(dappMemberFunds) ? BigDecimal.ZERO :
-                dappMemberFunds.stream().map(item-> item.getAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN));
+                dappMemberFunds.stream().map(DappMemberFund::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN));
 
         List<DappAchieve> dappAchieves = dappAchieveMapper.selectListByMemberId(memberId);
 
         BigDecimal goldAmountDone = dappAchieveMapper.selectGoldAmountByMemberId(memberId);
         BigDecimal coinAmountDone = dappAchieveMapper.selectCoinAmountByMemberId(memberId);
         if(CollUtil.isNotEmpty(dappAchieves)){
-            BigDecimal goldAmount = dappAchieves.stream().map(item-> item.getGoldAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
-            BigDecimal coinAmount = dappAchieves.stream().map(item-> item.getCoinAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
+            BigDecimal goldAmount = dappAchieves.stream().map(DappAchieve::getGoldAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
+            BigDecimal coinAmount = dappAchieves.stream().map(DappAchieve::getCoinAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
             BigDecimal goldAmountAva = goldAmount.subtract(goldAmountDone);//金本位剩余
             BigDecimal coinAmountAva = coinAmount.subtract(coinAmountDone);//币本位剩余
-            if(goldAmountAva.compareTo(BigDecimal.ZERO) > 0){
+            if(goldAmountAva.compareTo(new BigDecimal(0.001)) > 0){
                 walletInfo.setGoldAmount(goldAmountAva);
             }else{
                 walletInfo.setGoldAmount(BigDecimal.ZERO);
             }
-            if(coinAmountAva.compareTo(BigDecimal.ZERO) > 0){
+            if(coinAmountAva.compareTo(new BigDecimal(0.001)) > 0){
                 walletInfo.setCoinAmount(coinAmountAva);
             }else{
                 walletInfo.setCoinAmount(BigDecimal.ZERO);
@@ -374,10 +373,21 @@
             dappAchieve.setAmountMax(achieveOut.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
             dappAchieve.setState(DappAchieve.STATUS_ING);
             dappAchieve.setAmountDone(BigDecimal.ZERO);
+
+            /**
+             * 计算金本位和币本位
+             *  金本位:数量*价格*70*产矿百分比
+             *  币本位:数量*30*产矿百分比
+             */
+            BigDecimal price = dappAchieve.getPrice();
+            BigDecimal goldAmount = amount.multiply(price).multiply(new BigDecimal("0.7")).multiply(achieveOut).setScale(8, BigDecimal.ROUND_DOWN);
+            BigDecimal coinAmount = amount.multiply(new BigDecimal("0.3")).multiply(achieveOut).setScale(8, BigDecimal.ROUND_DOWN);
+            dappAchieve.setGoldAmount(goldAmount);
+            dappAchieve.setCoinAmount(coinAmount);
             dappAchieveMapper.insert(dappAchieve);
 
             asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
-            asyncCjService.calculateAchieve(dappAchieve);
+//            asyncCjService.calculateAchieve(dappAchieve);
 
             //发送一个延时队列消息。24小时之后产生第一次的质押产出
 //            chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);

--
Gitblit v1.9.1