diff --git a/config/notification.yaml b/config/notification.yaml index fc5d1c071..3550933d6 100644 --- a/config/notification.yaml +++ b/config/notification.yaml @@ -13,6 +13,7 @@ groupCreated: groupInfoSet: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -23,6 +24,7 @@ groupInfoSet: joinGroupApplication: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -32,6 +34,7 @@ joinGroupApplication: memberQuit: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -41,6 +44,7 @@ memberQuit: groupApplicationAccepted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -50,6 +54,7 @@ groupApplicationAccepted: groupApplicationRejected: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -60,6 +65,7 @@ groupApplicationRejected: groupOwnerTransferred: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -69,6 +75,7 @@ groupOwnerTransferred: memberKicked: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -78,6 +85,7 @@ memberKicked: memberInvited: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -87,6 +95,7 @@ memberInvited: memberEnter: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -96,6 +105,7 @@ memberEnter: groupDismissed: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -105,6 +115,7 @@ groupDismissed: groupMuted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -114,6 +125,7 @@ groupMuted: groupCancelMuted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -126,6 +138,7 @@ groupCancelMuted: groupMemberMuted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -135,6 +148,7 @@ groupMemberMuted: groupMemberCancelMuted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -144,6 +158,7 @@ groupMemberCancelMuted: groupMemberInfoSet: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -154,6 +169,7 @@ groupMemberInfoSet: #############################friend################################# friendApplicationAdded: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: false @@ -163,6 +179,7 @@ friendApplicationAdded: friendApplicationApproved: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -172,6 +189,7 @@ friendApplicationApproved: friendApplicationRejected: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -181,6 +199,7 @@ friendApplicationRejected: friendAdded: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -190,6 +209,7 @@ friendAdded: friendDeleted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -199,6 +219,7 @@ friendDeleted: friendRemarkSet: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -208,6 +229,7 @@ friendRemarkSet: blackAdded: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -217,6 +239,7 @@ blackAdded: blackDeleted: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -226,6 +249,7 @@ blackDeleted: friendInfoUpdated: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -236,6 +260,7 @@ friendInfoUpdated: #####################user######################### userInfoUpdated: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -246,6 +271,7 @@ userInfoUpdated: #####################conversation######################### conversationChanged: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true @@ -255,6 +281,7 @@ conversationChanged: conversationSetPrivate: isSendMsg: true + reliabilityLevel: 1 unreadCount: false offlinePush: enable: true diff --git a/internal/msgtransfer/online_history_msg_handler.go b/internal/msgtransfer/online_history_msg_handler.go index 38ad1f376..a8d7d8c52 100644 --- a/internal/msgtransfer/online_history_msg_handler.go +++ b/internal/msgtransfer/online_history_msg_handler.go @@ -90,11 +90,11 @@ func (och *OnlineHistoryRedisConsumerHandler) Run(channelID int) { ctxMsgList := msgChannelValue.ctxMsgList ctx := msgChannelValue.ctx log.ZDebug(ctx, "msg arrived channel", "channel id", channelID, "msgList length", len(ctxMsgList), "conversationID", msgChannelValue.conversationID) - storageMsgList, notStorageMsgList, storageNotificationList, notStorageNotificationList, modifyMsgList := och.getPushStorageMsgList(msgChannelValue.conversationID, ctxMsgList) + storageMsgList, notStorageMsgList, storageNotificationList, notStorageNotificationList, modifyMsgList := och.getPushStorageMsgList(ctxMsgList) log.ZDebug(ctx, "msg lens", "storageMsgList", len(storageMsgList), "notStorageMsgList", len(notStorageMsgList), "storageNotificationList", len(storageNotificationList), "notStorageNotificationList", len(notStorageNotificationList), "modifyMsgList", len(modifyMsgList)) - och.handleMsg(ctx, msgChannelValue.conversationID, storageMsgList, notStorageMsgList) - och.handleNotification(ctx, msgChannelValue.conversationID, storageNotificationList, notStorageNotificationList) + och.handleMsg(ctx, storageMsgList, notStorageMsgList) + och.handleNotification(ctx, storageNotificationList, notStorageNotificationList) if err := och.msgDatabase.MsgToModifyMQ(ctx, msgChannelValue.conversationID, modifyMsgList); err != nil { log.ZError(ctx, "msg to modify mq error", err, "conversationID", msgChannelValue.conversationID, "modifyMsgList", modifyMsgList) } @@ -104,7 +104,7 @@ func (och *OnlineHistoryRedisConsumerHandler) Run(channelID int) { } // 获取消息/通知 存储的消息列表, 不存储并且推送的消息列表, -func (och *OnlineHistoryRedisConsumerHandler) getPushStorageMsgList(conversationID string, totalMsgs []*ContextMsg) (storageMsgList, notStorageMsgList, storageNotificatoinList, notStorageNotificationList, modifyMsgList []*sdkws.MsgData) { +func (och *OnlineHistoryRedisConsumerHandler) getPushStorageMsgList(totalMsgs []*ContextMsg) (storageMsgList, notStorageMsgList, storageNotificatoinList, notStorageNotificationList, modifyMsgList []*sdkws.MsgData) { isStorage := func(msg *sdkws.MsgData) bool { options2 := utils.Options(msg.Options) if options2.IsHistory() { @@ -124,7 +124,7 @@ func (och *OnlineHistoryRedisConsumerHandler) getPushStorageMsgList(conversation if options.IsSendMsg() { // 消息 if v.message.Options != nil { - v.message.Options = utils.WithOptions(utils.Options(v.message.Options), utils.WithNotification(false), utils.WithSendMsg(false)) + v.message.Options = utils.WithOptions(utils.Options(v.message.Options), utils.WithNotNotification(true), utils.WithSendMsg(false)) } storageMsgList = append(storageMsgList, v.message) } @@ -147,7 +147,8 @@ func (och *OnlineHistoryRedisConsumerHandler) getPushStorageMsgList(conversation return } -func (och *OnlineHistoryRedisConsumerHandler) handleNotification(ctx context.Context, conversationID string, storageList, notStorageList []*sdkws.MsgData) { +func (och *OnlineHistoryRedisConsumerHandler) handleNotification(ctx context.Context, storageList, notStorageList []*sdkws.MsgData) { + conversationID := utils.GetConversationIDByMsg(storageList[0]) och.toPushTopic(ctx, conversationID, notStorageList) if len(storageList) > 0 { lastSeq, _, err := och.msgDatabase.BatchInsertChat2Cache(ctx, conversationID, storageList) @@ -155,7 +156,7 @@ func (och *OnlineHistoryRedisConsumerHandler) handleNotification(ctx context.Con log.ZError(ctx, "notification batch insert to redis error", err, "conversationID", conversationID, "storageList", storageList) return } - log.ZDebug(ctx, "success to next topic") + log.ZDebug(ctx, "success to next topic", "conversationID", conversationID) och.msgDatabase.MsgToMongoMQ(ctx, conversationID, storageList, lastSeq) och.toPushTopic(ctx, conversationID, storageList) } @@ -167,7 +168,8 @@ func (och *OnlineHistoryRedisConsumerHandler) toPushTopic(ctx context.Context, c } } -func (och *OnlineHistoryRedisConsumerHandler) handleMsg(ctx context.Context, conversationID string, storageList, notStorageList []*sdkws.MsgData) { +func (och *OnlineHistoryRedisConsumerHandler) handleMsg(ctx context.Context, storageList, notStorageList []*sdkws.MsgData) { + conversationID := utils.GetConversationIDByMsg(storageList[0]) och.toPushTopic(ctx, conversationID, notStorageList) if len(storageList) > 0 { lastSeq, isNewConversation, err := och.msgDatabase.BatchInsertChat2Cache(ctx, conversationID, storageList) diff --git a/internal/rpc/msg/send_pull.go b/internal/rpc/msg/send_pull.go index eba6edf20..6b1c7bfe9 100644 --- a/internal/rpc/msg/send_pull.go +++ b/internal/rpc/msg/send_pull.go @@ -62,10 +62,14 @@ func (m *msgServer) sendMsgSingleChat(ctx context.Context, req *msg.SendMsgReq) if err != nil { return nil, err } + + var isSend bool = true conversationID := utils.GetConversationIDByMsg(req.MsgData) - isSend, err := m.modifyMessageByUserMessageReceiveOpt(ctx, req.MsgData.RecvID, conversationID, constant.SingleChatType, req) - if err != nil { - return nil, err + if utils.MsgIsNotification(req.MsgData) { + isSend, err = m.modifyMessageByUserMessageReceiveOpt(ctx, req.MsgData.RecvID, conversationID, constant.SingleChatType, req) + if err != nil { + return nil, err + } } if isSend { err = m.MsgDatabase.MsgToMQ(ctx, conversationID, req.MsgData) diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 2b0843093..8dadbc0bb 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -357,7 +357,6 @@ type Notification struct { func GetOptionsByNotification(cfg NotificationConf) utils.Options { opts := utils.NewOptions() - opts = utils.WithOptions(opts, utils.WithNotification(true)) if cfg.UnreadCount { opts = utils.WithOptions(opts, utils.WithUnreadCount()) } diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 8a65ec01e..2d3550fc9 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -142,7 +142,7 @@ const ( IsSenderConversationUpdate = "senderConversationUpdate" IsSenderNotificationPush = "senderNotificationPush" IsReactionFromCache = "reactionFromCache" - IsNotification = "isNotification" + IsNotNotification = "isNotification" IsSendMsg = "isSendMsg" //GroupStatus diff --git a/pkg/utils/options.go b/pkg/utils/options.go index 49a4325d1..4381d8132 100644 --- a/pkg/utils/options.go +++ b/pkg/utils/options.go @@ -7,7 +7,7 @@ type OptionsOpt func(Options) func NewOptions(opts ...OptionsOpt) Options { options := make(map[string]bool, 11) - options[constant.IsNotification] = false + options[constant.IsNotNotification] = false options[constant.IsSendMsg] = false options[constant.IsHistory] = false options[constant.IsPersistent] = false @@ -32,9 +32,9 @@ func WithOptions(options Options, opts ...OptionsOpt) Options { return options } -func WithNotification(b bool) OptionsOpt { +func WithNotNotification(b bool) OptionsOpt { return func(options Options) { - options[constant.IsNotification] = b + options[constant.IsNotNotification] = b } } @@ -113,7 +113,7 @@ func (o Options) Is(notification string) bool { } func (o Options) IsNotNotification() bool { - return o.Is(constant.IsNotification) + return o.Is(constant.IsNotNotification) } func (o Options) IsSendMsg() bool { diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 8f8af972d..fe4d55159 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -170,6 +170,11 @@ func GetHashCode(s string) uint32 { return crc32.ChecksumIEEE([]byte(s)) } +func MsgIsNotification(msg *sdkws.MsgData) bool { + options := Options(msg.Options) + return !options.IsNotNotification() +} + func GetConversationIDByMsg(msg *sdkws.MsgData) string { options := Options(msg.Options) switch msg.SessionType {