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