From 08d5c76dc776c64efeb2a7d8fa33f90ee5132bfe Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sun, 04 Sep 2022 12:10:36 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 52 insertions(+), 7 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 a43e135..f520e99 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.*; @@ -164,7 +166,7 @@ if (parent != null) { BigDecimal directProfit = new BigDecimal("100").multiply(new BigDecimal("0.15")); - dappWalletService.updateWalletCoinWithLock(directProfit, parent.getId()); + dappWalletService.updateWalletCoinWithLock(directProfit, parent.getId(), 1); DappFundFlowEntity fundFlow = new DappFundFlowEntity(parent.getId(), directProfit, 3, 2, null, null); dappFundFlowDao.insert(fundFlow); @@ -172,13 +174,56 @@ // 如果是复投的,则需奖励 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()); + boolean hasNewDirect = false; + if (directCnt.size() < 3) { + DappMemberEntity newestDirect = dappMemberDao.selectNewestDirectMember(member.getInviteId()); + DappFundFlowEntity fundFlow = dappFundFlowDao.selectNewestFundFlow(memberId, 9); - DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, new BigDecimal("190"), 2, 2, null, null); - dappFundFlowDao.insert(matrixProfitFlow); + if (newestDirect != null && fundFlow != null) { + if (newestDirect.getCreateTime().after(fundFlow.getCreateTime())) { + hasNewDirect = true; + } + } + } + + /** + * 复投后,推一个拿一轮,推两个拿两轮,推三个后终身有效。 + * 按规则每轮未能提取的奖金分配: + * 50%直接进入TFC底池 + * 20%给到推荐人 + * 30%留下待提。 + */ + if (directCnt.size() < 3 && member.getOutCnt() != 0 && member.getOutCnt() - 1 == directCnt.size() && !hasNewDirect) { + BigDecimal amount = new BigDecimal("190"); + + BigDecimal sourcePool = amount.multiply(new BigDecimal("0.5")); + BigDecimal directAmount = amount.multiply(new BigDecimal("0.2")); + + BigDecimal remain = amount.subtract(sourcePool).subtract(directAmount); + +// ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer("", sourcePool); + + 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); @@ -215,7 +260,7 @@ BigDecimal preAmount = mineDataEntity.getSafePool().divide(new BigDecimal(list.size()), 2, RoundingMode.HALF_UP); list.forEach(item -> { - dappWalletService.updateWalletCoinWithLock(preAmount, item.getMidNode()); + dappWalletService.updateWalletCoinWithLock(preAmount, item.getMidNode(), 1); DappFundFlowEntity flow = new DappFundFlowEntity(item.getMidNode(), preAmount, 8, 2, null, null); dappFundFlowDao.insert(flow); }); -- Gitblit v1.9.1