feat(userMessage):添加查看当前用户曾与哪些用户进行过通信的功能
Change-Id: I0f333e3835f435663dc5ff6c0c26f0df01c472ba
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