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