fix(room): deliver kick notice to removed user

This commit is contained in:
zhx 2026-07-21 13:32:28 +08:00
parent cf431eb8d7
commit 91dca6fc8e
3 changed files with 5 additions and 3 deletions

View File

@ -110,7 +110,7 @@ func TestMySQLRepositoryProcessesRealRoomKickOutbox(t *testing.T) {
if processed != 1 || len(publisher.messages) != 1 {
t.Fatalf("unexpected process result: processed=%d messages=%d", processed, len(publisher.messages))
}
if publisher.messages[0].ToAccount != "990000002" || publisher.messages[0].Ext != "room_notice" {
if publisher.messages[0].ToAccount != "990000002" || publisher.messages[0].Ext != "room_system_message" {
t.Fatalf("unexpected private message: %+v", publisher.messages[0])
}

View File

@ -98,7 +98,9 @@ func (s *Service) publishRoomKickEvent(ctx context.Context, event RoomKickEvent,
ToAccount: tencentim.FormatUserID(event.TargetUserID),
EventID: event.EventID,
Desc: "room_user_kicked",
Ext: "room_notice",
// 被踢用户可能已先被移出腾讯 IM 房间群,因此必须用 C2C 兜底Ext 沿用
// Flutter 已消费的房间系统消息协议,保证当前线上客户端不会把私有通知过滤掉。
Ext: "room_system_message",
PayloadJSON: payload,
})
nowMs := time.Now().UnixMilli()

View File

@ -47,7 +47,7 @@ func TestProcessRoomKickNoticesPublishesPrivateIM(t *testing.T) {
t.Fatalf("published messages=%d, want 1", len(publisher.messages))
}
message := publisher.messages[0]
if message.ToAccount != "20001" || message.EventID != "evt-room-kick-1" || message.Ext != "room_notice" || message.Desc != "room_user_kicked" {
if message.ToAccount != "20001" || message.EventID != "evt-room-kick-1" || message.Ext != "room_system_message" || message.Desc != "room_user_kicked" {
t.Fatalf("unexpected message: %+v", message)
}
if repo.deliveredEventID != "evt-room-kick-1" {