src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -121,9 +121,7 @@ int i = contractEntrustOrderDao.insert(entrustOrderEntity); walletContract.setFrozenBalance(walletContract.getFrozenBalance().add(entrustTotalAmount)); walletContract.setAvailableBalance(walletContract.getAvailableBalance().subtract(entrustTotalAmount)); memberWalletContractDao.updateById(walletContract); memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustTotalAmount, walletContract.getId()); if (i > 0) { // 发送委托单队列消息 @@ -170,9 +168,7 @@ MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), MemberWalletCoinEnum.WALLETCOINCODE.getValue()); BigDecimal total = entrustOrderEntity.getEntrustAmount(); walletContractEntity.setAvailableBalance(walletContractEntity.getAvailableBalance().add(total)); walletContractEntity.setFrozenBalance(walletContractEntity.getFrozenBalance().subtract(total)); memberWalletContractDao.updateById(walletContractEntity); memberWalletContractDao.increaseWalletContractBalanceById(total, null, total.negate(), walletContractEntity.getId()); ContractOrderEntity orderEntity = ContractEntrustOrderEntityMapper.INSTANCE.entrustOrderToOrder(entrustOrderEntity); orderEntity.setTradeType(ContractOrderEntity.TRADE_TYPE_MARK_PRICE); src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -162,9 +162,7 @@ contractHoldOrderDao.insert(holdOrderEntity); int i = contractOrderDao.insert(contractOrderEntity); walletContract.setAvailableBalance(walletContract.getAvailableBalance().subtract(prePaymentAmount)); walletContract.setFrozenBalance(walletContract.getFrozenBalance().add(bondAmount.add(openFeePrice))); memberWalletContractDao.updateById(walletContract); memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), null, bondAmount.add(openFeePrice), walletContract.getId()); // 计算佣金 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); @@ -287,7 +285,7 @@ contractHoldOrderDao.updateHoldOrderIsCanClosingById(ContractHoldOrderEntity.ORDER_CAN_CLOSING_N, holdOrderEntity.getId()); ids.add(holdOrderEntity.getId()); } // producer.sendCloseTrade(JSONObject.toJSONString(ids)); producer.sendCloseTrade(JSONObject.toJSONString(ids)); return Result.ok("平仓成功"); } @@ -405,16 +403,14 @@ if (changeBondDto.getAmount().compareTo(walletContract.getAvailableBalance()) > 0) { return Result.fail("可用余额不足"); } walletContract.setAvailableBalance(walletContract.getAvailableBalance().subtract(changeBondDto.getAmount())); walletContract.setFrozenBalance(walletContract.getFrozenBalance().add(changeBondDto.getAmount())); memberWalletContractDao.increaseWalletContractBalanceById(changeBondDto.getAmount().negate(), null, changeBondDto.getAmount(), walletContract.getId()); holdOrderEntity.setBondAmount(holdOrderEntity.getBondAmount().add(changeBondDto.getAmount())); // 减少保证金 } else { if (holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()).subtract(changeBondDto.getAmount()).compareTo(BigDecimal.ZERO) < 0) { return Result.fail("超出保证金最大减少金额"); } walletContract.setAvailableBalance(walletContract.getAvailableBalance().add(changeBondDto.getAmount())); walletContract.setFrozenBalance(walletContract.getFrozenBalance().subtract(changeBondDto.getAmount())); memberWalletContractDao.increaseWalletContractBalanceById(changeBondDto.getAmount(), null, changeBondDto.getAmount().negate(), walletContract.getId()); holdOrderEntity.setBondAmount(holdOrderEntity.getBondAmount().subtract(changeBondDto.getAmount())); } @@ -423,8 +419,8 @@ holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1); int i = contractHoldOrderDao.updateById(holdOrderEntity); int j = memberWalletContractDao.updateById(walletContract); if (i > 0) { OrderModel model = null; // 开多 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { @@ -434,8 +430,6 @@ model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_LESS_BOMB.getValue(), forceClosingPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); } producer.sendPriceOperate(JSONObject.toJSONString(model)); if (i > 0 && j > 0) { return Result.ok("调整成功"); } return Result.fail("调整失败"); src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -148,8 +148,8 @@ System.out.println("执行操作"); // 止盈价 String symbol = order.getSymbol(); // 本次需要退回的预付款 BigDecimal prePrice = order.getPrePaymentAmount(); // 本次需要退回的保证金 BigDecimal prePrice = order.getBondAmount(); Long memberId = order.getMemberId(); MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT"); if (wallet != null) { @@ -164,7 +164,7 @@ // 盈亏额度= (当前的币种的平仓价-下单时的建仓价)*购买的手数/规格*倍率 BigDecimal profitLossPrice = (closePrice .subtract(order.getOpeningPrice())) .multiply(new BigDecimal(currentFlat + "")) .multiply(new BigDecimal(currentFlat)) .multiply(symbolSku).setScale(8, BigDecimal.ROUND_DOWN); MemberEntity memberEntity = memberService.getById(memberId); @@ -554,7 +554,7 @@ producer.sendPriceOperate(JSONObject.toJSONString(model)); } // 扣除手续费 BigDecimal totalBalance = wallet.getTotalBalance().subtract(openFeePrice); BigDecimal totalBalance = openFeePrice.negate(); contractEntrustOrderService.removeById(coinsCoinsOrder.getId()); memberWalletContractService.increaseWalletContractBalanceById(null, totalBalance, null, wallet.getId()); // TODO 531 待写 src/main/resources/mapper/member/MemberWalletContractDao.xml
@@ -14,13 +14,13 @@ update member_wallet_contract <set> <if test="availableBalance!=null"> available_balance = #{availableBalance}, available_balance = available_balance + #{availableBalance}, </if> <if test="totalBalance!=null"> total_balance = #{totalBalance}, total_balance =total_balance + #{totalBalance}, </if> <if test="frozenBalance!=null"> frozen_balance = #{frozenBalance}, frozen_balance = frozen_balance + #{frozenBalance}, </if> </set> where id =#{id}