From 07f46b6873959f36785afd5459c198ac84963d75 Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Thu, 03 Nov 2022 01:17:05 +0800
Subject: [PATCH] 修改trc20归集

---
 src/main/java/cc/mrbird/febs/dapp/chain/ChainConstants.java       |    6 +++
 src/main/java/cc/mrbird/febs/dapp/chain/TrxUsdtUpdateService.java |   26 +-----------
 src/main/java/cc/mrbird/febs/job/Trc20PoolAddressInitJob.java     |   46 +++++++++++++++++++++++
 src/test/java/cc/mrbird/febs/ChainTest.java                       |   18 +++++++++
 src/main/java/cc/mrbird/febs/job/NotionalPoolingJob.java          |   17 +++++---
 src/main/java/cc/mrbird/febs/dapp/chain/Trc20Service.java         |    4 +-
 6 files changed, 86 insertions(+), 31 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainConstants.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainConstants.java
new file mode 100644
index 0000000..6747f49
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainConstants.java
@@ -0,0 +1,6 @@
+package cc.mrbird.febs.dapp.chain;
+
+public interface ChainConstants {
+
+    public static final String REDIS_KEY_POOL_ADDRESS = "TRC20_POOL";
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/Trc20Service.java b/src/main/java/cc/mrbird/febs/dapp/chain/Trc20Service.java
index fe3d29e..27d77a3 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/Trc20Service.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/Trc20Service.java
@@ -26,8 +26,8 @@
     public final static String POOL_ADDRESS = "TZ4LNanau13XFDZGiXiVmamTKn6q8jawiB";
 
     // 波场限制最高请求数量10万,使用两个api_key 分担请求流量
-    public final static String API_KEY="a7b0c96a-cfcd-474d-88c5-75c6277fedbf";
-    public final static String API_KEY_BLOCK="0492c860-cc93-4a69-a3ff-dcf607b80522";
+    public final static String API_KEY="0492c860-cc93-4a69-a3ff-dcf607b80522";
+    public final static String API_KEY_BLOCK="a7b0c96a-cfcd-474d-88c5-75c6277fedbf";
 
 
     /**
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/TrxUsdtUpdateService.java b/src/main/java/cc/mrbird/febs/dapp/chain/TrxUsdtUpdateService.java
index d41ebc5..ee5722e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/TrxUsdtUpdateService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/TrxUsdtUpdateService.java
@@ -290,6 +290,7 @@
     public boolean poolByAddress(String address) {
         BigDecimal trc20Balance = Trc20Service.getTrc20Balance(address);
         if (trc20Balance == null || trc20Balance.compareTo(new BigDecimal("0.05")) < 1) {
+            redisUtils.setRemove(ChainConstants.REDIS_KEY_POOL_ADDRESS, address);
             return false;
         }
 
@@ -306,33 +307,12 @@
             }
             Trc20Service.sendTrc20(coinAddressEntity.getPrivateKey(), Trc20Service.POOL_ADDRESS, trc20Balance);
             // 需要将存在redis的待归集地址删除
-            Object trc20_pool = redisUtils.get("TRC20_POOL");
-            if (trc20_pool != null) {
-                List<String> poolList = (List) trc20_pool;
-                Iterator<String> iterator = poolList.iterator();
-                while (iterator.hasNext()) {
-                    String next = iterator.next();
-                    if (address.equals(next)) {
-                        iterator.remove();
-                    }
-                }
-                if (CollectionUtils.isEmpty(poolList)) {
-                    redisUtils.del("TRC20_POOL");
-                } else {
-                    redisUtils.set("TRC20_POOL", poolList);
-                }
-            }
+            redisUtils.setRemove(ChainConstants.REDIS_KEY_POOL_ADDRESS, address);
             return true;
         } else {
             Trc20Service.sendTrx(Trc20Service.TRX_PRIVATE_KEY, address, TRX_FEE);
             // 将这个地址记录,后续同步
-            Object trc20_pool = redisUtils.get("TRC20_POOL");
-            List<String> poolList = new ArrayList<>();
-            if (trc20_pool != null) {
-                poolList = (List) trc20_pool;
-            }
-            poolList.add(address);
-            redisUtils.set("TRC20_POOL", poolList);
+            redisUtils.sSet(ChainConstants.REDIS_KEY_POOL_ADDRESS, address);
             return true;
         }
     }
diff --git a/src/main/java/cc/mrbird/febs/job/NotionalPoolingJob.java b/src/main/java/cc/mrbird/febs/job/NotionalPoolingJob.java
index e17e528..2326137 100644
--- a/src/main/java/cc/mrbird/febs/job/NotionalPoolingJob.java
+++ b/src/main/java/cc/mrbird/febs/job/NotionalPoolingJob.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.job;
 
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.chain.ChainConstants;
 import cc.mrbird.febs.dapp.chain.TrxUsdtUpdateService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -8,7 +9,9 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 
 /**
@@ -66,18 +69,20 @@
 //    }
 
     /**
-     *  归集TRC20
+     * 归集TRC20
      */
     @Scheduled(cron = "0 0/10 * * * ? ")
     public void poolUsdtTrc20() {
         log.info("归集TRC20执行");
-        Object trc20_pool = redisUtils.get("TRC20_POOL");
-        if(trc20_pool==null){
+        Set<Object> poolAddress = redisUtils.sGet(ChainConstants.REDIS_KEY_POOL_ADDRESS);
+        if (poolAddress == null || poolAddress.isEmpty()) {
             return;
         }
-        List<String> list = (List)trc20_pool;
-        for(String address: list){
-           trxUsdtUpdateService.poolByAddress(address);
+
+        for (Object address : poolAddress) {
+            String next = (String) address;
+            log.info("归集地址:{}", next);
+            trxUsdtUpdateService.poolByAddress(next);
         }
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/job/Trc20PoolAddressInitJob.java b/src/main/java/cc/mrbird/febs/job/Trc20PoolAddressInitJob.java
new file mode 100644
index 0000000..3caa427
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/job/Trc20PoolAddressInitJob.java
@@ -0,0 +1,46 @@
+package cc.mrbird.febs.job;
+
+
+import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.chain.ChainConstants;
+import cc.mrbird.febs.dapp.entity.MemberCoinAddressEntity;
+import cc.mrbird.febs.dapp.mapper.MemberCoinAddressDao;
+import cn.hutool.core.collection.CollUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "system", name = "block-job", havingValue = "true")
+public class Trc20PoolAddressInitJob {
+
+    @Autowired
+    private RedisUtils redisUtils;
+
+    @Autowired
+    private MemberCoinAddressDao memberCoinAddressDao;
+
+    @PostConstruct
+    public void initCoinTrade() {
+        System.out.println("初始化归集地址");
+        List<MemberCoinAddressEntity> addressList = memberCoinAddressDao.selectAllBlockAddressBySymbolAndTag("USDT", "TRC20");
+        if (CollUtil.isEmpty(addressList)) {
+            return;
+        }
+
+        long size = redisUtils.sGetSetSize(ChainConstants.REDIS_KEY_POOL_ADDRESS);
+        if (size > 0) {
+            return;
+        }
+
+        addressList.forEach(item -> {
+            redisUtils.sSet(ChainConstants.REDIS_KEY_POOL_ADDRESS, item.getAddress());
+        });
+    }
+}
diff --git a/src/test/java/cc/mrbird/febs/ChainTest.java b/src/test/java/cc/mrbird/febs/ChainTest.java
index 80f1bb9..80a7724 100644
--- a/src/test/java/cc/mrbird/febs/ChainTest.java
+++ b/src/test/java/cc/mrbird/febs/ChainTest.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs;
 
+import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.dapp.chain.ChainEnum;
 import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.chain.ContractChainService;
@@ -15,6 +16,7 @@
 import cc.mrbird.febs.dapp.service.MemberOnHookPlan;
 import cc.mrbird.febs.dapp.service.impl.BscCoinContractEvent;
 import cc.mrbird.febs.dapp.service.impl.BscUsdtContractEvent;
+import cc.mrbird.febs.job.NotionalPoolingJob;
 import cc.mrbird.febs.rabbit.producer.ChainProducer;
 import com.alibaba.fastjson.JSONObject;
 import org.junit.jupiter.api.Test;
@@ -186,4 +188,20 @@
 //    public void blockMsgTest() {
 //        trxUsdtUpdateService.monitorCoinListener(45548841L);
 //    }
+
+    @Autowired
+    NotionalPoolingJob notionalPoolingJob;
+
+    @Test
+    public void poolTest() {
+        notionalPoolingJob.poolUsdtTrc20();
+    }
+
+    @Autowired
+    RedisUtils redisUtils;
+
+    @Test
+    public void redisTest() {
+        redisUtils.setRemove("list_set", 11222);
+    }
 }

--
Gitblit v1.9.1