From 68d946debea91cc5afb2f7a870bf04b393335926 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 02 Sep 2020 18:07:58 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 4 ++++
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 31 ++++++++++++++++++++-----------
src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 6 +++---
3 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
index c3f8e36..54a64c4 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -213,6 +213,7 @@
int i = contractEntrustOrderDao.insert(entrustOrderEntity);
memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustOrderEntity.getBondAmount(), walletContract.getId());
if (i > 0) {
+ CalculateUtil.getForceSetPriceForWhole(submitEntrustDto.getSymbol(), memberEntity);
// 发送委托单队列消息
if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE) {
@@ -284,6 +285,9 @@
contractEntrustOrderDao.deleteById(entrustOrderEntity.getId());
if (i > 0) {
+ if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == entrustOrderEntity.getPositionType()) {
+ CalculateUtil.getForceSetPriceForWhole(entrustOrderEntity.getSymbol(), memberEntity);
+ }
return Result.ok(MessageSourceUtils.getString("cancellation_success"));
}
return Result.fail(MessageSourceUtils.getString("cancellation_fail"));
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 3c7daff..c6d461b 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
@@ -892,21 +892,30 @@
} else {
MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memId, CoinTypeConvert.convertContractTypeToCoin(coinsOrder.getSymbol()));
- BigDecimal rewardRatio = BigDecimal.ZERO;
- // 开多
- if (ContractHoldOrderEntity.OPENING_TYPE_MORE == coinsOrder.getOpeningType()) {
- // (最新价-开仓价)*规格*张数
- rewardRatio = nowPrice.subtract(coinsOrder.getOpeningPrice()).multiply(coinsOrder.getSymbolSku()).multiply(new BigDecimal(coinsOrder.getSymbolCntSale()));
- // 开空
- } else {
- // (开仓价-最新价)*规格*张数
- rewardRatio = coinsOrder.getOpeningPrice().subtract(nowPrice).multiply(coinsOrder.getSymbolSku()).multiply(new BigDecimal(coinsOrder.getSymbolCntSale()));
+// BigDecimal rewardRatio = BigDecimal.ZERO;
+// // 开多
+// if (ContractHoldOrderEntity.OPENING_TYPE_MORE == coinsOrder.getOpeningType()) {
+// // (最新价-开仓价)*规格*张数
+// rewardRatio = nowPrice.subtract(coinsOrder.getOpeningPrice()).multiply(coinsOrder.getSymbolSku()).multiply(new BigDecimal(coinsOrder.getSymbolCntSale()));
+// // 开空
+// } else {
+// // (开仓价-最新价)*规格*张数
+// rewardRatio = coinsOrder.getOpeningPrice().subtract(nowPrice).multiply(coinsOrder.getSymbolSku()).multiply(new BigDecimal(coinsOrder.getSymbolCntSale()));
+// }
+
+ // 委托单总委托金额
+ BigDecimal totalPrePayment = BigDecimal.ZERO;
+ List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memId);
+ if (CollUtil.isNotEmpty(entrustOrderEntities)) {
+ for (ContractEntrustOrderEntity entrustOrderEntity : entrustOrderEntities) {
+ totalPrePayment = totalPrePayment.add(entrustOrderEntity.getEntrustAmount());
+ }
}
- contractOrderEntity.setRewardAmount(wallet.getTotalBalance().subtract(contractOrderEntity.getOpeningFeeAmount()).negate());
+ contractOrderEntity.setRewardAmount(wallet.getTotalBalance().subtract(totalPrePayment).subtract(contractOrderEntity.getOpeningFeeAmount()).negate());
contractOrderService.save(contractOrderEntity);
- memberWalletContractService.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().negate(), null, wallet.getId());
+ memberWalletContractService.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().subtract(totalPrePayment).negate(), null, wallet.getId());
}
}
}
diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index 4e3c023..cc84320 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -99,7 +99,7 @@
int subCnt = 0;
BigDecimal openPrice = BigDecimal.ZERO;
int type = 1;
- BigDecimal feeAmount = BigDecimal.ZERO;
+ BigDecimal bondAmount = BigDecimal.ZERO;
BigDecimal sku = BigDecimal.ZERO;
Long id = 0L;
@@ -118,12 +118,12 @@
subCnt = maxCnt - holdOrderEntity.getSymbolCntSale();
}
- feeAmount = feeAmount.add(holdOrderEntity.getOpeningFeeAmount());
+ bondAmount = bondAmount.add(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()));
sku = holdOrderEntity.getSymbolSku();
}
BigDecimal forceSetPrice = BigDecimal.ZERO;
if (subCnt != 0) {
- forceSetPrice = getForceSetPrice(walletContract.getTotalBalance().subtract(feeAmount), openPrice, subCnt, sku, type, memberEntity);
+ forceSetPrice = getForceSetPrice(walletContract.getAvailableBalance().add(bondAmount), openPrice, subCnt, sku, type, memberEntity);
}
log.info("强平价:{}", forceSetPrice);
--
Gitblit v1.9.1