From 65c24664cf5700396a25c46dfc497be9b1601d52 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 28 Aug 2020 19:08:25 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 99 +++++++++++++++++++++++++++++++++++--------------
1 files changed, 71 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
index a40e334..1489125 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -143,28 +143,34 @@
}
for (ContractHoldOrderEntity order : orderList) {
Long orderId = order.getId();
- System.out.println("开多止盈订单号:" + order.getOrderNo());
- System.out.println("传来的止盈价格:" + modelMap.get(order.getId()));
+ log.info("开多止盈订单号:" + order.getOrderNo());
+ log.info("传来的止盈价格:" + modelMap.get(order.getId()));
if (null != order.getStopProfitPrice()) {
BigDecimal closePrice = order.getStopProfitPrice();
BigDecimal queuePrice = modelMap.get(order.getId());
- System.out.println("订单的止盈价格:" + closePrice);
+ log.info("订单的止盈价格:" + closePrice);
// 判断 保留七位是为了忽略以为小数 防止不精确导致的不相等
if (queuePrice.compareTo(closePrice) != 0) {
// 不能止盈
- System.out.println("数据库价格:" + queuePrice.toPlainString() + "--价格不能止盈:" + closePrice);
+ log.info("数据库价格:" + queuePrice.toPlainString() + "--价格不能止盈:" + closePrice);
//更新数据
contractHoldOrderService.updateOrderIsCanClosingAndBatchNoById(orderId);
continue;
}
- System.out.println("执行操作");
+ log.info("执行操作");
// 止盈价
String symbol = order.getSymbol();
// 本次需要退回的保证金
BigDecimal prePrice = order.getBondAmount();
Long memberId = order.getMemberId();
- MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ MemberWalletContractEntity wallet;
+ if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ } else {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(order.getSymbol()));
+ }
+
if (wallet != null) {
// 历史订单
ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(order);
@@ -192,7 +198,7 @@
// profitLossPrice = profitLossPrice.multiply(BigDecimal.ONE.add(tradeSetting.getProfitParam()));
}
}
- //回报率
+ // 回报率
BigDecimal returnRate = profitLossPrice.divide((order.getBondAmount().subtract(contractOrderEntity.getOpeningFeeAmount())), 8, BigDecimal.ROUND_DOWN);
contractOrderEntity.setRewardAmount(profitLossPrice);
contractOrderEntity.setRewardRatio(returnRate);
@@ -257,7 +263,12 @@
// 本次需要退回的预付款
BigDecimal prePrice = order.getBondAmount();
Long memberId = order.getMemberId();
- MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ MemberWalletContractEntity wallet;
+ if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ } else {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(order.getSymbol()));
+ }
if (wallet != null) {
// 历史订单
ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(order);
@@ -351,7 +362,12 @@
Long memberId = order.getMemberId();
// 本次需要退回的预付款
BigDecimal prePrice = order.getBondAmount();
- MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ MemberWalletContractEntity wallet;
+ if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ } else {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(order.getSymbol()));
+ }
if (wallet != null) {
// 历史订单
@@ -442,7 +458,12 @@
Long memberId = order.getMemberId();
// 本次需要退回的预付款
BigDecimal prePrice = order.getBondAmount();
- MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ MemberWalletContractEntity wallet;
+ if (order.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT");
+ } else {
+ wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeConvert.convertContractTypeToCoin(order.getSymbol()));
+ }
if (wallet != null) {
// 历史订单
@@ -614,7 +635,7 @@
// 手续费
BigDecimal openFeePrice = CalculateUtil.getOpenFeePrice(entrustOrder.getEntrustPrice(), entrustOrder.getSymbolSku(), entrustOrder.getSymbolCnt(), tradeSettingEntity.getFeeRatio());
- ContractHoldOrderEntity wholeHoldOrder = contractHoldOrderDao.selectWholeHoldOrderByOrderType(entrustOrder.getMemberId(), entrustOrder.getEntrustType());
+ ContractHoldOrderEntity wholeHoldOrder = contractHoldOrderDao.selectWholeHoldOrderByOrderType(entrustOrder.getMemberId(), entrustOrder.getEntrustType(), entrustOrder.getSymbol());
// 判断持仓是否存在,若不存在则创建新的持仓订单
if (wholeHoldOrder == null) {
log.info("持仓不存在");
@@ -751,25 +772,47 @@
contractOrderEntity.setClosingPrice(nowPrice);
contractOrderEntity.setClosingTime(new Date());
contractOrderEntity.setClosingFeeAmount(coinsOrder.getOpeningFeeAmount());
- contractOrderEntity.setRewardAmount(coinsOrder.getBondAmount().subtract(contractOrderEntity.getOpeningFeeAmount()).negate());
- contractOrderService.save(contractOrderEntity);
- //更新用户钱包数据
- MemberWalletContractEntity usdt = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memId, "USDT");
+ if (coinsOrder.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
+ contractOrderEntity.setRewardAmount(coinsOrder.getBondAmount().subtract(contractOrderEntity.getOpeningFeeAmount()).negate());
+ contractOrderService.save(contractOrderEntity);
- // 减去的时候用负数
- BigDecimal totalPrice = coinsOrder.getBondAmount().negate();
- memberWalletContractService.increaseWalletContractBalanceById(null, totalPrice, null, usdt.getId());
- // 流水记录 TODO
- MemberAccountFlowEntity record = new MemberAccountFlowEntity();
- record.setCreateTime(new Date());
- record.setSource("系统自动平仓");
- record.setRemark("系统自动平仓");
- record.setBalance(usdt.getAvailableBalance());
- record.setMemberId(memId);
- record.setSymbol(coinsOrder.getSymbol());
- record.setPrice(coinsOrder.getBondAmount());
- memberAccountFlowEntityDao.insert(record);
+ //更新用户钱包数据
+ MemberWalletContractEntity usdt = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memId, "USDT");
+
+ // 减去的时候用负数
+ BigDecimal totalPrice = coinsOrder.getBondAmount().negate();
+ memberWalletContractService.increaseWalletContractBalanceById(null, totalPrice, null, usdt.getId());
+
+ // 流水记录 TODO
+ MemberAccountFlowEntity record = new MemberAccountFlowEntity();
+ record.setCreateTime(new Date());
+ record.setSource("系统自动平仓");
+ record.setRemark("系统自动平仓");
+ record.setBalance(usdt.getAvailableBalance());
+ record.setMemberId(memId);
+ record.setSymbol(coinsOrder.getSymbol());
+ record.setPrice(coinsOrder.getBondAmount());
+ memberAccountFlowEntityDao.insert(record);
+ } else {
+ MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memId, CoinTypeConvert.convertContractTypeToCoin(coinsOrder.getSymbol()));
+
+ contractOrderEntity.setRewardAmount(wallet.getTotalBalance().subtract(coinsOrder.getOpeningFeeAmount()).negate());
+ contractOrderService.save(contractOrderEntity);
+
+ memberWalletContractService.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().negate(), null, wallet.getId());
+
+ // 流水记录 TODO
+ MemberAccountFlowEntity record = new MemberAccountFlowEntity();
+ record.setCreateTime(new Date());
+ record.setSource("系统自动平仓");
+ record.setRemark("系统自动平仓");
+ record.setBalance(BigDecimal.ZERO);
+ record.setMemberId(memId);
+ record.setSymbol(coinsOrder.getSymbol());
+ record.setPrice(wallet.getTotalBalance().subtract(coinsOrder.getOpeningFeeAmount()));
+ memberAccountFlowEntityDao.insert(record);
+ }
}
}
}
--
Gitblit v1.9.1