From 9ba6a1c6cd6bf4d04591a9214abdb5c8c6cbff78 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 28 Dec 2022 16:52:15 +0800
Subject: [PATCH] 20221227 充值归集

---
 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index a4e09f8..78e591f 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -1,17 +1,31 @@
 package cc.mrbird.febs.rabbit.consumer;
 
+import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.chain.constants.ChainConstants;
+import cc.mrbird.febs.mall.chain.dto.EthUsdtChargeDto;
+import cc.mrbird.febs.mall.chain.job.BlockCoinUpdateJob;
+import cc.mrbird.febs.mall.chain.service.BlockCoinService;
+import cc.mrbird.febs.mall.chain.service.Trc20Service;
+import cc.mrbird.febs.mall.chain.service.TrxUsdtUpdateService;
+import cc.mrbird.febs.mall.chain.service.UsdtErc20UpdateService;
 import cc.mrbird.febs.mall.service.IAgentService;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
 import cc.mrbird.febs.mall.service.IMemberProfitService;
 import cc.mrbird.febs.rabbit.constants.QueueConstants;
 import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpException;
+import com.alibaba.fastjson.JSONObject;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestClientException;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -28,6 +42,12 @@
     private IAgentService agentService;
     @Autowired
     private IMemberProfitService memberProfitService;
+    @Autowired
+    private RedisUtils redisUtils;
+    @Resource
+    private BlockCoinService blockCoinService;
+    @Resource
+    TrxUsdtUpdateService trxUsdtUpdateService;
 
     @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
     public void agentReturn(Message message, Channel channel) {
@@ -82,4 +102,60 @@
             log.error("消费奖励异常", e);
         }
     }
+
+    @RabbitListener(queues = QueueConstants.MALL_COIN_TRC_USDT_ADDRESS)
+    public void addUsdtAddress(String content) {
+        log.info("#添加新地址---->{}#", content);
+        if(StrUtil.isBlank(content)){
+            return;
+        }
+        String[] split = content.split(",");
+        if(split.length<2){
+            return;
+        }
+        String address = split[0];
+        String tag = split[1];
+
+        if("ERC20".equals(tag)){
+            UsdtErc20UpdateService.ALL_ADDRESS_LIST.add(address);
+        }
+        if("TRC20".equals(tag)){
+            log.info("添加地址成功:{}", address);
+            TrxUsdtUpdateService.addressList.add(address);
+            redisUtils.lSet(ChainConstants.REDIS_KEY_ADDRESS_LIST, TrxUsdtUpdateService.addressList);
+            // 此时还需要给这个地址转账用于激活及后续手续费
+            Trc20Service.sendTrx(Trc20Service.TRX_PRIVATE_KEY,address,new BigDecimal(10));
+        }
+    }
+
+    @RabbitListener(queues = QueueConstants.MALL_COIN_TRC_USDT_UPDATE)
+    public void doSomething(String content) {
+        log.info("#USDT同步---->{}#", content);
+        EthUsdtChargeDto ethUsdtChargeDto = JSONObject.parseObject(content, EthUsdtChargeDto.class);
+        // 更新这个用户的余额
+        if(EthUsdtChargeDto.Symbol.USDT_ERC20.equals(ethUsdtChargeDto.getSymbol())){
+            blockCoinService.updateEthUsdtNew(ethUsdtChargeDto);
+        }
+        if(EthUsdtChargeDto.Symbol.USDT_TRC20.equals(ethUsdtChargeDto.getSymbol())){
+            blockCoinService.updateTrc20(ethUsdtChargeDto);
+            // 同步完直接归集
+            trxUsdtUpdateService.poolByAddress(ethUsdtChargeDto.getAddress());
+        }
+
+    }
+
+    @RabbitListener(queues = QueueConstants.MALL_COIN_TRC_TRC20_BLOCK)
+    public void trc20BlockMsg(String content) {
+        Long blocnNum = Long.parseLong(content);
+        try {
+            trxUsdtUpdateService.monitorCoinListener(blocnNum);
+        } catch (RestClientException | HttpException e) {
+            //  此时是连接问题 这个块需要重新扫描
+            log.info("查询区块超时:" + blocnNum);
+            BlockCoinUpdateJob.TRC_BLOCK.add(blocnNum);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }

--
Gitblit v1.9.1