From bbfe18ba5355007d13b0bb4012dc2ecc2028717a Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 07 Jun 2024 09:46:41 +0800 Subject: [PATCH] 购买节点 --- src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 60 +++++++++++++++++++++++++++++ src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java | 5 ++ src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 3 + src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 1 src/main/java/cc/mrbird/febs/tree/MatrixTree.java | 23 ++++++++++- 5 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java index 39645b4..5ae6ed3 100644 --- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java +++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java @@ -49,6 +49,7 @@ * 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利 * * 13-节点买入 + * 14-节点返利 */ private Integer type; diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java index a6e2544..8c5ddf0 100644 --- a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java @@ -4,6 +4,11 @@ @Getter public enum DataDictionaryEnum { + // 奖励百分比 + PERK_PERCENT("PERK_PERCENT","PERK_PERCENT"), + PERK_NUM("PERK_NUM","PERK_NUM"), + + // 购买节点需要的金额 BUY_NODE_AMOUNT("BUY_NODE_AMOUNT","BUY_NODE_AMOUNT"), // 每日返利的产矿百分比 diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java index 99fb02a..49575d1 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java @@ -6,13 +6,18 @@ import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity; +import cc.mrbird.febs.dapp.entity.DataDictionaryCustom; +import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; import cc.mrbird.febs.dapp.mapper.DappFundFlowDao; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao; +import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; +import cc.mrbird.febs.dapp.service.DappWalletService; import cc.mrbird.febs.dapp.utils.OnlineTransferUtil; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -32,6 +37,10 @@ private DappFundFlowDao dappFundFlowDao; @Resource private DappMemberDao dappMemberDao; + @Resource + private DataDictionaryCustomMapper dataDictionaryCustomMapper; + @Resource + private DappWalletService dappWalletService; @Resource private DappWalletCoinDao dappWalletCoinDao; @Resource @@ -97,8 +106,10 @@ // 更改状态为已同步 fundFlow.setStatus(2); dappFundFlowDao.updateById(fundFlow); - + //生成业绩数 chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId()); + //分发手续费给节点 + buyNodePerk(amount); }else if(13 == fundFlow.getType()){//认购节点 13 @@ -118,4 +129,51 @@ } } } + + public void buyNodePerk(BigDecimal amount){ + /** + * 获取节点平分百分比 perkPercent + * 获取平分的份数 perKNum + * 获取每一份的金额 perkAmount + * 获取节点总数 buyNodeNum + * 如果perKNum大于buyNodeNum,则每个人获得(amount * perkPercent)/ perKNum = perkAmount + * 如果超出,再超出的人没有奖励 + */ + DataDictionaryCustom perkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_PERCENT.getType(), + DataDictionaryEnum.PERK_PERCENT.getCode() + ); + BigDecimal perkPercent = new BigDecimal(ObjectUtil.isEmpty(perkPercentDic) ? "10" : perkPercentDic.getValue()).multiply(new BigDecimal("0.01")); + + DataDictionaryCustom perKNumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_NUM.getType(), + DataDictionaryEnum.PERK_NUM.getCode() + ); + BigDecimal perKNum = new BigDecimal(ObjectUtil.isEmpty(perkPercentDic) ? "1000" : perKNumDic.getValue()); + + BigDecimal perkAmount = amount.multiply(perkPercent).divide(perKNum, 8, BigDecimal.ROUND_DOWN); + if(BigDecimal.ZERO.compareTo(perkAmount) >= 0){ + return; + } + + QueryWrapper<DappMemberEntity> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("buy_node",1); + List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectList(objectQueryWrapper); + if(CollUtil.isEmpty(dappMemberEntities)){ + return; + } + + for(DappMemberEntity dappMemberEntity : dappMemberEntities){ + dappWalletService.updateWalletCoinWithLock(perkAmount, dappMemberEntity.getId(), 1); + + DappFundFlowEntity fundFlow = new DappFundFlowEntity( + dappMemberEntity.getId(), + perkAmount, + 14, + 2, + BigDecimal.ZERO, + null); + dappFundFlowDao.insert(fundFlow); + } + } } 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 b7ff9b1..7a6f752 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 @@ -343,7 +343,8 @@ } member = dappMemberDao.selectById(member.getId()); - int buyNode = ObjectUtil.isEmpty(member.getBuyNode()) ? 0 : 1; +// int buyNode = ObjectUtil.isEmpty(member.getBuyNode()) ? 0 : 1; + int buyNode = member.getBuyNode(); if (1 == buyNode) { throw new FebsException("Do not repeat purchase"); } diff --git a/src/main/java/cc/mrbird/febs/tree/MatrixTree.java b/src/main/java/cc/mrbird/febs/tree/MatrixTree.java index 74c1096..cbe09fb 100644 --- a/src/main/java/cc/mrbird/febs/tree/MatrixTree.java +++ b/src/main/java/cc/mrbird/febs/tree/MatrixTree.java @@ -1,10 +1,10 @@ package cc.mrbird.febs.tree; -import com.sun.jmx.remote.internal.ArrayQueue; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import java.util.ArrayDeque; -import java.util.Queue; /** * @author wzy @@ -174,4 +174,23 @@ */ public void remove(Object param) { } + + public static void main(String[] args) { + MatrixTree matrixTree = new MatrixTree(); + String refererId = null; + for (int i = 0; i < 11; i++) { + String inviteId = RandomUtil.randomString(6); + if (i == 0) { + refererId = inviteId; + } + MemberNode memberNode = new MemberNode(); + memberNode.setMemberId(Long.parseLong(i + 1 + "")); + memberNode.setInviteId(inviteId); + memberNode.setAddress(RandomUtil.randomString(14)); + memberNode.setRefererId(refererId); + matrixTree.addNode(memberNode); + } + System.out.println(JSONUtil.parseObj(matrixTree)); + System.out.println(System.currentTimeMillis()); + } } -- Gitblit v1.9.1