diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java
index d6b030c..ff040e1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserMessageController.java
@@ -25,4 +25,11 @@
     public AjaxResult list(@RequestParam Long userId1, @RequestParam Long userId2) {
         return AjaxResult.success(messageService.getMessageList(userId1, userId2));
     }
+
+    // 新增获取与当前用户聊过天的用户ID和昵称的接口
+    @GetMapping("/chat/users")
+    public AjaxResult getChatUsers() {
+        Long currentUserId = getUserId();
+        return AjaxResult.success(messageService.getChatUsers(currentUserId));
+    }
 }
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java
index 6e2fc1d..edadbb8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMessageMapper.java
@@ -2,8 +2,10 @@
 
 import com.ruoyi.system.domain.SysUserMessage;
 import java.util.List;
+import java.util.Map;
 
 public interface SysUserMessageMapper {
     int insertMessage(SysUserMessage message);
     List<SysUserMessage> selectMessageListByUserIds(Long userId1, Long userId2);
+    List<Map<String, Object>> selectChatUserIds(Long userId);
 }
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java
index 1bcc9f5..8501c99 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserMessageService.java
@@ -2,8 +2,10 @@
 
 import com.ruoyi.system.domain.SysUserMessage;
 import java.util.List;
+import java.util.Map;
 
 public interface ISysUserMessageService {
     int sendMessage(SysUserMessage message);
     List<SysUserMessage> getMessageList(Long userId1, Long userId2);
+    List<Map<String, Object>> getChatUsers(Long userId);
 }
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java
index 94c9e6e..fea1472 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserMessageServiceImpl.java
@@ -2,15 +2,22 @@
 
 import com.ruoyi.system.domain.SysUserMessage;
 import com.ruoyi.system.mapper.SysUserMessageMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysUserMessageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class SysUserMessageServiceImpl implements ISysUserMessageService {
     @Autowired
     private SysUserMessageMapper messageMapper;
+    @Autowired
+    private SysUserMapper userMapper; // 新增：用于查询用户昵称
 
     @Override
     public int sendMessage(SysUserMessage message) {
@@ -21,4 +28,11 @@
     public List<SysUserMessage> getMessageList(Long userId1, Long userId2) {
         return messageMapper.selectMessageListByUserIds(userId1, userId2);
     }
+
+
+    @Override
+    public List<Map<String, Object>> getChatUsers(Long userId) {
+        List<Map<String, Object>> chatUsers = messageMapper.selectChatUserIds(userId);
+        return chatUsers != null ? chatUsers : new ArrayList<>();
+    }
 }
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml
index 79fe8b7..73e55fc 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMessageMapper.xml
@@ -22,4 +22,21 @@
             and del_flag = '0'
         order by create_time asc
     </select>
+
+    <select id="selectChatUserIds" parameterType="java.lang.Long" resultType="map">
+        SELECT DISTINCT
+            CASE
+                WHEN m.sender_id = #{userId} THEN m.receiver_id
+                ELSE m.sender_id
+                END AS userId,
+            u.nick_name AS nickName
+        FROM sys_user_message m
+                 INNER JOIN sys_user u
+                            ON (m.sender_id = #{userId} AND m.receiver_id = u.user_id)
+                                OR (m.receiver_id = #{userId} AND m.sender_id = u.user_id)
+        WHERE (m.sender_id = #{userId} OR m.receiver_id = #{userId})
+          AND m.del_flag = '0'
+          AND u.del_flag = '0'
+        ORDER BY u.nick_name
+    </select>
 </mapper>
\ No newline at end of file
