lxr пре 1 дан
родитељ
комит
4effa2be8b
1 измењених фајлова са 22 додато и 15 уклоњено
  1. 22 15
      src/views/storeDecoration/decorationChat.vue

+ 22 - 15
src/views/storeDecoration/decorationChat.vue

@@ -124,6 +124,13 @@ const socketStore = useWebSocketStore();
 
 const isWsReady = () => socketStore.isSocketOpen();
 
+/** 接口与 WebSocket:相关 id 需带 store_ 前缀(已带则不变) */
+const ensureStoreSenderId = (id: string) => {
+  const s = String(id ?? "").trim();
+  if (!s) return s;
+  return /^store_/i.test(s) ? s : `store_${s}`;
+};
+
 // 会话信息
 const sendId = ref("");
 const receiverId = ref("");
@@ -185,8 +192,8 @@ const handleSend = async () => {
   const ok = await socketStore.sendMessage({
     category: "message",
     type: 1,
-    receiverId: receiverId.value,
-    senderId: sendId.value,
+    receiverId: ensureStoreSenderId(receiverId.value),
+    senderId: ensureStoreSenderId(sendId.value),
     text
   });
   sending.value = false;
@@ -197,8 +204,8 @@ const handleSend = async () => {
         id: `temp_${Date.now()}`,
         type: 1,
         content: text,
-        senderId: sendId.value,
-        receiverId: receiverId.value,
+        senderId: ensureStoreSenderId(sendId.value),
+        receiverId: ensureStoreSenderId(receiverId.value),
         createdTime: formatTime(new Date())
       }
     ];
@@ -246,8 +253,8 @@ const handleImageSelect = async (e: Event) => {
     const ok = await socketStore.sendMessage({
       category: "message",
       type: 2,
-      receiverId: receiverId.value,
-      senderId: sendId.value,
+      receiverId: ensureStoreSenderId(receiverId.value),
+      senderId: ensureStoreSenderId(sendId.value),
       text: fileUrl
     });
     if (ok) {
@@ -257,8 +264,8 @@ const handleImageSelect = async (e: Event) => {
           id: `temp_${Date.now()}`,
           type: 2,
           content: fileUrl,
-          senderId: sendId.value,
-          receiverId: receiverId.value,
+          senderId: ensureStoreSenderId(sendId.value),
+          receiverId: ensureStoreSenderId(receiverId.value),
           createdTime: formatTime(new Date())
         }
       ];
@@ -296,8 +303,8 @@ const handleVideoSelect = async (e: Event) => {
     const ok = await socketStore.sendMessage({
       category: "message",
       type: 8,
-      receiverId: receiverId.value,
-      senderId: sendId.value,
+      receiverId: ensureStoreSenderId(receiverId.value),
+      senderId: ensureStoreSenderId(sendId.value),
       text: fileUrl
     });
     if (ok) {
@@ -307,8 +314,8 @@ const handleVideoSelect = async (e: Event) => {
           id: `temp_${Date.now()}`,
           type: 8,
           content: fileUrl,
-          senderId: sendId.value,
-          receiverId: receiverId.value,
+          senderId: ensureStoreSenderId(sendId.value),
+          receiverId: ensureStoreSenderId(receiverId.value),
           createdTime: formatTime(new Date())
         }
       ];
@@ -330,7 +337,7 @@ const readMessage = async () => {
   try {
     await messageRead({
       receiverId: sendId.value,
-      senderId: receiverId.value
+      senderId: ensureStoreSenderId(receiverId.value)
     });
   } catch (e) {
     console.error("消息已读接口调用失败", e);
@@ -347,7 +354,7 @@ const loadChatRecord = async () => {
     await readMessage();
     const res: any = await getChatRecord({
       receiverId: sendId.value,
-      senderId: receiverId.value
+      senderId: ensureStoreSenderId(receiverId.value)
     });
     const list = res?.data?.messageList || res?.messageList || [];
     list.forEach((item: any) => {
@@ -369,7 +376,7 @@ const initWebSocket = async () => {
     ElMessage.warning("未获取到商家信息,无法连接");
     return;
   }
-  sendId.value = `store_${phone}`;
+  sendId.value = ensureStoreSenderId(String(phone));
   // 与打包 mode 无关:HTTPS 走 wss://当前域名/alienStore/socket,避免 .env.production 仍为 ws 导致混合内容拦截
   const WS_BASE = getWebSocketBase();
   const wsUrl =