From 5264c0165e3dbdeec367081ea68e18bffc4bd060 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 29 Aug 2022 16:17:25 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java |   33 ++++++++++-----------------------
 1 files changed, 10 insertions(+), 23 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 b3299b2..abbc930 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
@@ -32,15 +32,12 @@
 
     @Resource
     private RedisUtils redisUtils;
-
-    @Resource
-    private DappMemberService dappMemberService;
-
     @Resource
     private DappFundFlowDao dappFundFlowDao;
-
     @Resource
     private DappWalletCoinDao dappWalletCoinDao;
+    @Resource
+    private ChainProducer chainProducer;
 
 
     @Override
@@ -51,13 +48,13 @@
 
         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();
             }
@@ -67,8 +64,6 @@
             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);
@@ -86,35 +81,27 @@
                     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());
         }
     }
 }

--
Gitblit v1.9.1