-
更新好友申请功能,使用 computed 包裹当前用户 ID,避免在 keep-alive 实例中持有旧 ID。增加自我添加好友的校验逻辑,防止用户添加自己为好友。同时,增强自动通过好友申请的异常处理,确保在事务提交后能正确处理失败情况。
-
顺带修复 Bug-Y(删除最后一条消息后孤立时间分隔条)
-
私聊已读语义在 message.status 字段翻转,离线期间错过的 RECEIPT 推送没法 重放(与群聊不同——群聊已读在 message.readCount / receiptStatus 字段自带)。 新增此接口:客户端进入私聊会话或断线重连后,拿到对方已读到我发的最大消息 id,按 id <= maxReadId 翻转本地自发消息状态。 实现: - mapper 用 order by id desc + LIMIT 1 命中 (sender_id, receiver_id) 索引,无 max() 聚合开销; - 对方一条都没读过时返回 null(不做 0 兜底,避免与真实 id 混淆); - 补齐 hit / miss 两个单测。
-
原 readPrivateMessages 走 select-then-update 两步:先按 status=UNREAD 查未读,再按 id in 翻转,maxReadId 取已 update 行的 max(id)。该实现 有两个问题: 1. select 与 update 之间到达的消息会被一并标 READ,但 maxReadId 取的 是 select 时刻的最大值,对方端拿到的「已读到哪条」语义偏弱,前端按 maxReadId 卡边界时也会与实际状态错位。 2. 接口与群聊 readGroupMessages(userId, groupId, messageId) 不对称。 改造: - 接口签名增加 messageId(已读位置,含),与群聊接口对齐; - mapper 替换为单条 update SQL:id <= messageId AND status=UNREAD 直接 翻转,消除两步竞态窗口; - READ / RECEIPT 推送的已读位置直接采用前端上报的 messageId; - 落地 ImPrivateMessageServiceImpl 原 TODO; - 同步更新 testReadMessages_success / testReadMessages_noUnread。
-
- 修改获取当前用户群组列表的接口名称,提升语义清晰度 - 新增获取有效群成员 userId 列表的接口,支持缓存 - 优化群成员查询逻辑,确保历史消息可见性 - 更新相关文档,补充接口说明和使用示例
-
- ImFriendServiceImpl#addFriend0 捕获 DuplicateKeyException 并发插入冲突时忽略(另一方插入必然为 ENABLE 状态) - ImGroupMemberServiceImpl#addGroupMember 改为先查后写: 已存在 DISABLE 复活为 ENABLE,新记录 insert 失败降级 select 返回 - ImGroupMemberServiceImpl#addGroupMembers 批量 insert 触发 DuplicateKey 时降级为逐个 addGroupMember 走幂等兜底 - 依赖 im_friend.uk_user_friend 与 im_group_member.uk_group_user 唯一索引
-
- ImFriendServiceImpl#addFriend0 捕获 DuplicateKeyException 并发插入冲突时忽略(另一方插入必然为 ENABLE 状态) - ImGroupMemberServiceImpl#addGroupMember 改为先查后写: 已存在 DISABLE 复活为 ENABLE,新记录 insert 失败降级 select 返回 - ImGroupMemberServiceImpl#addGroupMembers 批量 insert 触发 DuplicateKey 时降级为逐个 addGroupMember 走幂等兜底 - 依赖 im_friend.uk_user_friend 与 im_group_member.uk_group_user 唯一索引
-
- 删除 ImUserController、ImUserRespVO(get-self 复用 UserProfileController#getUserProfile) - UserController 新增 /get-simple、/list-by-nickname 免鉴权接口(用于 IM 点头像弹名片、加好友搜索),整理到类末尾并用分隔注释标识 - UserSimpleRespVO 补充 avatar、sex 字段
-
- ImPrivateMessageDTO#ofFriendUpdate 移除 content 字段,删除 FriendUpdateMessage - 新增 ImMessageTypeEnum.GROUP_MEMBER_UPDATE(203) 和 ofGroupMemberUpdate 工厂方法 - ImGroupMemberServiceImpl#updateGroupMember 推送成员变更事件(多端同步,仅推自己)
-
- ImGroupServiceImpl#updateGroup 移除 displayUserName/displayGroupName 处理逻辑,交由 updateGroupMember 承接 - 去掉 hasGroupInfoChange 判断,群主校验前置 - ImGroupUpdateReqVO 清理 displayUserName/displayGroupName 字段
-
新增群聊成员人数限制,最大成员数为 500。实现邀请好友功能,确保被邀请人是当前用户的好友,若不是则返回相应错误提示。更新相关提示信息以提升用户体验。