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()); if (i > 0) { memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); // 计算佣金 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); if (i > 0) { return Result.ok("success"); 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); }