From f5f590dbc5ff6ca1e270ffcfb45a80d43b315e69 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 30 Mar 2021 14:52:18 +0800
Subject: [PATCH] add entrust order follow order

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   26 +++++++++++++++-----------
 src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java    |   21 +++++++++++++++++++++
 src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java          |    4 ++++
 3 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
index bbcbbd8..9bc63b1 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
@@ -4,6 +4,8 @@
 import com.xcong.excoin.common.response.Result;
 import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
 import com.xcong.excoin.modules.contract.parameter.dto.*;
+import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
 import org.apache.ibatis.annotations.Param;
 
@@ -49,4 +51,6 @@
     public Result changePositionType();
     public void calHoldFeeAmountForBondAmount();
 
+    public void sendFollowOrder(FollowTraderInfoEntity traderInfoEntity, ContractHoldOrderEntity holdOrderEntity);
+
 }
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 c3a3262..eca1b26 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
@@ -385,17 +385,7 @@
 
             // 若该用户为交易员且开启带单模式,则发送带单异步
             if (isOpenFollow) {
-                FollowFollowerOrderRelationEntity relationEntity = new FollowFollowerOrderRelationEntity();
-                relationEntity.setIsShow(FollowFollowerOrderRelationEntity.IS_SHOW_Y);
-                relationEntity.setMemberId(holdOrderEntity.getMemberId());
-                relationEntity.setOrderId(holdOrderEntity.getId());
-                relationEntity.setOrderType(FollowFollowerOrderRelationEntity.ORDER_TYPE_HOLD);
-                relationEntity.setTradeId(tradeInfo.getId());
-                relationEntity.setTradeMemberId(tradeInfo.getMemberId());
-                relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo());
-                followFollowerOrderRelationDao.insert(relationEntity);
-
-                followProducer.sendAddFollowOrder(holdOrderEntity.getId());
+                sendFollowOrder(tradeInfo, holdOrderEntity);
 //                ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
             }
             // 提交成功
@@ -405,6 +395,20 @@
         return Result.fail(MessageSourceUtils.getString("member_service_0067"));
     }
 
+    @Override
+    public void sendFollowOrder(FollowTraderInfoEntity tradeInfo, ContractHoldOrderEntity holdOrderEntity) {
+        FollowFollowerOrderRelationEntity relationEntity = new FollowFollowerOrderRelationEntity();
+        relationEntity.setIsShow(FollowFollowerOrderRelationEntity.IS_SHOW_Y);
+        relationEntity.setMemberId(holdOrderEntity.getMemberId());
+        relationEntity.setOrderId(holdOrderEntity.getId());
+        relationEntity.setOrderType(FollowFollowerOrderRelationEntity.ORDER_TYPE_HOLD);
+        relationEntity.setTradeId(tradeInfo.getId());
+        relationEntity.setTradeMemberId(tradeInfo.getMemberId());
+        relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo());
+        followFollowerOrderRelationDao.insert(relationEntity);
+
+        followProducer.sendAddFollowOrder(holdOrderEntity.getId());
+    }
 
     /**
      * 全仓模式--若当前已经存在持仓,则合并当前持仓
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
index 06164aa..9510fe7 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -39,6 +39,7 @@
 import com.xcong.excoin.modules.member.service.MemberWalletContractService;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
+import com.xcong.excoin.rabbit.producer.FollowProducer;
 import com.xcong.excoin.rabbit.producer.OrderProducer;
 import com.xcong.excoin.utils.*;
 import lombok.extern.slf4j.Slf4j;
@@ -104,6 +105,9 @@
     private RedisUtils redisUtils;
     @Resource
     private FollowOrderOperationService followOrderOperationService;
+
+    @Resource
+    private FollowProducer followProducer;
 
     public void dealOrderFromMq(List<OrderModel> list, Integer type) {
         if (CollectionUtils.isNotEmpty(list)) {
@@ -625,6 +629,16 @@
                     contractHoldOrderEntity.setOpeningType(ContractHoldOrderEntity.OPENING_TYPE_LESS);
                 }
 
+                // 判断是否开启了带单
+                boolean isOpenFollow = false;
+                FollowTraderInfoEntity tradeInfo = null;
+                if (MemberEntity.IS_TRADER_Y.equals(memberEntity.getIsTrader())) {
+                    tradeInfo = followTraderInfoDao.selectTraderInfoByMemberId(memberEntity.getId());
+                    if (FollowTraderInfoEntity.ISOPEN_Y.equals(tradeInfo.getIsOpen())) {
+                        isOpenFollow = true;
+                    }
+                }
+
                 //持仓单赋值
                 contractHoldOrderEntity.setMemberId(memId);
                 contractHoldOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y);
@@ -647,6 +661,7 @@
                 contractHoldOrderEntity.setTradeType(ContractHoldOrderEntity.TRADE_TYPE_LIMIT);
                 contractHoldOrderEntity.setOperateNo(1);
                 contractHoldOrderEntity.setSymbolCntSale(contractHoldOrderEntity.getSymbolCnt());
+                contractHoldOrderEntity.setContractType(isOpenFollow ? ContractOrderEntity.CONTRACTTYPE_DOCUMENTARY : ContractOrderEntity.CONTRACTTYPE_NORMAL);
                 contractHoldOrderService.save(contractHoldOrderEntity);
 
                 // 需要一个历史插入
@@ -675,6 +690,12 @@
 
                 //返佣
                 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), openFeePrice, contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN);
+
+                // 若该用户为交易员且开启带单模式,则发送带单异步
+                if (isOpenFollow) {
+                    contractHoldOrderService.sendFollowOrder(tradeInfo, contractHoldOrderEntity);
+                }
+
             }
         }
     }

--
Gitblit v1.9.1