Gqingci 3 روز پیش
والد
کامیت
3004ff1f03

+ 20 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/controller/ChatWebSocketController.java

@@ -2,14 +2,21 @@ package org.dromara.main.controller;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.main.domain.CsSeatWaiter;
 import org.dromara.main.domain.bo.CsMessageBo;
 import org.dromara.main.domain.vo.CsMessageVo;
+import org.dromara.main.mapper.CsSeatWaiterMapper;
 import org.dromara.main.service.ICsMessageService;
 import org.springframework.messaging.handler.annotation.MessageMapping;
 import org.springframework.messaging.handler.annotation.Payload;
 import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.stereotype.Controller;
 
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
 @Slf4j
 @RequiredArgsConstructor
 @Controller
@@ -17,6 +24,7 @@ public class ChatWebSocketController {
 
     private final ICsMessageService messageService;
     private final SimpMessagingTemplate messagingTemplate;
+    private final CsSeatWaiterMapper seatWaiterMapper;
 
     /**
      * 处理客户端发送的文本消息
@@ -30,6 +38,18 @@ public class ChatWebSocketController {
             log.info("收到WebSocket消息: sessionId={}, content={}",
                 message.getSessionId(), message.getContent());
 
+            Long currentUserId = LoginHelper.getUserId();
+            if (currentUserId != null) {
+                message.setSenderId(currentUserId);
+                if (message.getSenderType() == null) {
+                    List<CsSeatWaiter> waiters = seatWaiterMapper.selectList(
+                        Wrappers.lambdaQuery(CsSeatWaiter.class)
+                            .eq(CsSeatWaiter::getUserId, currentUserId)
+                            .last("LIMIT 1"));
+                    message.setSenderType(!waiters.isEmpty() ? 2 : 1);
+                }
+            }
+
             // 保存消息到数据库
             CsMessageVo savedMessage = messageService.sendTextMessage(message);
 

+ 1 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/CsSessionServiceImpl.java

@@ -243,6 +243,7 @@ public class CsSessionServiceImpl implements ICsSessionService {
         msg.setSessionId(sessionId);
         msg.setMsgNo("AUTO_" + IdUtil.getSnowflakeNextIdStr());
         msg.setSenderType(3); // 系统消息
+        msg.setSenderId(0L);
         msg.setMsgType(msgType);
         msg.setContent(content);
         msg.setStatus(1);