From dd37f3ad4b49135cd67f33269e9c7ee7596f9f22 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 07 Jun 2024 14:37:25 +0800
Subject: [PATCH] 将监听充值新建一个项目

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |  116 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 61 insertions(+), 55 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 f520e99..fdb56c3 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
@@ -1,22 +1,20 @@
 package cc.mrbird.febs.dapp.service.impl;
 
-import cc.mrbird.febs.common.contants.AppContants;
 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.enumerate.DataDictionaryEnum;
 import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.DappSystemService;
 import cc.mrbird.febs.dapp.service.DappWalletService;
-import cc.mrbird.febs.rabbit.producer.ChainProducer;
 import cc.mrbird.febs.tree.MatrixTree;
 import cc.mrbird.febs.tree.MemberNode;
+import cc.mrbird.febs.tree.TreeConstants;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -24,7 +22,8 @@
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.*;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @author
@@ -43,6 +42,7 @@
     private final DappAchieveTreeDao dappAchieveTreeDao;
     private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
     private final DappWalletService dappWalletService;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
 
     @Override
@@ -99,8 +99,9 @@
         dappAchieveMemberTreeDao.insert(achieveMemberTree);
 
         // 激活用户状态
-        member.setActiveStatus(1);
-        dappMemberDao.updateById(member);
+//        member.setActiveStatus(1);
+//        dappMemberDao.updateById(member);
+//        dappMemberDao.updateMemberActiveV2(member.getId());
 
         putIntoProfit(memberId, 2);
         if (parentNode == null) {
@@ -165,7 +166,7 @@
         DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
 
         if (parent != null) {
-            BigDecimal directProfit = new BigDecimal("100").multiply(new BigDecimal("0.15"));
+            BigDecimal directProfit = TreeConstants.PUT_IN_AMOUNT.multiply(new BigDecimal("0.1"));
             dappWalletService.updateWalletCoinWithLock(directProfit, parent.getId(), 1);
 
             DappFundFlowEntity fundFlow = new DappFundFlowEntity(parent.getId(), directProfit, 3, 2, null, null);
@@ -176,70 +177,40 @@
         if (isReIn == 1) {
             List<DappMemberEntity> directCnt = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1, 1);
 
-            boolean hasNewDirect = false;
-            if (directCnt.size() < 3) {
-                DappMemberEntity newestDirect = dappMemberDao.selectNewestDirectMember(member.getInviteId());
-                DappFundFlowEntity fundFlow = dappFundFlowDao.selectNewestFundFlow(memberId, 9);
-
-                if (newestDirect != null && fundFlow != null) {
-                    if (newestDirect.getCreateTime().after(fundFlow.getCreateTime())) {
-                        hasNewDirect = true;
-                    }
-                }
-            }
-
             /**
              * 复投后,推一个拿一轮,推两个拿两轮,推三个后终身有效。
-             * 按规则每轮未能提取的奖金分配:
-             * 50%直接进入TFC底池
-             * 20%给到推荐人
-             * 30%留下待提。
+             * 200u单。
+             * 无直推则收益200U
+             * 一人加一轮400u,二人二轮
+             * 三人永久。
              */
-            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);
+            if (directCnt.size() < 3 && member.getOutCnt() != 0 && member.getOutCnt() - 1 == directCnt.size()) {
+                return;
             } else {
-                dappWalletService.releaseFrozenAmountWithLock(memberId);
+                BigDecimal amount = null;
+                if (directCnt.size() < 1) {
+                    amount = TreeConstants.PUT_IN_AMOUNT;
+                } else {
+                    amount = TreeConstants.FULL_PROFIT_AMOUNT;
+                }
 
                 member.setOutCnt(member.getOutCnt() + 1);
                 dappMemberDao.updateById(member);
 
-                dappWalletService.updateWalletCoinWithLock(new BigDecimal(190), member.getId(), 1);
+                dappWalletService.updateWalletCoinWithLock(amount, member.getId(), 1);
 
-                DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, new BigDecimal("190"), 2, 2, null, null);
+                DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, amount, 2, 2, null, null);
                 dappFundFlowDao.insert(matrixProfitFlow);
             }
 
-            DappFundFlowEntity rePutInFlow = new DappFundFlowEntity(memberId, new BigDecimal("100").negate(), 1, 2, null, null);
+            DappFundFlowEntity rePutInFlow = new DappFundFlowEntity(memberId, TreeConstants.PUT_IN_AMOUNT.negate(), 1, 2, null, null);
             dappFundFlowDao.insert(rePutInFlow);
-
-            DappFundFlowEntity safePoolFlow = new DappFundFlowEntity(memberId, new BigDecimal("10").negate(), 4, 2, null, null);
-            dappFundFlowDao.insert(safePoolFlow);
-
-            DappMineDataEntity mineData = dappSystemDao.selectMineDataForOne();
-            mineData.setSafePool(mineData.getSafePool().add(BigDecimal.TEN));
-            dappSystemDao.updateMineData(mineData);
         }
     }
 
     @Override
     public void tfcNewPrice(String data) {
-        redisUtils.set(AppContants.REDIS_KEY_TFC_NEW_PRICE, new BigDecimal(data));
+//        redisUtils.set(AppContants.REDIS_KEY_TFC_NEW_PRICE, new BigDecimal(data));
     }
 
     @Override
@@ -273,4 +244,39 @@
         dappAchieveMemberTreeDao.emptyTable();
         dappMemberDao.updateMemberActive();
     }
+
+    @Override
+    public void feeDistribute(String data) {
+        if (StrUtil.isBlank(data)) {
+            return;
+        }
+
+        Long flowId = Long.parseLong(data);
+        DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(flowId);
+        if (fundFlow == null) {
+            return;
+        }
+
+        DataDictionaryCustom memberFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MEMBER_FEE.getType(), DataDictionaryEnum.MEMBER_FEE.getCode());
+        if (memberFeeDic == null) {
+            log.info("未设置手续费返利比例");
+            return;
+        }
+        List<DappMemberEntity> memberList = dappMemberDao.selectMemberListNeedProfit();
+        if (CollUtil.isEmpty(memberList)) {
+            return;
+        }
+
+        BigDecimal feeReturnRatio = new BigDecimal(memberFeeDic.getValue());
+        int size = memberList.size();
+        BigDecimal totalProfit = fundFlow.getFee().multiply(feeReturnRatio.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_DOWN));
+        BigDecimal perProfit = totalProfit.divide(BigDecimal.valueOf(size), 8, RoundingMode.HALF_DOWN);
+
+        memberList.forEach(item -> {
+            dappWalletService.updateWalletMineWithLock(perProfit, item.getId(), 1);
+
+            DappFundFlowEntity profitFlow = new DappFundFlowEntity(item.getId(), perProfit, 12, 2, null, null);
+            dappFundFlowDao.insert(profitFlow);
+        });
+    }
 }

--
Gitblit v1.9.1