KKSU
2024-06-07 76e42bfdf66fbd49e4ed3173236b2f4b352685b2
src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -1,6 +1,5 @@
package cc.mrbird.febs.dapp.service.impl;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.chain.*;
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
@@ -15,6 +14,7 @@
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.utils.OnlineTransferUtil;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cc.mrbird.febs.tree.TreeConstants;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -137,11 +137,11 @@
            return;
        }
        redisUtils.set(AppContants.REDIS_KEY_BLOCK_USDT_NUM, e.log.getBlockNumber());
//        redisUtils.set(AppContants.REDIS_KEY_BLOCK_USDT_NUM, e.log.getBlockNumber());
        // 判断对方打款地址是否为源池地址
        if (ChainEnum.BSC_USDT.getAddress().toLowerCase().equals(e.to)) {
            redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber());
//            redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber());
            // 如果得到触发,则休眠10秒。 因为此处监听器触发可能优先于前端调用transfer接口
//            try {
@@ -155,8 +155,8 @@
            if (e.from.equals("0xaa25aa7a19f9c426e07dee59b12f944f4d9f1dd3")) {
                return;
            }
            String toAddress = e.to;
            DappMemberEntity fromMember = dappMemberDao.selectByAddress(toAddress, null);
            String fromAddress = e.from;
            DappMemberEntity fromMember = dappMemberDao.selectByAddress(fromAddress, null);
            if(ObjectUtil.isEmpty(fromMember)){
                return;
            }
@@ -166,8 +166,8 @@
            DappFundFlowEntity fundFlow = dappFundFlowDao.selectByFromHashAndAndMemberId(e.log.getTransactionHash(), null,fromMember.getId());
            if(ObjectUtil.isNotEmpty(fundFlow) && 1 == fundFlow.getStatus()){
                log.info("触发USDT合约监听事件-买入贡献值,金额:{}",amount);
                if(1 == fundFlow.getType()){//认购贡献值 1
                    log.info("买入贡献值,{},金额:{}",fromAddress,amount);
                    if (fundFlow == null) {
                        List<DappFundFlowEntity> flows = dappFundFlowDao.selectFundFlowListByAddress(e.from, 1);
                        if (CollUtil.isEmpty(flows)) {
@@ -195,6 +195,20 @@
                    // 更改状态为已同步
                    fundFlow.setStatus(2);
                    dappFundFlowDao.updateById(fundFlow);
                    //激活用户
                    fromMember.setActiveStatus(1);
                    dappMemberDao.updateById(fromMember);
                    //给上级直推奖励
                    DappMemberEntity member = dappMemberDao.selectById(fromMember.getId());
                    DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
                    if (ObjectUtil.isNotEmpty(parent)) {
                        BigDecimal directProfit = TreeConstants.PUT_IN_AMOUNT.multiply(new BigDecimal("0.1"));
                        dappWalletService.updateWalletCoinWithLock(directProfit, parent.getId(), 1);
                        DappFundFlowEntity fundFlowPerk = new DappFundFlowEntity(parent.getId(), directProfit, 3, 2, null, null);
                        dappFundFlowDao.insert(fundFlowPerk);
                    }
                    //生成业绩数
                    chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId());
                    //分发手续费给节点
@@ -202,8 +216,8 @@
                }else if(13 == fundFlow.getType()){//认购节点 13
                    log.info("触发USDT合约监听事件-认购节点,金额:{}",amount);
                    fundFlow.setAmount(fundFlow.getAmount().negate());
                    log.info("认购节点,{},金额:{}",fromAddress,amount);
//                    fundFlow.setAmount(fundFlow.getAmount().negate());
                    // 更改状态为已同步
                    fundFlow.setStatus(2);
                    dappFundFlowDao.updateById(fundFlow);
@@ -220,6 +234,7 @@
    }
    public void buyNodePerk(BigDecimal amount){
        log.info("买入贡献值-平分总金额-{}",amount);
        /**
         * 获取节点平分百分比 perkPercent
         * 获取平分的份数 perKNum
@@ -264,5 +279,7 @@
                    null);
            dappFundFlowDao.insert(fundFlow);
        }
        log.info("买入贡献值-总人数{},-每人金额{}",dappMemberEntities.size(),perkAmount);
    }
}