CommunityChatMsgMapper.xml 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.ruoyi.system.mapper.CommunityChatMsgMapper">
  6. <select id="getChatListWithLatestMessage" parameterType="java.lang.Long" resultType="com.ruoyi.system.domain.vo.SysUserVo">
  7. SELECT u.user_id AS id,
  8. u.nick_name as nickName,
  9. u.user_name as username,
  10. u.avatar as avatar,
  11. (SELECT u2.nick_name from sys_user u2 where u2.user_id = r.sender_id) as senderNickName,
  12. r.is_read AS isRead,
  13. r.content AS msg,
  14. r.create_time AS msgTime
  15. FROM (SELECT CASE
  16. WHEN sender_id = #{userId} THEN receiver_id
  17. ELSE sender_id
  18. END AS chat_user_id,
  19. MAX(create_time) AS latest_time
  20. FROM community_chat_msg
  21. WHERE sender_id = #{userId}
  22. OR receiver_id = #{userId}
  23. GROUP BY chat_user_id) latest
  24. JOIN community_chat_msg r ON
  25. (
  26. (r.sender_id = #{userId}
  27. AND r.receiver_id = latest.chat_user_id
  28. OR
  29. r.sender_id = latest.chat_user_id
  30. AND r.receiver_id = #{userId})
  31. AND r.create_time = latest.latest_time
  32. )
  33. JOIN sys_user u ON
  34. u.user_id = latest.chat_user_id
  35. ORDER BY latest.latest_time DESC
  36. </select>
  37. </mapper>