新版仿ok交易所-后端
1
zyy
2026-05-29 038c7e5b9c8338103496d40ffb0122b3f61a5185
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
@@ -249,7 +249,9 @@
         */
        //重新计算强平
        BigDecimal forceClosePrice = new BigDecimal(order.getForceClosePrice());
        if (currentPrice.compareTo(new BigDecimal(order.getForceClosePrice())) <= 0) {//达到强平价
        //达到强平价
        if ((ContractOrder.DIRECTION_BUY.equals(order.getDirection()) && currentPrice.compareTo(new BigDecimal(order.getForceClosePrice())) <= 0)
                || (ContractOrder.DIRECTION_SELL.equals(order.getDirection()) && currentPrice.compareTo(new BigDecimal(order.getForceClosePrice())) >= 0)) {
            BigDecimal point = forceClosePrice.subtract(order.getTradeAvgPrice());
            BigDecimal amount = point.multiply(new BigDecimal("0.01")).multiply(order.getVolumeOpen()).setScale(4, BigDecimal.ROUND_DOWN);
            if (ContractOrder.DIRECTION_BUY.equals(order.getDirection())) {
@@ -257,9 +259,12 @@
            } else{
                order.setProfit(amount.negate());
            }
            //逐仓强平利润固定-100%
            if (order.getLocationType() == 0) {
                order.setProfit(order.getDepositOpen().add(order.getAddDepositOpen()).negate());
            //强平利润固定-100%
            order.setProfit(order.getDepositOpen().add(order.getAddDepositOpen()).negate());
            //全仓强平利润+账户余额
            if (order.getLocationType() == 1) {
                Wallet wallet = this.walletService.findByUserId(order.getPartyId());
                order.setProfit(order.getProfit().subtract(wallet.getMoney()));
            }
        }
        this.contractOrderService.updateByIdBuffer(order);