From ed69a1c44fa9bce098d412985e8f17163d7def8c Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 26 Aug 2020 19:05:14 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 20 +++++++++++--------- 1 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java index 5cef914..c92ab72 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java @@ -614,9 +614,10 @@ // 手续费 BigDecimal openFeePrice = CalculateUtil.getOpenFeePrice(entrustOrder.getEntrustPrice(), entrustOrder.getSymbolSku(), entrustOrder.getSymbolCnt(), tradeSettingEntity.getFeeRatio()); - ContractHoldOrderEntity wholeHoldOrder = contractHoldOrderDao.selectWholeHoldOrderByOrderType(entrustOrder.getMemberId(), entrustOrder.getEntrustType()); + ContractHoldOrderEntity wholeHoldOrder = contractHoldOrderDao.selectWholeHoldOrderByOrderType(entrustOrder.getMemberId(), entrustOrder.getEntrustType(), entrustOrder.getSymbol()); // 判断持仓是否存在,若不存在则创建新的持仓订单 if (wholeHoldOrder == null) { + log.info("持仓不存在"); ContractHoldOrderEntity holdOrderEntity = ContractEntrustOrderEntityMapper.INSTANCE.entrustOrderToHoldOrder(entrustOrder); int type = entrustOrder.getEntrustType(); @@ -646,7 +647,7 @@ if (isSuccess) { contractEntrustOrderService.removeById(entrustOrder.getId()); - memberWalletContractService.increaseWalletContractBalanceById(null, entrustOrder.getBondAmount().add(openFeePrice).negate(), entrustOrder.getBondAmount().negate(), wallet.getId()); + memberWalletContractService.increaseWalletContractBalanceById(null, openFeePrice.negate(), entrustOrder.getBondAmount().negate(), wallet.getId()); // 发送强平价 ThreadPoolUtils.sendWholeForceClosingPrice(entrustOrder.getSymbol(), member); @@ -658,6 +659,7 @@ return; } + log.info("持仓存在"); ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(wholeHoldOrder); contractOrderEntity.setBondAmount(entrustOrder.getBondAmount().add(openFeePrice)); contractOrderEntity.setOpeningPrice(entrustOrder.getEntrustPrice()); @@ -670,23 +672,23 @@ BigDecimal totalPrice = entrustOrder.getEntrustPrice().multiply(BigDecimal.valueOf(entrustOrder.getSymbolCnt())); BigDecimal newOpenPrice = totalPrice.add(wholeHoldOrder.getOpeningPrice().multiply(BigDecimal.valueOf(wholeHoldOrder.getSymbolCnt()))).divide(BigDecimal.valueOf(entrustOrder.getSymbolCnt() + wholeHoldOrder.getSymbolCntSale()), 8, BigDecimal.ROUND_DOWN); // 保证金 - BigDecimal bondAmount = CalculateUtil.getBondAmount(newOpenPrice, entrustOrder.getSymbolSku(), entrustOrder.getSymbolCnt() + wholeHoldOrder.getSymbolCntSale(), entrustOrder.getLeverRatio()); + BigDecimal bondAmount = entrustOrder.getBondAmount(); // 手续费 - BigDecimal fee = openFeePrice.add(wholeHoldOrder.getOpeningFeeAmount()); + BigDecimal fee = CalculateUtil.getOpenFeePrice(entrustOrder.getEntrustPrice(), entrustOrder.getSymbolSku(), entrustOrder.getSymbolCnt(), tradeSettingEntity.getFeeRatio()); // 预付款 - BigDecimal prePaymentAmount = bondAmount.add(fee).add(fee); + BigDecimal prePaymentAmount = wholeHoldOrder.getPrePaymentAmount().add(entrustOrder.getEntrustAmount()); wholeHoldOrder.setSymbolCnt(wholeHoldOrder.getSymbolCnt() + entrustOrder.getSymbolCnt()); wholeHoldOrder.setSymbolCntSale(wholeHoldOrder.getSymbolCntSale() + entrustOrder.getSymbolCnt()); - wholeHoldOrder.setOpeningFeeAmount(wholeHoldOrder.getOpeningFeeAmount().add(openFeePrice)); + wholeHoldOrder.setOpeningFeeAmount(wholeHoldOrder.getOpeningFeeAmount().add(fee)); wholeHoldOrder.setOpeningPrice(newOpenPrice); - wholeHoldOrder.setBondAmount(bondAmount); + wholeHoldOrder.setBondAmount(wholeHoldOrder.getBondAmount().add(bondAmount)); wholeHoldOrder.setPrePaymentAmount(prePaymentAmount); wholeHoldOrder.setOperateNo(wholeHoldOrder.getOperateNo() + 1); - contractHoldOrderService.save(wholeHoldOrder); + contractHoldOrderService.updateById(wholeHoldOrder); contractEntrustOrderService.removeById(entrustOrder.getId()); - memberWalletContractService.increaseWalletContractBalanceById(null, entrustOrder.getBondAmount().add(openFeePrice).negate(), entrustOrder.getBondAmount().negate(), wallet.getId()); + memberWalletContractService.increaseWalletContractBalanceById(null, openFeePrice.negate(), entrustOrder.getBondAmount().negate(), wallet.getId()); // 发送强平价 ThreadPoolUtils.sendWholeForceClosingPrice(entrustOrder.getSymbol(), member); -- Gitblit v1.9.1