From 28526645c827a6160ea51d6d4e290e9a355d7e4f Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 04 Mar 2021 11:39:30 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java                             |   44 ++++++++++++++++++++++
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |    8 +++
 src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java                              |   14 +++++++
 src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java                             |   31 +++++++++++++++
 4 files changed, 96 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
index b8a2da2..5a0308f 100644
--- a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
@@ -79,6 +79,10 @@
     // 全仓价格操作
     public static final String QUEUE_WHOLE_PRICE = "QUEUE_WHOLE_PRCE";
 
+    // 跟单下单
+    public static final String QUEUE_FOLLOW_ORDER = "QUEUE_FOLLOW_ORDER";
+
+    public static final String ROUTINGKEY_FOLLOW_ORDER = "ROUTINGKEY_FOLLOW_ORDER";
 
     // 开多止盈路由键
     public static final String ROUTINGKEY_MOREPRO = "ROUTINGKEY_MOREPRO";
@@ -295,6 +299,16 @@
         return new Queue(QUEUE_WHOLE_BOMB, true);
     }
 
+    @Bean
+    public Queue queueFollowOrder() {
+        return new Queue(QUEUE_FOLLOW_ORDER, true);
+    }
+
+    @Bean
+    public Binding bindingFollowOrder() {
+        return BindingBuilder.bind(queueFollowOrder()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_FOLLOW_ORDER);
+    }
+
 
     @Bean
     public Binding bindingWholePrice() {
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
index 5a3f774..c320ae7 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -37,11 +37,13 @@
 import com.xcong.excoin.modules.member.entity.*;
 import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.rabbit.producer.FollowProducer;
 import com.xcong.excoin.rabbit.producer.OrderProducer;
 import com.xcong.excoin.utils.*;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
 import jnr.a64asm.Mem;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import sun.rmi.runtime.Log;
@@ -100,6 +102,9 @@
     private FollowTraderInfoDao followTraderInfoDao;
     @Resource
     private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
+
+    @Autowired
+    private FollowProducer followProducer;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -380,7 +385,8 @@
                 relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo());
                 followFollowerOrderRelationDao.insert(relationEntity);
 
-                ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
+                followProducer.sendAddFollowOrder(holdOrderEntity.getId());
+//                ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
             }
             // 提交成功
             return Result.ok(MessageSourceUtils.getString("member_service_0024"));
diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java
new file mode 100644
index 0000000..d3c140b
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java
@@ -0,0 +1,31 @@
+package com.xcong.excoin.rabbit.consumer;
+
+import com.rabbitmq.client.Channel;
+import com.xcong.excoin.configurations.RabbitMqConfig;
+import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
+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.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author wzy
+ * @date 2021-03-04
+ **/
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "app", name = "rabbit-consumer", havingValue = "true")
+public class FollowConsumer {
+
+    @Autowired
+    private FollowOrderOperationService followOrderOperationService;
+
+    @RabbitListener(queues = RabbitMqConfig.QUEUE_FOLLOW_ORDER)
+    public void addFollowOrder(Message message, Channel channel) {
+        String content = new String(message.getBody());
+        log.info("==收到跟单下单消息 : {}", content);
+        followOrderOperationService.addFollowerOrder(Long.parseLong(content));
+    }
+}
diff --git a/src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java b/src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java
new file mode 100644
index 0000000..2091602
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java
@@ -0,0 +1,44 @@
+package com.xcong.excoin.rabbit.producer;
+
+
+import com.xcong.excoin.configurations.RabbitMqConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * @author wzy
+ * @date 2021-03-04
+ **/
+@Slf4j
+@Component
+public class FollowProducer implements RabbitTemplate.ConfirmCallback {
+
+    private RabbitTemplate rabbitTemplate;
+
+    @Autowired
+    public FollowProducer(RabbitTemplate rabbitTemplate) {
+        this.rabbitTemplate = rabbitTemplate;
+        rabbitTemplate.setConfirmCallback(this);
+    }
+
+    @Override
+    public void confirm(CorrelationData correlationData, boolean b, String s) {
+
+    }
+
+    /**
+     * 发送跟单下单消息
+     *
+     * @param id
+     */
+    public void sendAddFollowOrder(Long id) {
+        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+        log.info("发送跟单下单消息: {}, {}", id, correlationData.getId());
+        rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_A, RabbitMqConfig.ROUTINGKEY_FOLLOW_ORDER, id, correlationData);
+    }
+}

--
Gitblit v1.9.1