From ed86dfe43e1815e6803568b137f8984735186b25 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 14 Sep 2022 21:47:48 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   45 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 40 insertions(+), 5 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 ad5521a..d5c7446 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
@@ -4,6 +4,8 @@
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextUtil;
+import cc.mrbird.febs.dapp.chain.ChainEnum;
+import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.dto.SystemDto;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.mapper.*;
@@ -172,13 +174,46 @@
 
         // 如果是复投的,则需奖励
         if (isReIn == 1) {
-            member.setOutCnt(member.getOutCnt() + 1);
-            dappMemberDao.updateById(member);
+            List<DappMemberEntity> directCnt = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1, 1);
 
-            dappWalletService.updateWalletCoinWithLock(new BigDecimal(190), member.getId(), 1);
+            /**
+             * 复投后,推一个拿一轮,推两个拿两轮,推三个后终身有效。
+             * 按规则每轮未能提取的奖金分配:
+             * 50%直接进入TFC底池
+             * 20%给到推荐人
+             * 30%留下待提。
+             */
+            if (directCnt.size() < 3 && member.getOutCnt() != 0 && member.getOutCnt() - 1 == directCnt.size()) {
+                BigDecimal amount = new BigDecimal("190");
 
-            DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, new BigDecimal("190"), 2, 2, null, null);
-            dappFundFlowDao.insert(matrixProfitFlow);
+                BigDecimal sourcePool = amount.multiply(new BigDecimal("0.5"));
+                BigDecimal directAmount = amount.multiply(new BigDecimal("0.2"));
+
+                BigDecimal remain = amount.subtract(sourcePool).subtract(directAmount);
+
+                new Thread(() -> {
+                    ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer("0xb06cc3dAF362a1670F12eBD0242022b538Ca72ef", sourcePool);
+                }).start();
+
+                if (parent != null) {
+                    dappWalletService.updateWalletCoinWithLock(directAmount, parent.getId(), 1);
+
+                    DappFundFlowEntity direct = new DappFundFlowEntity(parent.getId(), directAmount, 3, 2, null, null);
+                    dappFundFlowDao.insert(direct);
+                }
+
+                dappWalletService.addFrozenAmountWithLock(remain, memberId);
+            } else {
+                dappWalletService.releaseFrozenAmountWithLock(memberId);
+
+                member.setOutCnt(member.getOutCnt() + 1);
+                dappMemberDao.updateById(member);
+
+                dappWalletService.updateWalletCoinWithLock(new BigDecimal(190), member.getId(), 1);
+
+                DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, new BigDecimal("190"), 2, 2, null, null);
+                dappFundFlowDao.insert(matrixProfitFlow);
+            }
 
             DappFundFlowEntity rePutInFlow = new DappFundFlowEntity(memberId, new BigDecimal("100").negate(), 1, 2, null, null);
             dappFundFlowDao.insert(rePutInFlow);

--
Gitblit v1.9.1