diff --git a/pkg/common/db/newmgo/friend_request.go b/pkg/common/db/newmgo/friend_request.go index e7a45ecb4..3f8a2ce9a 100644 --- a/pkg/common/db/newmgo/friend_request.go +++ b/pkg/common/db/newmgo/friend_request.go @@ -52,7 +52,30 @@ func (f *FriendRequestMgo) UpdateByMap(ctx context.Context, formUserID, toUserID } func (f *FriendRequestMgo) Update(ctx context.Context, friendRequest *relation.FriendRequestModel) (err error) { - return mgotool.UpdateOne(ctx, f.coll, bson.M{"_id": friendRequest.ID}, bson.M{"$set": friendRequest}, true) + updater := bson.M{} + if friendRequest.HandleResult != 0 { + updater["handle_result"] = friendRequest.HandleResult + } + if friendRequest.ReqMsg != "" { + updater["req_msg"] = friendRequest.ReqMsg + } + if friendRequest.HandlerUserID != "" { + updater["handler_user_id"] = friendRequest.HandlerUserID + } + if friendRequest.HandleMsg != "" { + updater["handle_msg"] = friendRequest.HandleMsg + } + if !friendRequest.HandleTime.IsZero() { + updater["handle_time"] = friendRequest.HandleTime + } + if friendRequest.Ex != "" { + updater["ex"] = friendRequest.Ex + } + if len(updater) == 0 { + return nil + } + filter := bson.M{"from_user_id": friendRequest.FromUserID, "to_user_id": friendRequest.ToUserID} + return mgotool.UpdateOne(ctx, f.coll, filter, bson.M{"$set": updater}, true) } func (f *FriendRequestMgo) Find(ctx context.Context, fromUserID, toUserID string) (friendRequest *relation.FriendRequestModel, err error) { diff --git a/pkg/common/db/table/relation/friend_request.go b/pkg/common/db/table/relation/friend_request.go index 40e02c9e1..b082e63f1 100644 --- a/pkg/common/db/table/relation/friend_request.go +++ b/pkg/common/db/table/relation/friend_request.go @@ -18,21 +18,18 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/pkg/common/pagination" "time" - - "go.mongodb.org/mongo-driver/bson/primitive" ) type FriendRequestModel struct { - ID primitive.ObjectID `bson:"_id,omitempty"` - FromUserID string `bson:"from_user_id"` - ToUserID string `bson:"to_user_id"` - HandleResult int32 `bson:"handle_result"` - ReqMsg string `bson:"req_msg"` - CreateTime time.Time `bson:"create_time"` - HandlerUserID string `bson:"handler_user_id"` - HandleMsg string `bson:"handle_msg"` - HandleTime time.Time `bson:"handle_time"` - Ex string `bson:"ex"` + FromUserID string `bson:"from_user_id"` + ToUserID string `bson:"to_user_id"` + HandleResult int32 `bson:"handle_result"` + ReqMsg string `bson:"req_msg"` + CreateTime time.Time `bson:"create_time"` + HandlerUserID string `bson:"handler_user_id"` + HandleMsg string `bson:"handle_msg"` + HandleTime time.Time `bson:"handle_time"` + Ex string `bson:"ex"` } type FriendRequestModelInterface interface {