pull/756/head
pluto 2 years ago
parent 941ccd538a
commit 33fb4dfd8f

@ -254,6 +254,7 @@ func (s *userServer) SubscribeOrCancelUsersStatus(ctx context.Context, req *pbus
err = s.UserDatabase.SubscribeUsersStatus(ctx, req.UserID, req.UserIDs) err = s.UserDatabase.SubscribeUsersStatus(ctx, req.UserID, req.UserIDs)
var status []*pbuser.OnlineStatus var status []*pbuser.OnlineStatus
status, err = s.UserDatabase.GetUserStatus(ctx, req.UserIDs) status, err = s.UserDatabase.GetUserStatus(ctx, req.UserIDs)
log.ZDebug(ctx, "========== SubscribeOrCancelUsersStatus =======", err)
if err != nil { if err != nil {
return nil, err return nil, err
} }

@ -17,6 +17,7 @@ package unrelation
import ( import (
"context" "context"
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/unrelation" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/unrelation"
"github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/utils" "github.com/OpenIMSDK/tools/utils"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
@ -54,7 +55,7 @@ func (u *UserMongoDriver) AddSubscriptionList(ctx context.Context, userID string
// perform aggregate operations // perform aggregate operations
cursor, err := u.userCollection.Aggregate(ctx, pipeline) cursor, err := u.userCollection.Aggregate(ctx, pipeline)
if err != nil { if err != nil {
return err return errs.Wrap(err)
} }
defer cursor.Close(ctx) defer cursor.Close(ctx)
var cnt struct { var cnt struct {
@ -64,7 +65,7 @@ func (u *UserMongoDriver) AddSubscriptionList(ctx context.Context, userID string
for cursor.Next(ctx) { for cursor.Next(ctx) {
err := cursor.Decode(&cnt) err := cursor.Decode(&cnt)
if err != nil { if err != nil {
return err return errs.Wrap(err)
} }
} }
var newUserIDList []string var newUserIDList []string
@ -106,7 +107,7 @@ func (u *UserMongoDriver) AddSubscriptionList(ctx context.Context, userID string
opts, opts,
) )
if err != nil { if err != nil {
return err return errs.Wrap(err)
} }
for _, user := range userIDList { for _, user := range userIDList {
_, err = u.userCollection.UpdateOne( _, err = u.userCollection.UpdateOne(
@ -130,11 +131,11 @@ func (u *UserMongoDriver) UnsubscriptionList(ctx context.Context, userID string,
bson.M{"$pull": bson.M{"user_id_list": bson.M{"$in": userIDList}}}, bson.M{"$pull": bson.M{"user_id_list": bson.M{"$in": userIDList}}},
) )
if err != nil { if err != nil {
return err return errs.Wrap(err)
} }
err = u.RemoveSubscribedListFromUser(ctx, userID, userIDList) err = u.RemoveSubscribedListFromUser(ctx, userID, userIDList)
if err != nil { if err != nil {
return err return errs.Wrap(err)
} }
return nil return nil
} }
@ -142,18 +143,14 @@ func (u *UserMongoDriver) UnsubscriptionList(ctx context.Context, userID string,
// RemoveSubscribedListFromUser Among the unsubscribed users, delete the user from the subscribed list. // RemoveSubscribedListFromUser Among the unsubscribed users, delete the user from the subscribed list.
func (u *UserMongoDriver) RemoveSubscribedListFromUser(ctx context.Context, userID string, userIDList []string) error { func (u *UserMongoDriver) RemoveSubscribedListFromUser(ctx context.Context, userID string, userIDList []string) error {
var err error var err error
var newUserIDList []string for _, userIDTemp := range userIDList {
for _, value := range userIDList {
newUserIDList = append(newUserIDList, SubscribedPrefix+value)
}
for _, userIDTemp := range newUserIDList {
_, err = u.userCollection.UpdateOne( _, err = u.userCollection.UpdateOne(
ctx, ctx,
bson.M{"user_id": userIDTemp}, bson.M{"user_id": SubscribedPrefix + userIDTemp},
bson.M{"$pull": bson.M{"user_id_list": userID}}, bson.M{"$pull": bson.M{"user_id_list": userID}},
) )
} }
return utils.Wrap(err, "") return errs.Wrap(err)
} }
// GetAllSubscribeList Get all users subscribed by this user // GetAllSubscribeList Get all users subscribed by this user
@ -164,7 +161,7 @@ func (u *UserMongoDriver) GetAllSubscribeList(ctx context.Context, userID string
bson.M{"user_id": SubscriptionPrefix + userID}) bson.M{"user_id": SubscriptionPrefix + userID})
err = cursor.Decode(&user) err = cursor.Decode(&user)
if err != nil { if err != nil {
return nil, err return nil, errs.Wrap(err)
} }
return user.UserIDList, nil return user.UserIDList, nil
} }
@ -177,7 +174,7 @@ func (u *UserMongoDriver) GetSubscribedList(ctx context.Context, userID string)
bson.M{"user_id": SubscribedPrefix + userID}) bson.M{"user_id": SubscribedPrefix + userID})
err = cursor.Decode(&user) err = cursor.Decode(&user)
if err != nil { if err != nil {
return nil, err return nil, errs.Wrap(err)
} }
return user.UserIDList, nil return user.UserIDList, nil
} }

Loading…
Cancel
Save