From eb9d939661413fc70975b0a75b44126c257bdc49 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 14 Apr 2021 18:27:43 +0800
Subject: [PATCH] 20210414 测试账号的跟随者不返利给交易员
---
src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 49 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java
index c6178dc..b1ca37f 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java
@@ -70,6 +70,12 @@
}
Long blockNum = Long.valueOf(trc20BlockNum.toString());
redisUtils.set("USDT_TRC20_BLOCK_NUM",blockNum);
+ // 查询一下最新区块
+ long getnowblock = getnowblock()-20L;
+ if(getnowblock<blockNum){
+ // 如果当前区块比最新已确认区块还大,则不继续执行
+ return;
+ }
if (CollectionUtils.isEmpty(addressList)) {
return;
}
@@ -86,23 +92,25 @@
* @param num
*/
private void httpTransactionInfo(List<String> addressList, Long num) {
- String transactionInfoByBlockNum = getTransactionInfoByBlockNum(BigInteger.valueOf(num));
+ // 查询详情,包含了所有交易信息
+ String transactionInfoByBlockNum = getblockbynum(BigInteger.valueOf(num));
if (StringUtils.isBlank(transactionInfoByBlockNum)) {
return;
}
// 不用等到扫完再累加 只要进来就加 还有一个条件是必须查询出区块再加 否则当区块超过实际区块
redisUtils.set("USDT_TRC20_BLOCK_NUM", (num + 1L));
- JSONArray parseArray = JSON.parseArray(transactionInfoByBlockNum);
+ JSONArray parseArray = JSON.parseObject(transactionInfoByBlockNum).getJSONArray("transactions");
if (parseArray.size() > 0) {
for (Object e : parseArray) {
try {
- String txId = JSON.parseObject(e.toString()).getString("id");
- String contract_address = JSON.parseObject(e.toString()).getString("contract_address");
- if(!"41a614f803b6fd780986a42c78ec9c7f77e6ded13c".equals(contract_address)){
- continue;
- }
+// String txId = JSON.parseObject(e.toString()).getString("id");
+// String contract_address = JSON.parseObject(e.toString()).getString("contract_address");
+// if(!"41a614f803b6fd780986a42c78ec9c7f77e6ded13c".equals(contract_address)){
+// continue;
+// }
//判断 数据库 txId 有 就不用往下继续了
- JSONObject parseObject = JSON.parseObject(getTransactionById(txId));
+ JSONObject parseObject = JSON.parseObject(e.toString());
+ String txId = parseObject.getString("txID");
String contractRet = parseObject.getJSONArray("ret").getJSONObject(0).getString("contractRet");
//交易成功
if ("SUCCESS".equals(contractRet)) {
@@ -113,7 +121,7 @@
} else if ("TransferContract".equals(type)) {
//trx 转账
- transferContract(parseObject);
+ //transferContract(parseObject);
}
}
} catch (Exception exception) {
@@ -152,6 +160,20 @@
*/
public static String getTransactionInfoByBlockNum(BigInteger num) {
String url = http + "/wallet/gettransactioninfobyblocknum";
+ Map<String, Object> map = new HashMap<>();
+ map.put("num", num);
+ String param = JSON.toJSONString(map);
+ return postForEntity(url, param).getBody();
+ }
+
+ /**
+ * 获取特定区块的所有交易 Info 信息
+ *
+ * @param num 区块
+ * @return
+ */
+ public static String getblockbynum(BigInteger num) {
+ String url = http + "/wallet/getblockbynum";
Map<String, Object> map = new HashMap<>();
map.put("num", num);
String param = JSON.toJSONString(map);
@@ -309,4 +331,22 @@
}
}
+ // https://api.trongrid.io/wallet/getnowblock
+
+ /**
+ * 获取最新区块
+ * @return
+ */
+ public long getnowblock(){
+ String url = http+"/wallet/getnowblock";
+ RestTemplate restTemplate = new RestTemplate();
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ headers.set("TRON-PRO-API-KEY",Trc20Service.API_KEY);
+ //HttpEntity<String> request = new HttpEntity<>();
+ String forObject = restTemplate.getForObject(url, String.class);
+ String number = JSON.parseObject(forObject).getJSONObject("block_header").getJSONObject("raw_data").getString("number");
+ return Long.valueOf(number);
+ }
+
}
--
Gitblit v1.9.1