diff --git a/pkg/common/db/cache/msg.go b/pkg/common/db/cache/msg.go index 9febd2913..4438f2ba0 100644 --- a/pkg/common/db/cache/msg.go +++ b/pkg/common/db/cache/msg.go @@ -254,11 +254,11 @@ func (c *msgCache) allMessageCacheKey(conversationID string) string { return messageCache + conversationID + "_*" } -func (c *msgCache) GetMessagesBySeq(ctx context.Context, userID string, seqs []int64) (seqMsgs []*sdkws.MsgData, failedSeqs []int64, err error) { +func (c *msgCache) GetMessagesBySeq(ctx context.Context, conversationID string, seqs []int64) (seqMsgs []*sdkws.MsgData, failedSeqs []int64, err error) { pipe := c.rdb.Pipeline() for _, v := range seqs { //MESSAGE_CACHE:169.254.225.224_reliability1653387820_0_1 - key := c.getMessageCacheKey(userID, v) + key := c.getMessageCacheKey(conversationID, v) if err := pipe.Get(ctx, key).Err(); err != nil && err != redis.Nil { return nil, nil, err } @@ -273,7 +273,11 @@ func (c *msgCache) GetMessagesBySeq(ctx context.Context, userID string, seqs []i if err != nil { failedSeqs = append(failedSeqs, seqs[i]) } else { - seqMsgs = append(seqMsgs, &msg) + if msg.Status != constant.MsgDeleted { + seqMsgs = append(seqMsgs, &msg) + } else { + failedSeqs = append(failedSeqs, seqs[i]) + } } } } diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 81f7b27e2..46db24b7a 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -171,16 +171,29 @@ func GetHashCode(s string) uint32 { } func GetConversationIDByMsg(msg *sdkws.MsgData) string { + options := Options(msg.Options) switch msg.SessionType { case constant.SingleChatType: l := []string{msg.SendID, msg.RecvID} sort.Strings(l) + if options.IsNotification() { + return "n_" + strings.Join(l, "_") + } return "si_" + strings.Join(l, "_") // single chat case constant.GroupChatType: + if options.IsNotification() { + return "n_" + msg.GroupID // group chat + } return "g_" + msg.GroupID // group chat case constant.SuperGroupChatType: + if options.IsNotification() { + return "n_" + msg.GroupID // super group chat + } return "sg_" + msg.GroupID // super group chat case constant.NotificationChatType: + if options.IsNotification() { + return "n_" + msg.SendID + "_" + msg.RecvID // super group chat + } return "sn_" + msg.SendID + "_" + msg.RecvID // server notification chat } return ""