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