wzy
2020-06-04 0ac635934c85267ea44c043504b2cf67ef1302cf
fix rabbit some bug
4 files modified
42 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java 8 ●●●● patch | view | raw | blame | history
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);
    }
}
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) {
                // 发送委托单队列消息
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);
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);
        }