merge: 合并feature-WebSocket分支到master
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
<?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.bao.dating.mapper.ChatRecordsMapper">
|
||||
|
||||
<!-- 插入聊天记录 -->
|
||||
<insert id="insert" useGeneratedKeys="true" keyProperty="chatId">
|
||||
INSERT INTO chat_records
|
||||
(
|
||||
sender_user_id,
|
||||
receiver_user_id,
|
||||
message_content,
|
||||
message_type,
|
||||
read_status,
|
||||
send_time,
|
||||
message_status,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{senderUserId},
|
||||
#{receiverUserId},
|
||||
#{messageContent},
|
||||
#{messageType},
|
||||
#{readStatus},
|
||||
#{sendTime},
|
||||
#{messageStatus},
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 根据两个用户ID查询聊天记录 (按发送时间倒序) - PageHelper 会自动处理分页 -->
|
||||
<select id="selectChatHistoryByCursor" resultType="com.bao.dating.pojo.entity.ChatRecords">
|
||||
SELECT
|
||||
chat_id, sender_user_id, receiver_user_id, message_content, message_type,
|
||||
read_status, read_time, send_time, message_status, created_at, updated_at
|
||||
FROM chat_records
|
||||
WHERE
|
||||
message_status = 1
|
||||
AND (
|
||||
(sender_user_id = #{currentUserId} AND receiver_user_id = #{targetUserId})
|
||||
OR
|
||||
(sender_user_id = #{targetUserId} AND receiver_user_id = #{currentUserId})
|
||||
)
|
||||
<if test="cursor != null">
|
||||
AND send_time < #{cursor}
|
||||
</if>
|
||||
ORDER BY send_time DESC
|
||||
LIMIT #{size}
|
||||
</select>
|
||||
|
||||
<!-- 标记消息为已读 -->
|
||||
<update id="markMessagesAsRead">
|
||||
UPDATE chat_records
|
||||
SET
|
||||
read_status = 1,
|
||||
read_time = #{readTime},
|
||||
updated_at = NOW()
|
||||
WHERE
|
||||
sender_user_id = #{senderUserId}
|
||||
AND receiver_user_id = #{receiverUserId}
|
||||
AND read_status = 0
|
||||
AND message_status = 1
|
||||
</update>
|
||||
|
||||
<!-- 根据ID查询聊天记录 -->
|
||||
<select id="selectById" resultType="com.bao.dating.pojo.entity.ChatRecords">
|
||||
SELECT
|
||||
chat_id,
|
||||
sender_user_id,
|
||||
receiver_user_id,
|
||||
send_time,
|
||||
message_status
|
||||
FROM chat_records
|
||||
WHERE chat_id = #{chatId}
|
||||
</select>
|
||||
|
||||
<!-- 撤回消息 -->
|
||||
<update id="recallMessage">
|
||||
UPDATE chat_records
|
||||
SET
|
||||
message_status = 2,
|
||||
updated_at = NOW()
|
||||
WHERE
|
||||
chat_id = #{chatId}
|
||||
AND sender_user_id = #{senderUserId}
|
||||
AND message_status = 1
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,91 @@
|
||||
<?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.bao.dating.mapper.ChatSessionsMapper">
|
||||
|
||||
<!-- 插入或更新发送方会话 -->
|
||||
<insert id="upsertSessionForSender" parameterType="com.bao.dating.pojo.entity.ChatSessions">
|
||||
INSERT INTO chat_sessions
|
||||
(user_id, target_user_id, session_name, last_message_id, last_message_content, last_message_time,
|
||||
unread_count, session_status, top_status, mute_status, created_at, updated_at)
|
||||
VALUES
|
||||
(
|
||||
#{userId}, #{targetUserId}, #{sessionName}, #{lastMessageId}, #{lastMessageContent}, #{lastMessageTime},
|
||||
0, 1, 0, 0, NOW(), NOW()
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
last_message_id = VALUES(last_message_id),
|
||||
last_message_content = VALUES(last_message_content),
|
||||
last_message_time = VALUES(last_message_time),
|
||||
unread_count = 0,
|
||||
updated_at = NOW();
|
||||
</insert>
|
||||
|
||||
<!-- 插入或更新接收方会话 -->
|
||||
<insert id="upsertSessionForReceiver" parameterType="com.bao.dating.pojo.entity.ChatSessions">
|
||||
INSERT INTO chat_sessions
|
||||
(user_id, target_user_id, session_name, last_message_id, last_message_content, last_message_time,
|
||||
unread_count, session_status, top_status, mute_status, created_at, updated_at)
|
||||
VALUES
|
||||
(
|
||||
#{userId}, #{targetUserId}, #{sessionName}, #{lastMessageId}, #{lastMessageContent}, #{lastMessageTime},
|
||||
1, 1, 0, 0, NOW(), NOW()
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
last_message_id = VALUES(last_message_id),
|
||||
last_message_content = VALUES(last_message_content),
|
||||
last_message_time = VALUES(last_message_time),
|
||||
unread_count = unread_count + 1,
|
||||
updated_at = NOW();
|
||||
</insert>
|
||||
|
||||
<!-- 清空未读消息数 -->
|
||||
<update id="clearUnreadCount">
|
||||
UPDATE chat_sessions
|
||||
SET
|
||||
unread_count = 0,
|
||||
updated_at = NOW()
|
||||
WHERE
|
||||
user_id = #{userId}
|
||||
AND target_user_id = #{targetUserId}
|
||||
AND session_status = 1
|
||||
</update>
|
||||
|
||||
<!-- 查询会话列表 -->
|
||||
<select id="selectSessionsByUserId" resultType="com.bao.dating.pojo.entity.ChatSessions">
|
||||
SELECT session_id, target_user_id, session_name, last_message_content,
|
||||
last_message_time, unread_count, top_status, mute_status
|
||||
FROM chat_sessions
|
||||
WHERE user_id = #{userId}
|
||||
AND session_status in (1,2)
|
||||
ORDER BY top_status DESC, last_message_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 更新会话状态 -->
|
||||
<update id="updateSessionStatus">
|
||||
UPDATE chat_sessions
|
||||
SET session_status = #{sessionStatus},
|
||||
updated_at = NOW()
|
||||
WHERE user_id = #{userId}
|
||||
AND target_user_id = #{targetUserId}
|
||||
</update>
|
||||
|
||||
<!-- 置顶会话 -->
|
||||
<update id="updateTopStatus">
|
||||
UPDATE chat_sessions
|
||||
SET top_status = #{topStatus},
|
||||
updated_at = NOW()
|
||||
WHERE user_id = #{userId}
|
||||
AND target_user_id = #{targetUserId}
|
||||
</update>
|
||||
|
||||
<!-- 静音会话 -->
|
||||
<update id="updateMuteStatus">
|
||||
UPDATE chat_sessions
|
||||
SET mute_status = #{muteStatus},
|
||||
updated_at = NOW()
|
||||
WHERE user_id = #{userId}
|
||||
AND target_user_id = #{targetUserId}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user