Administrator
2026-05-21 652f81a7b5c2bc12263cc32541f2250079699f4f
fix(gateApi): 修复网格交易服务中的订单更新处理逻辑

- 在longGridElement和shortGridElement的相关方法中重新启用longEntryTraderIdParam调用
- 移除OrdersChannelHandler中被注释掉的订单更新日志记录和处理逻辑
- 确保订单状态更新时正确触发网格交易服务的回调处理
- 修复因条件判断导致的订单参数传递缺失问题
- 恢复WebSocket订单通道的正常处理流程
2 files modified
52 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java 40 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/OrdersChannelHandler.java 12 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -571,11 +571,11 @@
                    null,
                    false
            );
            longEntryTraderIdParam(
                    byLongTakeProfitOrderId,
                    null,
                    false
            );
//            longEntryTraderIdParam(
//                    byLongTakeProfitOrderId,
//                    null,
//                    false
//            );
        }
        GridElement byShortTakeProfitOrderId = GridElement.findByShortTakeProfitOrderId(orderId);
        if (byShortTakeProfitOrderId != null){
@@ -584,11 +584,11 @@
                    null,
                    false
            );
            shortEntryTraderIdParam(
                    byShortTakeProfitOrderId,
                    null,
                    false
            );
//            shortEntryTraderIdParam(
//                    byShortTakeProfitOrderId,
//                    null,
//                    false
//            );
        }
        /**
@@ -597,6 +597,11 @@
        GridElement longGridElement = GridElement.findByLongOrderId(orderId);
        if (longGridElement != null) {
            if (longGridElement.isHasLongOrder()){
                longEntryTraderIdParam(
                        longGridElement,
                        null,
                        false
                );
                if (longGridElement.getLongTakeProfitOrderId() == null){
                    BigDecimal longTp = longGridElement.getLongTraderParam().getTakeProfitPrice();
                    if (longTp != null) {
@@ -620,6 +625,11 @@
        GridElement shortGridElement = GridElement.findByShortOrderId(orderId);
        if (shortGridElement != null) {
            if (shortGridElement.isHasShortOrder()){
                shortEntryTraderIdParam(
                        shortGridElement,
                        null,
                        false
                );
                if (shortGridElement.getShortTakeProfitOrderId() == null){
                    BigDecimal shortTp = shortGridElement.getShortTraderParam().getTakeProfitPrice();
                    if (shortTp != null) {
@@ -716,6 +726,11 @@
        GridElement longGridElement = GridElement.findByLongOrderId(orderId);
        if (longGridElement != null) {
            if (longGridElement.isHasLongOrder() && !tradeId.equals("0")){
                longEntryTraderIdParam(
                        longGridElement,
                        null,
                        false
                );
                if (longGridElement.getLongTakeProfitOrderId() == null){
                    BigDecimal longTp = longGridElement.getLongTraderParam().getTakeProfitPrice();
                    if (longTp != null) {
@@ -739,6 +754,11 @@
        GridElement shortGridElement = GridElement.findByShortOrderId(orderId);
        if (shortGridElement != null) {
            if (shortGridElement.isHasShortOrder() && !tradeId.equals("0")){
                shortEntryTraderIdParam(
                        shortGridElement,
                        null,
                        false
                );
                if (shortGridElement.getShortTakeProfitOrderId() == null){
                    BigDecimal shortTp = shortGridElement.getShortTraderParam().getTakeProfitPrice();
                    if (shortTp != null) {
src/main/java/com/xcong/excoin/modules/gateApi/wsHandler/handler/OrdersChannelHandler.java
@@ -42,12 +42,12 @@
                String status = order.getString("status");
                String finishAs = order.getString("finish_as");
                String updateId = order.getString("update_id");
//                log.info("[{}] 订单更新, id:{}, status:{}, finish_as:{}, price:{}, size:{},update_id:{}",
//                        CHANNEL_NAME, orderId, status, finishAs,
//                        order.get("price"), order.get("size"),updateId);
//                if (getGridTradeService() != null) {
//                    getGridTradeService().onOrderUpdate(orderId, status, finishAs);
//                }
                log.info("[{}] 订单更新, id:{}, status:{}, finish_as:{}, price:{}, size:{},update_id:{}",
                        CHANNEL_NAME, orderId, status, finishAs,
                        order.get("price"), order.get("size"),updateId);
                if (getGridTradeService() != null) {
                    getGridTradeService().onOrderUpdate(orderId, status, finishAs);
                }
            }
        } catch (Exception e) {
            log.error("[{}] 处理数据失败", CHANNEL_NAME, e);