| | |
| | | @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){ |
| | |
| | | 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(), |
| | |
| | | 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(), |
| | |
| | | } |
| | | |
| | | //发送一个延时队列消息。24小时之后产生下一次的质押产出 |
| | | chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L); |
| | | // chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L); |
| | | } |
| | | |
| | | } |