From 91dca6fc8eb712926af432601638a06abf02bbdb Mon Sep 17 00:00:00 2001 From: zhx Date: Tue, 21 Jul 2026 13:32:28 +0800 Subject: [PATCH] fix(room): deliver kick notice to removed user --- .../internal/modules/roomnotice/mysql_integration_test.go | 2 +- .../notice-service/internal/modules/roomnotice/service.go | 4 +++- .../internal/modules/roomnotice/service_test.go | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/notice-service/internal/modules/roomnotice/mysql_integration_test.go b/services/notice-service/internal/modules/roomnotice/mysql_integration_test.go index c8d28fef..4b8f36d8 100644 --- a/services/notice-service/internal/modules/roomnotice/mysql_integration_test.go +++ b/services/notice-service/internal/modules/roomnotice/mysql_integration_test.go @@ -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]) } diff --git a/services/notice-service/internal/modules/roomnotice/service.go b/services/notice-service/internal/modules/roomnotice/service.go index 3ae5da5e..a5d65e13 100644 --- a/services/notice-service/internal/modules/roomnotice/service.go +++ b/services/notice-service/internal/modules/roomnotice/service.go @@ -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() diff --git a/services/notice-service/internal/modules/roomnotice/service_test.go b/services/notice-service/internal/modules/roomnotice/service_test.go index 4fcf3ff4..adcbe622 100644 --- a/services/notice-service/internal/modules/roomnotice/service_test.go +++ b/services/notice-service/internal/modules/roomnotice/service_test.go @@ -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" {