From 029831451b29a13fe9c42164d5a7b7f9032b6188 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 24 Mar 2023 11:45:22 +0800
Subject: [PATCH] 后台修改
---
src/main/java/cc/mrbird/febs/mall/chain/enums/ChainEnum.java | 4
src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java | 1
src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java | 41 +++++++++----
src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java | 44 +++++++-------
src/test/java/cc/mrbird/febs/ProfitTest.java | 62 ++++++++++----------
5 files changed, 85 insertions(+), 67 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/enums/ChainEnum.java b/src/main/java/cc/mrbird/febs/mall/chain/enums/ChainEnum.java
index c1353cb..dee6366 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/enums/ChainEnum.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/enums/ChainEnum.java
@@ -13,8 +13,8 @@
* 0x55d398326f99059fF775485246999027B3197955
* 测试链 0x337610d27c682E347C9cD60BD4b3b107C9d34dDd
*/
- BSC_USDT("BSC", "0x7FC948E091C4b71fC063cE59B8Dad1062B1c5065",
- "0xbf6f11f5689961d5351375bebbae751de0d0d5c2e2095c1017368485dc909ff8",
+ BSC_USDT("BSC", "0xA60AaC0da34C76F3f60207ee09e9F75043319ab4",
+ "221be67f85375a5af6dd0f4b77fbe877ad2e57e05db201de1b1383fb76494d18",
"https://bsc-dataseed1.ninicoin.io",
"0x55d398326f99059fF775485246999027B3197955",
"");
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java b/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
index d328b04..513205f 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
@@ -82,6 +82,7 @@
// ChainService.wssBaseCoinEventListener(block, baseCoinService);
// ChainService.wssBaseCoinEventListener(block, bscUsdtContractEvent);
// ChainService.wssContractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
+ ChainService.wssContractEventListener2(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
long end = System.currentTimeMillis();
log.info("区块链监听启动完成, 消耗时间{}", end - start);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java b/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
index 23aa1ab..1ff98ef 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
@@ -95,28 +95,28 @@
memberCoinAddressEntity.getAddress(),
AppContants.ERC20_POOL_ADDRESS,
balanceOf.toString());
- if(StrUtil.isNotEmpty(transfer)){
- Long memberId = memberCoinAddressEntity.getMemberId();
- // 查询钱包 并更新
- MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
- if (mallMemberWallet == null) {
- return;
- }
- mallMemberWalletMapper.updateBlockBalanceById(mallMemberWallet.getId(), balanceOf.setScale(4, BigDecimal.ROUND_DOWN));
-
- String orderNo = insertCoinCharge(next, memberId, balanceOf.setScale(4, BigDecimal.ROUND_DOWN), CoinTypeEnum.USDT.name(), "ERC20", BigDecimal.ZERO);
- Long chargeFlowId = mallMoneyFlowService.addMoneyFlow(
- memberId,
- orderNo,
- balanceOf.setScale(4, BigDecimal.ROUND_DOWN),
- MallMoneyFlowTypeEnum.CHARGE.getCode(),
- MallMoneyFlow.STATUS_SUCCESS,
- MallMoneyFlow.IS_RETURN_Y,
- memberId,
- FlowTypeEnum.BALANCE.getValue(),
- MallMoneyFlowTypeEnum.CHARGE.getName()
- );
- }
+// if(StrUtil.isNotEmpty(transfer)){
+// Long memberId = memberCoinAddressEntity.getMemberId();
+// // 查询钱包 并更新
+// MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+// if (mallMemberWallet == null) {
+// return;
+// }
+// mallMemberWalletMapper.updateBlockBalanceById(mallMemberWallet.getId(), balanceOf.setScale(4, BigDecimal.ROUND_DOWN));
+//
+// String orderNo = insertCoinCharge(next, memberId, balanceOf.setScale(4, BigDecimal.ROUND_DOWN), CoinTypeEnum.USDT.name(), "ERC20", BigDecimal.ZERO);
+// Long chargeFlowId = mallMoneyFlowService.addMoneyFlow(
+// memberId,
+// orderNo,
+// balanceOf.setScale(4, BigDecimal.ROUND_DOWN),
+// MallMoneyFlowTypeEnum.CHARGE.getCode(),
+// MallMoneyFlow.STATUS_SUCCESS,
+// MallMoneyFlow.IS_RETURN_Y,
+// memberId,
+// FlowTypeEnum.BALANCE.getValue(),
+// MallMoneyFlowTypeEnum.CHARGE.getName()
+// );
+// }
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java b/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
index 62faeb7..295e271 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
@@ -158,7 +158,7 @@
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
WebSocketService ws = null;
try{
- WebSocketClient webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16"));
+ WebSocketClient webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/fcb1ae31845147dcabb183db57336218"));
ws = new WebSocketService(webSocketClient, true);
ws.connect();
Web3j web3j = Web3j.build(ws);
@@ -171,16 +171,22 @@
Disposable subscribe = eventFlowable.observeOn(Schedulers.from(executor))
.subscribe(event::compile, error -> {
log.error("币安监听异常", error);
- // 异常情况下,递归重试连接和订阅
- int retries = 3;
- while (retries-- > 0) {
- try {
- Thread.sleep(1000);
- wssContractEventListener(startBlock, event, type);
- return;
- } catch (Exception ex) {
- log.error("币安监听异常", ex);
+ error = error.getCause();
+ if (error instanceof WebsocketNotConnectedException) {
+ log.error("WebSocket连接已断开,正在尝试重新连接...");
+ // 异常情况下,递归重试连接和订阅
+ int retries = 3;
+ while (retries-- > 0) {
+ try {
+ Thread.sleep(1000);
+ wssContractEventListener2(startBlock, event, type);
+ return;
+ } catch (Exception ex) {
+ log.error("币安监听异常", ex);
+ }
}
+ } else {
+ log.error("币安监听异常", error);
}
});
@@ -192,6 +198,17 @@
subscribe.dispose();
} catch (InterruptedException e) {
e.printStackTrace();
+ // 将递归重试连接和订阅改为有限次数的重试,避免出现无限递归的情况
+ int retries = 3;
+ while (retries-- > 0) {
+ try {
+ Thread.sleep(1000);
+ wssContractEventListener2(startBlock, event, type);
+ return;
+ } catch (Exception ex) {
+ log.error("币安监听异常", ex);
+ }
+ }
}
} catch (Exception e) {
log.error("币安监听异常", e);
@@ -201,7 +218,7 @@
while (retries-- > 0) {
try {
Thread.sleep(1000);
- wssContractEventListener(startBlock, event, type);
+ wssContractEventListener2(startBlock, event, type);
return;
} catch (Exception ex) {
log.error("币安监听异常", ex);
@@ -220,7 +237,7 @@
Web3j web3j = null;
try {
- webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16"));
+ webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/fcb1ae31845147dcabb183db57336218"));
ws = new WebSocketService(webSocketClient, true);
ws.connect();
web3j = Web3j.build(ws);
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index b81747b..882ede7 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -479,38 +479,38 @@
@Test
public void scorePool(){
- String next = "0xc1be17a02127e5cc1e6b2298436e8b467531f798";
- MemberCoinAddressEntity memberCoinAddressEntity = memberCoinAddressDao.selectCoinAddressByAddressAndSymbolTag(next, "USDT", "ERC20");
- if(ObjectUtil.isEmpty(memberCoinAddressEntity)){
- return;
- }
- BigDecimal balanceOf = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(next);
- if (balanceOf == null || balanceOf.compareTo(new BigDecimal("0.05")) < 1) {
- return;
- }
- //查询手续费
- BigDecimal balanceOfBaseToken = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOfBaseToken(next);
-
- String gas = "5";
- if(balanceOfBaseToken.compareTo(new BigDecimal(gas)) < 0){
- //转手续费
- ChainService.getInstance(ChainEnum.BSC_USDT.name()).transferBaseToken(next, new BigDecimal(gas));
- }
- ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(memberCoinAddressEntity.getPrivateKey(),
- memberCoinAddressEntity.getAddress(),
- AppContants.ERC20_POOL_ADDRESS,
- balanceOf.toString());
-// long start = System.currentTimeMillis();
-// Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM);
-// BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
-// BigInteger block;
-// if (incrementObj == null) {
-// block = newest;
-// } else {
-// block = (BigInteger) incrementObj;
+// String next = "0xc1be17a02127e5cc1e6b2298436e8b467531f798";
+// MemberCoinAddressEntity memberCoinAddressEntity = memberCoinAddressDao.selectCoinAddressByAddressAndSymbolTag(next, "USDT", "ERC20");
+// if(ObjectUtil.isEmpty(memberCoinAddressEntity)){
+// return;
// }
-//// ChainService.wssBaseCoinEventListener(BigInteger.valueOf(24317595), baseCoinService);
-// ChainService.wssContractEventListener(BigInteger.valueOf(24317595), bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
+// BigDecimal balanceOf = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(next);
+// if (balanceOf == null || balanceOf.compareTo(new BigDecimal("0.05")) < 1) {
+// return;
+// }
+// //查询手续费
+// BigDecimal balanceOfBaseToken = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOfBaseToken(next);
+//
+// String gas = "5";
+// if(balanceOfBaseToken.compareTo(new BigDecimal(gas)) < 0){
+// //转手续费
+// ChainService.getInstance(ChainEnum.BSC_USDT.name()).transferBaseToken(next, new BigDecimal(gas));
+// }
+// ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(memberCoinAddressEntity.getPrivateKey(),
+// memberCoinAddressEntity.getAddress(),
+// AppContants.ERC20_POOL_ADDRESS,
+// balanceOf.toString());
+ long start = System.currentTimeMillis();
+ Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM);
+ BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
+ BigInteger block;
+ if (incrementObj == null) {
+ block = newest;
+ } else {
+ block = newest;
+ }
+ ChainService.wssBaseCoinEventListener(block, baseCoinService);
+// ChainService.wssContractEventListener2(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
}
//
// @Test
--
Gitblit v1.9.1