Helius
2020-09-13 6c381a746c3d793cb8203b5db5ca70aea57e6e16
Merge branch 'master' into helpCenter
4 files modified
41 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/LoopExecutorJob.java 2 ●●● patch | view | raw | blame | history
src/main/resources/application.yml 6 ●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/SymbolsTest.java 2 ●●● patch | view | raw | blame | history
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()));
        }
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 {
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:
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);
        }