From 35636f3d0e19f7ec03aa672b9e8eecd6a62063f9 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sun, 13 Sep 2020 03:23:52 +0800
Subject: [PATCH] fix conflicts
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 46 +++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
index 3bc88b5..cda8ee6 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -478,6 +478,10 @@
canReduceMaxBond = BigDecimal.ZERO;
}
+ if (rewardRatio.compareTo(BigDecimal.ZERO) < 0) {
+ canReduceMaxBond = canReduceMaxBond.add(rewardRatio);
+ }
+
holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond);
holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance());
holdOrderListVo.setReturnRate(returnRate);
@@ -769,10 +773,10 @@
BigDecimal profitOrLess = BigDecimal.ZERO;
// 开多
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
- profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber);
+ profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
// 开空
} else {
- profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber);
+ profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
}
if (MemberEntity.IS_PROFIT_Y == memberEntity.getIsProfit()) {
@@ -792,6 +796,9 @@
ContractMoneyInfoVo contractMoneyInfoVo = new ContractMoneyInfoVo();
// 权益
BigDecimal equity = walletContractEntity.getTotalBalance().add(totalProfitOrLess);
+ if (equity.compareTo(BigDecimal.ZERO) <= 0) {
+ equity = BigDecimal.ZERO;
+ }
contractMoneyInfoVo.setBeUsedBondAmount(beUsedBondAmount);
contractMoneyInfoVo.setFrozenBondAmount(frozenBondAmount);
@@ -893,7 +900,7 @@
} else {
BigDecimal available = walletContractEntity.getAvailableBalance();
BigDecimal lessAmount = thisTimeHold.subtract(available);
- MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getId());
+ MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId());
memberWalletContractDao.increaseWalletContractBalanceById(available.negate(), available.negate(), null, walletContractEntity.getId());
BigDecimal newBondAmount = holdOrderEntity.getBondAmount().subtract(lessAmount);
@@ -948,4 +955,37 @@
}
return Result.fail(MessageSourceUtils.getString("member_service_0041"));
}
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void calHoldFeeAmountForBondAmount() {
+ List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectAllHoldOrder();
+ PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+
+ if (CollUtil.isNotEmpty(list)) {
+ for (ContractHoldOrderEntity holdOrderEntity : list) {
+ BigDecimal holdAmount = holdOrderEntity.getHoldAmount();
+ if (holdAmount == null) {
+ holdAmount = BigDecimal.ZERO;
+ }
+
+ BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().multiply(tradeSettingEntity.getDoingRatio());
+ log.info("订单编号:{}, 持仓费:{}", holdOrderEntity.getOrderNo(), thisTimeHold);
+
+ MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId());
+ BigDecimal subBond = holdOrderEntity.getBondAmount().subtract(thisTimeHold);
+
+ BigDecimal newForcePrice = CalculateUtil.getForceSetPrice(subBond.subtract(holdOrderEntity.getOpeningFeeAmount()), holdOrderEntity.getOpeningPrice(), holdOrderEntity.getSymbolCnt(), holdOrderEntity.getSymbolSku(), holdOrderEntity.getOpeningType(), memberEntity);
+ holdAmount = holdAmount.add(thisTimeHold);
+ holdOrderEntity.setBondAmount(subBond);
+ holdOrderEntity.setHoldAmount(holdAmount);
+ holdOrderEntity.setForceClosingPrice(newForcePrice);
+ holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1);
+ contractHoldOrderDao.updateById(holdOrderEntity);
+
+ // 发送爆仓消息
+ sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId());
+ }
+ }
+ }
}
--
Gitblit v1.9.1