| | |
| | | |
| | | Object o = redisUtils.get(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress()); |
| | | |
| | | BigDecimal coinTotal = balance.multiply(BigDecimal.valueOf(0.3)).setScale(instance.decimals(), RoundingMode.HALF_DOWN); |
| | | BigDecimal minLimit = new BigDecimal(50); |
| | | BigDecimal coinTotal; |
| | | if (balance.compareTo(minLimit) > 0) { |
| | | coinTotal = balance.multiply(BigDecimal.valueOf(0.3)).setScale(instance.decimals(), RoundingMode.HALF_DOWN); |
| | | } else { |
| | | coinTotal = new BigDecimal(50); |
| | | } |
| | | |
| | | BigDecimal remain; |
| | | if (o == null) { |
| | | DateTime tomorrow = DateUtil.beginOfDay(DateUtil.tomorrow()); |
| | |
| | | BigDecimal fee = fundflow.getFee(); |
| | | DappMemberEntity member = dappMemberDao.selectById(fundflow.getMemberId()); |
| | | |
| | | List<DappMemberEntity> parents; |
| | | if (StrUtil.isBlank(member.getRefererId()) || "0".equals(member.getRefererId())) { |
| | | return; |
| | | parents = new ArrayList<>(); |
| | | } else { |
| | | List<String> inviteIds = StrUtil.split(member.getRefererId(), ','); |
| | | parents = dappMemberDao.selectParentsList(inviteIds, 6);; |
| | | } |
| | | List<String> inviteIds = StrUtil.split(member.getRefererId(), ','); |
| | | List<DappMemberEntity> parents = dappMemberDao.selectParentsList(inviteIds, 6); |
| | | |
| | | DataDictionaryCustom miniHoldCoin = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_MINI_HOLD_COIN_LIMIT); |
| | | DataDictionaryCustom slipPointSetting = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SLIP_POINT_SETTING, AppContants.DIC_TYPE_SLIP_POINT_SETTING); |
| | |
| | | } |
| | | |
| | | BigDecimal total = distrbAmount.multiply(new BigDecimal(distribDic.getValue()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); |
| | | |
| | | OnlineTransferUtil.addTransfer(parent.getAddress(), total, fundflow.getType(), 1, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | |
| | | DappFundFlowEntity distribFlow = new DappFundFlowEntity(parent.getId(), total, 4, 2, BigDecimal.ZERO); |
| | |
| | | } |
| | | } |
| | | |
| | | // 铸池滑点金额 |
| | | BigDecimal makerAmount = distrbAmount.multiply(slipSetting.getMakeProp().divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); |
| | | log.info("铸池滑点金额:{}", makerAmount); |
| | | if (makerAmount.compareTo(BigDecimal.ZERO) > 0) { |
| | | List<DappMemberEntity> makerAddress = dappMemberDao.selectMakerAddress(); |
| | | if (CollUtil.isNotEmpty(makerAddress)) { |
| | | BigDecimal totalMaker = BigDecimal.ZERO; |
| | | Map<String, BigDecimal> map = new HashMap<>(); |
| | | Map<String, Long> addressAndId = new HashMap<>(); |
| | | for (DappMemberEntity maker : makerAddress) { |
| | | BigDecimal balance = instance.balanceOf(maker.getAddress()); |
| | | map.put(maker.getAddress(), balance); |
| | | addressAndId.put(maker.getAddress(), maker.getId()); |
| | | |
| | | totalMaker = totalMaker.add(balance); |
| | | } |
| | | |
| | | for (Map.Entry<String, BigDecimal> entry : map.entrySet()) { |
| | | BigDecimal target = makerAmount.multiply(entry.getValue().divide(totalMaker, 2, RoundingMode.HALF_UP)); |
| | | |
| | | OnlineTransferUtil.addTransfer(entry.getKey(), target, fundflow.getType(), 1, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | |
| | | DappFundFlowEntity distribFlow = new DappFundFlowEntity(addressAndId.get(entry.getKey()), target, 4, 2, BigDecimal.ZERO); |
| | | dappFundFlowDao.insert(distribFlow); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 若节点金额还有剩余,则进入技术金额 |
| | | techAmount = techAmount.add(nodeAmount); |
| | | OnlineTransferUtil.addTransfer(ChainEnum.BSC_TFC_TECH.getAddress(), techAmount, fundflow.getType(), 2, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | OnlineTransferUtil.addTransfer(ChainEnum.BSC_TFC_TECH.getAddress(), techAmount, fundflow.getType(), 3, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, batchNo); |
| | | |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("batchNo", batchNo); |
| | |
| | | dappFundFlowDao.updateById(fundFlow); |
| | | } |
| | | } |
| | | |
| | | // 判断系统是否启动,如满足条件则启动系统 |
| | | String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); |
| | | if (!"start".equals(hasStart)) { |
| | | DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_SYSTEM_START_TARGET); |
| | | BigDecimal target = new BigDecimal(dic.getValue()); |
| | | |
| | | // 若源池中的USDT达到或超过8万U,则启动整个系统 |
| | | BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_USDT_SOURCE.name()).balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress()); |
| | | if (target.compareTo(balance) < 1) { |
| | | redisUtils.set(AppContants.SYSTEM_START_FLAG, "start"); |
| | | |
| | | // 启动系统 |
| | | startSystem(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void userBuyReward(Long id) { |
| | | // 系统未启动不参与 |
| | | String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); |
| | | if (!"start".equals(hasStart)) { |
| | | return; |
| | | } |
| | | |
| | | DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(id); |
| | | |
| | | DappMemberEntity member = dappMemberDao.selectById(fundFlow.getMemberId()); |