KKSU
2024-03-27 f10afe3a9aab4e962b3ec456b8a707163e11f9bd
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -163,60 +163,61 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void tradeProfitDistribute(Long id) {
        /**
         * 获取滑点钱包的代币余额A和U余额B
         * 获取最新一条的记录C,然后A-C.A,B-C.B,获得这段时间内的滑点新增D
         * 用D来进行划定分配
         * 并且生成一条新的记录dappHdRecord,用来下次分配参照
         */
        //当天实际当天滑点
        BigDecimal gfaPrice = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_PRICE.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
        BigDecimal usdtAmount = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
        BigDecimal coinAmount = new BigDecimal(
                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_COIN_AMOUNT.getValue())
        ).setScale(2,BigDecimal.ROUND_DOWN);
        if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){
            return;
        }
        if(BigDecimal.ZERO.compareTo(coinAmount) > 0){
            return;
        }
        BigDecimal usdtAmountReal = usdtAmount;
        BigDecimal coinAmountReal = coinAmount;
        //生成一条记录
        DappHdRecord dappHdRecordAdd = new DappHdRecord();
        dappHdRecordAdd.setPrice(gfaPrice);
        dappHdRecordAdd.setUsdtEvery(usdtAmountReal);
        dappHdRecordAdd.setUsdtAmount(usdtAmountReal);
        dappHdRecordAdd.setCoinEvery(coinAmountReal);
        dappHdRecordAdd.setCoinAmount(coinAmountReal);
        dappHdRecordMapper.insert(dappHdRecordAdd);
        /**
         * 5%滑奖分配:
         * 1%用自身质押
         * 3%用于团队业绩计算
         * 1%用于布道者奖励
         */
        int selfPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_SELF.getValue()));
        int teamPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_TEAM.getValue()));
        int workPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WORK.getValue()));
        //平分份数
        BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent);
        //每一份有多少
        BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
        //每一份有多少
        BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
        //1%用自身质押
        selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin);
        //3%用于团队业绩计算
        teamHdPerk(teamPercent,divideEveryUsdt,divideEveryCoin);
        asyncCjService.tradeProfitDistribute();
//        /**
//         * 获取滑点钱包的代币余额A和U余额B
//         * 获取最新一条的记录C,然后A-C.A,B-C.B,获得这段时间内的滑点新增D
//         * 用D来进行划定分配
//         * 并且生成一条新的记录dappHdRecord,用来下次分配参照
//         */
//
//        //当天实际当天滑点
//
//        BigDecimal gfaPrice = new BigDecimal(
//                redisUtils.getString(DataDicEnum.GFA_PRICE.getValue())
//        ).setScale(2,BigDecimal.ROUND_DOWN);
//        BigDecimal usdtAmount = new BigDecimal(
//                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue())
//        ).setScale(2,BigDecimal.ROUND_DOWN);
//        BigDecimal coinAmount = new BigDecimal(
//                redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_COIN_AMOUNT.getValue())
//        ).setScale(2,BigDecimal.ROUND_DOWN);
//        if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){
//            return;
//        }
//        if(BigDecimal.ZERO.compareTo(coinAmount) > 0){
//            return;
//        }
//        BigDecimal usdtAmountReal = usdtAmount;
//        BigDecimal coinAmountReal = coinAmount;
//        //生成一条记录
//        DappHdRecord dappHdRecordAdd = new DappHdRecord();
//        dappHdRecordAdd.setPrice(gfaPrice);
//        dappHdRecordAdd.setUsdtEvery(usdtAmountReal);
//        dappHdRecordAdd.setUsdtAmount(usdtAmountReal);
//        dappHdRecordAdd.setCoinEvery(coinAmountReal);
//        dappHdRecordAdd.setCoinAmount(coinAmountReal);
//        dappHdRecordMapper.insert(dappHdRecordAdd);
//
//        /**
//         * 5%滑奖分配:
//         * 1%用自身质押
//         * 3%用于团队业绩计算
//         * 1%用于布道者奖励
//         */
//        int selfPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_SELF.getValue()));
//        int teamPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_TEAM.getValue()));
//        int workPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WORK.getValue()));
//        //平分份数
//        BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent);
//        //每一份有多少
//        BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
//        //每一份有多少
//        BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
//        //1%用自身质押
//        selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin);
//        //3%用于团队业绩计算
//        teamHdPerk(teamPercent,divideEveryUsdt,divideEveryCoin);
    }
    public void teamHdPerk(int teamPercent,BigDecimal divideEveryUsdt,BigDecimal divideEveryCoin){
@@ -299,8 +300,8 @@
            createFlow(
                    multiplyUsdt,
                    memberId,
                    FlowTypeEnum.HUA_DIAN_TUANDUI.getValue(),
                    FlowTypeEnum.HUA_DIAN_TUANDUI.getDescrition(),
                    FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getValue(),
                    FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getDescrition(),
                    4,
                    1,
                    ChainEnum.BSC_TFC_REWARD.name(),
@@ -309,8 +310,8 @@
            createFlow(
                    multiplyCoin,
                    memberId,
                    FlowTypeEnum.HUA_DIAN_TUANDUI.getValue(),
                    FlowTypeEnum.HUA_DIAN_TUANDUI.getDescrition(),
                    FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getValue(),
                    FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getDescrition(),
                    4,
                    1,
                    ChainEnum.BSC_TFC_REWARD.name(),
@@ -656,7 +657,7 @@
            }
            //发送一个延时队列消息。24小时之后产生下一次的质押产出
            chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
//            chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
        }
    }