From 0ac635934c85267ea44c043504b2cf67ef1302cf Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Thu, 04 Jun 2020 20:00:04 +0800
Subject: [PATCH] fix rabbit some bug

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java          |    8 ++------
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java    |   25 +++++++++++++++----------
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java |    2 +-
 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java                 |    7 +++++++
 4 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java
index bdaef3e..86a2dbb 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java
@@ -54,6 +54,9 @@
     @ApiModelProperty(value = "可增加的最大保证金")
     private BigDecimal canAddMaxBond;
 
+    @ApiModelProperty(value = "可减少最大保证金")
+    private BigDecimal canReduceMaxBond;
+
     public BigDecimal getOpeningPrice() {
         return openingPrice.setScale(4, BigDecimal.ROUND_DOWN);
     }
@@ -69,4 +72,8 @@
     public BigDecimal getCanAddMaxBond() {
         return canAddMaxBond.setScale(4, BigDecimal.ROUND_DOWN);
     }
+
+    public BigDecimal getCanReduceMaxBond() {
+        return canReduceMaxBond.setScale(4, BigDecimal.ROUND_DOWN);
+    }
 }
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
index 3e6f326..7bfdde4 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -121,7 +121,7 @@
 
             int i = contractEntrustOrderDao.insert(entrustOrderEntity);
 
-            memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustTotalAmount, walletContract.getId());
+            memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustOrderEntity.getBondAmount(), walletContract.getId());
             if (i > 0) {
 
                 // 发送委托单队列消息
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 f6c8e47..35f39b2 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
@@ -159,14 +159,13 @@
         contractOrderEntity.setOpeningTime(new Date());
         contractHoldOrderDao.insert(holdOrderEntity);
         int i = contractOrderDao.insert(contractOrderEntity);
-        memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), null, null, walletContract.getId());
-
-        // 计算佣金
-        ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN);
         if (i > 0) {
-            return Result.ok("success");
+            memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId());
+            // 计算佣金
+            ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN);
+            return Result.ok("提交成功");
         }
-        return Result.fail("fail");
+        return Result.fail("提交失败");
     }
 
     @Override
@@ -189,6 +188,7 @@
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
 
         List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol);
+        MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
         if (CollUtil.isNotEmpty(list)) {
             BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
             List<HoldOrderListVo> resultList = new ArrayList<>();
@@ -228,12 +228,17 @@
                         .divide(new BigDecimal(holdOrderEntity.getLeverRatio()), 8, BigDecimal.ROUND_DOWN);
 
                 // 可增加最大保证金
-                BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice);
-                if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) {
-                    canAddMaxBond = BigDecimal.ZERO;
+//                BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice);
+//                if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) {
+//                    canAddMaxBond = BigDecimal.ZERO;
+//                }
+                BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount());
+                if (canReduceMaxBond.compareTo(BigDecimal.ZERO) < 0) {
+                    canReduceMaxBond = BigDecimal.ZERO;
                 }
 
-                holdOrderListVo.setCanAddMaxBond(canAddMaxBond);
+                holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond);
+                holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance());
                 holdOrderListVo.setReturnRate(returnRate);
                 holdOrderListVo.setProfitOrLoss(rewardRatio);
                 resultList.add(holdOrderListVo);
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 c103753..ebba922 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
@@ -134,13 +134,9 @@
             contractOrderDao.insert(contractOrderEntity);
 
             // 计算盈利或亏损后可用金额和总金额应该增加或减少的
-            BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningPrice()).add(profitOrLoss);
-            log.info("平仓增加金额:{}", addMoney);
+            BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).add(profitOrLoss);
 
-            walletContract.setFrozenBalance(walletContract.getFrozenBalance().subtract(holdOrderEntity.getBondAmount()));
-            walletContract.setAvailableBalance(walletContract.getAvailableBalance().add(addMoney));
-            walletContract.setTotalBalance(walletContract.getTotalBalance().add(addMoney));
-
+            memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(contractOrderEntity.getOpeningFeeAmount()), null, walletContract.getId());
             // 计算佣金
             ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getClosingFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE);
         }

--
Gitblit v1.9.1