From 3a127f5b387d83f157cb39f2720565d3f684d9a1 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 01 Feb 2021 11:32:35 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 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 d80b492..f7b5809 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
@@ -209,6 +209,9 @@
                     LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), prePaymentAmount, walletContract.getAvailableBalance().subtract(prePaymentAmount), submitOrderDto.getSymbol(), "买跌持仓", "买跌:" + submitOrderDto.getSymbol());
                 }
 
+                // 全仓爆仓
+                ThreadPoolUtils.sendWholePrice(memberEntity.getId());
+
                 // 提交成功
                 return Result.ok(MessageSourceUtils.getString("member_service_0024"));
             }
@@ -258,6 +261,9 @@
             } else {
                 LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), prePaymentAmount, walletContract.getAvailableBalance().subtract(prePaymentAmount), submitOrderDto.getSymbol(), "买跌持仓", "买跌:" + submitOrderDto.getSymbol());
             }
+
+            // 全仓爆仓
+            ThreadPoolUtils.sendWholePrice(memberEntity.getId());
 
             // 提交成功
             return Result.ok(MessageSourceUtils.getString("member_service_0024"));
@@ -437,11 +443,18 @@
     @Override
     public Result findHoldOrderList(String symbol, int type) {
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+        List<ContractHoldOrderEntity> list = null;
 
-        List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol, type);
+        if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) {
+            list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbolTest(memberEntity.getId(), type);
+        } else {
+            list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol, type);
+        }
+
         MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
         if (CollUtil.isNotEmpty(list)) {
             BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
+            BigDecimal totalHoldBond = BigDecimal.ZERO;
             List<HoldOrderListVo> resultList = new ArrayList<>();
             for (ContractHoldOrderEntity holdOrderEntity : list) {
                 HoldOrderListVo holdOrderListVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToDto(holdOrderEntity);
@@ -503,9 +516,22 @@
                 }
                 resultList.add(holdOrderListVo);
                 totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio);
+                totalHoldBond = totalHoldBond.add(holdOrderEntity.getHoldBond() == null ? BigDecimal.ZERO : holdOrderEntity.getHoldBond());
             }
 
             Map<String, Object> result = new HashMap<>();
+            if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) {
+                List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
+                BigDecimal totalEntrustAmount = BigDecimal.ZERO;
+                if (CollUtil.isNotEmpty(entrustOrder)) {
+                    for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
+                        totalEntrustAmount.add(contractEntrustOrderEntity.getEntrustAmount());
+                    }
+                }
+                BigDecimal riskRatio = totalHoldBond.divide(walletContractEntity.getTotalBalance().add(totalProfitOrLoss).subtract(totalEntrustAmount), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));
+                result.put("riskRatio", riskRatio);
+            }
+
             result.put("hold", resultList);
             result.put("totalProfitOrLoss", totalProfitOrLoss.setScale(4, BigDecimal.ROUND_DOWN).toPlainString());
             return Result.ok(result);
@@ -837,6 +863,11 @@
         if (equity.compareTo(BigDecimal.ZERO) <= 0) {
             equity = BigDecimal.ZERO;
         }
+
+        BigDecimal available = walletContractEntity.getAvailableBalance().add(totalProfitOrLess);
+        if (available.compareTo(BigDecimal.ZERO) <= 0) {
+            equity = BigDecimal.ZERO;
+        }
         
         // 获取当日k线的开盘价
         Candlestick symbolObject = (Candlestick) redisUtils.get(symbol);

--
Gitblit v1.9.1