| | |
| | | import cc.mrbird.febs.dapp.chain.ContractChainService; |
| | | import cc.mrbird.febs.dapp.dto.SystemDto; |
| | | import cc.mrbird.febs.dapp.entity.*; |
| | | import cc.mrbird.febs.dapp.enumerate.CardPeriod; |
| | | import cc.mrbird.febs.dapp.mapper.*; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | | import cc.mrbird.febs.dapp.utils.OnlineTransferUtil; |
| | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author |
| | | * @author |
| | | * @date 2022-03-24 |
| | | **/ |
| | | @Slf4j |
| | |
| | | result.put("coinCnt", coinCnt); |
| | | result.put("sourceTFC", ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(ChainEnum.BSC_TFC_SOURCE.getAddress())); |
| | | result.put("sourceUSDT", ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress())); |
| | | result.put("cardCnt", 1000); |
| | | result.put("nftPrice", AppContants.NFT_ACTIVE_PRICE); |
| | | return result; |
| | | } |
| | | |
| | |
| | | String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); |
| | | // 启动未启动 |
| | | if (!"start".equals(hasStart)) { |
| | | system.setFeeRatio(BigDecimal.TEN); |
| | | system.setFeeRatio(new BigDecimal("7")); |
| | | system.setBuyFeeRatio(new BigDecimal("3")); |
| | | system.setUsdtRemain(BigDecimal.ZERO); |
| | | system.setUsdtTotal(BigDecimal.ZERO); |
| | | system.setSaleRemain(BigDecimal.ZERO); |
| | |
| | | } |
| | | system.setBuyRemain(balance); |
| | | system.setBuyTotal(balance); |
| | | |
| | | |
| | | Object maxDailyBuy = redisUtils.get(AppContants.REDIS_KEY_IDO_USDT_MAX_BUY_DAILY + member.getAddress()); |
| | | if (maxDailyBuy == null) { |
| | | DateTime tomorrow = DateUtil.beginOfDay(DateUtil.tomorrow()); |
| | | long time = DateUtil.between(new Date(), tomorrow, DateUnit.SECOND, true); |
| | | |
| | | redisUtils.set(AppContants.REDIS_KEY_IDO_USDT_MAX_BUY_DAILY + member.getAddress(), new BigDecimal("1000"), time); |
| | | } |
| | | |
| | | return system; |
| | | } |
| | |
| | | parents = new ArrayList<>(); |
| | | } else { |
| | | List<String> inviteIds = StrUtil.split(member.getRefererId(), ','); |
| | | parents = dappMemberDao.selectParentsList(inviteIds, 6);; |
| | | parents = dappMemberDao.selectParentsList(inviteIds, 6); |
| | | ; |
| | | } |
| | | |
| | | DataDictionaryCustom miniHoldCoin = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_MINI_HOLD_COIN_LIMIT); |
| | |
| | | @Override |
| | | public void tradeNftProfitDistribute(Long id) { |
| | | DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(id); |
| | | String batchNo = RandomUtil.randomString(16) + id.toString(); |
| | | |
| | | BigInteger totalNFT = ChainService.getInstance(ChainEnum.BSC_TFC.name()).totalSupply(); |
| | | ContractChainService instance = ChainService.getInstance(ChainEnum.BSC_TFC.name()); |
| | | BigDecimal preNFTAmount; |
| | | BigDecimal distribAmount = fundFlow.getFee(); |
| | | if (fundFlow.getType() == 1) { |
| | | preNFTAmount = distribAmount.divide(new BigDecimal("5000"), 2, RoundingMode.HALF_UP); |
| | | |
| | | } else if (fundFlow.getType() == 2) { |
| | | BigDecimal destroyAmount = fundFlow.getFee().multiply(new BigDecimal("2").divide(new BigDecimal("7"), instance.decimals(), RoundingMode.HALF_UP)); |
| | | // 销毁 |
| | | OnlineTransferUtil.addTransfer(AppContants.DESTROY_ADDRESS, destroyAmount, fundFlow.getType(), 3, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | distribAmount = fundFlow.getFee().subtract(destroyAmount); |
| | | |
| | | preNFTAmount = distribAmount.divide(new BigDecimal("5000"), 2, RoundingMode.HALF_UP); |
| | | |
| | | } else { |
| | | return; |
| | | } |
| | | |
| | | List<DappMemberEntity> allMembers = dappMemberDao.selectList(null); |
| | | if (CollUtil.isEmpty(allMembers)) { |
| | | return; |
| | | } |
| | | |
| | | BigDecimal total = BigDecimal.ZERO; |
| | | for (DappMemberEntity member : allMembers) { |
| | | BigDecimal balance = instance.balanceOf(member.getAddress()); |
| | | BigDecimal memberProfit = balance.multiply(preNFTAmount); |
| | | |
| | | // 返利 |
| | | OnlineTransferUtil.addTransfer(member.getAddress(), memberProfit, fundFlow.getType(), 1, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | |
| | | DappFundFlowEntity distribFlow = new DappFundFlowEntity(member.getId(), memberProfit, 4, 2, BigDecimal.ZERO); |
| | | dappFundFlowDao.insert(distribFlow); |
| | | |
| | | total = total.add(memberProfit); |
| | | } |
| | | |
| | | BigDecimal remain = distribAmount.subtract(total); |
| | | // 剩余的 |
| | | OnlineTransferUtil.addTransfer(ChainEnum.BSC_TFC_TECH.getAddress(), remain, fundFlow.getType(), 3, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | } |
| | | |
| | | // public static void main(String[] args) throws IOException { |
| | |
| | | ContractChainService contract = ChainService.getInstance(ChainEnum.BSC_TFC.name()); |
| | | // 发行量 |
| | | BigInteger totalSupply = contract.totalSupply(); |
| | | |
| | | if (!systemHasStart()) { |
| | | return; |
| | | } |
| | | |
| | | BigDecimal totalUnHold = contract.balanceOf(AppContants.DESTROY_ADDRESS); |
| | | List<DappMemberEntity> admin = dappMemberDao.selectMemberByAccountType("admin"); |
| | |
| | | |
| | | Object o = redisUtils.get(AppContants.REDIS_KEY_TRANSFER_POOL_VOL); |
| | | if (o == null) { |
| | | RedisTransferPoolVo transferPool= new RedisTransferPoolVo(); |
| | | RedisTransferPoolVo transferPool = new RedisTransferPoolVo(); |
| | | BigDecimal total = basicVol.multiply(volProp.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_UP)); |
| | | transferPool.setTodayVol(total); |
| | | transferPool.setTodayProp(volProp); |
| | |
| | | lastDayPrice = new BigDecimal(dailyPrice); |
| | | } |
| | | |
| | | ContractChainService tfcInstance = ChainService.getInstance(ChainEnum.BSC_TFC.name()); |
| | | ContractChainService tfcInstance = ChainService.getInstance(ChainEnum.BSC_TFC_SOURCE.name()); |
| | | // 源池币种数量 |
| | | BigDecimal tfcBalance = tfcInstance.balanceOf(ChainEnum.BSC_TFC.getAddress()); |
| | | BigDecimal tfcBalance = tfcInstance.balanceOf(ChainEnum.BSC_TFC_SOURCE.getAddress()); |
| | | |
| | | // 源池USDT数量 |
| | | BigDecimal usdtBalance = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT.getAddress()); |
| | | BigDecimal usdtBalance = ChainService.getInstance(ChainEnum.BSC_USDT_SOURCE.name()).balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress()); |
| | | |
| | | BigDecimal todayPrice = tfcBalance.divide(usdtBalance, tfcInstance.decimals(), RoundingMode.HALF_UP); |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | DataDictionaryCustom boxRecommendCnt = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_BOX_RECOMMEND_CNT); |
| | | BigInteger totalSupply = ChainService.getInstance(ChainEnum.BSC_NFT_SDC.name()).totalSupplyNFT(); |
| | | int box = 0; |
| | | // 需要第一次购买,才在推荐中加1 |
| | | Object parentRecommend = redisUtils.hget(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress()); |
| | |
| | | int i = (int) parentRecommend; |
| | | |
| | | // 如果超过10个,则新增一个盲盒,并重置推荐人数 |
| | | if (++i == new Integer(boxRecommendCnt.getValue())) { |
| | | if (++i == CardPeriod.ONE.recommendCnt(totalSupply.intValue())) { |
| | | box = 1; |
| | | redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), 0); |
| | | } else { |