From ff92fb89be1203befbaeb3037aab5b09a79abfe6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 28 Aug 2020 18:46:42 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 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 87bbcc9..baea777 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
@@ -164,7 +164,7 @@
         if (wholeHoldOrder != null) {
             BigDecimal totalPrice = openingPrice.multiply(BigDecimal.valueOf(submitOrderDto.getSymbolCnt()));
             // (当前开仓价*张数 + 原开仓价 * 原可平张数) / (张数 + 原可平张数)
-            BigDecimal newOpenPrice = totalPrice.add(wholeHoldOrder.getOpeningPrice().multiply(BigDecimal.valueOf(wholeHoldOrder.getSymbolCnt()))).divide(BigDecimal.valueOf(submitOrderDto.getSymbolCnt() + wholeHoldOrder.getSymbolCntSale()), 8, BigDecimal.ROUND_DOWN);
+            BigDecimal newOpenPrice = totalPrice.add(wholeHoldOrder.getOpeningPrice().multiply(BigDecimal.valueOf(wholeHoldOrder.getSymbolCntSale()))).divide(BigDecimal.valueOf(submitOrderDto.getSymbolCnt() + wholeHoldOrder.getSymbolCntSale()), 8, BigDecimal.ROUND_DOWN);
             log.info("计算后开仓价:{}", newOpenPrice);
             BigDecimal fee = openFeePrice.add(wholeHoldOrder.getOpeningFeeAmount());
             log.info("手续费相加:{}", fee);
@@ -443,11 +443,11 @@
                 // 开多
                 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
                     // (最新价-开仓价)*规格*张数
-                    rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
+                    rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
                     // 开空
                 } else {
                     // (开仓价-最新价)*规格*张数
-                    rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
+                    rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
                 }
 
                 if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
@@ -546,7 +546,6 @@
 
         // 更新可平张数
         holdOrderEntity.setSymbolCntSale(sub);
-        holdOrderEntity.setSymbolCnt(sub);
         contractHoldOrderDao.updateById(holdOrderEntity);
 
         // 将待平张数放入缓存
@@ -807,6 +806,11 @@
     @Override
     public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto) {
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+
+        List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol());
+        if (CollUtil.isNotEmpty(holdOrders)) {
+            return Result.fail("存在持仓, 无法调整杠杆");
+        }
         MemberLevelRateEntity levelRateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol());
         levelRateEntity.setLevelRateUp(changeLeverRateDto.getLeverRate());
         levelRateEntity.setLevelRateDown(changeLeverRateDto.getLeverRate());

--
Gitblit v1.9.1