From faa81566316ada6dbd0d5d5f8b7100032f57d51c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 26 Aug 2020 12:04:36 +0800
Subject: [PATCH] modify entrust close order

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java          |   34 +++++++++++++----
 src/main/java/com/xcong/excoin/modules/contract/service/RabbitOrderService.java                   |    4 ++
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java |   24 ++++++------
 src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java                        |    2 +
 4 files changed, 44 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/RabbitOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/RabbitOrderService.java
index 670735f..b934cb1 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/RabbitOrderService.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/RabbitOrderService.java
@@ -1,6 +1,8 @@
 package com.xcong.excoin.modules.contract.service;
 
 
+import com.xcong.excoin.rabbit.pricequeue.OrderModel;
+
 import java.util.List;
 
 /**
@@ -9,4 +11,6 @@
 public interface RabbitOrderService {
 
     public void cancelHoldOrder(List<Long> ids);
+
+    public void entrustCloseOrder(List<OrderModel> list);
 }
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 585b492..6b60dba 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
@@ -299,22 +299,22 @@
         int closeType;
         if (holdOrderEntity.getOpeningType() == ContractHoldOrderEntity.OPENING_TYPE_MORE) {
             // 开多, 若委托价低于当前价则立即成交
-            if (submitCloseEntrustDto.getEntrustPrice().compareTo(newPrice) <= 0) {
-                WholeCloseOrderDto wholeCloseOrderDto = new WholeCloseOrderDto();
-                wholeCloseOrderDto.setCount(submitCloseEntrustDto.getSymbolCnt());
-                wholeCloseOrderDto.setId(submitCloseEntrustDto.getId());
-                return contractHoldOrderService.cancelHoldOrder(wholeCloseOrderDto);
-            }
+//            if (submitCloseEntrustDto.getEntrustPrice().compareTo(newPrice) <= 0) {
+//                WholeCloseOrderDto wholeCloseOrderDto = new WholeCloseOrderDto();
+//                wholeCloseOrderDto.setCount(submitCloseEntrustDto.getSymbolCnt());
+//                wholeCloseOrderDto.setId(submitCloseEntrustDto.getId());
+//                return contractHoldOrderService.cancelHoldOrder(wholeCloseOrderDto);
+//            }
 
             closeType = ContractOrderEntity.ORDER_TYPE_CLOSE_MORE;
         } else {
             // 开空, 若委托价高于当前价则立即成交
-            if (submitCloseEntrustDto.getEntrustPrice().compareTo(newPrice) >= 0) {
-                WholeCloseOrderDto wholeCloseOrderDto = new WholeCloseOrderDto();
-                wholeCloseOrderDto.setCount(submitCloseEntrustDto.getSymbolCnt());
-                wholeCloseOrderDto.setId(submitCloseEntrustDto.getId());
-                return contractHoldOrderService.cancelHoldOrder(wholeCloseOrderDto);
-            }
+//            if (submitCloseEntrustDto.getEntrustPrice().compareTo(newPrice) >= 0) {
+//                WholeCloseOrderDto wholeCloseOrderDto = new WholeCloseOrderDto();
+//                wholeCloseOrderDto.setCount(submitCloseEntrustDto.getSymbolCnt());
+//                wholeCloseOrderDto.setId(submitCloseEntrustDto.getId());
+//                return contractHoldOrderService.cancelHoldOrder(wholeCloseOrderDto);
+//            }
 
             closeType = ContractOrderEntity.ORDER_TYPE_CLOSE_LESS;
         }
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
index 8cfa416..706dda4 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -6,6 +6,7 @@
 import com.xcong.excoin.common.enumerates.CoinTypeEnum;
 import com.xcong.excoin.common.enumerates.OrderClosingTypeEnum;
 import com.xcong.excoin.common.system.service.CommonService;
+import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao;
 import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
 import com.xcong.excoin.modules.contract.dao.ContractOrderDao;
 import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
@@ -31,6 +32,7 @@
 import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.rabbit.pricequeue.OrderModel;
 import com.xcong.excoin.utils.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -38,6 +40,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -51,30 +54,22 @@
 
     @Resource
     private MemberDao memberDao;
-
     @Resource
     private OrderWebsocketServiceImpl orderWebsocketService;
-
     @Resource
     private ContractHoldOrderDao contractHoldOrderDao;
-
     @Resource
     private ContractOrderDao contractOrderDao;
-
     @Resource
     private CommonService commonService;
-
     @Resource
     private MemberWalletContractDao memberWalletContractDao;
-
     @Resource
     private CacheSettingUtils cacheSettingUtils;
-
     @Resource
     private RedisUtils redisUtils;
     @Resource
     private MemberSettingDao memberSettingDao;
-
     @Resource
     private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
     @Resource
@@ -85,6 +80,8 @@
     private FollowTraderProfitDetailDao followTraderProfitDetailDao;
     @Resource
     private FollowFollowerProfitDao followFollowerProfitDao;
+    @Resource
+    private ContractEntrustOrderDao contractEntrustOrderDao;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -340,4 +337,25 @@
 
         }
     }
+
+    @Override
+    public void entrustCloseOrder(List<OrderModel> list) {
+        if (CollUtil.isNotEmpty(list)) {
+            List<Long> ids = new ArrayList<>();
+            list.forEach(model -> ids.add(model.getOrderId()));
+            List<ContractEntrustOrderEntity> contractEntrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByIds(ids);
+
+            if (CollUtil.isNotEmpty(contractEntrustOrderEntities)) {
+                for (ContractEntrustOrderEntity entrustOrderEntity : contractEntrustOrderEntities) {
+                    closeOrder(entrustOrderEntity);
+                }
+            } else {
+                log.info("平仓委托单未找到");
+            }
+        }
+    }
+
+    private void closeOrder(ContractEntrustOrderEntity entrustOrder) {
+        log.info("执行平仓委托");
+    }
 }
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 93110ae..891e512 100644
--- a/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
@@ -156,5 +156,7 @@
     public void onMessageLimitClose(Message message, Channel channel) {
         String content = new String(message.getBody());
         log.info("==message-price-consumer==我收到消息了委托平仓: {}", content);
+        List<OrderModel> list = JSONArray.parseArray(content, OrderModel.class);
+        orderService.entrustCloseOrder(list);
     }
 }

--
Gitblit v1.9.1