From 954a7233a7bdc89153edafd32f312ef198a2870a Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 03 Jun 2020 14:19:45 +0800 Subject: [PATCH] modify rabbit init data --- src/main/resources/mapper/contract/ContractHoldOrderDao.xml | 4 + src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java | 2 src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java | 2 src/main/resources/mapper/contract/ContractEntrustOrderDao.xml | 4 + src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java | 135 +++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/application.yml | 4 6 files changed, 149 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java index 7f6d128..f52382e 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java +++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java @@ -16,4 +16,6 @@ public List<ContractEntrustOrderEntity> selectEntrustOrderListByMemberId(@Param("memberId") Long memberId); public List<ContractEntrustOrderEntity> selectEntrustOrderListByIds(@Param("list") List<Long> list); + + public List<ContractEntrustOrderEntity> selectAllEntrustOrder(); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java index adaab0b..e4e4b23 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java +++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java @@ -40,4 +40,6 @@ public int updateHoldOrderIsCanClosingById(@Param("isCanClosing") int isCanClosing, @Param("id") Long id); + public List<ContractHoldOrderEntity> selectAllHoldOrder(); + } diff --git a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java new file mode 100644 index 0000000..25638d8 --- /dev/null +++ b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java @@ -0,0 +1,135 @@ +package com.xcong.excoin.rabbit.init; + +import com.alibaba.fastjson.JSONObject; +import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; +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; +import com.xcong.excoin.rabbit.pricequeue.OrderModel; +import com.xcong.excoin.rabbit.producer.OrderProducer; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; + +/** + * 后台开启 APP不开启 + * + * @author helius + */ +@Slf4j +@Component +@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true") +public class OrderProducerInit { + + @Resource + private ContractEntrustOrderDao contractEntrustOrderDao; + + @Resource + private ContractHoldOrderDao contractHoldOrderDao; + + @Resource + private OrderProducer producer; + + @PostConstruct + public void initOrder() { + log.info("=======初始化未完成订单信息======="); + + // 查询所有未平仓的单 + List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectAllHoldOrder(); + // 查询所有未完成的委托单 + List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectAllEntrustOrder(); + + if (CollectionUtils.isNotEmpty(holdOrderEntities)) { + for (ContractHoldOrderEntity order : holdOrderEntities) { + // 开多1,开空 2 + int openingType = order.getOpeningType(); + // 1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空 + // 9:止盈平多10:止盈平空11:止损平多12:止损平空 + if (ContractHoldOrderEntity.OPENING_TYPE_MORE == openingType) { + // 开多 发送开多止损 止盈 爆仓 + // 爆仓价 + BigDecimal forceSetPrice = order.getForceClosingPrice(); + if (forceSetPrice != null) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_BOMB.getValue(), forceSetPrice.toPlainString(), + order.getSymbol(), order.getOperateNo()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + // 止损 + BigDecimal stopLossPrice = order.getStopLossPrice(); + if (stopLossPrice != null && stopLossPrice.compareTo(BigDecimal.ZERO) > 0) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_LESS.getValue(), + stopLossPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + // 止盈 + BigDecimal stopProfitPrice = order.getStopProfitPrice(); + if (stopProfitPrice != null && stopProfitPrice.compareTo(BigDecimal.ZERO) > 0) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_PROFIT.getValue(), + stopProfitPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + + } else { + // 开空 发送开空止损 止盈 爆仓 + // 爆仓价 + BigDecimal forceSetPrice = order.getForceClosingPrice(); + if (forceSetPrice != null) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_BOMB.getValue(), forceSetPrice.toPlainString(), + order.getSymbol(), order.getOperateNo()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + // 止损 + BigDecimal stopLossPrice = order.getStopLossPrice(); + if (stopLossPrice != null && stopLossPrice.compareTo(BigDecimal.ZERO) > 0) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_LESS.getValue(), + stopLossPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + // 止盈 + BigDecimal stopProfitPrice = order.getStopProfitPrice(); + if (stopProfitPrice != null && stopProfitPrice.compareTo(BigDecimal.ZERO) > 0) { + OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_PROFIT.getValue(), + stopProfitPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + } + + } + } + + if (CollectionUtils.isNotEmpty(entrustOrderEntities)) { + for (ContractEntrustOrderEntity order : entrustOrderEntities) { + // 开多1,开空 2 + int entrustType = order.getEntrustType(); + // 开多 + BigDecimal entrustPrice = order.getEntrustPrice(); + OrderModel model; + if (ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE == entrustType) { + // 开多委托 + model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_MORE.getValue(), + entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + + } else { + model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_LESS.getValue(), + entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), + order.getSymbol()); + } + producer.sendPriceOperate(JSONObject.toJSONString(model)); + } + } + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b28cd2d..cf1a6f1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -96,10 +96,10 @@ # k线更新任务控制 kline-update-job: false #最新价任务控制 - newest-price-update-job: true + newest-price-update-job: false #其他任务控制 other-job: false - rabbit-consumer: true + rabbit-consumer: false aliyun: oss: diff --git a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml index be44bef..8b31fb1 100644 --- a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml +++ b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml @@ -18,4 +18,8 @@ #{item} </foreach> </select> + + <select id="selectAllEntrustOrder" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity"> + select * from contract_entrust_order + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml index ae43110..024fe90 100644 --- a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml +++ b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml @@ -32,4 +32,8 @@ update contract_hold_order set is_can_closing=#{isCanClosing} where id=#{id} </update> + + <select id="selectAllHoldOrder" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity"> + select * from contract_hold_order + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1