From 1a2550a089e387d1f1c5f8605668f69a99ae646c Mon Sep 17 00:00:00 2001 From: mlogclub Date: Fri, 8 May 2026 21:54:08 +0800 Subject: [PATCH] refactor: streamline conversation ID usage in message service methods --- .../conversation_event_log_service.go | 3 +-- internal/services/message_service.go | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/internal/services/conversation_event_log_service.go b/internal/services/conversation_event_log_service.go index ef74c78..6d9abae 100644 --- a/internal/services/conversation_event_log_service.go +++ b/internal/services/conversation_event_log_service.go @@ -68,8 +68,7 @@ func (s *conversationEventLogService) Delete(id int64) { repositories.ConversationEventLogRepository.Delete(sqls.DB(), id) } -func (s *conversationEventLogService) CreateEvent(ctx *sqls.TxContext, conversationID int64, eventType enums.IMEventType, - operatorType enums.IMSenderType, operatorID int64, content, payload string) error { +func (s *conversationEventLogService) CreateEvent(ctx *sqls.TxContext, conversationID int64, eventType enums.IMEventType, operatorType enums.IMSenderType, operatorID int64, content, payload string) error { return repositories.ConversationEventLogRepository.Create(ctx.Tx, &models.ConversationEventLog{ ConversationID: conversationID, EventType: eventType, diff --git a/internal/services/message_service.go b/internal/services/message_service.go index 73600d3..6106175 100644 --- a/internal/services/message_service.go +++ b/internal/services/message_service.go @@ -251,7 +251,7 @@ func (s *messageService) SendAIServiceNotice(conversationID int64, aiAgentID int if conversation.Status == enums.IMConversationStatusClosed { return nil, errorsx.InvalidParam("会话已关闭") } - return s.sendValidatedMessage(conversation, enums.IMSenderTypeAI, aiAgentID, "", enums.IMMessageTypeText, content, "", &dto.AuthPrincipal{ + return s.sendValidatedMessage(conversation, enums.IMSenderTypeAI, aiAgentID, strs.UUID(), enums.IMMessageTypeText, content, "", &dto.AuthPrincipal{ UserID: 0, Username: "system", Nickname: "system", @@ -278,6 +278,7 @@ func (s *messageService) CreateAIWelcomeMessageTx(ctx *sqls.TxContext, conversat } message := &models.Message{ ConversationID: conversation.ID, + ClientMsgID: strs.UUID(), SenderType: enums.IMSenderTypeAI, SenderID: aiAgent.ID, MessageType: enums.IMMessageTypeText, @@ -377,10 +378,10 @@ func (s *messageService) sendMessage(conversationID int64, senderType enums.IMSe func (s *messageService) sendValidatedMessage(conversation *models.Conversation, senderType enums.IMSenderType, reqSenderID int64, clientMsgID string, messageType enums.IMMessageType, content, payload string, operator *dto.AuthPrincipal, external *openidentity.ExternalUser) (*models.Message, error) { - conversationID := conversation.ID + var err error var summary string - content, payload, summary, err = s.normalizeMessageContent(conversationID, messageType, content, payload) + content, payload, summary, err = s.normalizeMessageContent(conversation.ID, messageType, content, payload) if err != nil { return nil, err } @@ -390,7 +391,7 @@ func (s *messageService) sendValidatedMessage(conversation *models.Conversation, // 防抖,消息存在就不再发送了 if strs.IsNotBlank(clientMsgID) { - if existing := repositories.MessageRepository.GetByClientMsgID(sqls.DB(), conversationID, clientMsgID); existing != nil { + if existing := repositories.MessageRepository.GetByClientMsgID(sqls.DB(), conversation.ID, clientMsgID); existing != nil { return existing, nil } } @@ -399,7 +400,7 @@ func (s *messageService) sendValidatedMessage(conversation *models.Conversation, now = time.Now() auditUserID = int64(0) auditUserName = "" - nextSeq = repositories.MessageRepository.NextSeqNo(sqls.DB(), conversationID) + nextSeq = repositories.MessageRepository.NextSeqNo(sqls.DB(), conversation.ID) ) if operator != nil { auditUserID = operator.UserID @@ -410,7 +411,7 @@ func (s *messageService) sendValidatedMessage(conversation *models.Conversation, auditUserName = displayExternalName(external) } message := &models.Message{ - ConversationID: conversationID, + ConversationID: conversation.ID, ClientMsgID: clientMsgID, SenderType: senderType, SenderID: reqSenderID, @@ -462,12 +463,12 @@ func (s *messageService) sendValidatedMessage(conversation *models.Conversation, return err } } - agentReadState, customerReadState := ConversationReadStateService.getConversationReadStates(ctx.Tx, conversationID) - agentUnreadCount, err := ConversationReadStateService.CountUnreadMessages(ctx, conversationID, s.readSeqNo(agentReadState), enums.IMSenderTypeCustomer) + agentReadState, customerReadState := ConversationReadStateService.getConversationReadStates(ctx.Tx, conversation.ID) + agentUnreadCount, err := ConversationReadStateService.CountUnreadMessages(ctx, conversation.ID, s.readSeqNo(agentReadState), enums.IMSenderTypeCustomer) if err != nil { return err } - customerUnreadCount, err := ConversationReadStateService.CountUnreadMessages(ctx, conversationID, s.readSeqNo(customerReadState), enums.IMSenderTypeAgent, enums.IMSenderTypeAI) + customerUnreadCount, err := ConversationReadStateService.CountUnreadMessages(ctx, conversation.ID, s.readSeqNo(customerReadState), enums.IMSenderTypeAgent, enums.IMSenderTypeAI) if err != nil { return err } @@ -482,7 +483,7 @@ func (s *messageService) sendValidatedMessage(conversation *models.Conversation, updateUserID = 0 updateUserName = displayExternalName(external) } - if err := repositories.ConversationRepository.Updates(ctx.Tx, conversationID, map[string]any{ + if err := repositories.ConversationRepository.Updates(ctx.Tx, conversation.ID, map[string]any{ "last_message_id": message.ID, "last_message_at": now, "last_active_at": now, @@ -496,7 +497,7 @@ func (s *messageService) sendValidatedMessage(conversation *models.Conversation, return err } if err := ConversationEventLogService.CreateEvent(ctx, - conversationID, + conversation.ID, enums.IMEventTypeMessageSend, senderType, func() int64 {