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