From 7f8d7b33abc7dc522348a996f5a33e6ea6238746 Mon Sep 17 00:00:00 2001 From: pluto <2631223275@qq.com> Date: Fri, 4 Aug 2023 10:59:45 +0800 Subject: [PATCH] Modification only does not delete all subscribed documents when unsubscribing --- go.mod | 2 +- go.sum | 1 + internal/rpc/user/user.go | 6 +----- pkg/common/db/unrelation/user.go | 13 ++++++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index cbaca83b8..d4669a408 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( require github.com/google/uuid v1.3.0 require ( - github.com/OpenIMSDK/protocol v0.0.3 + github.com/OpenIMSDK/protocol v0.0.4 github.com/OpenIMSDK/tools v0.0.13 github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible github.com/go-redis/redis v6.15.9+incompatible diff --git a/go.sum b/go.sum index 0e6352156..288181a8e 100644 --- a/go.sum +++ b/go.sum @@ -19,6 +19,7 @@ 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/OpenIMSDK/protocol v0.0.3 h1:CFQtmnyW+1dYKVFaVaHcJ6oYuMiMdNfU2gC1xz3K/9I= github.com/OpenIMSDK/protocol v0.0.3/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= +github.com/OpenIMSDK/protocol v0.0.4/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y= github.com/OpenIMSDK/tools v0.0.13 h1:rcw4HS8S2DPZR9UOBxD8/ol9UBMzXBypzOVEytDRIMo= github.com/OpenIMSDK/tools v0.0.13/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/rpc/user/user.go b/internal/rpc/user/user.go index b1caa548e..573a64547 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -257,11 +257,7 @@ func (s *userServer) SubscribeOrCancelUsersStatus(ctx context.Context, req *pbus if err != nil { return nil, err } - var statusMap map[string]int32 - for _, value := range status { - statusMap[value.UserID] = value.Status - } - return &pbuser.SubscribeOrCancelUsersStatusResp{Status: statusMap}, nil + return &pbuser.SubscribeOrCancelUsersStatusResp{StatusList: status}, nil } else if req.Genre == constant.Unsubscribe { err = s.UserDatabase.UnsubscribeUsersStatus(ctx, req.UserID, req.UserIDs) if err != nil { diff --git a/pkg/common/db/unrelation/user.go b/pkg/common/db/unrelation/user.go index f45b2ce66..975232d78 100644 --- a/pkg/common/db/unrelation/user.go +++ b/pkg/common/db/unrelation/user.go @@ -141,15 +141,18 @@ func (u *UserMongoDriver) UnsubscriptionList(ctx context.Context, userID string, // RemoveSubscribedListFromUser Among the unsubscribed users, delete the user from the subscribed list. func (u *UserMongoDriver) RemoveSubscribedListFromUser(ctx context.Context, userID string, userIDList []string) error { + var err error var newUserIDList []string for _, value := range userIDList { newUserIDList = append(newUserIDList, SubscribedPrefix+value) } - _, err := u.userCollection.UpdateOne( - ctx, - bson.M{"user_id": bson.M{"$in": newUserIDList}}, - bson.M{"$pull": bson.M{"user_id_list": userID}}, - ) + for _, userIDTemp := range newUserIDList { + _, err = u.userCollection.UpdateOne( + ctx, + bson.M{"user_id": userIDTemp}, + bson.M{"$pull": bson.M{"user_id_list": userID}}, + ) + } return utils.Wrap(err, "") }