From f7d347ff4a59e45f85d5f2aa7046ec6988ec54d8 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 15 May 2023 11:55:41 +0800 Subject: [PATCH 1/5] group --- internal/rpc/group/group.go | 6 +- pkg/common/db/controller/group.go | 130 ++++++++++++++++-------------- 2 files changed, 74 insertions(+), 62 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 2f325b774..f588ba28c 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -222,7 +222,8 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo pageNumber = req.Pagination.PageNumber showNumber = req.Pagination.ShowNumber } - total, members, err := s.GroupDatabase.PageGroupMember(ctx, nil, []string{req.FromUserID}, nil, pageNumber, showNumber) + //total, members, err := s.GroupDatabase.PageGroupMember(ctx, nil, []string{req.FromUserID}, nil, pageNumber, showNumber) + total, members, err := s.GroupDatabase.PageGetJoinGroup(ctx, req.FromUserID, pageNumber, showNumber) if err != nil { return nil, err } @@ -383,7 +384,8 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) { resp := &pbGroup.GetGroupMemberListResp{} //total, members, err := s.GroupDatabase.PageGroupMember(ctx, []string{req.GroupID}, nil, utils.If(req.Filter >= 0, []int32{req.Filter}, nil), req.Pagination.PageNumber, req.Pagination.ShowNumber) - total, members, err := s.GroupDatabase.PageGroupMember(ctx, []string{req.GroupID}, nil, nil, req.Pagination.PageNumber, req.Pagination.ShowNumber) + //total, members, err := s.GroupDatabase.PageGroupMember(ctx, []string{req.GroupID}, nil, nil, req.Pagination.PageNumber, req.Pagination.ShowNumber) + total, members, err := s.GroupDatabase.PageGetGroupMember(ctx, req.GroupID, req.Pagination.PageNumber, req.Pagination.ShowNumber) if err != nil { return nil, err } diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index 8f6c6d2db..ec2359642 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -32,7 +32,9 @@ type GroupDatabase interface { TakeGroupOwner(ctx context.Context, groupID string) (*relationTb.GroupMemberModel, error) FindGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32) ([]*relationTb.GroupMemberModel, error) FindGroupMemberUserID(ctx context.Context, groupID string) ([]string, error) - PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (uint32, []*relationTb.GroupMemberModel, error) + //PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (uint32, []*relationTb.GroupMemberModel, error) + PageGetJoinGroup(ctx context.Context, userID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) + PageGetGroupMember(ctx context.Context, groupID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) SearchGroupMember(ctx context.Context, keyword string, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (uint32, []*relationTb.GroupMemberModel, error) HandlerGroupRequest(ctx context.Context, groupID string, userID string, handledMsg string, handleResult int32, member *relationTb.GroupMemberModel) error DeleteGroupMember(ctx context.Context, groupID string, userIDs []string) error @@ -196,67 +198,75 @@ func (g *groupDatabase) FindGroupMember(ctx context.Context, groupIDs []string, return g.groupMemberDB.Find(ctx, groupIDs, userIDs, roleLevels) } -func (g *groupDatabase) PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { - if len(roleLevels) == 0 { - if pageNumber == 0 || showNumber == 0 { - if len(groupIDs) == 0 { - for _, userID := range userIDs { - groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) - if err != nil { - return 0, nil, err - } - for _, groupID := range groupIDs { - groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) - if err != nil { - return 0, nil, err - } - totalGroupMembers = append(totalGroupMembers, groupMembers...) - } - } - - return uint32(len(totalGroupMembers)), totalGroupMembers, nil - } - for _, groupID := range groupIDs { - groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, userIDs) - if err != nil { - return 0, nil, err - } - totalGroupMembers = append(totalGroupMembers, groupMembers...) - } - return uint32(len(totalGroupMembers)), totalGroupMembers, nil - } else { - if len(groupIDs) == 0 { - for _, userID := range userIDs { - groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) - if err != nil { - return 0, nil, err - } - groupIDs = utils.Paginate(groupIDs, int(pageNumber), int(showNumber)) - for _, groupID := range groupIDs { - groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) - if err != nil { - return 0, nil, err - } - totalGroupMembers = append(totalGroupMembers, groupMembers...) - } - } - return uint32(len(groupIDs)), totalGroupMembers, nil - } - var totalAll uint32 - for _, groupID := range groupIDs { - total, groupMembers, err := g.cache.GetGroupMembersPage(ctx, groupID, userIDs, pageNumber, showNumber) - if err != nil { - return 0, nil, err - } - totalAll += total - totalGroupMembers = append(totalGroupMembers, groupMembers...) - } - return totalAll, totalGroupMembers, nil - } - } - return g.groupMemberDB.SearchMember(ctx, "", groupIDs, userIDs, roleLevels, pageNumber, showNumber) +func (g *groupDatabase) PageGetJoinGroup(ctx context.Context, userID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { + return g.groupMemberDB.SearchMember(ctx, "", nil, []string{userID}, nil, pageNumber, showNumber) } +func (g *groupDatabase) PageGetGroupMember(ctx context.Context, groupID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { + return g.groupMemberDB.SearchMember(ctx, groupID, nil, nil, nil, pageNumber, showNumber) +} + +//func (g *groupDatabase) PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { +//if len(roleLevels) == 0 { +// if pageNumber == 0 || showNumber == 0 { +// if len(groupIDs) == 0 { +// for _, userID := range userIDs { +// groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) +// if err != nil { +// return 0, nil, err +// } +// for _, groupID := range groupIDs { +// groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) +// if err != nil { +// return 0, nil, err +// } +// totalGroupMembers = append(totalGroupMembers, groupMembers...) +// } +// } +// +// return uint32(len(totalGroupMembers)), totalGroupMembers, nil +// } +// for _, groupID := range groupIDs { +// groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, userIDs) +// if err != nil { +// return 0, nil, err +// } +// totalGroupMembers = append(totalGroupMembers, groupMembers...) +// } +// return uint32(len(totalGroupMembers)), totalGroupMembers, nil +// } else { +// if len(groupIDs) == 0 { +// for _, userID := range userIDs { +// groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) +// if err != nil { +// return 0, nil, err +// } +// groupIDs = utils.Paginate(groupIDs, int(pageNumber), int(showNumber)) +// for _, groupID := range groupIDs { +// groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) +// if err != nil { +// return 0, nil, err +// } +// totalGroupMembers = append(totalGroupMembers, groupMembers...) +// } +// } +// return uint32(len(groupIDs)), totalGroupMembers, nil +// } +// var totalAll uint32 +// for _, groupID := range groupIDs { +// total, groupMembers, err := g.cache.GetGroupMembersPage(ctx, groupID, userIDs, pageNumber, showNumber) +// if err != nil { +// return 0, nil, err +// } +// totalAll += total +// totalGroupMembers = append(totalGroupMembers, groupMembers...) +// } +// return totalAll, totalGroupMembers, nil +// } +//} +// return g.groupMemberDB.SearchMember(ctx, "", groupIDs, userIDs, roleLevels, pageNumber, showNumber) +//} + func (g *groupDatabase) SearchGroupMember(ctx context.Context, keyword string, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (uint32, []*relationTb.GroupMemberModel, error) { return g.groupMemberDB.SearchMember(ctx, keyword, groupIDs, userIDs, roleLevels, pageNumber, showNumber) } From e679ddcde2879467d7fc951d798c69f7af7132e5 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 15 May 2023 12:11:46 +0800 Subject: [PATCH 2/5] group --- pkg/common/db/controller/group.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index ec2359642..8a059f364 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -203,7 +203,7 @@ func (g *groupDatabase) PageGetJoinGroup(ctx context.Context, userID string, pag } func (g *groupDatabase) PageGetGroupMember(ctx context.Context, groupID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { - return g.groupMemberDB.SearchMember(ctx, groupID, nil, nil, nil, pageNumber, showNumber) + return g.groupMemberDB.SearchMember(ctx, "", []string{groupID}, nil, nil, pageNumber, showNumber) } //func (g *groupDatabase) PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { From b52e111de9a3b0b74044203e14518918438a534a Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 15 May 2023 15:37:48 +0800 Subject: [PATCH 3/5] group --- pkg/common/db/controller/group.go | 80 +++++++------------------------ 1 file changed, 17 insertions(+), 63 deletions(-) diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index 8a059f364..5f4c65c96 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -199,74 +199,28 @@ func (g *groupDatabase) FindGroupMember(ctx context.Context, groupIDs []string, } func (g *groupDatabase) PageGetJoinGroup(ctx context.Context, userID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { - return g.groupMemberDB.SearchMember(ctx, "", nil, []string{userID}, nil, pageNumber, showNumber) + groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) + if err != nil { + return 0, nil, err + } + for _, groupID := range utils.Paginate(groupIDs, int(pageNumber), int(showNumber)) { + groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) + if err != nil { + return 0, nil, err + } + totalGroupMembers = append(totalGroupMembers, groupMembers...) + } + return uint32(len(groupIDs)), totalGroupMembers, nil } func (g *groupDatabase) PageGetGroupMember(ctx context.Context, groupID string, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { - return g.groupMemberDB.SearchMember(ctx, "", []string{groupID}, nil, nil, pageNumber, showNumber) + groupMembers, err := g.cache.GetAllGroupMembersInfo(ctx, groupID) + if err != nil { + return 0, nil, err + } + return uint32(len(groupMembers)), utils.Paginate(groupMembers, int(pageNumber), int(showNumber)), nil } -//func (g *groupDatabase) PageGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (total uint32, totalGroupMembers []*relationTb.GroupMemberModel, err error) { -//if len(roleLevels) == 0 { -// if pageNumber == 0 || showNumber == 0 { -// if len(groupIDs) == 0 { -// for _, userID := range userIDs { -// groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) -// if err != nil { -// return 0, nil, err -// } -// for _, groupID := range groupIDs { -// groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) -// if err != nil { -// return 0, nil, err -// } -// totalGroupMembers = append(totalGroupMembers, groupMembers...) -// } -// } -// -// return uint32(len(totalGroupMembers)), totalGroupMembers, nil -// } -// for _, groupID := range groupIDs { -// groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, userIDs) -// if err != nil { -// return 0, nil, err -// } -// totalGroupMembers = append(totalGroupMembers, groupMembers...) -// } -// return uint32(len(totalGroupMembers)), totalGroupMembers, nil -// } else { -// if len(groupIDs) == 0 { -// for _, userID := range userIDs { -// groupIDs, err := g.cache.GetJoinedGroupIDs(ctx, userID) -// if err != nil { -// return 0, nil, err -// } -// groupIDs = utils.Paginate(groupIDs, int(pageNumber), int(showNumber)) -// for _, groupID := range groupIDs { -// groupMembers, err := g.cache.GetGroupMembersInfo(ctx, groupID, []string{userID}) -// if err != nil { -// return 0, nil, err -// } -// totalGroupMembers = append(totalGroupMembers, groupMembers...) -// } -// } -// return uint32(len(groupIDs)), totalGroupMembers, nil -// } -// var totalAll uint32 -// for _, groupID := range groupIDs { -// total, groupMembers, err := g.cache.GetGroupMembersPage(ctx, groupID, userIDs, pageNumber, showNumber) -// if err != nil { -// return 0, nil, err -// } -// totalAll += total -// totalGroupMembers = append(totalGroupMembers, groupMembers...) -// } -// return totalAll, totalGroupMembers, nil -// } -//} -// return g.groupMemberDB.SearchMember(ctx, "", groupIDs, userIDs, roleLevels, pageNumber, showNumber) -//} - func (g *groupDatabase) SearchGroupMember(ctx context.Context, keyword string, groupIDs []string, userIDs []string, roleLevels []int32, pageNumber, showNumber int32) (uint32, []*relationTb.GroupMemberModel, error) { return g.groupMemberDB.SearchMember(ctx, keyword, groupIDs, userIDs, roleLevels, pageNumber, showNumber) } From ed29bc1b5c4626864aa149ceaabfbf5fdc00bfe9 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 15 May 2023 16:17:36 +0800 Subject: [PATCH 4/5] group --- internal/api/friend.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/friend.go b/internal/api/friend.go index 3ac40f7c5..0dc3eed2c 100644 --- a/internal/api/friend.go +++ b/internal/api/friend.go @@ -42,11 +42,11 @@ func (o *Friend) DeleteFriend(c *gin.Context) { } func (o *Friend) GetFriendApplyList(c *gin.Context) { - a2r.Call(friend.FriendClient.GetPaginationFriendsApplyFrom, o.client, c) + a2r.Call(friend.FriendClient.GetPaginationFriendsApplyTo, o.client, c) } func (o *Friend) GetSelfApplyList(c *gin.Context) { - a2r.Call(friend.FriendClient.GetPaginationFriendsApplyTo, o.client, c) + a2r.Call(friend.FriendClient.GetPaginationFriendsApplyFrom, o.client, c) } func (o *Friend) GetFriendList(c *gin.Context) { From fc1425b79795c17d37e1b68ac1a1952b039a3824 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 15 May 2023 16:42:26 +0800 Subject: [PATCH 5/5] friend --- internal/rpc/friend/friend.go | 2 ++ pkg/common/mw/rpc_server_interceptor.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/rpc/friend/friend.go b/internal/rpc/friend/friend.go index 8b7031cf2..54e7e3573 100644 --- a/internal/rpc/friend/friend.go +++ b/internal/rpc/friend/friend.go @@ -222,6 +222,8 @@ func (s *friendServer) GetPaginationFriendsApplyFrom(ctx context.Context, req *p if err != nil { return nil, err } + log.ZInfo(ctx, "test log out") + log.ZInfo(ctx, "GetPaginationFriendsApplyFrom.xxx", "total", total, "friendRequests", len(friendRequests), "userRpcClient", s.userRpcClient == nil) resp.FriendRequests, err = convert.FriendRequestDB2Pb(ctx, friendRequests, s.userRpcClient.GetUsersInfoMap) if err != nil { return nil, err diff --git a/pkg/common/mw/rpc_server_interceptor.go b/pkg/common/mw/rpc_server_interceptor.go index a891bc100..c416c584e 100644 --- a/pkg/common/mw/rpc_server_interceptor.go +++ b/pkg/common/mw/rpc_server_interceptor.go @@ -33,7 +33,7 @@ func RpcServerInterceptor(ctx context.Context, req interface{}, info *grpc.Unary defer func() { if r := recover(); r != nil { log.ZError(ctx, "rpc panic", nil, "FullMethod", info.FullMethod, "type:", fmt.Sprintf("%T", r), "panic:", r) - fmt.Println("stack info:", string(debug.Stack())) + fmt.Printf("panic: %+v\nstack info: %s\n", r, string(debug.Stack())) pc, file, line, ok := runtime.Caller(4) if !ok { panic("get runtime.Caller failed")