From 5ea4b4d2477c425efd18b9b9428f707ec1ccc634 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 31 Aug 2020 17:16:00 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 53 insertions(+), 4 deletions(-) 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 f26a9b1..f75401d 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 @@ -1,8 +1,11 @@ package com.xcong.excoin.modules.contract.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; +import com.xcong.excoin.common.contants.AppContants; import com.xcong.excoin.modules.coin.dao.MemberAccountFlowEntityDao; import com.xcong.excoin.modules.coin.entity.MemberAccountFlowEntity; +import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao; import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; @@ -24,10 +27,7 @@ import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; import com.xcong.excoin.rabbit.pricequeue.OrderModel; import com.xcong.excoin.rabbit.producer.OrderProducer; -import com.xcong.excoin.utils.CacheSettingUtils; -import com.xcong.excoin.utils.CalculateUtil; -import com.xcong.excoin.utils.CoinTypeConvert; -import com.xcong.excoin.utils.ThreadPoolUtils; +import com.xcong.excoin.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; @@ -75,6 +75,10 @@ private MemberSettingDao memberSettingDao; @Resource private ContractHoldOrderDao contractHoldOrderDao; + @Resource + private ContractEntrustOrderDao contractEntrustOrderDao; + @Resource + private RedisUtils redisUtils; public void dealOrderFromMq(List<OrderModel> list, Integer type) { @@ -130,6 +134,23 @@ } } + + + /** + * 止盈/止损后删除全仓委托平仓单 + * + * @param orderNo + */ + private void deleteEntrustCloseOrder(String orderNo) { + // 若平掉所有张数,若存在委托平仓,则删除委托平仓记录 + List<ContractEntrustOrderEntity> entrustOrders = contractEntrustOrderDao.selectEntrustOrderByOrderNo(orderNo); + if (CollUtil.isNotEmpty(entrustOrders)) { + for (ContractEntrustOrderEntity entrustOrder : entrustOrders) { + contractEntrustOrderDao.deleteById(entrustOrder.getId()); + } + } + } + /** * 开多止盈 @@ -224,6 +245,11 @@ //返佣 ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); + + // 全仓模式,止盈/止损 删除委托平仓 + if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { + deleteEntrustCloseOrder(order.getOrderNo()); + } } } } @@ -234,6 +260,7 @@ /** * 开空止盈 */ + @Transactional(rollbackFor = Exception.class) public void dealForLessStopPro(List<ContractHoldOrderEntity> orderList, List<OrderModel> list) { //List<CoinsCoinsOrder> orderList = orderMapper.selectOrderByBatchNo(batchno); //System.out.println("开空止盈订单batchno:" + batchno); @@ -322,6 +349,11 @@ //返佣 ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); + + // 全仓模式,止盈/止损 删除委托平仓 + if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { + deleteEntrustCloseOrder(order.getOrderNo()); + } } } } @@ -334,6 +366,7 @@ * * @param */ + @Transactional(rollbackFor = Exception.class) public void dealForMoreLoss(List<ContractHoldOrderEntity> orderList, List<OrderModel> list) { //List<CoinsCoinsOrder> orderList = orderMapper.selectOrderByBatchNo(batchno); //System.out.println("开多止损批次号batchno:" + batchno); @@ -419,6 +452,11 @@ //返佣 ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); + + // 全仓模式,止盈/止损 删除委托平仓 + if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { + deleteEntrustCloseOrder(order.getOrderNo()); + } } } } @@ -430,6 +468,7 @@ * * @param */ + @Transactional(rollbackFor = Exception.class) public void dealForLessLoss(List<ContractHoldOrderEntity> orderList, List<OrderModel> list) { // List<CoinsCoinsOrder> orderList = orderMapper.selectOrderByBatchNo(batchno); //System.out.println("开空止损批次号batchno:" + batchno); @@ -515,6 +554,11 @@ //返佣 ThreadPoolUtils.calReturnMoney(order.getMemberId(), order.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); + + // 全仓模式,止盈/止损 删除委托平仓 + if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == order.getPositionType()) { + deleteEntrustCloseOrder(order.getOrderNo()); + } } } } @@ -730,6 +774,11 @@ modelMap.put(model.getOrderId(), model.getOperateNo()); } for (ContractHoldOrderEntity coinsOrder : orderList) { + List<Object> types = redisUtils.lGet(AppContants.RABBIT_TYPE + coinsOrder.getId(), 0, -1); + if(types.contains(9) || types.contains(10) || types.contains(11) || types.contains(12)) { + log.info("存在止盈/止损 orderId : {}, types : {}", coinsOrder.getId(), JSONObject.toJSONString(types)); + continue; + } Long orderId = coinsOrder.getId(); Integer operateNo = coinsOrder.getOperateNo(); //判断当前订单是否是最新的爆仓价 不相等时直接进入下一个订单 -- Gitblit v1.9.1