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 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 59 insertions(+), 1 deletions(-) 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); + } + } } -- Gitblit v1.9.1