From a4b8bc1b7d84d6c68dbd70d8cb654023825c43ce Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 25 Aug 2022 14:59:55 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 73 ++++-------------------------------- 1 files changed, 9 insertions(+), 64 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java index e521761..a689831 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java @@ -5,10 +5,7 @@ import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.dapp.chain.*; import cc.mrbird.febs.dapp.entity.*; -import cc.mrbird.febs.dapp.mapper.DappFundFlowDao; -import cc.mrbird.febs.dapp.mapper.DappMemberDao; -import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao; -import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; +import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappMemberService; import cc.mrbird.febs.dapp.service.DappSystemService; import cc.mrbird.febs.dapp.utils.OnlineTransferUtil; @@ -43,15 +40,7 @@ private DappFundFlowDao dappFundFlowDao; @Resource - private ChainProducer chainProducer; - - @Resource - private DappOnlineTransferDao dappOnlineTransferDao; - @Resource - private DataDictionaryCustomMapper dataDictionaryCustomMapper; - - @Autowired - private DappSystemService dappSystemService; + private DappWalletCoinDao dappWalletCoinDao; @Override @@ -68,7 +57,7 @@ // 如果得到触发,则休眠10秒。 因为此处监听器触发可能优先于前端调用transfer接口 try { - Thread.sleep(10000); + Thread.sleep(5000); } catch (InterruptedException ex) { ex.printStackTrace(); } @@ -78,15 +67,6 @@ if (e.from.equals("0xaa25aa7a19f9c426e07dee59b12f944f4d9f1dd3")) { return; } - - DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null); - // 如果此时fromMember为null,则说明该用户未经过转账绑定关系,而是直接注册并购买币,则将关系绑定到顶级账户 - if (fromMember == null) { - DappMemberEntity toAddress = dappMemberService.findByAddress(e.to, null); - fromMember = dappMemberService.insertMember(e.from, toAddress.getInviteId()); - } - - String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); BigInteger tokens = e.tokens; BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); @@ -107,7 +87,7 @@ boolean hasFlow = false; for (DappFundFlowEntity flow : flows) { if (flow.getStatus() == 1) { - if (amount.compareTo(flow.getTargetAmount()) == 0) { + if (amount.compareTo(flow.getAmount().multiply(flow.getNewestPrice()).setScale(4, RoundingMode.HALF_UP)) == 0) { hasFlow = true; fundFlow = flow; fundFlow.setFromHash(e.log.getTransactionHash()); @@ -121,53 +101,18 @@ return; } } - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_APPLICATION, "USDT"); // 更改状态为已同步 fundFlow.setStatus(2); - fundFlow.setTargetAmount(amount); dappFundFlowDao.updateById(fundFlow); - // 如果系统会开启,则使用自动打款 - if (!"start".equals(hasStart)) { - OnlineTransferUtil.addTransfer(e.from, fundFlow.getAmount(), 1, 1, ChainEnum.BSC_TFC_MAKE.name(), "BSC", fundFlow.getId().toString()); - - Map<String, String> map = new HashMap<>(); - map.put("batchNo", fundFlow.getId().toString()); - map.put("type", "flow"); - - // 发送转账消息 - chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); - - 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 = sourceUsdtInstance.balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress()); - if (target.compareTo(balance) < 1) { - redisUtils.set(AppContants.SYSTEM_START_FLAG, "start"); - - // 启动系统 - dappSystemService.startSystem(); - } - } else { - OnlineTransferUtil.addTransfer(e.from, fundFlow.getAmount(), 1, 1, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, fundFlow.getId().toString()); - - Map<String, String> map = new HashMap<>(); - map.put("batchNo", fundFlow.getId().toString()); - map.put("type", "flow"); - - // 发送转账消息 - chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); - - // 发送购买奖励消息 - chainProducer.sendUserBuyReward(fundFlow.getId()); + synchronized (this) { + DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(fundFlow.getMemberId()); + walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); + walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); + dappWalletCoinDao.updateById(walletCoin); } } - } - - public static void main(String[] args) { - System.out.println(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf("0x9DDE1834683D642D4D077498DC7fbdb8CF70E8FE")); } } -- Gitblit v1.9.1