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); } 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; } 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("执行平仓委托"); } } 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); } }