From 22819e7b84e661b65b43b8a3c8467080b1b23fa4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 05 Dec 2022 15:32:48 +0800
Subject: [PATCH] 20221130

---
 src/main/java/cc/mrbird/febs/dapp/chain/EthService.java                   |    4 +-
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   19 +++++++++
 src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java           |    9 ++++
 src/main/resources/mapper/dapp/DappFundFlowDao.xml                        |   10 +++++
 src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java          |    2 +
 src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java             |    2 +
 src/main/java/cc/mrbird/febs/job/BnbTransferJob.java                      |   32 ++++++++++++++++
 src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java                   |    1 
 src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java                        |    2 +
 src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java           |    9 ++++
 src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java              |   19 +++++++++
 11 files changed, 107 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
index a2d4041..de08042 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -429,8 +429,8 @@
 
     @Override
     public String transferBaseToken(String address, BigDecimal amount) {
-//        String gas = getGas();
-        String gas ="5";
+        String gas = getGas();
+//        String gas ="5";
         try {
             Credentials credentials = Credentials.create(privateKey);
 
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java
index 967af3f..863234f 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappFundFlowDao.java
@@ -32,4 +32,6 @@
     DappFundFlowEntity selectInfoById(@Param("id")Long id);
 
     int updateStatusById(@Param("status")int status, @Param("id")Long id);
+
+    DappFundFlowEntity selectByStateAndVersionAndFromHashLimitOne(@Param("status")int withdrawStatusAgree, @Param("version")int withdrawStatusAgree1);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index 5402e6c..f2d5816 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -32,4 +32,6 @@
     void bnbTransfer(Long id);
     //代理升级
     void agentUp(Long id);
+
+    void bnbTransferTest(Long id);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index 8157cba..65ec96e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -509,6 +509,25 @@
         }
     }
 
+    @Override
+    public void bnbTransferTest(Long id) {
+        DappFundFlowEntity dappFundFlow = dappFundFlowDao.selectById(id);
+        if(ObjectUtil.isEmpty(dappFundFlow)){
+            return;
+        }
+        //金额
+        BigDecimal amount = dappFundFlow.getAmount();
+        //目标地址
+        String address = dappFundFlow.getAddress();
+        String hash = ChainService.getInstance(ChainEnum.BNB.name()).transferBaseToken(address, amount);
+        if(StrUtil.isEmpty(hash)){
+            return;
+        }
+        log.info("{},{}",id,hash);
+        dappFundFlow.setFromHash(hash);
+        dappFundFlowDao.updateById(dappFundFlow);
+    }
+
     public static void main(String[] args) {
         String refererIds = "1,2,3,4,5," +
                             "6,7,8,9,10," +
diff --git a/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java b/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
new file mode 100644
index 0000000..1831ccb
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
@@ -0,0 +1,32 @@
+package cc.mrbird.febs.job;
+
+import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
+import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
+import cc.mrbird.febs.rabbit.producer.ChainProducer;
+import cn.hutool.core.util.ObjectUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "system", name = "online-transfer", havingValue = "true")
+public class BnbTransferJob{
+    /**
+     * 搜索还未发生转账操作,但是记录已经更新没有产生HASH值的流水记录,并发起转账操作
+     */
+    @Autowired
+    private DappFundFlowDao dappFundFlowDao;
+    @Autowired
+    private ChainProducer chainProducer;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void BnbTransferAgain() {
+        DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectByStateAndVersionAndFromHashLimitOne(2,2);
+        if(ObjectUtil.isNotEmpty(dappFundFlowEntity)){
+            chainProducer.sendBnbTransferTestMsg(dappFundFlowEntity.getId());
+        }
+    }
+
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
index 409db43..ea32db3 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -6,6 +6,7 @@
  **/
 public class QueueConstants {
 
+    public static final String QUEUE_BNB_TRANSFER_TEST = "queue_bnb_agent_up_test";
     public static final String QUEUE_BNB_AGENT_UP = "queue_bnb_agent_up";
     public static final String QUEUE_BNB_TRANSFER = "queue_bnb_transfer";
     public static final String QUEUE_MEMBER_OUT = "queue_bnb_member_out";
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
index ddec68a..03c5704 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -6,6 +6,8 @@
 @Getter
 public enum QueueEnum {
     //代理升级
+    BNB_TRANSFER_TEST("exchange_bnb_agent_up_test", "route_key_bnb_agent_up_test", "queue_bnb_agent_up_test"),
+    //代理升级
     BNB_AGENT_UP("exchange_bnb_agent_up", "route_key_bnb_agent_up", "queue_bnb_agent_up"),
     //转账拨币
     BNB_TRANSFER("exchange_bnb_transfer", "route_key_bnb_transfer", "queue_bnb_transfer"),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
index 21c1ed8..99c73c0 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -177,4 +177,23 @@
         return BindingBuilder.bind(agentUpQueue()).to(agentUpExchange()).with(QueueEnum.BNB_AGENT_UP.getRoute());
     }
     // === 代理升级 end ===
+
+
+
+    // === 消息测试 start ===
+    @Bean
+    public DirectExchange bnbTransferTestExchange() {
+        return new DirectExchange(QueueEnum.BNB_TRANSFER_TEST.getExchange());
+    }
+
+    @Bean
+    public Queue bnbTransferTestQueue() {
+        return new Queue(QueueEnum.BNB_TRANSFER_TEST.getQueue());
+    }
+
+    @Bean
+    public Binding bnbTransferTestBind() {
+        return BindingBuilder.bind(bnbTransferTestQueue()).to(bnbTransferTestExchange()).with(QueueEnum.BNB_TRANSFER_TEST.getRoute());
+    }
+    // === 消息测试 end ===
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
index ae91478..18eac11 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -73,6 +73,15 @@
         dappSystemService.bnbTransfer(id);
     }
 
+    /**转账拨币
+     * @param id
+     */
+    @RabbitListener(queues = QueueConstants.QUEUE_BNB_TRANSFER_TEST)
+    public void bnbTransferTest(Long id) {
+        log.info("消费转账拨币:{}", id);
+        dappSystemService.bnbTransferTest(id);
+    }
+
     /**代理升级
      * @param id
      */
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
index f03b2d2..fd92e85 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -93,6 +93,15 @@
     }
 
     /**
+     * 转账拨币
+     */
+    public void sendBnbTransferTestMsg(Long id) {
+        log.info("转账拨币:{}", id);
+        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+        rabbitTemplate.convertAndSend(QueueEnum.BNB_TRANSFER_TEST.getExchange(), QueueEnum.BNB_TRANSFER_TEST.getRoute(), id, correlationData);
+    }
+
+    /**
      * 代理升级
      */
     public void sendAgentUpMsg(Long id) {
diff --git a/src/main/resources/mapper/dapp/DappFundFlowDao.xml b/src/main/resources/mapper/dapp/DappFundFlowDao.xml
index 00984da..0d65329 100644
--- a/src/main/resources/mapper/dapp/DappFundFlowDao.xml
+++ b/src/main/resources/mapper/dapp/DappFundFlowDao.xml
@@ -103,4 +103,14 @@
         and version = 1
         and status = 1
     </update>
+
+    <select id="selectByStateAndVersionAndFromHashLimitOne" resultType="cc.mrbird.febs.dapp.entity.DappFundFlowEntity">
+        select * from dapp_fund_flow
+        where status = #{status}
+          and version = #{version}
+          and from_hash is null
+        ORDER BY
+            id ASC
+            LIMIT 1
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1