From 0dc8f42e10f9923967a04ee93c87a37e0d514dfa Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 22 Mar 2021 15:36:54 +0800
Subject: [PATCH] 20210322 平仓禁用操作(平仓,一键平仓,止盈止损,调整保证金,开仓)

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
index 476d6be..86a9bbd 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -215,7 +215,7 @@
                     followOrderOperationService.closingFollowOrders(holdOrderEntity.getOrderNo());
                 } else {
                     followFollowerProfitDao.updateFollowerProfitByTradeMemberId(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), profitOrLoss, traderInfoEntity.getMemberId(), memberEntity.getId());
-                    LogRecordUtils.insertFollowerNotice(memberEntity.getId(), NoticeConstant.CLOSE_ORDER_TITLE, StrUtil.format(NoticeConstant.CLOSE_ORDER_CONTENT, contractOrderEntity.getSymbol(), contractOrderEntity.getClosingPrice(), profitOrLoss, traderInfoEntity.getNickname()));
+                    LogRecordUtils.insertFollowerNotice(memberEntity.getId(), NoticeConstant.CLOSE_ORDER_TITLE, StrUtil.format(NoticeConstant.CLOSE_ORDER_CONTENT, contractOrderEntity.getSymbol(), contractOrderEntity.getClosingPrice(), profitOrLoss.setScale(8, BigDecimal.ROUND_DOWN).toString(), traderInfoEntity.getNickname()));
                 }
             }
         }
@@ -302,6 +302,7 @@
             }
             log.info("profitOrLoss:{}", profitOrLoss);
 
+            BigDecimal rewardRatio = profitOrLoss.divide(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), 4, BigDecimal.ROUND_DOWN);
             // 保证金
             BigDecimal bondAmount = CalculateUtil.getBondAmount(holdOrderEntity.getOpeningPrice(), lotNumber, closeCnt, holdOrderEntity.getLeverRatio());
 
@@ -323,6 +324,7 @@
             contractOrderEntity.setClosingType(closingType);
             contractOrderEntity.setSymbolCnt(closeCnt);
             contractOrderEntity.setRewardAmount(profitOrLoss);
+            contractOrderEntity.setRewardRatio(rewardRatio);
             contractOrderEntity.setBondAmount(bondAmount.add(fee));
             contractOrderEntity.setClosingFeeAmount(fee);
             contractOrderEntity.setClosingTime(new Date());
@@ -445,11 +447,13 @@
         contractOrderEntity.setEntrustOpeningPrice(newPrice);
         contractOrderEntity.setEntrustTime(new Date());
         contractOrderEntity.setClosingPrice(newPrice);
-        contractOrderEntity.setOrderType(orderType);
+        contractOrderEntity.setTradeType(ContractOrderEntity.TRADE_TYPE_LIMIT_PRICE);
+        contractOrderEntity.setOrderType(entrustOrder.getEntrustType());
         contractOrderEntity.setClosingType(closingType);
         contractOrderEntity.setSymbolCnt(closeCnt);
         contractOrderEntity.setRewardAmount(profitOrLoss);
         contractOrderEntity.setBondAmount(bondAmount);
+        contractOrderEntity.setClosingTime(new Date());
         contractOrderEntity.setClosingFeeAmount(fee);
         contractOrderDao.insert(contractOrderEntity);
 
@@ -491,10 +495,11 @@
                 ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectById(holdOrderDataModel.getId());
                 if (holdOrderEntity == null) {
                     log.info("持仓不存在:{}", holdOrderDataModel.getId());
+                    redisUtils.del(AppContants.WHOLE_BOMB_PREFIX + wholePriceData.getMemberId());
                     continue;
                 }
 
-                holdOrderEntity.setForceClosingPrice(getForceSetPrice(wholePriceData, holdOrderEntity, holdOrderDataModel.getSymbol()));
+//                holdOrderEntity.setForceClosingPrice(getForceSetPrice(wholePriceData, holdOrderEntity, holdOrderDataModel.getSymbol()));
                 contractHoldOrderDao.deleteById(holdOrderDataModel.getId());
 
                 ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(holdOrderEntity);
@@ -509,6 +514,7 @@
                 contractOrderEntity.setRewardRatio(rewardRatio);
                 contractOrderEntity.setRewardAmount(holdOrderDataModel.getRewardAmount().add(contractOrderEntity.getHoldBond().negate()));
                 contractOrderEntity.setClosingPrice(holdOrderDataModel.getClosingPrice());
+                contractOrderEntity.setForceClosingPrice(holdOrderDataModel.getClosingPrice());
 
                 // 订单状态转换
                 if (ContractOrderEntity.ORDER_TYPE_OPEN_MORE == contractOrderEntity.getOrderType()) {
@@ -525,11 +531,13 @@
             BigDecimal totalAmount = BigDecimal.ZERO;
             if (CollUtil.isNotEmpty(entrustOrder)) {
                 for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
-                    totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
+                    totalAmount = totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
                 }
             }
 
             memberWalletContractDao.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().subtract(totalAmount).negate(), null, wallet.getId());
+
+            redisUtils.del(AppContants.WHOLE_BOMB_PREFIX + wholePriceData.getMemberId());
         } else {
             log.info("参数有误:{}", memberEntity.getId());
         }

--
Gitblit v1.9.1