Helius
2020-06-03 954a7233a7bdc89153edafd32f312ef198a2870a
modify rabbit init data
1 files added
5 files modified
151 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java 135 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 4 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractEntrustOrderDao.xml 4 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractHoldOrderDao.xml 4 ●●●● patch | view | raw | blame | history
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();
}
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();
}
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
New file
@@ -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));
            }
        }
    }
}
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:
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>
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>