| | |
| | | |
| | | @Resource |
| | | private RedisUtils redisUtils; |
| | | |
| | | @Resource |
| | | private DappMemberService dappMemberService; |
| | | |
| | | @Resource |
| | | private DappFundFlowDao dappFundFlowDao; |
| | | |
| | | @Resource |
| | | private DappWalletCoinDao dappWalletCoinDao; |
| | | @Resource |
| | | private ChainProducer chainProducer; |
| | | |
| | | |
| | | @Override |
| | |
| | | |
| | | redisUtils.set(AppContants.REDIS_KEY_BLOCK_USDT_NUM, e.log.getBlockNumber()); |
| | | // 判断对方打款地址是否为源池地址 |
| | | if (ChainEnum.BSC_TFC_SOURCE.getAddress().toLowerCase().equals(e.to)) { |
| | | if (ChainEnum.BSC_USDT.getAddress().toLowerCase().equals(e.to)) { |
| | | log.info("触发USDT合约监听事件"); |
| | | redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber()); |
| | | |
| | | // 如果得到触发,则休眠10秒。 因为此处监听器触发可能优先于前端调用transfer接口 |
| | | try { |
| | | Thread.sleep(5000); |
| | | Thread.sleep(10000); |
| | | } catch (InterruptedException ex) { |
| | | ex.printStackTrace(); |
| | | } |
| | |
| | | if (e.from.equals("0xaa25aa7a19f9c426e07dee59b12f944f4d9f1dd3")) { |
| | | return; |
| | | } |
| | | |
| | | DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null); |
| | | |
| | | BigInteger tokens = e.tokens; |
| | | BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); |
| | |
| | | return; |
| | | } |
| | | |
| | | boolean hasFlow = false; |
| | | for (DappFundFlowEntity flow : flows) { |
| | | if (flow.getStatus() == 1) { |
| | | if (amount.compareTo(flow.getAmount().multiply(flow.getNewestPrice()).setScale(4, RoundingMode.HALF_UP)) == 0) { |
| | | hasFlow = true; |
| | | fundFlow = flow; |
| | | fundFlow.setFromHash(e.log.getTransactionHash()); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!hasFlow) { |
| | | OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_ONLINE, "USDT"); |
| | | return; |
| | | } |
| | | } |
| | | OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_APPLICATION, "USDT"); |
| | | |
| | | if (fundFlow == null) { |
| | | return; |
| | | } |
| | | |
| | | fundFlow.setAmount(fundFlow.getAmount().negate()); |
| | | // 更改状态为已同步 |
| | | fundFlow.setStatus(2); |
| | | dappFundFlowDao.updateById(fundFlow); |
| | | |
| | | synchronized (this) { |
| | | DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(fundFlow.getMemberId()); |
| | | walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); |
| | | walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); |
| | | dappWalletCoinDao.updateById(walletCoin); |
| | | } |
| | | chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId()); |
| | | } |
| | | } |
| | | } |