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