feat(user): Implement user module foundation

This commit is contained in:
2025-04-02 01:54:12 +08:00
parent 8c4d8e4c6a
commit 730a23dee3
55 changed files with 3929 additions and 20 deletions
@@ -0,0 +1,67 @@
<?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>