From ef506d591338c4e1deabede781550cf2e0156f3f Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Wed, 09 Nov 2022 23:46:18 +0800
Subject: [PATCH] 增加每日返利,提现逻辑修改,手续费分发逻辑

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   40 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 38 insertions(+), 2 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 3d6bb3b..dc692cb 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
@@ -8,6 +8,7 @@
 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;
@@ -18,6 +19,7 @@
 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;
@@ -44,6 +46,7 @@
     private final DappAchieveTreeDao dappAchieveTreeDao;
     private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
     private final DappWalletService dappWalletService;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
 
     @Override
@@ -194,8 +197,6 @@
                     amount = TreeConstants.FULL_PROFIT_AMOUNT;
                 }
 
-                dappWalletService.releaseFrozenAmountWithLock(memberId);
-
                 member.setOutCnt(member.getOutCnt() + 1);
                 dappMemberDao.updateById(member);
 
@@ -246,4 +247,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), 2, 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