From bef3b23ca8918a355f6ff9751b46f4c35970f19e Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Sun, 25 Oct 2020 14:09:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/whole' into whole

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   31 ++++++++++++++++++++++---------
 1 files changed, 22 insertions(+), 9 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 0287728..2f4daa2 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
@@ -34,6 +34,8 @@
 import com.xcong.excoin.modules.member.entity.*;
 import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.modules.symbols.parameter.vo.HomeSymbolsVo;
+import com.xcong.excoin.modules.symbols.service.SymbolsService;
 import com.xcong.excoin.rabbit.producer.OrderProducer;
 import com.xcong.excoin.utils.*;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
@@ -93,12 +95,15 @@
     private FollowTraderInfoDao followTraderInfoDao;
     @Resource
     private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
+    @Resource
+    private SymbolsService symbolsService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Result submitOrder(SubmitOrderDto submitOrderDto) {
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
 
+        log.info("订单类型:{}", memberEntity.getContractPositionType());
         // 判断当前对应的持仓/委托
         if (memberEntity.getContractPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) {
             List<ContractHoldOrderEntity> holdList = contractHoldOrderDao.selectMemberHoldOrderByPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ALL, memberEntity.getId());
@@ -222,7 +227,7 @@
         holdOrderEntity.setOpeningPrice(openingPrice);
         holdOrderEntity.setOpeningType(submitOrderDto.getOrderType());
         holdOrderEntity.setMarkPrice(newPrice);
-        holdOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_N);
+        holdOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y);
         holdOrderEntity.setPrePaymentAmount(prePaymentAmount);
         holdOrderEntity.setBondAmount(bondAmount.add(openFeePrice));
         holdOrderEntity.setOperateNo(1);
@@ -474,6 +479,11 @@
 //                    canAddMaxBond = BigDecimal.ZERO;
 //                }
                 BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount());
+
+                if (rewardRatio.compareTo(BigDecimal.ZERO) < 0) {
+                    canReduceMaxBond = canReduceMaxBond.add(rewardRatio);
+                }
+
                 if (canReduceMaxBond.compareTo(BigDecimal.ZERO) < 0) {
                     canReduceMaxBond = BigDecimal.ZERO;
                 }
@@ -791,23 +801,26 @@
         // 权益
         BigDecimal equity = walletContractEntity.getTotalBalance().add(totalProfitOrLess);
         // 全仓模式,可用余额需随着盈亏变动
-        if (memberEntity.getContractPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ALL) {
-            BigDecimal available = walletContractEntity.getAvailableBalance().add(totalProfitOrLess);
-            if (available.compareTo(BigDecimal.ZERO) < 0) {
-                available = BigDecimal.ZERO;
-            }
-            contractMoneyInfoVo.setAvailableBalance(available);
-        }
+//        if (memberEntity.getContractPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ALL) {
+//            BigDecimal available = walletContractEntity.getAvailableBalance().add(totalProfitOrLess);
+//            if (available.compareTo(BigDecimal.ZERO) < 0) {
+//                available = BigDecimal.ZERO;
+//            }
+//            contractMoneyInfoVo.setAvailableBalance(available);
+//        }
 
+        HomeSymbolsVo symbolReturnData = symbolsService.getSymbolReturnData(symbol);
 
         contractMoneyInfoVo.setBeUsedBondAmount(beUsedBondAmount);
         contractMoneyInfoVo.setFrozenBondAmount(frozenBondAmount);
+        contractMoneyInfoVo.setAvailableBalance(walletContractEntity.getAvailableBalance());
         contractMoneyInfoVo.setEquity(equity);
         contractMoneyInfoVo.setFeeRatio(tradeSetting.getFeeRatio());
         contractMoneyInfoVo.setLeverAgeRatio(tradeSetting.getLeverageRatio());
         contractMoneyInfoVo.setNewPrice(newPriceSymbol);
         contractMoneyInfoVo.setSymbolSku(cacheSettingUtils.getSymbolSku(symbol));
         contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
+        contractMoneyInfoVo.setUpOrDown(symbolReturnData.getUpOrDown());
         return Result.ok(contractMoneyInfoVo);
     }
 
@@ -899,7 +912,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);

--
Gitblit v1.9.1