From 50d6b4053a8f5b96e494a66ed46d39da1a7fb67f Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Fri, 13 Jan 2023 18:29:25 +0800 Subject: [PATCH] 1 --- internal/rpc/friend/friend.go | 66 ++++++++++++++++----------------- pkg/common/constant/err_info.go | 8 ++++ 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/internal/rpc/friend/friend.go b/internal/rpc/friend/friend.go index ecc9871d4..ebe24b7f1 100644 --- a/internal/rpc/friend/friend.go +++ b/internal/rpc/friend/friend.go @@ -10,6 +10,7 @@ import ( "Open_IM/pkg/common/middleware" promePkg "Open_IM/pkg/common/prometheus" "Open_IM/pkg/common/token_verify" + "Open_IM/pkg/common/tools" cp "Open_IM/pkg/common/utils" "Open_IM/pkg/getcdv3" pbCache "Open_IM/pkg/proto/cache" @@ -177,57 +178,54 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq } func (s *friendServer) ImportFriend(ctx context.Context, req *pbFriend.ImportFriendReq) (*pbFriend.ImportFriendResp, error) { - resp := pbFriend.ImportFriendResp{CommonResp: &sdkws.CommonResp{}} - var c sdkws.CommonResp - if !utils.IsContain(req.OpUserID, config.Config.Manager.AppManagerUid) { - log.NewError(req.OperationID, "not authorized", req.OpUserID, config.Config.Manager.AppManagerUid) - c.ErrCode = constant.ErrNoPermission.ErrCode - c.ErrMsg = constant.ErrNoPermission.ErrMsg - for _, v := range req.FriendUserIDList { - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: -1}) - } - resp.CommonResp = &c - return &resp, nil + resp := &pbFriend.ImportFriendResp{} + //var c sdkws.CommonResp + if !utils.IsContain(tools.OpUserID(ctx), config.Config.Manager.AppManagerUid) { + //log.NewError(req.OperationID, "not authorized", req.OpUserID, config.Config.Manager.AppManagerUid) + //c.ErrCode = constant.ErrNoPermission.ErrCode + //c.ErrMsg = constant.ErrNoPermission.ErrMsg + //for _, userID := range req.FriendUserIDList { + // resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: -1}) + //} + return nil, constant.ErrNoPermission.Wrap() } - if _, err := imdb.GetUserByUserID(req.FromUserID); err != nil { - log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.FromUserID) - c.ErrCode = constant.ErrDB.ErrCode - c.ErrMsg = "this user not exists,cant not add friend" - for _, v := range req.FriendUserIDList { - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: -1}) - } - resp.CommonResp = &c - return &resp, nil + if _, err := GetUserInfo(ctx, req.FromUserID); err != nil { + //log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.FromUserID) + //c.ErrCode = constant.ErrDB.ErrCode + //c.ErrMsg = "this user not exists,cant not add friend" + //for _, userID := range req.FriendUserIDList { + // resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: -1}) + //} + //resp.CommonResp = &c + return nil, err } - for _, v := range req.FriendUserIDList { - log.NewDebug(req.OperationID, "FriendUserIDList ", v) - if _, fErr := imdb.GetUserByUserID(v); fErr != nil { - log.NewError(req.OperationID, "GetUserByUserID failed ", fErr.Error(), v) - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: -1}) + for _, userID := range req.FriendUserIDList { + if _, fErr := GetUserInfo(ctx, userID); fErr != nil { + resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: -1}) } else { - if _, err := imdb.GetFriendRelationshipFromFriend(req.FromUserID, v); err != nil { + if _, err := imdb.GetFriendRelationshipFromFriend(req.FromUserID, userID); err != nil { //Establish two single friendship - toInsertFollow := imdb.Friend{OwnerUserID: req.FromUserID, FriendUserID: v} + toInsertFollow := imdb.Friend{OwnerUserID: req.FromUserID, FriendUserID: userID} err1 := imdb.InsertToFriend(&toInsertFollow) if err1 != nil { log.NewError(req.OperationID, "InsertToFriend failed ", err1.Error(), toInsertFollow) - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: -1}) + resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: -1}) continue } - toInsertFollow = imdb.Friend{OwnerUserID: v, FriendUserID: req.FromUserID} + toInsertFollow = imdb.Friend{OwnerUserID: userID, FriendUserID: req.FromUserID} err2 := imdb.InsertToFriend(&toInsertFollow) if err2 != nil { log.NewError(req.OperationID, "InsertToFriend failed ", err2.Error(), toInsertFollow) - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: -1}) + resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: -1}) continue } - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: 0}) + resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: 0}) log.NewDebug(req.OperationID, "UserIDResultList ", resp.UserIDResultList) - chat.FriendAddedNotification(req.OperationID, req.OpUserID, req.FromUserID, v) + chat.FriendAddedNotification(req.OperationID, req.OpUserID, req.FromUserID, userID) } else { - log.NewWarn(req.OperationID, "GetFriendRelationshipFromFriend ok", req.FromUserID, v) - resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: v, Result: 0}) + log.NewWarn(req.OperationID, "GetFriendRelationshipFromFriend ok", req.FromUserID, userID) + resp.UserIDResultList = append(resp.UserIDResultList, &pbFriend.UserIDResult{UserID: userID, Result: 0}) } } } diff --git a/pkg/common/constant/err_info.go b/pkg/common/constant/err_info.go index 1e030e659..a578bafb2 100644 --- a/pkg/common/constant/err_info.go +++ b/pkg/common/constant/err_info.go @@ -16,6 +16,14 @@ type ErrInfo struct { DetailErrMsg string } +func NewErrInfo(code int32, msg, detail string) *ErrInfo { + return &ErrInfo{ + ErrCode: code, + ErrMsg: msg, + DetailErrMsg: detail, + } +} + func (e *ErrInfo) Error() string { return "errMsg: " + e.ErrMsg + " detail errMsg: " + e.DetailErrMsg }