diff --git a/internal/msgtransfer/online_history_msg_handler.go b/internal/msgtransfer/online_history_msg_handler.go index f3585a66d..9d2a5bbd0 100644 --- a/internal/msgtransfer/online_history_msg_handler.go +++ b/internal/msgtransfer/online_history_msg_handler.go @@ -116,12 +116,14 @@ func (och *OnlineHistoryRedisConsumerHandler) getPushStorageMsgList(conversation } for _, v := range totalMsgs { options := utils.Options(v.message.Options) - if options.IsNotification() { + if !options.IsNotNotification() { // 原通知 notificationMsg := proto.Clone(v.message).(*sdkws.MsgData) if options.IsSendMsg() { // 消息 - v.message.Options = utils.WithOptions(utils.Options(v.message.Options), utils.WithNotification(false), utils.WithSendMsg(false)) + if v.message.Options != nil { + v.message.Options = utils.WithOptions(utils.Options(v.message.Options), utils.WithNotification(false), utils.WithSendMsg(false)) + } storageMsgList = append(storageMsgList, v.message) } if isStorage(notificationMsg) { diff --git a/pkg/utils/options.go b/pkg/utils/options.go index be889e09e..49a4325d1 100644 --- a/pkg/utils/options.go +++ b/pkg/utils/options.go @@ -112,7 +112,7 @@ func (o Options) Is(notification string) bool { return false } -func (o Options) IsNotification() bool { +func (o Options) IsNotNotification() bool { return o.Is(constant.IsNotification) } diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 486e29297..fe4f169d5 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -176,22 +176,22 @@ func GetConversationIDByMsg(msg *sdkws.MsgData) string { case constant.SingleChatType: l := []string{msg.SendID, msg.RecvID} sort.Strings(l) - if options.IsNotification() { + if !options.IsNotNotification() { return "n_" + strings.Join(l, "_") } return "si_" + strings.Join(l, "_") // single chat case constant.GroupChatType: - if options.IsNotification() { + if !options.IsNotNotification() { return "n_" + msg.GroupID // group chat } return "g_" + msg.GroupID // group chat case constant.SuperGroupChatType: - if options.IsNotification() { + if !options.IsNotNotification() { return "n_" + msg.GroupID // super group chat } return "sg_" + msg.GroupID // super group chat case constant.NotificationChatType: - if options.IsNotification() { + if !options.IsNotNotification() { return "n_" + msg.SendID + "_" + msg.RecvID // super group chat } return "sn_" + msg.SendID + "_" + msg.RecvID // server notification chat