From 71d2d3557012509c69442dfdc5398685423d4f86 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 18 四月 2026 15:50:23 +0800
Subject: [PATCH] [fix] 取消订单情况的连环派单 [feat] 周围车辆点位查询

---
 xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java |  372 ++++++++++++++++++++++++++--------------------------
 1 files changed, 186 insertions(+), 186 deletions(-)

diff --git a/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java b/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
index 47f5ee2..b28663d 100644
--- a/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
+++ b/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/PushMessageWebSocketHandler.java
@@ -1,186 +1,186 @@
-package com.xiaopeng.pushMessage.webSocket.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.xiaopeng.pushMessage.webSocket.service.WebSocketUserConnectionManager;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-import org.springframework.web.socket.CloseStatus;
-import org.springframework.web.socket.TextMessage;
-import org.springframework.web.socket.WebSocketSession;
-import org.springframework.web.socket.handler.TextWebSocketHandler;
-
-import java.time.LocalDateTime;
-import java.util.UUID;
-
-/**
- * Spring WebSocket 消息处理器
- * 路径: /websocket,共用 Spring Boot HTTP 端口
- * 替代原 Netty 独立端口方案
- */
-@Component
-@Slf4j
-public class PushMessageWebSocketHandler extends TextWebSocketHandler {
-
-    @Autowired
-    private WebSocketUserConnectionManager userConnectionManager;
-
-    @Autowired
-    private WebSocketAuthHandler authHandler;
-
-    // ==================== 连接生命周期 ====================
-
-    @Override
-    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
-        log.info("WebSocket 连接建立,sessionId: {}", session.getId());
-    }
-
-    @Override
-    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
-        log.info("WebSocket 连接关闭,sessionId: {}, status: {}", session.getId(), status);
-        userConnectionManager.removeUserConnection(session);
-    }
-
-    @Override
-    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
-        log.error("WebSocket 传输异常,sessionId: {}, error: {}", session.getId(), exception.getMessage(), exception);
-        if (session.isOpen()) {
-            session.close(CloseStatus.SERVER_ERROR);
-        }
-    }
-
-    // ==================== 消息处理 ====================
-
-    @Override
-    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
-        String payload = message.getPayload();
-        log.info("[服务器] 收到消息 -> {}", payload);
-
-        try {
-            JSONObject messageObj = JSON.parseObject(payload);
-            String messageType = messageObj.getString("type");
-
-            if ("auth".equals(messageType)) {
-                handleUserAuth(session, messageObj);
-            } else if ("ping".equals(messageType)) {
-                handlePing(session);
-            } else {
-                handleBusinessMessage(session, messageObj);
-            }
-        } catch (Exception e) {
-            log.debug("消息非 JSON 格式,按普通文本处理: {}", payload);
-            sendText(session, "服务器时间: " + LocalDateTime.now() + "->" + payload);
-        }
-    }
-
-    // ==================== 业务处理 ====================
-
-    /**
-     * 处理用户认证消息
-     */
-    private void handleUserAuth(WebSocketSession session, JSONObject messageObj) {
-        try {
-            WebSocketAuthHandler.UserAuthInfo authInfo = authHandler.extractAuthInfo(messageObj);
-            String appUserId = authInfo.getAppUserId();
-            String token = authInfo.getToken();
-
-            if (!StringUtils.hasText(appUserId)) {
-                sendAuthFailure(session, "用户ID不能为空");
-                return;
-            }
-
-            WebSocketAuthHandler.AuthResult authResult = authHandler.authenticateUser(appUserId, token);
-            if (authResult.isSuccess()) {
-                userConnectionManager.addUserConnection(appUserId, session);
-
-                // TODO
-                String uuid = UUID.randomUUID().toString();
-                JSONObject response = new JSONObject();
-                response.put("type", "auth_success");
-                response.put("appUserId", appUserId);
-                response.put("nickName", uuid);
-                response.put("message", "认证成功");
-                response.put("timestamp", LocalDateTime.now().toString());
-
-                sendText(session, response.toJSONString());
-                log.info("用户 {} ({}) 认证成功,sessionId: {}", appUserId, uuid, session.getId());
-            } else {
-                sendAuthFailure(session, authResult.getMessage());
-                log.warn("用户 {} 认证失败: {}, sessionId: {}", appUserId, authResult.getMessage(), session.getId());
-            }
-        } catch (Exception e) {
-            log.error("处理用户认证时发生错误", e);
-            sendAuthFailure(session, "认证过程中发生错误: " + e.getMessage());
-        }
-    }
-
-    private void sendAuthFailure(WebSocketSession session, String message) {
-        JSONObject response = new JSONObject();
-        response.put("type", "auth_failed");
-        response.put("message", message);
-        response.put("timestamp", LocalDateTime.now().toString());
-        sendText(session, response.toJSONString());
-    }
-
-    /**
-     * 处理心跳消息
-     */
-    private void handlePing(WebSocketSession session) {
-        String appUserId = userConnectionManager.getUserIdBySessionId(session.getId());
-
-        JSONObject response = new JSONObject();
-        response.put("type", "pong");
-        response.put("appUserId", appUserId);
-        response.put("timestamp", LocalDateTime.now().toString());
-        log.info("心跳用户id:{}", appUserId);
-
-        sendText(session, response.toJSONString());
-    }
-
-    /**
-     * 处理业务消息
-     */
-    private void handleBusinessMessage(WebSocketSession session, JSONObject messageObj) {
-        String appUserId = userConnectionManager.getUserIdBySessionId(session.getId());
-
-        if (appUserId != null) {
-            log.info("收到用户 {} 的业务消息: {}", appUserId, messageObj.toJSONString());
-
-            JSONObject response = new JSONObject();
-            response.put("type", "message_response");
-            response.put("appUserId", appUserId);
-            response.put("originalMessage", messageObj);
-            response.put("serverTime", LocalDateTime.now().toString());
-
-            sendText(session, response.toJSONString());
-        } else {
-            log.warn("收到未认证连接的业务消息: {}", messageObj.toJSONString());
-
-            JSONObject response = new JSONObject();
-            response.put("type", "auth_required");
-            response.put("message", "请先进行用户认证");
-            response.put("timestamp", LocalDateTime.now().toString());
-
-            sendText(session, response.toJSONString());
-        }
-    }
-
-    // ==================== 工具方法 ====================
-
-    /**
-     * 发送文本消息(线程安全)
-     */
-    private void sendText(WebSocketSession session, String text) {
-        try {
-            if (session.isOpen()) {
-                synchronized (session) {
-                    session.sendMessage(new TextMessage(text));
-                }
-            }
-        } catch (Exception e) {
-            log.error("发送消息失败,sessionId: {}, error: {}", session.getId(), e.getMessage());
-        }
-    }
-}
+//package com.xiaopeng.pushMessage.webSocket.handler;
+//
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONObject;
+//import com.xiaopeng.pushMessage.webSocket.service.WebSocketUserConnectionManager;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//import org.springframework.util.StringUtils;
+//import org.springframework.web.socket.CloseStatus;
+//import org.springframework.web.socket.TextMessage;
+//import org.springframework.web.socket.WebSocketSession;
+//import org.springframework.web.socket.handler.TextWebSocketHandler;
+//
+//import java.time.LocalDateTime;
+//import java.util.UUID;
+//
+///**
+// * Spring WebSocket 消息处理器
+// * 路径: /websocket,共用 Spring Boot HTTP 端口
+// * 替代原 Netty 独立端口方案
+// */
+//@Component
+//@Slf4j
+//public class PushMessageWebSocketHandler extends TextWebSocketHandler {
+//
+//    @Autowired
+//    private WebSocketUserConnectionManager userConnectionManager;
+//
+//    @Autowired
+//    private WebSocketAuthHandler authHandler;
+//
+//    // ==================== 连接生命周期 ====================
+//
+//    @Override
+//    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+//        log.info("WebSocket 连接建立,sessionId: {}", session.getId());
+//    }
+//
+//    @Override
+//    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+//        log.info("WebSocket 连接关闭,sessionId: {}, status: {}", session.getId(), status);
+//        userConnectionManager.removeUserConnection(session);
+//    }
+//
+//    @Override
+//    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
+//        log.error("WebSocket 传输异常,sessionId: {}, error: {}", session.getId(), exception.getMessage(), exception);
+//        if (session.isOpen()) {
+//            session.close(CloseStatus.SERVER_ERROR);
+//        }
+//    }
+//
+//    // ==================== 消息处理 ====================
+//
+//    @Override
+//    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+//        String payload = message.getPayload();
+//        log.info("[服务器] 收到消息 -> {}", payload);
+//
+//        try {
+//            JSONObject messageObj = JSON.parseObject(payload);
+//            String messageType = messageObj.getString("type");
+//
+//            if ("auth".equals(messageType)) {
+//                handleUserAuth(session, messageObj);
+//            } else if ("ping".equals(messageType)) {
+//                handlePing(session);
+//            } else {
+//                handleBusinessMessage(session, messageObj);
+//            }
+//        } catch (Exception e) {
+//            log.debug("消息非 JSON 格式,按普通文本处理: {}", payload);
+//            sendText(session, "服务器时间: " + LocalDateTime.now() + "->" + payload);
+//        }
+//    }
+//
+//    // ==================== 业务处理 ====================
+//
+//    /**
+//     * 处理用户认证消息
+//     */
+//    private void handleUserAuth(WebSocketSession session, JSONObject messageObj) {
+//        try {
+//            WebSocketAuthHandler.UserAuthInfo authInfo = authHandler.extractAuthInfo(messageObj);
+//            String appUserId = authInfo.getAppUserId();
+//            String token = authInfo.getToken();
+//
+//            if (!StringUtils.hasText(appUserId)) {
+//                sendAuthFailure(session, "用户ID不能为空");
+//                return;
+//            }
+//
+//            WebSocketAuthHandler.AuthResult authResult = authHandler.authenticateUser(appUserId, token);
+//            if (authResult.isSuccess()) {
+//                userConnectionManager.addUserConnection(appUserId, session);
+//
+//                // TODO
+//                String uuid = UUID.randomUUID().toString();
+//                JSONObject response = new JSONObject();
+//                response.put("type", "auth_success");
+//                response.put("appUserId", appUserId);
+//                response.put("nickName", uuid);
+//                response.put("message", "认证成功");
+//                response.put("timestamp", LocalDateTime.now().toString());
+//
+//                sendText(session, response.toJSONString());
+//                log.info("用户 {} ({}) 认证成功,sessionId: {}", appUserId, uuid, session.getId());
+//            } else {
+//                sendAuthFailure(session, authResult.getMessage());
+//                log.warn("用户 {} 认证失败: {}, sessionId: {}", appUserId, authResult.getMessage(), session.getId());
+//            }
+//        } catch (Exception e) {
+//            log.error("处理用户认证时发生错误", e);
+//            sendAuthFailure(session, "认证过程中发生错误: " + e.getMessage());
+//        }
+//    }
+//
+//    private void sendAuthFailure(WebSocketSession session, String message) {
+//        JSONObject response = new JSONObject();
+//        response.put("type", "auth_failed");
+//        response.put("message", message);
+//        response.put("timestamp", LocalDateTime.now().toString());
+//        sendText(session, response.toJSONString());
+//    }
+//
+//    /**
+//     * 处理心跳消息
+//     */
+//    private void handlePing(WebSocketSession session) {
+//        String appUserId = userConnectionManager.getUserIdBySessionId(session.getId());
+//
+//        JSONObject response = new JSONObject();
+//        response.put("type", "pong");
+//        response.put("appUserId", appUserId);
+//        response.put("timestamp", LocalDateTime.now().toString());
+//        log.info("心跳用户id:{}", appUserId);
+//
+//        sendText(session, response.toJSONString());
+//    }
+//
+//    /**
+//     * 处理业务消息
+//     */
+//    private void handleBusinessMessage(WebSocketSession session, JSONObject messageObj) {
+//        String appUserId = userConnectionManager.getUserIdBySessionId(session.getId());
+//
+//        if (appUserId != null) {
+//            log.info("收到用户 {} 的业务消息: {}", appUserId, messageObj.toJSONString());
+//
+//            JSONObject response = new JSONObject();
+//            response.put("type", "message_response");
+//            response.put("appUserId", appUserId);
+//            response.put("originalMessage", messageObj);
+//            response.put("serverTime", LocalDateTime.now().toString());
+//
+//            sendText(session, response.toJSONString());
+//        } else {
+//            log.warn("收到未认证连接的业务消息: {}", messageObj.toJSONString());
+//
+//            JSONObject response = new JSONObject();
+//            response.put("type", "auth_required");
+//            response.put("message", "请先进行用户认证");
+//            response.put("timestamp", LocalDateTime.now().toString());
+//
+//            sendText(session, response.toJSONString());
+//        }
+//    }
+//
+//    // ==================== 工具方法 ====================
+//
+//    /**
+//     * 发送文本消息(线程安全)
+//     */
+//    private void sendText(WebSocketSession session, String text) {
+//        try {
+//            if (session.isOpen()) {
+//                synchronized (session) {
+//                    session.sendMessage(new TextMessage(text));
+//                }
+//            }
+//        } catch (Exception e) {
+//            log.error("发送消息失败,sessionId: {}, error: {}", session.getId(), e.getMessage());
+//        }
+//    }
+//}

--
Gitblit v1.7.1