Helius
2020-08-29 5677479567a47c14ee091770170e4c7e01bbf31c
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
@@ -1,13 +1,17 @@
package com.xcong.excoin.rabbit.init;
import cn.hutool.core.collection.CollUtil;
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.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.rabbit.pricequeue.OrderModel;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.CalculateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +22,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
import java.util.List;
/**
@@ -38,6 +43,8 @@
    @Resource
    private OrderProducer producer;
    @Resource
    private MemberDao memberDao;
    @PostConstruct
    public void initOrder() {
@@ -56,6 +63,7 @@
                // 9:止盈平多10:止盈平空11:止损平多12:止损平空
                if (ContractHoldOrderEntity.OPENING_TYPE_MORE == openingType) {
                    // 开多 发送开多止损 止盈 爆仓
                    if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
                    // 爆仓价
                    BigDecimal forceSetPrice = order.getForceClosingPrice();
                    if (forceSetPrice != null) {
@@ -63,6 +71,7 @@
                            OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_BOMB.getValue(), forceSetPrice.toPlainString(),
                                    order.getSymbol(), order.getOperateNo());
                            producer.sendPriceOperate(JSONObject.toJSONString(model));
                            }
                        }
                    }
                    // 止损
@@ -85,12 +94,14 @@
                } else {
                    // 开空 发送开空止损 止盈 爆仓
                    // 爆仓价
                    if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
                    BigDecimal forceSetPrice = order.getForceClosingPrice();
                    if (forceSetPrice != null) {
                        if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) {
                            OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_LESS_BOMB.getValue(), forceSetPrice.toPlainString(),
                                    order.getSymbol(), order.getOperateNo());
                            producer.sendPriceOperate(JSONObject.toJSONString(model));
                            }
                        }
                    }
                    // 止损
@@ -114,6 +125,21 @@
            }
        }
        // 全仓持仓
        List<HashMap<String, Object>> wholeHoldOrders = contractHoldOrderDao.selectAllWholeOrderMemberIdAndSymbol();
        if (CollUtil.isNotEmpty(wholeHoldOrders)) {
            MemberEntity memberEntity = null;
            for (HashMap<String, Object> wholeHoldOrder : wholeHoldOrders) {
                Long memberId = (Long) wholeHoldOrder.get("member_id");
                String symbol = (String) wholeHoldOrder.get("symbol");
                if (memberEntity == null || !memberId.equals(memberEntity.getId())) {
                    memberEntity = memberDao.selectById(memberId);
                }
                CalculateUtil.getForceSetPriceForWhole(symbol, memberEntity);
            }
        }
        if (CollectionUtils.isNotEmpty(entrustOrderEntities)) {
            for (ContractEntrustOrderEntity order : entrustOrderEntities) {
                // 开多1,开空 2
@@ -127,10 +153,18 @@
                            entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
                            order.getSymbol());
                } else {
                } else if (ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS == entrustType){
                    model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_LESS.getValue(),
                            entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
                            order.getSymbol());
                } else if (ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE == entrustType) {
                    model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_MORE.getValue(),
                            entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
                            order.getSymbol());
                } else {
                    model = new OrderModel(order.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_LESS.getValue(),
                            entrustPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(),
                            order.getSymbol());
                }
                producer.sendPriceOperate(JSONObject.toJSONString(model));
            }