• - 后端将 GROUP_MEMBER_NICKNAME_UPDATE 改为非持久化事件,避免写入群聊历史消息
    - 保留群昵称变更的 WebSocket 在线同步,继续更新成员 displayUserName
    - Vue3 聊天侧栏从当前群成员的 displayUserName 回填「我在本群的昵称」
    - Vue3 WebSocket 收到 GROUP_MEMBER_NICKNAME_UPDATE 时只同步 groupStore,不再插入消息列表
    - 补充后端单测,覆盖群昵称变更事件不入库但仍推送
    YunaiV authored
     
    Browse Dir »

  • - 将 WebSocket 推送入口统一为 userId/userIds + conversationType + contentType + payload
    - 移除业务侧 ImNotificationWebSocketDTO 构造和无会话专用发送入口
    - 收敛私聊、群聊、频道、好友、加群申请、RTC 通知调用路径
    - 精简 ImNotificationWebSocketDTO,仅保留统一外壳字段
    - 保留群消息 payload 的 receiptStatus、readCount、receiverUserIds
    - 更新相关单元测试,覆盖群消息通知 payload 字段
    YunaiV authored
     
    Browse Dir »

  • - 新增 im_conversation_read 会话读位置表,并补充消息存储推拉相关索引
    - 群消息固化 receiver_user_ids 快照,按可见成员快照拉取和统计回执
    - 统一消息 status 为 NORMAL/RECALL,新增私聊 receipt_status 并复用统一回执状态
    - 前端改用 receiptStatus 展示私聊已读、群回执和频道已读态
    - 补齐私聊、群聊、频道 WebSocket 已读同步和离线补偿逻辑
    - 更新 IM 消息状态、回执状态字典和管理后台展示
    - 调整相关单测和测试建表脚本
    YunaiV authored
     
    Browse Dir »



  • - 复用好友申请、群申请和群邀请唯一键冲突后的旧记录,并补充测试
    - 收敛 RTC 旁观者加入、忙线校验、追加邀请超员和群通话通知逻辑
    - 为 RTC 参与者补充房间用户唯一约束与 MySQL 迁移
    - 统一群本体管理请求的 id 字段,并同步前端调用
    - 修复前端来电活跃态守卫和 LiveKit 重连前断开旧房间
    - 清理群成员通知基类命名和相关注释
    YunaiV authored
     
    Browse Dir »
  • - 修复群管理行锁、管理员角色更新、群主转让、置顶消息并发问题
    - 修复好友申请 maxId 游标、重复申请排序、通知类型校验和消息内容结构校验
    - 修复消息统计口径、RTC token 鉴权、离会通知、前端拉取取消和媒体重试
    - 优化表情批量删除、WebSocket 推送注释、群 READ 字段和相关单测
    - 更新 bug_todo、bug_done 和 bug_rejected,剩余 9 个待修
    YunaiV authored
     
    Browse Dir »

  • - 拒绝匿名 WebSocket 握手,收紧 RTC 接听和入会忙线校验
    - 支持封禁群解散,管理端解散改为独立权限码
    - 增加个人表情数量配置、唯一约束和并发重复兜底
    - 修复 RTC 异常断开上报、视频远端音频和好友选择大列表渲染
    - 让个人表情添加失败透出后端业务错误
    - 流转 P0 bug 文档,并按产品取舍记录 apiSecret 默认值不强制拦截
    YunaiV authored
     
    Browse Dir »
  • - 拦截对方已拉黑时的静默恢复好友关系
    - 入群申请通过前复核群状态和申请人成员状态
    - 群消息撤回保留定向可见范围
    - 过滤群历史消息和已读用户查询中的定向消息
    - 敏感词缓存刷新补充租户上下文
    - 补充 IM 测试表约束和好友申请回归用例
    YunaiV authored
     
    Browse Dir »




  • YunaiV authored
     
    Browse Dir »
  • - refactor: inviteCall 拆成 createCall(创建新通话)/ inviteCall(追加邀请);VO `ImRtcCallInviteReqVO`(统一版)→ git mv 为 `ImRtcCallCreateReqVO`;恢复 + git mv `ImRtcCallInviteMoreReqVO` → `ImRtcCallInviteReqVO`(room + inviteeIds);Controller 端点 `/invite` → `/create` + 新 `/invite`;Service 内部拆 createGroupCall / createPrivateCall / createCall0
    - refactor: VO 字段 `scene` → `conversationType`(CreateReqVO / RespVO 同步),与 ImConversationTypeEnum 对齐;`peerUserId` 融合进 `inviteeIds`,私聊必传 1 个对端从集合派生
    - feat: 群通话关房语义升级;shouldCloseGroupRoom 改 `(JOINED==0) || (JOINED==1 && INVITING==0)`,1 人独守 + 无后续即关;endSessionIfTerminal 按 call.status 自动推 reason(CREATED→CANCEL 没真接通过 / RUNNING→HANGUP);rejectCall 群分支末尾触发关房判定,全员拒接自动收敛
    - chore: 错误码新增 RTC_GROUP_INVITEE_REQUIRED;validateInviteScene → validateCreateCall;Controller `getLoginUserId` 抽局部变量;resolveDisplayName 抽私有 helper 复用 displayName 派生
    - fix: pushCallInviteNotification 加 NPE 防御(getUserMap 缺键时降级为 userId 字符串);pushCallEndNotification 私聊 receiverId 去掉错误的 senderId 兜底
    - chore: handleLiveKitEvent 改回传统 switch 兼容 JDK8;其它若干 Javadoc 补齐 / 注释精简 / typo 修复
    YunaiV authored
     
    Browse Dir »
  • ✨ feat(im): RTC 通话逻辑收口(displayName / inviteeIds 校验 / 配置化阈值)
    
    - fix: pushCallInviteNotification 给被邀请人签 token 时 displayName 改用 invitee 自己的昵称(原来错用 inviter)
    - feat: 群通话发起 / 追加邀请均强制 inviteeIds 非空,对齐微信交互;超量改抛 RTC_GROUP_INVITEE_OVER_LIMIT,不再静默截断
    - refactor: ImGroupMemberService 抽 validateMembersInGroup(groupId, ids) 批量校验,inviteMoreCall / resolveInvitees 复用
    - refactor: 僵尸通话清理阈值从 ImRtcCallCleanupJob 静态常量挪到 ImProperties.rtc.cleanupZombieThresholdMinutes
    - perf: createCall / inviteMoreCall 推 INVITE 前一次 getUserMap 批量拉用户,省 N 次 RPC
    - refactor: inviteMoreCall 参与者构造改 CollectionUtils.convertList;trim 多余注释
    - docs: 补齐 RTC service / controller / job / LiveKitClient 私有方法的 @param / @return
    - chore: 错误码新增 RTC_GROUP_INVITEE_REQUIRED / RTC_GROUP_INVITEE_OVER_LIMIT
    ```
    YunaiV authored
     
    Browse Dir »
  • YunaiV authored
     
    Browse Dir »


  • 优化好友状态的获取和验证逻辑,将 ImFriendStateEnum 的使用改为整型状态值,简化了好友关系的校验过程。新增 validateFriend 方法,统一处理好友和黑名单的校验,提升代码可读性和维护性。
    YunaiV authored
     
    Browse Dir »