From 45a8a42e3eec8feca80dfdc6b3a433c22c9012bc Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 20 May 2026 09:57:34 +0800
Subject: [PATCH] fix(trade): 修复条件单取消逻辑并添加回调支持

---
 src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java |    4 ++--
 src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java    |    5 ++++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
index 88a5545..b746605 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -421,7 +421,7 @@
                     List<GridElement> allShortOrders = GridElement.findAllShortOrders(longEntryPrice);
                     if (CollUtil.isNotEmpty(allShortOrders)){
                         for (GridElement e : allShortOrders) {
-                            executor.cancelOrder(
+                            executor.cancelConditionalOrder(
                                     e.getShortOrderId(),
                                     orderId -> {
                                         shortEntryTraderIdParam(
@@ -454,7 +454,7 @@
                     List<GridElement> allLongOrders = GridElement.findAllLongOrders(shortEntryPrice);
                     if (CollUtil.isNotEmpty(allLongOrders)){
                         for (GridElement e : allLongOrders) {
-                            executor.cancelOrder(
+                            executor.cancelConditionalOrder(
                                     e.getLongOrderId(),
                                     orderId -> {
                                         shortEntryTraderIdParam(
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
index 9984cf9..8e500a0 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java
@@ -338,7 +338,7 @@
      *
      * @param orderId 条件单 ID,为 null 时跳过
      */
-    public void cancelConditionalOrder(String orderId) {
+    public void cancelConditionalOrder(String orderId,Consumer<String> onSuccess) {
         if (orderId == null) {
             return;
         }
@@ -346,6 +346,9 @@
             try {
                 futuresApi.cancelPriceTriggeredOrder(SETTLE, Long.parseLong(orderId));
                 log.info("[TradeExec] 条件单已取消, id:{}", orderId);
+                if (onSuccess != null) {
+                    onSuccess.accept(orderId);
+                }
             } catch (Exception e) {
                 log.warn("[TradeExec] 取消条件单失败(可能已触发), id:{}", orderId);
             }

--
Gitblit v1.9.1