67 lines
2.4 KiB
XML
67 lines
2.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.nuaa.video.user.mapper.UserMessageMapper">
|
|
|
|
<!-- 查询私信列表(按会话分组) -->
|
|
<select id="selectMessageGroupList" resultType="com.nuaa.video.user.entity.UserMessage">
|
|
SELECT
|
|
m.*,
|
|
u1.nickname as sender_nickname,
|
|
u1.avatar as sender_avatar,
|
|
u2.nickname as receiver_nickname,
|
|
u2.avatar as receiver_avatar
|
|
FROM (
|
|
SELECT
|
|
MAX(id) as id,
|
|
IF(sender_id = #{userId}, receiver_id, sender_id) as chat_user_id,
|
|
MAX(create_time) as latest_time
|
|
FROM
|
|
user_message
|
|
WHERE
|
|
sender_id = #{userId} OR receiver_id = #{userId}
|
|
GROUP BY
|
|
chat_user_id
|
|
ORDER BY
|
|
latest_time DESC
|
|
) as t
|
|
JOIN user_message m ON t.id = m.id
|
|
JOIN user_info u1 ON m.sender_id = u1.id
|
|
JOIN user_info u2 ON m.receiver_id = u2.id
|
|
ORDER BY m.create_time DESC
|
|
</select>
|
|
|
|
<!-- 查询与指定用户的私信记录 -->
|
|
<select id="selectMessageDetail" resultType="com.nuaa.video.user.entity.UserMessage">
|
|
SELECT
|
|
m.*,
|
|
u1.nickname as sender_nickname,
|
|
u1.avatar as sender_avatar,
|
|
u2.nickname as receiver_nickname,
|
|
u2.avatar as receiver_avatar
|
|
FROM
|
|
user_message m
|
|
JOIN user_info u1 ON m.sender_id = u1.id
|
|
JOIN user_info u2 ON m.receiver_id = u2.id
|
|
WHERE
|
|
(m.sender_id = #{userId} AND m.receiver_id = #{targetId})
|
|
OR
|
|
(m.sender_id = #{targetId} AND m.receiver_id = #{userId})
|
|
ORDER BY
|
|
m.create_time ASC
|
|
</select>
|
|
|
|
<!-- 标记私信为已读 -->
|
|
<update id="markMessageRead">
|
|
UPDATE user_message
|
|
SET is_read = 1
|
|
WHERE receiver_id = #{userId} AND sender_id = #{senderId} AND is_read = 0
|
|
</update>
|
|
|
|
<!-- 获取未读私信数量 -->
|
|
<select id="countUnreadMessage" resultType="int">
|
|
SELECT COUNT(1)
|
|
FROM user_message
|
|
WHERE receiver_id = #{userId} AND is_read = 0
|
|
</select>
|
|
|
|
</mapper> |