From b28a97e1bf66e3279e78f31ce58122427787ceec Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 11 Jun 2026 09:44:20 +0800
Subject: [PATCH] 1

---
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java |    5 +++--
 trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java                       |   13 ++++++++-----
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java                |    2 +-
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java         |    2 +-
 4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
index ea705da..09f35e7 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -231,7 +231,7 @@
             log.error("错误信息: {}", e.getMessage(), e);
             throw e; // 重新抛出自定义异常
         } catch (Exception e) {
-            log.error("系统异常: {}", e.getMessage(), e);
+            log.error("系统异常: {}", e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName(), e);
             throw new YamiShopBindException("Operation failed, please try again later");
         } finally {
             // 确保释放锁
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
index 3d3ccdc..47ad542 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
@@ -19,6 +19,7 @@
 import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @Slf4j
 @Service
@@ -242,13 +243,13 @@
             if (ContractOrder.STATE_SUBMITTED.equals(contractOrder.getState())) {
                 contractOrderService.wrapProfit(contractOrder);
             }
-            if (order.getUuid().equals(contractOrder.getUuid())) {
+            if (Objects.equals(order.getUuid(), contractOrder.getUuid())) {
                 continue;
             }
             otherEquity = otherEquity.add(defaultZero(contractOrder.getProfit()).add(defaultZero(contractOrder.getDeposit())));
         }
 
-        BigDecimal baseEquity = defaultZero(wallet.getMoney())
+        BigDecimal baseEquity = defaultZero(wallet != null ? wallet.getMoney() : null)
                 .add(otherEquity)
                 .add(defaultZero(order.getDeposit()));
         BigDecimal priceOffset = baseEquity.divide(volumeFactor, 10, RoundingMode.HALF_UP);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
index 1c71532..1f3d72b 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
@@ -855,7 +855,7 @@
             } else {
                 applyLimitOpenToOrder(order, applyOrder);
             }
-            //计算强平价格
+            //计算强平价格(全仓模式下需合并已有持仓,uuid 可能尚未生成,比较时需用 Objects.equals)
             getStrongPrice(order);
             save(order);
             refreshOrder(applyOrder, order);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
index 530b50b..07cc693 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
@@ -712,14 +712,17 @@
 
         BigDecimal orderVolume = BigDecimal.ONE;
 
-        if (order.getLeverRate() != null && order.getLeverRate().compareTo(BigDecimal.ZERO) != 0) {
+        if (order.getLeverRate() != null && order.getLeverRate().compareTo(BigDecimal.ZERO) != 0
+                && order.getVolumeOpen() != null) {
             orderVolume = order.getVolumeOpen().divide(order.getLeverRate(), 2, BigDecimal.ROUND_HALF_UP);
-        } else {
+        } else if (order.getVolumeOpen() != null) {
             orderVolume = order.getVolumeOpen();
         }
-        BigDecimal moneyContract = orderVolume.multiply(order.getUnitAmount()).add(order.getProfit());
-        BigDecimal moneyContractDeposit = order.getDeposit();
-        BigDecimal moneyContractProfit = order.getProfit();
+        BigDecimal unitAmount = order.getUnitAmount() != null ? order.getUnitAmount() : BigDecimal.ZERO;
+        BigDecimal profit = order.getProfit() != null ? order.getProfit() : BigDecimal.ZERO;
+        BigDecimal moneyContract = orderVolume.multiply(unitAmount).add(profit);
+        BigDecimal moneyContractDeposit = order.getDeposit() != null ? order.getDeposit() : BigDecimal.ZERO;
+        BigDecimal moneyContractProfit = profit;
 
 
         moneysContract.put("money_contract", moneyContract);

--
Gitblit v1.9.3