From 097144528968c36687a59c67661a8f19209ca453 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 11:53:50 +0800 Subject: [PATCH 01/20] Refactor code --- pkg/base_info/group_api_struct.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index f6a5ef86f..9611dfac0 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -108,11 +108,12 @@ type GetGroupInfoResp struct { } type ApplicationGroupResponseReq struct { - OperationID string `json:"operationID" binding:"required"` - GroupID string `json:"groupID" binding:"required"` - FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID - HandledMsg string `json:"handledMsg"` - HandleResult int32 `json:"handleResult" binding:"required, oneof=-1 1"` + OperationID string `json:"operationID" binding:"required"` + GroupID string `json:"groupID" binding:"required"` + FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID + HandledMsg string `json:"handledMsg"` + //`json:"flag" binding:"required,oneof=-1 0 1"` + HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"` } type ApplicationGroupResponseResp struct { CommResp From 4336a1a13e4950ab16c13c62f4d76fc7cf60cced Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 12:05:10 +0800 Subject: [PATCH 02/20] Refactor code --- internal/rpc/group/group.go | 5 +++++ pkg/base_info/group_api_struct.go | 11 +++++------ .../im_mysql_model/group_member_model.go | 13 +++++++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index e737fb163..306c409d1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -435,6 +435,11 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G utils.CopyStructFields(&groupRequest, req) groupRequest.UserID = req.FromUserID groupRequest.HandleUserID = req.OpUserID + + if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { + log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil + } err := imdb.UpdateGroupRequest(groupRequest) if err != nil { log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.String()) diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 9611dfac0..fd4c8206b 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -108,12 +108,11 @@ type GetGroupInfoResp struct { } type ApplicationGroupResponseReq struct { - OperationID string `json:"operationID" binding:"required"` - GroupID string `json:"groupID" binding:"required"` - FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID - HandledMsg string `json:"handledMsg"` - //`json:"flag" binding:"required,oneof=-1 0 1"` - HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"` + OperationID string `json:"operationID" binding:"required"` + GroupID string `json:"groupID" binding:"required"` + FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID + HandledMsg string `json:"handledMsg"` + HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"` } type ApplicationGroupResponseResp struct { CommResp diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go index 7e4afb402..95f4c5723 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go @@ -210,6 +210,19 @@ func GetJoinedGroupIDListByUserID(userID string) ([]string, error) { return groupIDList, nil } +func IsGroupOwnerAdmin(groupID, UserID string) bool { + groupMemberList, err := GetOwnerManagerByGroupID(groupID) + if err != nil { + return false + } + for _, v := range groupMemberList { + if v.UserID == UserID && v.RoleLevel > constant.GroupOrdinaryUsers { + return true + } + } + return false +} + // //func SelectGroupList(groupID string) ([]string, error) { // var groupUserID string From 7574d06718cf256f622b1187c9777950d9ccd06e Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 12:07:13 +0800 Subject: [PATCH 03/20] Refactor code --- .../db/mysql_model/im_mysql_model/group_request_model.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go index 5c7d3000b..307dac166 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go @@ -24,16 +24,15 @@ func UpdateGroupRequest(groupRequest GroupRequest) error { if err != nil { return err } - if groupRequest.HandledTime.Unix() < 0 { groupRequest.HandledTime = utils.UnixSecondToTime(0) } - + t := dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest) //RowsAffected - if dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest).RowsAffected == 0 { + if t.RowsAffected == 0 { return InsertIntoGroupRequest(groupRequest) } else { - return nil + return t.Error } } From 89d69a8fb60a95030edae1900633c95932246165 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 12:27:26 +0800 Subject: [PATCH 04/20] Refactor code --- internal/api/group/group.go | 2 ++ internal/rpc/group/group.go | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index c7297e083..a7a7b86a3 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -3,6 +3,8 @@ package group import ( api "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 306c409d1..8599ee6c2 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -447,6 +447,28 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G } chat.ApplicationProcessedNotification(req) if req.HandleResult == constant.GroupResponseAgree { + + if req.HandleResult == constant.GroupResponseAgree { + user, err := imdb.GetUserByUserID(req.FromUserID) + if err != nil { + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.FromUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + member := imdb.GroupMember{} + member.GroupID = req.GroupID + member.UserID = req.FromUserID + member.RoleLevel = constant.GroupOrdinaryUsers + member.OperatorUserID = req.OpUserID + member.FaceUrl = user.FaceUrl + member.Nickname = user.Nickname + + err = imdb.InsertIntoGroupMember(member) + if err != nil { + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.FromUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + } + chat.MemberEnterNotification(req) } From 0db7aca1cd1f7560d02968a5c8136036571f411a Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 12:29:27 +0800 Subject: [PATCH 05/20] Refactor code --- internal/rpc/group/group.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 8599ee6c2..de1708140 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -464,11 +464,10 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G err = imdb.InsertIntoGroupMember(member) if err != nil { - log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.FromUserID) + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), member) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } } - chat.MemberEnterNotification(req) } From 1eee8f439bd80111ce9868f90b81b72be2f7ca5d Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 12:30:30 +0800 Subject: [PATCH 06/20] Refactor code --- internal/api/group/group.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index a7a7b86a3..c7297e083 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -3,8 +3,6 @@ package group import ( api "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" From 1392a8ecf137924f070b618af137dbaeac76c5a4 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 13:26:07 +0800 Subject: [PATCH 07/20] Refactor code --- internal/rpc/group/group.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index de1708140..48db23fc7 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -442,7 +442,7 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G } err := imdb.UpdateGroupRequest(groupRequest) if err != nil { - log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.String()) + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), groupRequest) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } chat.ApplicationProcessedNotification(req) From 288f25c82703b7756c976aa2cf5c992ba15fd570 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 13:29:32 +0800 Subject: [PATCH 08/20] Refactor code --- internal/rpc/group/group.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 48db23fc7..b42badca2 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -435,13 +435,14 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G utils.CopyStructFields(&groupRequest, req) groupRequest.UserID = req.FromUserID groupRequest.HandleUserID = req.OpUserID - + groupRequest.HandledTime = time.Now() if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } err := imdb.UpdateGroupRequest(groupRequest) if err != nil { + //{openIM002 7836e478bc43ce1d3b8889cac983f59b 1 ok 0001-01-01 00:00:00 +0000 UTC openIM001 0001-01-01 00:00:00 +0000 UTC } log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), groupRequest) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } From 2f62339f0c5163c08dd87da04ae14256426c4a88 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 13:39:36 +0800 Subject: [PATCH 09/20] Refactor code --- cmd/open_im_api/main.go | 10 +++++----- internal/api/group/group.go | 7 ++++--- internal/rpc/group/group.go | 8 +++++--- pkg/base_info/group_api_struct.go | 3 +++ 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 510d8cf55..a3a2c2c40 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -47,11 +47,11 @@ func main() { //group related routing group groupRouterGroup := r.Group("/group") { - groupRouterGroup.POST("/create_group", group.CreateGroup) //1 - groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1 - groupRouterGroup.POST("join_group", group.JoinGroup) //1 - groupRouterGroup.POST("/quit_group", group.QuitGroup) //1 - groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) + groupRouterGroup.POST("/create_group", group.CreateGroup) //1 + groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1 + groupRouterGroup.POST("join_group", group.JoinGroup) //1 + groupRouterGroup.POST("/quit_group", group.QuitGroup) //1 + groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) //1 groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 diff --git a/internal/api/group/group.go b/internal/api/group/group.go index c7297e083..7fe82b1fe 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -464,7 +464,7 @@ func TransferGroupOwner(c *gin.Context) { return } req := &rpc.TransferGroupOwnerReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -483,7 +483,8 @@ func TransferGroupOwner(c *gin.Context) { return } - resp := api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg} - c.JSON(http.StatusOK, resp) + resp := api.TransferGroupOwnerResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp) + c.JSON(http.StatusOK, resp) + } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index b42badca2..fe34a7735 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -595,17 +595,19 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe log.NewInfo(req.OperationID, "TransferGroupOwner ", req.String()) if req.OldOwnerUserID == req.NewOwnerUserID { - log.NewError(req.OperationID, "same owner ", req.String()) + log.NewError(req.OperationID, "same owner ", req.OldOwnerUserID, req.NewOwnerUserID) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil } - groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: 0} + groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers} err := imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { + log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: 1} + groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: constant.GroupOwner} err = imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { + log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } changedType := int32(1) << 4 diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index fd4c8206b..f4c8fa666 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -149,3 +149,6 @@ type TransferGroupOwnerReq struct { NewOwnerUserID string `json:"newOwnerUserID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } +type TransferGroupOwnerResp struct { + CommResp +} From 8b1a7def38f481eaf5b02e549353f0d15a7185cc Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 13:49:39 +0800 Subject: [PATCH 10/20] Refactor code --- internal/rpc/friend/firend.go | 2 +- internal/rpc/group/group.go | 2 +- .../mysql_model/im_mysql_model/friend_request_model.go | 9 +++------ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/internal/rpc/friend/firend.go b/internal/rpc/friend/firend.go index 378f3a911..f548a21b6 100644 --- a/internal/rpc/friend/firend.go +++ b/internal/rpc/friend/firend.go @@ -146,7 +146,7 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq utils.CopyStructFields(&friendRequest, req.CommID) // {openIM001 openIM002 0 test add friend 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC }] log.NewDebug(req.CommID.OperationID, "UpdateFriendApplication args ", friendRequest) - err := imdb.UpdateFriendApplication(&friendRequest) + err := imdb.InsertFriendApplication(&friendRequest) if err != nil { log.NewError(req.CommID.OperationID, "UpdateFriendApplication failed ", err.Error(), friendRequest) return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index fe34a7735..2c747466d 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -95,7 +95,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } //to group member - groupMember := imdb.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner} + groupMember := imdb.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID} utils.CopyStructFields(&groupMember, us) err = im_mysql_model.InsertIntoGroupMember(groupMember) if err != nil { diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go index a8973c2e2..5e99dcf5d 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go @@ -66,12 +66,9 @@ func UpdateFriendApplication(friendRequest *FriendRequest) error { return err } friendRequest.CreateTime = time.Now() - if dbConn.Table("friend_request").Where("from_user_id=? and to_user_id=?", - friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).RowsAffected == 0 { - return InsertFriendApplication(friendRequest) - } else { - return nil - } + + return dbConn.Table("friend_request").Where("from_user_id=? and to_user_id=?", + friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).Error } func InsertFriendApplication(friendRequest *FriendRequest) error { From 492915567b007426a8523d2620286a3ef32f3a92 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 13:53:05 +0800 Subject: [PATCH 11/20] Refactor code --- internal/rpc/group/group.go | 2 +- .../db/mysql_model/im_mysql_model/group_request_model.go | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 2c747466d..17228a4aa 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -489,7 +489,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) groupRequest.ReqMsg = req.ReqMessage groupRequest.GroupID = req.GroupID - err = imdb.UpdateGroupRequest(groupRequest) + err = imdb.InsertIntoGroupRequest(groupRequest) if err != nil { log.NewError(req.OperationID, "UpdateGroupRequest ", err.Error(), groupRequest) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go index 307dac166..9ccffeaba 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go @@ -27,13 +27,7 @@ func UpdateGroupRequest(groupRequest GroupRequest) error { if groupRequest.HandledTime.Unix() < 0 { groupRequest.HandledTime = utils.UnixSecondToTime(0) } - t := dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest) - //RowsAffected - if t.RowsAffected == 0 { - return InsertIntoGroupRequest(groupRequest) - } else { - return t.Error - } + return dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest).Error } func InsertIntoGroupRequest(toInsertInfo GroupRequest) error { From a031311ab523058190c5507a534b54a4eba4a708 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 14:03:55 +0800 Subject: [PATCH 12/20] Refactor code --- cmd/open_im_api/main.go | 6 +++--- internal/api/group/group.go | 14 +++++++++----- internal/rpc/group/group.go | 3 ++- pkg/base_info/group_api_struct.go | 10 +++------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index a3a2c2c40..a737d4162 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -52,9 +52,9 @@ func main() { groupRouterGroup.POST("join_group", group.JoinGroup) //1 groupRouterGroup.POST("/quit_group", group.QuitGroup) //1 groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) //1 - groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) - groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 - groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 + groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1 + groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 + groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 groupRouterGroup.POST("/kick_group", group.KickGroupMember) groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 7fe82b1fe..790836089 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -24,7 +24,7 @@ func KickGroupMember(c *gin.Context) { } req := &rpc.KickGroupMemberReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -39,7 +39,7 @@ func KickGroupMember(c *gin.Context) { client := rpc.NewGroupClient(etcdConn) RpcResp, err := client.KickGroupMember(context.Background(), req) if err != nil { - log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error()) + log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error(), req.String()) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) return } @@ -48,8 +48,12 @@ func KickGroupMember(c *gin.Context) { memberListResp.ErrMsg = RpcResp.ErrMsg memberListResp.ErrCode = RpcResp.ErrCode for _, v := range RpcResp.Id2ResultList { - memberListResp.Data = append(memberListResp.Data, &api.Id2Result{UserID: v.UserID, Result: v.Result}) + memberListResp.UserIDResultList = append(memberListResp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result}) } + if len(memberListResp.UserIDResultList) == 0 { + memberListResp.UserIDResultList = []*api.UserIDResult{} + } + log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp) c.JSON(http.StatusOK, memberListResp) } @@ -180,7 +184,7 @@ func GetJoinedGroupList(c *gin.Context) { return } - GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.GroupList} + GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, GroupInfoList: RpcResp.GroupList} c.JSON(http.StatusOK, GroupListResp) log.NewInfo(req.OperationID, "GetJoinedGroupList api return ", GroupListResp) } @@ -214,7 +218,7 @@ func InviteUserToGroup(c *gin.Context) { Resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} for _, v := range RpcResp.Id2ResultList { - Resp.Data = append(Resp.Data, api.Id2Result{UserID: v.UserID, Result: v.Result}) + Resp.UserIDResultList = append(Resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result}) } c.JSON(http.StatusOK, Resp) log.NewInfo(req.OperationID, "InviteUserToGroup api return ", Resp) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 17228a4aa..525c4422f 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -300,7 +300,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou ownerList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) if err != nil { log.NewError(req.OperationID, "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID) - return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil } //op is group owner? var flag = 0 @@ -352,6 +352,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou log.NewError(req.OperationID, "RemoveGroupMember failed ", err.Error(), req.GroupID, v) resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1}) } else { + log.NewDebug(req.OperationID, "kicked ", v) resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: 0}) okUserIDList = append(okUserIDList, v) } diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index f4c8fa666..7c14bb7b4 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -9,10 +9,6 @@ type CommResp struct { ErrCode int32 `json:"errCode"` ErrMsg string `json:"errMsg"` } -type Id2Result struct { - UserID string `json:"userID"` - Result int32 `json:"result"` -} type KickGroupMemberReq struct { GroupID string `json:"groupID" binding:"required"` @@ -22,7 +18,7 @@ type KickGroupMemberReq struct { } type KickGroupMemberResp struct { CommResp - Data []*Id2Result `json:"data"` + UserIDResultList []*UserIDResult `json:"data"` } type GetGroupMembersInfoReq struct { @@ -43,7 +39,7 @@ type InviteUserToGroupReq struct { } type InviteUserToGroupResp struct { CommResp - Data []Id2Result `json:"data"` + UserIDResultList []UserIDResult `json:"data"` } type GetJoinedGroupListReq struct { @@ -52,7 +48,7 @@ type GetJoinedGroupListReq struct { } type GetJoinedGroupListResp struct { CommResp - Data []*open_im_sdk.GroupInfo `json:"data"` + GroupInfoList []*open_im_sdk.GroupInfo `json:"data"` } type GetGroupMemberListReq struct { From 6d0f454e6aede1583ff5e05fd5d7dceeff13439e Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 14:17:29 +0800 Subject: [PATCH 13/20] Refactor code --- cmd/open_im_api/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index a737d4162..f2a0a7793 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -55,7 +55,7 @@ func main() { groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1 groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 - groupRouterGroup.POST("/kick_group", group.KickGroupMember) + groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1 groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember) groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) From bd14e5019f5972bd048cdf82804858ef7e6ead60 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 16:19:06 +0800 Subject: [PATCH 14/20] Refactor code --- cmd/open_im_api/main.go | 10 +++++----- internal/api/group/group.go | 10 +++++----- pkg/base_info/group_api_struct.go | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index f2a0a7793..8efc36ab1 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -38,11 +38,11 @@ func main() { friendRouterGroup.POST("/add_blacklist", friend.AddBlacklist) //1 friendRouterGroup.POST("/get_blacklist", friend.GetBlacklist) //1 friendRouterGroup.POST("/remove_blacklist", friend.RemoveBlacklist) //1 - friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) - friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1 - friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1 - friendRouterGroup.POST("/is_friend", friend.IsFriend) //1 - friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1 + friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1 + friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1 + friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1 + friendRouterGroup.POST("/is_friend", friend.IsFriend) //1 + friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1 } //group related routing group groupRouterGroup := r.Group("/group") diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 790836089..f400154aa 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -197,7 +197,7 @@ func InviteUserToGroup(c *gin.Context) { return } req := &rpc.InviteUserToGroupReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -216,12 +216,12 @@ func InviteUserToGroup(c *gin.Context) { return } - Resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} for _, v := range RpcResp.Id2ResultList { - Resp.UserIDResultList = append(Resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result}) + resp.UserIDResultList = append(resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result}) } - c.JSON(http.StatusOK, Resp) - log.NewInfo(req.OperationID, "InviteUserToGroup api return ", Resp) + c.JSON(http.StatusOK, resp) + log.NewInfo(req.OperationID, "InviteUserToGroup api return ", resp) } func CreateGroup(c *gin.Context) { diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 7c14bb7b4..690506146 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -33,7 +33,7 @@ type GetGroupMembersInfoResp struct { type InviteUserToGroupReq struct { GroupID string `json:"groupID" binding:"required"` - InvitedUserIDList []string `json:"uidList" binding:"required"` + InvitedUserIDList []string `json:"invitedUserIDList" binding:"required"` Reason string `json:"reason"` OperationID string `json:"operationID" binding:"required"` } From a0f28c07f2f7c1e7b829dade4bde945edadf97a0 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 16:24:37 +0800 Subject: [PATCH 15/20] Refactor code --- internal/rpc/group/group.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 525c4422f..80b871851 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -226,6 +226,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite utils.CopyStructFields(&toInsertInfo, toUserInfo) toInsertInfo.GroupID = req.GroupID toInsertInfo.RoleLevel = constant.GroupOrdinaryUsers + toInsertInfo.OperatorUserID = req.OpUserID err = imdb.InsertIntoGroupMember(toInsertInfo) if err != nil { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", req.GroupID, toUserInfo.UserID, toUserInfo.Nickname, toUserInfo.FaceUrl) From 93e669d7d3b36623e5f9e61e055d9b41d7f466a2 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 16:27:57 +0800 Subject: [PATCH 16/20] Refactor code --- cmd/open_im_api/main.go | 2 +- internal/api/group/group.go | 7 +++++-- pkg/base_info/group_api_struct.go | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 8efc36ab1..8afb38d63 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -59,7 +59,7 @@ func main() { groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember) groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) - groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) + groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) } //certificate diff --git a/internal/api/group/group.go b/internal/api/group/group.go index f400154aa..0238df400 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -120,9 +120,12 @@ func GetGroupMemberList(c *gin.Context) { return } - memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} - c.JSON(http.StatusOK, memberListResp) + memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} + if len(memberListResp.MemberList) == 0 { + memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} + } log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp) + c.JSON(http.StatusOK, memberListResp) } func GetGroupAllMember(c *gin.Context) { diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 690506146..3bfa090d5 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -59,8 +59,8 @@ type GetGroupMemberListReq struct { } type GetGroupMemberListResp struct { CommResp - NextSeq int32 `json:"nextSeq"` - Data []*open_im_sdk.GroupMemberFullInfo `json:"data"` + NextSeq int32 `json:"nextSeq"` + MemberList []*open_im_sdk.GroupMemberFullInfo `json:"data"` } type GetGroupAllMemberReq struct { From ccecd8f4f08ecadb9e8aca58e36e552abd6cdac5 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 16:30:13 +0800 Subject: [PATCH 17/20] Refactor code --- internal/rpc/group/group.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 80b871851..e2327a78b 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -269,7 +269,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro } func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) { - log.NewInfo(req.OperationID, "GetGroupMemberList, args ", req.String()) + log.NewInfo(req.OperationID, "GetGroupMemberList args ", req.String()) var resp pbGroup.GetGroupMemberListResp memberList, err := imdb.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30) if err != nil { @@ -281,7 +281,7 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGr for _, v := range memberList { var node open_im_sdk.GroupMemberFullInfo - utils.CopyStructFields(&node, v) + utils.CopyStructFields(&node, &v) resp.MemberList = append(resp.MemberList, &node) } //db operate get db sorted by join time From 1e9ef321f08eccad4206379f4cd9fe4779a66db9 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 17:27:11 +0800 Subject: [PATCH 18/20] Refactor code --- cmd/rpc/open_im_auth/main.go | 1 + internal/api/group/group.go | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/cmd/rpc/open_im_auth/main.go b/cmd/rpc/open_im_auth/main.go index ed4656d35..110ea05c6 100644 --- a/cmd/rpc/open_im_auth/main.go +++ b/cmd/rpc/open_im_auth/main.go @@ -10,4 +10,5 @@ func main() { flag.Parse() rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort) rpcServer.Run() + } diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 0238df400..02ea2aaa1 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -124,6 +124,16 @@ func GetGroupMemberList(c *gin.Context) { if len(memberListResp.MemberList) == 0 { memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} } + /* + jsm := &jsonpb.Marshaler{ + OrigName: true, + EnumsAsInts: false, + EmitDefaults: true, + } + + var b bytes.Buffer + err = jsm.MarshalToString(memberListResp.MemberList[0]) + */ log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp) c.JSON(http.StatusOK, memberListResp) } From 0c02afa54eaa9275629fe9c9133069d3b6770a9f Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 17:34:54 +0800 Subject: [PATCH 19/20] Refactor code --- cmd/open_im_api/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 8afb38d63..b38e452fc 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -56,7 +56,7 @@ func main() { groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1 - groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) + groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) //no use groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember) groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 From 79a39b39d9cab69aa4c8e633cf3c55cf08bf4dc2 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 30 Dec 2021 17:44:06 +0800 Subject: [PATCH 20/20] Refactor code --- internal/api/group/group.go | 9 ++++++--- internal/rpc/group/group.go | 2 +- pkg/base_info/group_api_struct.go | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 02ea2aaa1..6ce7412cd 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -146,7 +146,7 @@ func GetGroupAllMember(c *gin.Context) { return } req := &rpc.GetGroupAllMemberReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -165,9 +165,12 @@ func GetGroupAllMember(c *gin.Context) { return } - memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList} - c.JSON(http.StatusOK, memberListResp) + memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList} + if len(memberListResp.MemberList) == 0 { + memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} + } log.NewInfo(req.OperationID, "GetGroupAllMember api return ", memberListResp) + c.JSON(http.StatusOK, memberListResp) } func GetJoinedGroupList(c *gin.Context) { diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index e2327a78b..2af77fa97 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -261,7 +261,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro for _, v := range memberList { var node open_im_sdk.GroupMemberFullInfo - utils.CopyStructFields(node, v) + utils.CopyStructFields(&node, &v) resp.MemberList = append(resp.MemberList, &node) } log.NewInfo(req.OperationID, "GetGroupAllMember rpc return ", resp.String()) diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 3bfa090d5..a602b790f 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -69,7 +69,7 @@ type GetGroupAllMemberReq struct { } type GetGroupAllMemberResp struct { CommResp - Data []*open_im_sdk.GroupMemberFullInfo `json:"data"` + MemberList []*open_im_sdk.GroupMemberFullInfo `json:"data"` } type CreateGroupReq struct {