From 6c381a746c3d793cb8203b5db5ca70aea57e6e16 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sun, 13 Sep 2020 03:41:41 +0800
Subject: [PATCH] Merge branch 'master' into helpCenter

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java |   31 +++++++++++++++++++++++++++++++
 src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java                                 |    2 +-
 src/main/resources/application.yml                                                             |    6 +++---
 src/test/java/com/xcong/excoin/SymbolsTest.java                                                |    2 +-
 4 files changed, 36 insertions(+), 5 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 09dcbf1..f146265 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
@@ -255,6 +255,10 @@
                     canReduceMaxBond = BigDecimal.ZERO;
                 }
 
+                if (rewardRatio.compareTo(BigDecimal.ZERO) < 0) {
+                    canReduceMaxBond = canReduceMaxBond.add(rewardRatio);
+                }
+
                 holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond);
                 holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance());
                 holdOrderListVo.setReturnRate(returnRate);
@@ -436,6 +440,33 @@
             if (holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()).subtract(changeBondDto.getAmount()).compareTo(BigDecimal.ZERO) < 0) {
                 return Result.fail("超出保证金最大减少金额");
             }
+            BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
+
+            BigDecimal rewardRatio = BigDecimal.ZERO;
+            // 开多
+            if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
+                // (最新价-开仓价)*规格*张数
+                rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(holdOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
+                // 开空
+            } else {
+                // (开仓价-最新价)*规格*张数
+                rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(holdOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
+            }
+
+            if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+                PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+                if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+                    rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+                }
+            }
+
+            if (rewardRatio.compareTo(BigDecimal.ZERO) < 0) {
+                BigDecimal canReduceMax = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()).add(rewardRatio);
+                if (canReduceMax.subtract(changeBondDto.getAmount()).compareTo(BigDecimal.ZERO) < 0) {
+                    return Result.fail("超出保证金最大减少金额");
+                }
+            }
+
             memberWalletContractDao.increaseWalletContractBalanceById(changeBondDto.getAmount(), null, null, walletContract.getId());
             holdOrderEntity.setBondAmount(holdOrderEntity.getBondAmount().subtract(changeBondDto.getAmount()));
         }
diff --git a/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java b/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java
index 01e89d2..9fc7240 100644
--- a/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java
+++ b/src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java
@@ -46,7 +46,7 @@
     /**
      * 持仓费计算
      */
-    @Scheduled(cron = "0 0 16/8 * * ?")
+    @Scheduled(cron = "0 0 0/8 * * ?")
     public void updateDoingPrice() {
         log.info("#持仓费计算#");
         try {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d8cae7a..63bbb01 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -7,9 +7,9 @@
   profiles:
     active: dev
   datasource:
-    url: jdbc:mysql://rm-bp151tw8er79ig9kb5o.mysql.rds.aliyuncs.com:3306/db_biue?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
-    username: ctcoin_data
-    password: ctcoin_123
+    url: jdbc:mysql://120.27.238.55:3306/db_base?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+    username: ct_test
+    password: 123456
     driver-class-name: com.mysql.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
diff --git a/src/test/java/com/xcong/excoin/SymbolsTest.java b/src/test/java/com/xcong/excoin/SymbolsTest.java
index e46dc05..7cdd104 100644
--- a/src/test/java/com/xcong/excoin/SymbolsTest.java
+++ b/src/test/java/com/xcong/excoin/SymbolsTest.java
@@ -134,7 +134,7 @@
     @Test
     public void holdAmountTest() {
         try {
-            contractHoldOrderService.calHoldOrderHoldFeeAmount();
+            contractHoldOrderService.calHoldFeeAmountForBondAmount();
         } catch (Exception e) {
             log.info("-->", e);
         }

--
Gitblit v1.9.1