From 3a71cb1372613d94683482eb6a646966704fd3e8 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 11 Sep 2023 18:55:26 +0800 Subject: [PATCH] conversation --- go.mod | 2 +- go.sum | 4 ++-- internal/api/conversation.go | 4 ++-- internal/api/route.go | 2 +- internal/push/push_to_client.go | 16 ++++------------ internal/rpc/conversation/conversaion.go | 22 ++++++++-------------- 6 files changed, 18 insertions(+), 32 deletions(-) diff --git a/go.mod b/go.mod index 1e5256b50..7e3af7de2 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require github.com/google/uuid v1.3.1 require ( github.com/IBM/sarama v1.41.1 - github.com/OpenIMSDK/protocol v0.0.20 + github.com/OpenIMSDK/protocol v0.0.21 github.com/OpenIMSDK/tools v0.0.14 github.com/aliyun/aliyun-oss-go-sdk v2.2.9+incompatible github.com/go-redis/redis v6.15.9+incompatible diff --git a/go.sum b/go.sum index fe4a784d8..5b180156e 100644 --- a/go.sum +++ b/go.sum @@ -19,8 +19,8 @@ firebase.google.com/go v3.13.0+incompatible/go.mod h1:xlah6XbEyW6tbfSklcfe5FHJIw github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/IBM/sarama v1.41.1 h1:B4/TdHce/8Ipza+qrLIeNJ9D1AOxZVp/3uDv6H/dp2M= github.com/IBM/sarama v1.41.1/go.mod h1:JFCPURVskaipJdKRFkiE/OZqQHw7jqliaJmRwXCmSSw= -github.com/OpenIMSDK/protocol v0.0.20 h1:x6tAbBTBiaFdvT98nM6IRnEIHsVr0Weh/fAaTLBrN64= -github.com/OpenIMSDK/protocol v0.0.20/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= +github.com/OpenIMSDK/protocol v0.0.21 h1:5H6H+hJ9d/VgRqttvxD/zfK9Asd+4M8Eknk5swSbUVY= +github.com/OpenIMSDK/protocol v0.0.21/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= github.com/OpenIMSDK/tools v0.0.14 h1:WLof/+WxyPyRST+QkoTKubYCiV73uCLiL8pgnpH/yKQ= github.com/OpenIMSDK/tools v0.0.14/go.mod h1:eg+q4A34Qmu73xkY0mt37FHGMCMfC6CtmOnm0kFEGFI= github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= diff --git a/internal/api/conversation.go b/internal/api/conversation.go index adeded916..e422de677 100644 --- a/internal/api/conversation.go +++ b/internal/api/conversation.go @@ -45,6 +45,6 @@ func (o *ConversationApi) SetConversations(c *gin.Context) { a2r.Call(conversation.ConversationClient.SetConversations, o.Client, c) } -func (o *ConversationApi) GetConversationNotOfflinePushUserIDs(c *gin.Context) { - a2r.Call(conversation.ConversationClient.GetConversationNotOfflinePushUserIDs, o.Client, c) +func (o *ConversationApi) GetConversationOfflinePushUserIDs(c *gin.Context) { + a2r.Call(conversation.ConversationClient.GetConversationOfflinePushUserIDs, o.Client, c) } diff --git a/internal/api/route.go b/internal/api/route.go index 954e26d69..221e180a1 100644 --- a/internal/api/route.go +++ b/internal/api/route.go @@ -198,7 +198,7 @@ func NewGinRouter(discov discoveryregistry.SvcDiscoveryRegistry, rdb redis.Unive conversationGroup.POST("/get_conversation", c.GetConversation) conversationGroup.POST("/get_conversations", c.GetConversations) conversationGroup.POST("/set_conversations", c.SetConversations) - conversationGroup.POST("/get_conversation_not_offline_push_user_ids", c.GetConversationNotOfflinePushUserIDs) + conversationGroup.POST("/get_conversation_offline_push_user_ids", c.GetConversationOfflinePushUserIDs) } statisticsGroup := r.Group("/statistics", ParseToken) diff --git a/internal/push/push_to_client.go b/internal/push/push_to_client.go index 7ebf47db9..1ea489b4e 100644 --- a/internal/push/push_to_client.go +++ b/internal/push/push_to_client.go @@ -235,25 +235,17 @@ func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws if len(offlinePushUserIDs) > 0 { needOfflinePushUserIDs = offlinePushUserIDs } - resp, err := p.conversationRpcClient.Client.GetConversationNotOfflinePushUserIDs(ctx, &conversation.GetConversationNotOfflinePushUserIDsReq{ConversationID: utils.GenGroupConversationID(groupID), UserIDs: needOfflinePushUserIDs}) + resp, err := p.conversationRpcClient.Client.GetConversationOfflinePushUserIDs(ctx, &conversation.GetConversationOfflinePushUserIDsReq{ConversationID: utils.GenGroupConversationID(groupID), UserIDs: needOfflinePushUserIDs}) if err != nil { return err } - userIDSet := make(map[string]struct{}) - for _, userID := range needOfflinePushUserIDs { - userIDSet[userID] = struct{}{} - } - for _, userID := range resp.UserIDs { - delete(userIDSet, userID) - } - if len(userIDSet) > 0 { - userIDs := utils.Keys(userIDSet) - err = p.offlinePushMsg(ctx, groupID, msg, userIDs) + if len(resp.UserIDs) > 0 { + err = p.offlinePushMsg(ctx, groupID, msg, resp.UserIDs) if err != nil { log.ZError(ctx, "offlinePushMsg failed", err, "groupID", groupID, "msg", msg) return err } - if _, err := p.GetConnsAndOnlinePush(ctx, msg, utils.IntersectString(userIDs, WebAndPcBackgroundUserIDs)); err != nil { + if _, err := p.GetConnsAndOnlinePush(ctx, msg, utils.IntersectString(resp.UserIDs, WebAndPcBackgroundUserIDs)); err != nil { log.ZError(ctx, "offlinePushMsg failed", err, "groupID", groupID, "msg", msg, "userIDs", utils.IntersectString(needOfflinePushUserIDs, WebAndPcBackgroundUserIDs)) return err } diff --git a/internal/rpc/conversation/conversaion.go b/internal/rpc/conversation/conversaion.go index 956974fca..011d5fc33 100644 --- a/internal/rpc/conversation/conversaion.go +++ b/internal/rpc/conversation/conversaion.go @@ -301,32 +301,26 @@ func (c *conversationServer) GetConversationsByConversationID( return &pbconversation.GetConversationsByConversationIDResp{Conversations: convert.ConversationsDB2Pb(conversations)}, nil } -func (c *conversationServer) GetConversationNotOfflinePushUserIDs( - ctx context.Context, - req *pbconversation.GetConversationNotOfflinePushUserIDsReq, -) (*pbconversation.GetConversationNotOfflinePushUserIDsResp, error) { +func (c *conversationServer) GetConversationOfflinePushUserIDs(ctx context.Context, req *pbconversation.GetConversationOfflinePushUserIDsReq) (*pbconversation.GetConversationOfflinePushUserIDsResp, error) { if req.ConversationID == "" { return nil, errs.ErrArgs.Wrap("conversationID is empty") } + if len(req.UserIDs) == 0 { + return &pbconversation.GetConversationOfflinePushUserIDsResp{}, nil + } userIDs, err := c.conversationDatabase.GetConversationNotReceiveMessageUserIDs(ctx, req.ConversationID) if err != nil { return nil, err } - if len(req.UserIDs) == 0 { - return &pbconversation.GetConversationNotOfflinePushUserIDsResp{UserIDs: userIDs}, nil - } if len(userIDs) == 0 { - return &pbconversation.GetConversationNotOfflinePushUserIDsResp{}, nil + return &pbconversation.GetConversationOfflinePushUserIDsResp{UserIDs: req.UserIDs}, nil } userIDSet := make(map[string]struct{}) - for _, userID := range userIDs { + for _, userID := range req.UserIDs { userIDSet[userID] = struct{}{} } - resp := &pbconversation.GetConversationNotOfflinePushUserIDsResp{UserIDs: make([]string, 0, len(req.UserIDs))} for _, userID := range req.UserIDs { - if _, ok := userIDSet[userID]; !ok { - resp.UserIDs = append(resp.UserIDs, userID) - } + delete(userIDSet, userID) } - return resp, nil + return &pbconversation.GetConversationOfflinePushUserIDsResp{UserIDs: utils.Keys(userIDSet)}, nil }