From ef475cb9d950240eb57606f1bdaad1e7941db7dc Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Wed, 1 Feb 2023 15:42:27 +0800 Subject: [PATCH] 1 --- internal/rpc/group/g.go | 58 ++++++++++++++++++------------------- internal/rpc/group/group.go | 41 ++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 33 deletions(-) diff --git a/internal/rpc/group/g.go b/internal/rpc/group/g.go index ef18feedf..f5e4b4d54 100644 --- a/internal/rpc/group/g.go +++ b/internal/rpc/group/g.go @@ -1,9 +1,7 @@ package group import ( - "Open_IM/pkg/common/constant" - relation "Open_IM/pkg/common/db/mysql" - pbGroup "Open_IM/pkg/proto/group" + "Open_IM/pkg/common/tracelog" sdk_ws "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" @@ -12,32 +10,32 @@ import ( "time" ) -func getDBGroupRequest(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (dbGroupRequest *relation.GroupRequest) { - dbGroupRequest = &relation.GroupRequest{} - utils.CopyStructFields(&dbGroupRequest, req) - dbGroupRequest.UserID = req.FromUserID - dbGroupRequest.HandleUserID = utils.OpUserID(ctx) - dbGroupRequest.HandledTime = time.Now() - return dbGroupRequest -} - -func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMember *relation.GroupMember, err error) { - dbGroupMember = &relation.GroupMember{} - - member := relation.GroupMember{} - member.GroupID = groupID - member.UserID = userID - member.RoleLevel = constant.GroupOrdinaryUsers - member.OperatorUserID = utils.OpUserID(ctx) - - member.FaceURL = user.FaceURL - member.Nickname = user.Nickname - member.JoinSource = request.JoinSource - member.InviterUserID = request.InviterUserID - member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0) - - return dbGroupMember, nil -} +//func getDBGroupRequest(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (dbGroupRequest *relation.GroupRequest) { +// dbGroupRequest = &relation.GroupRequest{} +// utils.CopyStructFields(&dbGroupRequest, req) +// dbGroupRequest.UserID = req.FromUserID +// dbGroupRequest.HandleUserID = utils.OpUserID(ctx) +// dbGroupRequest.HandledTime = time.Now() +// return dbGroupRequest +//} +// +//func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMember *relation.GroupMember, err error) { +// dbGroupMember = &relation.GroupMember{} +// +// member := relation.GroupMember{} +// member.GroupID = groupID +// member.UserID = userID +// member.RoleLevel = constant.GroupOrdinaryUsers +// member.OperatorUserID = utils.OpUserID(ctx) +// +// member.FaceURL = user.FaceURL +// member.Nickname = user.Nickname +// member.JoinSource = request.JoinSource +// member.InviterUserID = request.InviterUserID +// member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0) +// +// return dbGroupMember, nil +//} func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk_ws.UserInfo, error) { return nil, nil @@ -59,7 +57,7 @@ func genGroupID(ctx context.Context, groupID string) string { if groupID != "" { return groupID } - groupID = utils.Md5(utils.OperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10)) + groupID = utils.Md5(tracelog.GetOperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10)) bi := big.NewInt(0) bi.SetString(groupID[0:8], 16) groupID = bi.String() diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 03c0b033a..9599d9465 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -526,14 +526,49 @@ func FillPublicUserInfoByUserID(operationID, userID string, userInfo *open_im_sd func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.GetGroupApplicationListReq) (*pbGroup.GetGroupApplicationListResp, error) { resp := &pbGroup.GetGroupApplicationListResp{} - reply, err := s.GroupInterface.GetGroupRecvApplicationList(ctx, req.FromUserID) + groupRequests, err := s.GroupInterface.GetGroupRecvApplicationList(ctx, req.FromUserID) if err != nil { return nil, err } + if len(groupRequests) == 0 { + return resp, nil + } + var ( + userIDs []string + groupIDs []string + ) + for _, gr := range groupRequests { + userIDs = append(userIDs, gr.UserID) + groupIDs = append(groupIDs, gr.GroupID) + } + userMap, err := getUserMap(ctx, userIDs) + if err != nil { + return nil, err + } + for _, userID := range userIDs { + if _, ok := userMap[userID]; !ok { + return nil, constant.ErrUserIDNotFound.Wrap(userID) + } + } + groups, err := s.GroupInterface.FindGroupsByID(ctx, groupIDs) + if err != nil { + return nil, err + } + groupMap := make(map[string]*relation.Group) + for i, group := range groups { + groupMap[group.GroupID] = groups[i] + } + + for _, gr := range groupRequests { + groupRequest := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}} + utils.CopyStructFields(&groupRequest, gr) + getUserMap() + + } var errResult error - tracelog.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", reply) - for _, v := range reply { + tracelog.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", groupRequests) + for _, v := range groupRequests { node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}} err := FillGroupInfoByGroupID(tracelog.GetOperationID(ctx), v.GroupID, node.GroupInfo) if err != nil {