From 10c0f3075a7979592b3a75abd1af9fe38ca7dca6 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 5 Aug 2022 12:08:00 +0800 Subject: [PATCH] unread bug fix --- internal/rpc/conversation/conversaion.go | 15 +++++++++++---- internal/rpc/msg/conversation_notification.go | 12 ++++++++++++ internal/rpc/msg/send_msg.go | 2 +- pkg/common/constant/constant.go | 1 + pkg/proto/sdk_ws/ws.proto | 1 + 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/internal/rpc/conversation/conversaion.go b/internal/rpc/conversation/conversaion.go index 77fc58e63..2828a9df5 100644 --- a/internal/rpc/conversation/conversaion.go +++ b/internal/rpc/conversation/conversaion.go @@ -30,6 +30,7 @@ func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbCo log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbConversation.ModifyConversationFieldResp{} var err error + isSyncConversation := true if req.Conversation.ConversationType == constant.GroupChatType { groupInfo, err := imdb.GetGroupInfoByGroupID(req.Conversation.GroupID) if err != nil { @@ -71,8 +72,7 @@ func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbCo case constant.FieldAttachedInfo: err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"attached_info": conversation.AttachedInfo}) case constant.FieldUnread: - err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"unread_count": conversation.UnreadCount}) - + isSyncConversation = false } if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateColumnsConversations error", err.Error()) @@ -97,9 +97,16 @@ func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbCo return resp, nil } } else { - for _, v := range req.UserIDList { - chat.ConversationChangeNotification(req.OperationID, v) + if isSyncConversation { + for _, v := range req.UserIDList { + chat.ConversationChangeNotification(req.OperationID, v) + } + } else { + for _, v := range req.UserIDList { + chat.ConversationUnreadChangeNotification(req.OperationID, v, req.Conversation.ConversationID) + } } + } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return", resp.String()) resp.CommonResp = &pbConversation.CommonResp{} diff --git a/internal/rpc/msg/conversation_notification.go b/internal/rpc/msg/conversation_notification.go index b43db7959..c79f28a65 100644 --- a/internal/rpc/msg/conversation_notification.go +++ b/internal/rpc/msg/conversation_notification.go @@ -68,3 +68,15 @@ func ConversationChangeNotification(operationID, userID string) { tips.DefaultTips = config.Config.Notification.ConversationOptUpdate.DefaultTips.Tips SetConversationNotification(operationID, userID, userID, constant.ConversationOptChangeNotification, ConversationChangedTips, tips) } + +//会话未读数同步 +func ConversationUnreadChangeNotification(operationID, userID, conversationID string) { + log.NewInfo(operationID, utils.GetSelfFuncName()) + ConversationChangedTips := &open_im_sdk.ConversationUpdateTips{ + UserID: userID, + ConversationIDList: []string{conversationID}, + } + var tips open_im_sdk.TipsComm + tips.DefaultTips = config.Config.Notification.ConversationOptUpdate.DefaultTips.Tips + SetConversationNotification(operationID, userID, userID, constant.ConversationUnreadNotification, ConversationChangedTips, tips) +} diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index c4e57293c..11a646b8b 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -831,7 +831,7 @@ func Notification(n *NotificationMsg) { unReadCount = config.Config.Notification.ConversationSetPrivate.Conversation.UnreadCount case constant.DeleteMessageNotification: reliabilityLevel = constant.ReliableNotificationNoMsg - case constant.SuperGroupUpdateNotification: + case constant.SuperGroupUpdateNotification, constant.ConversationUnreadNotification: reliabilityLevel = constant.UnreliableNotification } switch reliabilityLevel { diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index a542560da..2ba3d1774 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -103,6 +103,7 @@ const ( SuperGroupNotificationEnd = 1699 ConversationPrivateChatNotification = 1701 + ConversationUnreadNotification = 1702 OrganizationChangedNotification = 1801 diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 225a93c39..7c0a6813a 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -487,6 +487,7 @@ message UserInfoUpdatedTips{ //////////////////////conversation///////////////////// message ConversationUpdateTips{ string UserID = 1; + repeated string conversationIDList = 2; } message ConversationSetPrivateTips{