From ab179533d6d4104875d6960b7661802c98b6ff1e Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 26 Aug 2020 10:49:29 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/rabbit/producer/OrderProducer.java                                 |   11 +++++
 src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java                    |    2 
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java |    4 +-
 src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java                        |   11 +++++
 src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java                                 |   24 ++++++++++++
 src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java                       |   17 ++++++++
 src/main/java/com/xcong/excoin/common/enumerates/RabbitPriceTypeEnum.java                         |    2 +
 7 files changed, 67 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/common/enumerates/RabbitPriceTypeEnum.java b/src/main/java/com/xcong/excoin/common/enumerates/RabbitPriceTypeEnum.java
index b3d568f..0fc175e 100644
--- a/src/main/java/com/xcong/excoin/common/enumerates/RabbitPriceTypeEnum.java
+++ b/src/main/java/com/xcong/excoin/common/enumerates/RabbitPriceTypeEnum.java
@@ -16,6 +16,8 @@
      */
     ENTRUST_OPEN_MORE(2)
     , ENTRUST_OPEN_LESS(3)
+    , ENTRUST_CLOSE_MORE(4)
+    , ENTRUST_CLOSE_LESS(5)
     , CLOSE_MORE_BOMB(6)
     , CLOSE_LESS_BOMB(7)
     , CLOSE_MORE_STOP_PROFIT(9)
diff --git a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
index 0a791bf..0287e82 100644
--- a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
@@ -42,6 +42,9 @@
     // 限价委托
     public static final String QUEUE_LIMIT = "QUEUE_LIMIT_NEW";
 
+    // 委托平仓
+    public static final String QUEUE_LIMIT_CLOSE = "QUEUE_LIMIT_CLOSE_NEW";
+
     // 爆仓队列
     public static final String QUEUE_COINOUT = "QUEUE_COINOUT_NEW";
 
@@ -71,6 +74,9 @@
     public static final String ROUTINGKEY_PRICEOPERATE = "ROUTINGKEY_PRICEOPERATE";
     // 平仓路由
     public static final String ROUTINGKEY_CLOSETRADE = "ROUTINGKEY_CLOSETRADE";
+
+    // 委托平仓
+    public static final String ROUTINGKEY_LIMIT_CLOSE = "ROUTINGKEY_LIMIT_CLOSE";
 
     @Resource
     private ConnectionFactory connectionFactory;
@@ -171,6 +177,16 @@
         return new Queue(QUEUE_LIMIT, true);
     }
 
+    /**
+     * 委托平仓
+     *
+     * @return
+     */
+    @Bean
+    public Queue queueLimitClose() {
+        return new Queue(QUEUE_LIMIT_CLOSE, true);
+    }
+
 
     /**
      * 爆仓
@@ -254,6 +270,14 @@
         return BindingBuilder.bind(queueLimit()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_LIMIT);
     }
 
+    /**
+     * 委托平仓
+     *
+     * @return
+     */
+    public Binding bindingLimitClose() {
+        return BindingBuilder.bind(queueLimitClose()).to(orderExchange()).with(RabbitMqConfig.QUEUE_LIMIT_CLOSE);
+    }
 
     /**
      * 爆仓
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
index 53ce2f5..585b492 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -343,10 +343,10 @@
         if (i > 0) {
             // 发送委托消息
             if (holdOrderEntity.getOpeningType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE) {
-                OrderModel model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_MORE.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
+                OrderModel model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_MORE.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
                 producer.sendPriceOperate(JSONObject.toJSONString(model));
             } else {
-                OrderModel model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_LESS.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
+                OrderModel model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_LESS.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
                 producer.sendPriceOperate(JSONObject.toJSONString(model));
             }
         }
diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
index b959b0e..5043ef8 100644
--- a/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
@@ -145,4 +145,15 @@
         List<Long> ids = JSONArray.parseArray(content, Long.class);
         orderService.cancelHoldOrder(ids);
     }
+
+    /**
+     * 委托平仓
+     *
+     * @param message
+     * @param channel
+     */
+    public void onMessageLimitClose(Message message, Channel channel) {
+        String content = new String(message.getBody());
+        log.info("==message-price-consumer==我收到消息了委托平仓: {}", content);
+    }
 }
diff --git a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
index d936325..f37ed36 100644
--- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
+++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -26,7 +26,7 @@
         // 【1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空8:撤单9:止盈平多10:止盈平空11:止损平多12:止损平空】
         int type = orderModel.getType();
         Map<String, List<OrderModel>> orderMap = PricePriorityQueue.getOrderMap(orderModel.getSymbol(), type);
-        if (type == 12 || type == 9 || type == 7 || type == 3) {
+        if (type == 12 || type == 9 || type == 7 || type == 3 || type == 4) {
             // 需要价格涨的
             PriorityBlockingQueue<AscBigDecimal> queue = PricePriorityQueue.getQueueAsc(orderModel.getSymbol());
             dealPriceAsc(orderModel, orderMap, queue);
diff --git a/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java b/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
index af91983..1aab16d 100644
--- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
+++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
@@ -111,9 +111,14 @@
                 List<OrderModel> bcList = new ArrayList<OrderModel>();
                 // 开空
                 List<OrderModel> wtkkList = new ArrayList<OrderModel>();
+                // 委托平多
+                List<OrderModel> wtpdList = new ArrayList<>();
                 switch (model.getType()) {
                     case 3:
                         wtkkList.add(model);
+                        break;
+                    case 4:
+                        wtpdList.add(model);
                         break;
                     case 7:
                         bcList.add(model);
@@ -143,6 +148,9 @@
                 }
                 if (CollectionUtils.isNotEmpty(wtkkList)) {
                     orderProducer.sendLimit(JSONObject.toJSONString(wtkkList));
+                }
+                if (CollectionUtils.isNotEmpty(wtpdList)) {
+                    orderProducer.sendLimitClose(JSONObject.toJSONString(wtpdList));
                 }
             }
         }
@@ -184,9 +192,14 @@
                 List<OrderModel> bcList = new ArrayList<OrderModel>();
                 // 开多委托
                 List<OrderModel> wtkdList = new ArrayList<OrderModel>();
+                // 委托平空
+                List<OrderModel> wtpkList = new ArrayList<>();
                 switch (model.getType()) {
                     case 2:
                         wtkdList.add(model);
+                        break;
+                    case 5:
+                        wtpkList.add(model);
                         break;
                     case 6:
                         bcList.add(model);
@@ -215,7 +228,9 @@
                 }
                 if (CollectionUtils.isNotEmpty(wtkdList)) {
                     orderProducer.sendLimit(JSONObject.toJSONString(wtkdList));
-
+                }
+                if (CollectionUtils.isNotEmpty(wtpkList)) {
+                    orderProducer.sendLimitClose(JSONObject.toJSONString(wtpkList));
                 }
             }
         }
diff --git a/src/main/java/com/xcong/excoin/rabbit/producer/OrderProducer.java b/src/main/java/com/xcong/excoin/rabbit/producer/OrderProducer.java
index 400cf46..d50e96f 100644
--- a/src/main/java/com/xcong/excoin/rabbit/producer/OrderProducer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/producer/OrderProducer.java
@@ -137,5 +137,16 @@
         }
     }
 
+    /**
+     * 发送委托平仓
+     *
+     * @param content
+     */
+    public void sendLimitClose(String content) {
+        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+        log.info("发送委托平仓消息:{} == pid:{}", content, correlationData.getId());
+
+        rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_A, RabbitMqConfig.ROUTINGKEY_LIMIT_CLOSE, content, correlationData);
+    }
 
 }

--
Gitblit v1.9.1