Administrator
2026-05-20 45a8a42e3eec8feca80dfdc6b3a433c22c9012bc
fix(trade): 修复条件单取消逻辑并添加回调支持

- 将 cancelOrder 方法替换为 cancelConditionalOrder 方法
- 修改 cancelConditionalOrder 方法签名以支持成功回调
- 添加订单取消成功后的回调执行逻辑
- 优化条件单取消的日志记录和异常处理
2 files modified
9 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java 4 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateTradeExecutor.java 5 ●●●●● patch | view | raw | blame | history
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(
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);
            }