From 5677479567a47c14ee091770170e4c7e01bbf31c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 29 Aug 2020 17:17:04 +0800
Subject: [PATCH] modify
---
src/test/java/com/xcong/excoin/WholeTest.java | 19 +++++++++
src/main/resources/mapper/contract/ContractHoldOrderDao.xml | 9 ++++
src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java | 3 +
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java | 62 ++++++++++++++++++++++++-------
src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 2 -
5 files changed, 79 insertions(+), 16 deletions(-)
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 9994454..aecc049 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
@@ -6,6 +6,7 @@
import org.apache.ibatis.annotations.Param;
import org.web3j.abi.datatypes.Int;
+import java.util.HashMap;
import java.util.List;
/**
@@ -51,4 +52,6 @@
public List<ContractHoldOrderEntity> selectHoldOrderListForWholeByMemberIdAndSymbol(@Param("memberId") Long memberId, @Param("symbol") String symbol);
+ public List<HashMap<String, Object>> selectAllWholeOrderMemberIdAndSymbol();
+
}
diff --git a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
index ad8f3e0..94d6e76 100644
--- a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
+++ b/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,13 +63,15 @@
// 9:止盈平多10:止盈平空11:止损平多12:止损平空
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == openingType) {
// 开多 发送开多止损 止盈 爆仓
- // 爆仓价
- BigDecimal forceSetPrice = order.getForceClosingPrice();
- if (forceSetPrice != null) {
- if (forceSetPrice.compareTo(BigDecimal.ZERO) >= 0) {
- OrderModel model = new OrderModel(order.getId(), RabbitPriceTypeEnum.CLOSE_MORE_BOMB.getValue(), forceSetPrice.toPlainString(),
- order.getSymbol(), order.getOperateNo());
- producer.sendPriceOperate(JSONObject.toJSONString(model));
+ 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_MORE_BOMB.getValue(), forceSetPrice.toPlainString(),
+ order.getSymbol(), order.getOperateNo());
+ producer.sendPriceOperate(JSONObject.toJSONString(model));
+ }
}
}
// 止损
@@ -85,12 +94,14 @@
} else {
// 开空 发送开空止损 止盈 爆仓
// 爆仓价
- 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));
+ 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));
}
diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index 73e8392..8f24589 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -118,13 +118,11 @@
subCnt = maxCnt - holdOrderEntity.getSymbolCntSale();
}
- log.info("--{}, {}, {}, {}", maxCnt, subCnt, openPrice, type);
feeAmount = feeAmount.add(holdOrderEntity.getOpeningFeeAmount());
sku = holdOrderEntity.getSymbolSku();
}
BigDecimal forceSetPrice = BigDecimal.ZERO;
if (subCnt != 0) {
- log.info("--->{}, {}, {}, {}, {}", openPrice, subCnt, sku, type, maxCnt);
forceSetPrice = getForceSetPrice(walletContract.getTotalBalance().subtract(feeAmount), openPrice, subCnt, sku, type, memberEntity);
}
diff --git a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
index 463ccbf..d52e599 100644
--- a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
+++ b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
@@ -65,4 +65,13 @@
and position_type=2
order by create_time desc
</select>
+
+ <select id="selectAllWholeOrderMemberIdAndSymbol" resultType="java.util.HashMap">
+ select
+ member_id,
+ symbol
+ from contract_hold_order
+ where position_type=2
+ group by member_id, symbol
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/test/java/com/xcong/excoin/WholeTest.java b/src/test/java/com/xcong/excoin/WholeTest.java
index 567ee1c..8c1ab3a 100644
--- a/src/test/java/com/xcong/excoin/WholeTest.java
+++ b/src/test/java/com/xcong/excoin/WholeTest.java
@@ -1,5 +1,6 @@
package com.xcong.excoin;
+import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
@@ -22,7 +23,9 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author wzy
@@ -119,4 +122,20 @@
CalculateUtil.getForceSetPriceForWhole("BTC/USDT", memberEntity);
}
+ @Test
+ public void initOrderTest() {
+ 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);
+ }
+ System.out.println(memberId + "-----" + symbol);
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1