From c7a7bc8551457ac5b6de0a383397aa9e6bb50d9b Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 13 Jun 2022 19:15:19 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 63 +++++++++++++++++++++++++++++-- 1 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java index 5e64ebc..612a694 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java @@ -13,13 +13,18 @@ import cc.mrbird.febs.dapp.utils.OnlineTransferUtil; import cc.mrbird.febs.dapp.vo.RedisTransferPoolVo; import cc.mrbird.febs.dapp.vo.SlipSettingVo; +import cc.mrbird.febs.job.SystemTradeJob; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -108,13 +113,17 @@ ContractChainService instance = ChainService.getInstance(ChainEnum.BSC_TFC.name()); BigDecimal balance = instance.balanceOf(member.getAddress()); + 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 remain; if (o == null) { + DateTime tomorrow = DateUtil.beginOfDay(DateUtil.tomorrow()); + long time = DateUtil.between(new Date(), tomorrow, DateUnit.SECOND, true); + remain = coinTotal; - redisUtils.set(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress(), remain); + redisUtils.set(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress(), remain, time); } else { remain = (BigDecimal) o; } @@ -142,11 +151,13 @@ 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); @@ -188,6 +199,9 @@ 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); + dappFundFlowDao.insert(distribFlow); + nodeAmount = nodeAmount.subtract(total); i++; } @@ -207,7 +221,6 @@ @Override public void mining() { - log.info("挖矿"); ContractChainService contract = ChainService.getInstance(ChainEnum.BSC_TFC.name()); // 发行量 BigInteger totalSupply = contract.totalSupply(); @@ -302,10 +315,32 @@ 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()); @@ -333,4 +368,22 @@ map.put("type", "batch"); chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); } + + @Autowired + private SystemTradeJob systemTradeJob; + + @Override + public void startSystem() { + log.info("启动系统"); + + Thread thread = new Thread(new Runnable() { + @Override + public void run() { + systemTradeJob.transferPoolVol(); + systemTradeJob.sourcePoolUsdtOutLimit(); + } + }); + + thread.start(); + } } -- Gitblit v1.9.1