From d6d6afb788a2c7d5b486dd0cca00b7ea91427b0c Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Thu, 9 Feb 2023 19:40:45 +0800 Subject: [PATCH] group update batch --- cmd/open_im_api/docs/docs.go | 4 +- internal/api/auth/auth.go | 3 +- internal/api/friend/friend.go | 8 +- internal/api/group/group.go | 14 +- internal/api/group/super_group.go | 4 +- internal/api/manage/management_chat.go | 5 +- internal/api/office/work_moments.go | 3 +- internal/api/user/user.go | 3 +- internal/msggateway/gate/validate.go | 10 +- .../sdk/tpns-server-sdk-go/go/auth/auth.go | 2 +- internal/rpc/group/callback.go | 2 +- internal/rpc/group/db_map.go | 2 +- internal/rpc/group/group.go | 88 ++- pkg/apistruct/friend.go | 10 +- pkg/apistruct/group.go | 2 +- pkg/common/db/cache/conversation.go | 23 - pkg/common/db/cache/group.go | 45 +- pkg/common/db/cache/utils.go | 49 ++ pkg/common/db/controller/group.go | 39 +- pkg/common/log/file_line_hk.go | 2 +- pkg/proto/group/group.pb.go | 556 ++++++++---------- pkg/proto/group/group.proto | 18 +- 22 files changed, 426 insertions(+), 466 deletions(-) create mode 100644 pkg/common/db/cache/utils.go diff --git a/cmd/open_im_api/docs/docs.go b/cmd/open_im_api/docs/docs.go index 8b711dfe1..01f61ab1d 100644 --- a/cmd/open_im_api/docs/docs.go +++ b/cmd/open_im_api/docs/docs.go @@ -117,7 +117,7 @@ const docTemplate = `{ { "type": "object", "properties": { - "Data": { + "Map": { "$ref": "#/definitions/api_struct.ExpireTime" } } @@ -4369,7 +4369,7 @@ const docTemplate = `{ { "type": "object", "properties": { - "Data": { + "Map": { "type": "array", "items": { "$ref": "#/definitions/server_api_params.PublicUserInfo" diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index d699fbf63..a6148617a 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -6,7 +6,6 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/common/tokenverify" - "Open_IM/pkg/getcdv3" rpc "Open_IM/pkg/proto/auth" open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" @@ -149,7 +148,7 @@ func UserToken(c *gin.Context) { // @Param token header string true "im token" // @Param req body api.ParseTokenReq true "secret为openIM密钥, 详细见服务端config.yaml secret字段
platform为平台ID" // @Produce json -// @Success 0 {object} api.ParseTokenResp{Data=api.ExpireTime} +// @Success 0 {object} api.ParseTokenResp{Map=api.ExpireTime} // @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" // @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" // @Router /auth/parse_token [post] diff --git a/internal/api/friend/friend.go b/internal/api/friend/friend.go index 0c0fa3d60..b990b0f59 100644 --- a/internal/api/friend/friend.go +++ b/internal/api/friend/friend.go @@ -343,7 +343,7 @@ package friend // utils.CopyStructFields(&black, v) // resp.BlackUserInfoList = append(resp.BlackUserInfoList, &black) // } -// resp.Data = jsonData.JsonDataList(resp.BlackUserInfoList) +// resp.Map = jsonData.JsonDataList(resp.BlackUserInfoList) // log.NewInfo(req.CommID.OperationID, "GetBlacklist api return ", resp) // c.JSON(http.StatusOK, resp) //} @@ -561,7 +561,7 @@ package friend // } // // resp := api.GetFriendListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, FriendInfoList: RpcResp.FriendInfoList} -// resp.Data = jsonData.JsonDataList(resp.FriendInfoList) +// resp.Map = jsonData.JsonDataList(resp.FriendInfoList) // log.NewInfo(req.CommID.OperationID, "GetFriendList api return ", resp) // c.JSON(http.StatusOK, resp) // //c.JSON(http.StatusOK, resp) @@ -618,7 +618,7 @@ package friend // } // // resp := api.GetFriendApplyListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, FriendRequestList: RpcResp.FriendRequestList} -// resp.Data = jsonData.JsonDataList(resp.FriendRequestList) +// resp.Map = jsonData.JsonDataList(resp.FriendRequestList) // log.NewInfo(req.CommID.OperationID, "GetFriendApplyList api return ", resp) // c.JSON(http.StatusOK, resp) //} @@ -672,7 +672,7 @@ package friend // return // } // resp := api.GetSelfApplyListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, FriendRequestList: RpcResp.FriendRequestList} -// resp.Data = jsonData.JsonDataList(resp.FriendRequestList) +// resp.Map = jsonData.JsonDataList(resp.FriendRequestList) // log.NewInfo(req.CommID.OperationID, "GetSelfApplyList api return ", resp) // c.JSON(http.StatusOK, resp) //} diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 21811a7bc..014fa94b9 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -142,7 +142,7 @@ package group // } // // memberListResp := api.GetGroupMembersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList} -// memberListResp.Data = jsonData.JsonDataList(RpcResp.MemberList) +// memberListResp.Map = jsonData.JsonDataList(RpcResp.MemberList) // log.NewInfo(req.OperationID, "GetGroupMembersInfo api return ", memberListResp) // c.JSON(http.StatusOK, memberListResp) //} @@ -186,7 +186,7 @@ package group // } // // memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} -// memberListResp.Data = jsonData.JsonDataList(memberListResp.MemberList) +// memberListResp.Map = jsonData.JsonDataList(memberListResp.MemberList) // // log.NewInfo(req.OperationID, "FindGroupMemberAll api return ", memberListResp) // c.JSON(http.StatusOK, memberListResp) @@ -243,7 +243,7 @@ package group // } // // memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList} -// memberListResp.Data = jsonData.JsonDataList(memberListResp.MemberList) +// memberListResp.Map = jsonData.JsonDataList(memberListResp.MemberList) // log.NewInfo(req.OperationID, "GetGroupAllMember api return ", len(memberListResp.MemberList)) // c.JSON(http.StatusOK, memberListResp) //} @@ -298,7 +298,7 @@ package group // } // // GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, GroupInfoList: RpcResp.GroupList} -// GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList) +// GroupListResp.Map = jsonData.JsonDataList(GroupListResp.GroupInfoList) // log.NewInfo(req.OperationID, "FindJoinedGroup api return ", GroupListResp) // c.JSON(http.StatusOK, GroupListResp) //} @@ -437,7 +437,7 @@ package group //// resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} //// if RpcResp.ErrCode == 0 { //// utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo) -//// resp.Data = jsonData.JsonDataOne(&resp.GroupInfo) +//// resp.Map = jsonData.JsonDataOne(&resp.GroupInfo) //// } //// log.NewInfo(req.OperationID, "CreateGroup api return ", resp) //// c.JSON(http.StatusOK, resp) @@ -496,7 +496,7 @@ package group // } // // resp := api.GetGroupApplicationListResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}, GroupRequestList: reply.GroupRequestList} -// resp.Data = jsonData.JsonDataList(resp.GroupRequestList) +// resp.Map = jsonData.JsonDataList(resp.GroupRequestList) // log.NewInfo(req.OperationID, "GetGroupApplicationList api return ", resp) // c.JSON(http.StatusOK, resp) //} @@ -567,7 +567,7 @@ package group // } // // resp := api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, GroupInfoList: RpcResp.GroupInfoList} -// resp.Data = jsonData.JsonDataList(resp.GroupInfoList) +// resp.Map = jsonData.JsonDataList(resp.GroupInfoList) // log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp) // c.JSON(http.StatusOK, resp) //} diff --git a/internal/api/group/super_group.go b/internal/api/group/super_group.go index 5d6c9c2d7..10858d706 100644 --- a/internal/api/group/super_group.go +++ b/internal/api/group/super_group.go @@ -46,7 +46,7 @@ package group // return // } // GroupListResp := api.GetJoinedSuperGroupListResp{GetJoinedGroupListResp: api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupList}} -// GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList) +// GroupListResp.Map = jsonData.JsonDataList(GroupListResp.GroupInfoList) // log.NewInfo(req.OperationID, "GetJoinedSuperGroupList api return ", GroupListResp) // c.JSON(http.StatusOK, GroupListResp) //} @@ -83,7 +83,7 @@ package group // } // // resp := api.GetSuperGroupsInfoResp{GetGroupInfoResp: api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupInfoList}} -// resp.Data = jsonData.JsonDataList(resp.GroupInfoList) +// resp.Map = jsonData.JsonDataList(resp.GroupInfoList) // log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp) // c.JSON(http.StatusOK, resp) //} diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go index 8a06f6468..9c38231f7 100644 --- a/internal/api/manage/management_chat.go +++ b/internal/api/manage/management_chat.go @@ -13,7 +13,6 @@ import ( "Open_IM/pkg/common/db/mysql_model/im_mysql_model" "Open_IM/pkg/common/log" "Open_IM/pkg/common/tokenverify" - "Open_IM/pkg/getcdv3" pbChat "Open_IM/pkg/proto/msg" open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" @@ -165,7 +164,7 @@ func ManagementSendMsg(c *gin.Context) { } if err := mapstructure.WeakDecode(params.Content, &data); err != nil { c.JSON(http.StatusOK, gin.H{"errCode": 401, "errMsg": err.Error()}) - log.Error(c.PostForm("operationID"), "content to Data struct err", err.Error()) + log.Error(c.PostForm("operationID"), "content to Map struct err", err.Error()) return } else if err := validate.Struct(data); err != nil { c.JSON(http.StatusOK, gin.H{"errCode": 403, "errMsg": err.Error()}) @@ -298,7 +297,7 @@ func ManagementBatchSendMsg(c *gin.Context) { } if err := mapstructure.WeakDecode(params.Content, &data); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": err.Error()}) - log.Error(c.PostForm("operationID"), "content to Data struct err", err.Error()) + log.Error(c.PostForm("operationID"), "content to Map struct err", err.Error()) return } else if err := validate.Struct(data); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 403, "errMsg": err.Error()}) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index ab07fa0bd..89cf76782 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -5,7 +5,6 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/log" "Open_IM/pkg/common/tokenverify" - "Open_IM/pkg/getcdv3" pbOffice "Open_IM/pkg/proto/office" pbCommon "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" @@ -565,7 +564,7 @@ func GetUserFriendWorkMoments(c *gin.Context) { if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - //if err := utils.CopyStructFields(&resp.Data.WorkMoments, respPb.WorkMoments); err != nil { + //if err := utils.CopyStructFields(&resp.Map.WorkMoments, respPb.WorkMoments); err != nil { // log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) //} resp.Data.WorkMoments = []*api.WorkMoment{} diff --git a/internal/api/user/user.go b/internal/api/user/user.go index 5a0b39e01..837edba79 100644 --- a/internal/api/user/user.go +++ b/internal/api/user/user.go @@ -7,7 +7,6 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/common/tokenverify" - "Open_IM/pkg/getcdv3" cacheRpc "Open_IM/pkg/proto/cache" pbRelay "Open_IM/pkg/proto/relay" open_im_sdk "Open_IM/pkg/proto/sdk_ws" @@ -156,7 +155,7 @@ func GetBlackIDListFromCache(c *gin.Context) { // @Param token header string true "im token" // @Param req body api.GetUsersInfoReq true "请求体" // @Produce json -// @Success 0 {object} api.GetUsersInfoResp{Data=[]open_im_sdk.PublicUserInfo} +// @Success 0 {object} api.GetUsersInfoResp{Map=[]open_im_sdk.PublicUserInfo} // @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" // @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" // @Router /user/get_users_info [post] diff --git a/internal/msggateway/gate/validate.go b/internal/msggateway/gate/validate.go index 51a665122..cbe986d93 100644 --- a/internal/msggateway/gate/validate.go +++ b/internal/msggateway/gate/validate.go @@ -62,7 +62,7 @@ func (ws *WServer) argsValidate(m *Req, r int32, operationID string) (isPass boo case constant.WSGetNewestSeq: data := open_im_sdk.GetMaxAndMinSeqReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.Error(operationID, "Decode Data struct err", err.Error(), r) + log.Error(operationID, "Decode Map struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { @@ -74,7 +74,7 @@ func (ws *WServer) argsValidate(m *Req, r int32, operationID string) (isPass boo case constant.WSSendMsg: data := open_im_sdk.MsgData{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.Error(operationID, "Decode Data struct err", err.Error(), r) + log.Error(operationID, "Decode Map struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { @@ -86,7 +86,7 @@ func (ws *WServer) argsValidate(m *Req, r int32, operationID string) (isPass boo case constant.WSSendSignalMsg: data := pbRtc.SignalReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.Error(operationID, "Decode Data struct err", err.Error(), r) + log.Error(operationID, "Decode Map struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { @@ -98,7 +98,7 @@ func (ws *WServer) argsValidate(m *Req, r int32, operationID string) (isPass boo case constant.WSPullMsgBySeqList: data := open_im_sdk.PullMessageBySeqListReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.Error(operationID, "Decode Data struct err", err.Error(), r) + log.Error(operationID, "Decode Map struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { @@ -110,7 +110,7 @@ func (ws *WServer) argsValidate(m *Req, r int32, operationID string) (isPass boo case constant.WsSetBackgroundStatus: data := open_im_sdk.SetAppBackgroundStatusReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.Error(operationID, "Decode Data struct err", err.Error(), r) + log.Error(operationID, "Decode Map struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { diff --git a/internal/push/sdk/tpns-server-sdk-go/go/auth/auth.go b/internal/push/sdk/tpns-server-sdk-go/go/auth/auth.go index 5b8a486b0..0a3c07531 100644 --- a/internal/push/sdk/tpns-server-sdk-go/go/auth/auth.go +++ b/internal/push/sdk/tpns-server-sdk-go/go/auth/auth.go @@ -49,7 +49,7 @@ func GenSign(timeStamp uint64, accessId string, secretKey, requestBody string) s signBody := strconv.Itoa(int(timeStamp)) + accessId + requestBody // Create a new HMAC by defining the hash type and the key (as byte array) h := hmac.New(sha256.New, []byte(secretKey)) - // Write Data to it + // Write Map to it h.Write([]byte(signBody)) // Get result and encode as hexadecimal string diff --git a/internal/rpc/group/callback.go b/internal/rpc/group/callback.go index e60186d8b..b437e8702 100644 --- a/internal/rpc/group/callback.go +++ b/internal/rpc/group/callback.go @@ -119,7 +119,7 @@ func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, grou return err } -func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (err error) { +func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfo) (err error) { defer func() { tracelog.SetCtxInfo(ctx, utils.GetFuncName(1), err, "req", *req) }() diff --git a/internal/rpc/group/db_map.go b/internal/rpc/group/db_map.go index ebdf9a8f0..2393cfc75 100644 --- a/internal/rpc/group/db_map.go +++ b/internal/rpc/group/db_map.go @@ -44,7 +44,7 @@ func UpdateGroupMemberMutedTimeMap(t time.Time) map[string]any { } } -func UpdateGroupMemberMap(req *pbGroup.SetGroupMemberInfoReq) map[string]any { +func UpdateGroupMemberMap(req *pbGroup.SetGroupMemberInfo) map[string]any { m := make(map[string]any) if req.Nickname != nil { m["nickname"] = req.Nickname.Value diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 9ab8067c7..d7d65e069 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -30,7 +30,6 @@ import ( "github.com/OpenIMSDK/openKeeper" "google.golang.org/grpc" - "google.golang.org/protobuf/types/known/wrapperspb" ) type groupServer struct { @@ -951,50 +950,79 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu return resp, nil } -func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.SetGroupMemberNicknameReq) (*pbGroup.SetGroupMemberNicknameResp, error) { - _, err := s.SetGroupMemberInfo(ctx, &pbGroup.SetGroupMemberInfoReq{GroupID: req.GroupID, UserID: req.UserID, Nickname: wrapperspb.String(req.Nickname)}) - if err != nil { - return nil, err - } - return &pbGroup.SetGroupMemberNicknameResp{}, nil -} - func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (*pbGroup.SetGroupMemberInfoResp, error) { resp := &pbGroup.SetGroupMemberInfoResp{} - if req.RoleLevel != nil && req.RoleLevel.Value == constant.GroupOwner { - return nil, constant.ErrNoPermission.Wrap("set group owner") + if len(req.Members) == 0 { + return nil, constant.ErrArgs.Wrap("members empty") } - group, err := s.GroupInterface.TakeGroup(ctx, req.GroupID) + duplicateMap := make(map[[2]string]struct{}) + userIDMap := make(map[string]struct{}) + groupIDMap := make(map[string]struct{}) + for _, member := range req.Members { + key := [...]string{member.GroupID, member.UserID} + if _, ok := duplicateMap[key]; ok { + return nil, constant.ErrArgs.Wrap("group user duplicate") + } + duplicateMap[key] = struct{}{} + userIDMap[member.UserID] = struct{}{} + groupIDMap[member.GroupID] = struct{}{} + } + groupIDs := utils.Keys(groupIDMap) + userIDs := utils.Keys(userIDMap) + members, err := s.GroupInterface.FindGroupMember(ctx, groupIDs, append(userIDs, tracelog.GetOpUserID(ctx)), nil) if err != nil { return nil, err } - if group.Status == constant.GroupStatusDismissed { - return nil, constant.ErrArgs.Wrap("group status is dismissed") + for _, member := range members { + delete(duplicateMap, [...]string{member.GroupID, member.UserID}) } - member, err := s.GroupInterface.TakeGroupMember(ctx, req.GroupID, req.UserID) - if err != nil { - return nil, err + if len(duplicateMap) > 0 { + return nil, constant.ErrArgs.Wrap("group not found or user not in group") } - if tracelog.GetOpUserID(ctx) == req.UserID { - if req.RoleLevel != nil { - return nil, constant.ErrArgs.Wrap("update role level") + memberMap := utils.SliceToMap(members, func(e *relationTb.GroupMemberModel) [2]string { + return [...]string{e.GroupID, e.UserID} + }) + if !tokenverify.IsAppManagerUid(ctx) { + opUserID := tracelog.GetOpUserID(ctx) + for _, member := range members { + if member.UserID == opUserID { + continue + } + opMember, ok := memberMap[[...]string{member.GroupID, member.UserID}] + if !ok { + return nil, constant.ErrArgs.Wrap(fmt.Sprintf("user %s not in group %s", opUserID, member.GroupID)) + } + if member.RoleLevel >= opMember.RoleLevel { + return nil, constant.ErrNoPermission.Wrap(fmt.Sprintf("group %s : %s RoleLevel %d >= %s RoleLevel %d", member.GroupID, member.UserID, member.RoleLevel, opMember.UserID, opMember.RoleLevel)) + } } - } else if !tokenverify.IsAppManagerUid(ctx) { - opMember, err := s.GroupInterface.TakeGroupMember(ctx, req.GroupID, tracelog.GetOpUserID(ctx)) - if err != nil { - return nil, err + } + for _, member := range req.Members { + if member.RoleLevel == nil { + continue } - if opMember.RoleLevel <= member.RoleLevel { - return nil, constant.ErrNoPermission.Wrap(fmt.Sprintf("self RoleLevel %d target %d", opMember.RoleLevel, member.RoleLevel)) + if memberMap[[...]string{member.GroupID, member.UserID}].RoleLevel == constant.GroupOwner { + return nil, constant.ErrArgs.Wrap(fmt.Sprintf("group %s user %s is owner", member.GroupID, member.UserID)) } } - if err := CallbackBeforeSetGroupMemberInfo(ctx, req); err != nil { - return nil, err + for i := 0; i < len(req.Members); i++ { + if err := CallbackBeforeSetGroupMemberInfo(ctx, req.Members[i]); err != nil { + return nil, err + } } - if err := s.GroupInterface.UpdateGroupMember(ctx, req.GroupID, req.UserID, UpdateGroupMemberMap(req)); err != nil { + err = s.GroupInterface.UpdateGroupMembers(ctx, utils.Slice(req.Members, func(e *pbGroup.SetGroupMemberInfo) *controller.BatchUpdateGroupMember { + return &controller.BatchUpdateGroupMember{ + GroupID: e.GroupID, + UserID: e.UserID, + Map: UpdateGroupMemberMap(e), + } + })) + if err != nil { return nil, err } - chat.GroupMemberInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID) + for _, member := range req.Members { + chat.GroupMemberInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), member.GroupID, member.UserID) + } return resp, nil } diff --git a/pkg/apistruct/friend.go b/pkg/apistruct/friend.go index 9558e69c5..746753c4a 100644 --- a/pkg/apistruct/friend.go +++ b/pkg/apistruct/friend.go @@ -58,7 +58,7 @@ package apistruct //type GetBlackListResp struct { // CommResp // BlackUserInfoList []*open_im_sdk.PublicUserInfo `json:"-"` -// Data []map[string]interface{} `json:"data" swaggerignore:"true"` +// Map []map[string]interface{} `json:"data" swaggerignore:"true"` //} // ////type PublicUserInfo struct { @@ -100,7 +100,7 @@ package apistruct //type GetFriendsInfoResp struct { // CommResp // FriendInfoList []*open_im_sdk.FriendInfo `json:"-"` -// Data []map[string]interface{} `json:"data" swaggerignore:"true"` +// Map []map[string]interface{} `json:"data" swaggerignore:"true"` //} // //type GetFriendListReq struct { @@ -110,7 +110,7 @@ package apistruct //type GetFriendListResp struct { // CommResp // FriendInfoList []*open_im_sdk.FriendInfo `json:"-"` -// Data []map[string]interface{} `json:"data" swaggerignore:"true"` +// Map []map[string]interface{} `json:"data" swaggerignore:"true"` //} // //type GetFriendApplyListReq struct { @@ -120,7 +120,7 @@ package apistruct //type GetFriendApplyListResp struct { // CommResp // FriendRequestList []*open_im_sdk.FriendRequest `json:"-"` -// Data []map[string]interface{} `json:"data" swaggerignore:"true"` +// Map []map[string]interface{} `json:"data" swaggerignore:"true"` //} // //type GetSelfApplyListReq struct { @@ -130,7 +130,7 @@ package apistruct //type GetSelfApplyListResp struct { // CommResp // FriendRequestList []*open_im_sdk.FriendRequest `json:"-"` -// Data []map[string]interface{} `json:"data" swaggerignore:"true"` +// Map []map[string]interface{} `json:"data" swaggerignore:"true"` //} type FriendInfo struct { diff --git a/pkg/apistruct/group.go b/pkg/apistruct/group.go index e799204fc..0bdf9b4c4 100644 --- a/pkg/apistruct/group.go +++ b/pkg/apistruct/group.go @@ -92,7 +92,7 @@ type GetGroupAllMemberResp struct { //type GetGroupAllMemberListBySplitResp struct { // CommResp // MemberList []*open_im_sdk.GroupMemberFullInfo `json:"-"` -// Data []map[string]interface{} `json:"data" swaggerignore:"true"` +// Map []map[string]interface{} `json:"data" swaggerignore:"true"` //} type CreateGroupReq struct { diff --git a/pkg/common/db/cache/conversation.go b/pkg/common/db/cache/conversation.go index 65681edb7..4d40143a1 100644 --- a/pkg/common/db/cache/conversation.go +++ b/pkg/common/db/cache/conversation.go @@ -148,29 +148,6 @@ func (c *ConversationRedis) GetUserConversationIDs1(ctx context.Context, ownerUs // return t, nil //} -func GetCache[T any](ctx context.Context, rcClient *rockscache.Client, key string, expire time.Duration, fn func(ctx context.Context) (T, error)) (T, error) { - v, err := rcClient.Fetch(key, expire, func() (string, error) { - v, err := fn(ctx) - if err != nil { - return "", err - } - bs, err := json.Marshal(v) - if err != nil { - return "", utils.Wrap(err, "") - } - return string(bs), nil - }) - var t T - if err != nil { - return t, err - } - err = json.Unmarshal([]byte(v), &t) - if err != nil { - return t, utils.Wrap(err, "") - } - return t, nil -} - func (c *ConversationRedis) DelUserConversationIDs(ctx context.Context, ownerUserID string) (err error) { defer func() { tracelog.SetCtxDebug(ctx, utils.GetFuncName(1), err, "ownerUserID", ownerUserID) diff --git a/pkg/common/db/cache/group.go b/pkg/common/db/cache/group.go index 58746ac34..2b9c2c04e 100644 --- a/pkg/common/db/cache/group.go +++ b/pkg/common/db/cache/group.go @@ -56,16 +56,16 @@ type GroupCache interface { } type GroupCacheRedis struct { - group *relation.GroupGorm - groupMember *relation.GroupMemberGorm - groupRequest *relation.GroupRequestGorm + group relationTb.GroupModelInterface + groupMember relationTb.GroupMemberModelInterface + groupRequest relationTb.GroupRequestModelInterface mongoDB *unrelation.SuperGroupMongoDriver expireTime time.Duration redisClient *RedisClient rcClient *rockscache.Client } -func NewGroupCacheRedis(rdb redis.UniversalClient, groupDB *relation.GroupGorm, groupMemberDB *relation.GroupMemberGorm, groupRequestDB *relation.GroupRequestGorm, mongoClient *unrelation.SuperGroupMongoDriver, opts rockscache.Options) *GroupCacheRedis { +func NewGroupCacheRedis(rdb redis.UniversalClient, groupDB relationTb.GroupModelInterface, groupMemberDB relationTb.GroupMemberModelInterface, groupRequestDB relationTb.GroupRequestModelInterface, mongoClient *unrelation.SuperGroupMongoDriver, opts rockscache.Options) *GroupCacheRedis { return &GroupCacheRedis{rcClient: rockscache.NewClient(rdb, opts), expireTime: groupExpireTime, group: groupDB, groupMember: groupMemberDB, groupRequest: groupRequestDB, redisClient: NewRedisClient(rdb), mongoDB: mongoClient, @@ -105,39 +105,16 @@ func (g *GroupCacheRedis) getGroupMemberNumKey(groupID string) string { } // / groupInfo -func (g *GroupCacheRedis) GetGroupsInfo(ctx context.Context, groupIDs []string) (groups []*relation.Group, err error) { - for _, groupID := range groupIDs { - group, err := g.GetGroupInfo(ctx, groupID) - if err != nil { - return nil, err - } - groups = append(groups, group) - } - return groups, nil +func (g *GroupCacheRedis) GetGroupsInfo(ctx context.Context, groupIDs []string) (groups []*relationTb.GroupModel, err error) { + return GetCacheFor(ctx, g.rcClient, groupIDs, func(ctx context.Context, groupID string) (*relationTb.GroupModel, error) { + return g.GetGroupInfo(ctx, groupID) + }) } func (g *GroupCacheRedis) GetGroupInfo(ctx context.Context, groupID string) (group *relationTb.GroupModel, err error) { - getGroup := func() (string, error) { - groupInfo, err := g.group.Take(ctx, groupID) - if err != nil { - return "", utils.Wrap(err, "") - } - bytes, err := json.Marshal(groupInfo) - if err != nil { - return "", utils.Wrap(err, "") - } - return string(bytes), nil - } - group = &relationTb.GroupModel{} - defer func() { - tracelog.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupID", groupID, "group", *group) - }() - groupStr, err := g.rcClient.Fetch(g.getGroupInfoKey(groupID), g.expireTime, getGroup) - if err != nil { - return nil, err - } - err = json.Unmarshal([]byte(groupStr), group) - return group, utils.Wrap(err, "") + return GetCache(ctx, g.rcClient, g.getGroupInfoKey(groupID), g.expireTime, func(ctx context.Context) (*relationTb.GroupModel, error) { + return g.group.Take(ctx, groupID) + }) } func (g *GroupCacheRedis) DelGroupInfo(ctx context.Context, groupID string) (err error) { diff --git a/pkg/common/db/cache/utils.go b/pkg/common/db/cache/utils.go new file mode 100644 index 000000000..237ee07f8 --- /dev/null +++ b/pkg/common/db/cache/utils.go @@ -0,0 +1,49 @@ +package cache + +import ( + "Open_IM/pkg/utils" + "context" + "encoding/json" + "github.com/dtm-labs/rockscache" + "time" +) + +func GetCache[T any](ctx context.Context, rcClient *rockscache.Client, key string, expire time.Duration, fn func(ctx context.Context) (T, error)) (T, error) { + var t T + var write bool + v, err := rcClient.Fetch(key, expire, func() (s string, err error) { + t, err = fn(ctx) + if err != nil { + return "", err + } + bs, err := json.Marshal(t) + if err != nil { + return "", utils.Wrap(err, "") + } + write = true + return string(bs), nil + }) + if err != nil { + return t, err + } + if write { + return t, nil + } + err = json.Unmarshal([]byte(v), &t) + if err != nil { + return t, utils.Wrap(err, "") + } + return t, nil +} + +func GetCacheFor[E any, T any](ctx context.Context, rcClient *rockscache.Client, list []E, fn func(ctx context.Context, item E) (T, error)) ([]T, error) { + rs := make([]T, 0, len(list)) + for _, e := range list { + r, err := fn(ctx, e) + if err != nil { + return nil, err + } + rs = append(rs, r) + } + return rs, nil +} diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index f84857625..4edb6e4fa 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -19,6 +19,12 @@ import ( //type GroupInterface GroupDataBaseInterface +type BatchUpdateGroupMember struct { + GroupID string + UserID string + Map map[string]any +} + type GroupInterface interface { CreateGroup(ctx context.Context, groups []*relationTb.GroupModel, groupMembers []*relationTb.GroupMemberModel) error TakeGroup(ctx context.Context, groupID string) (group *relationTb.GroupModel, err error) @@ -38,7 +44,8 @@ type GroupInterface interface { MapGroupMemberUserID(ctx context.Context, groupIDs []string) (map[string][]string, error) MapGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]uint32, error) TransferGroupOwner(ctx context.Context, groupID string, oldOwnerUserID, newOwnerUserID string, roleLevel int32) error // 转让群 - UpdateGroupMember(ctx context.Context, groupID, userID string, data map[string]any) error + UpdateGroupMember(ctx context.Context, groupID string, userID string, data map[string]any) error + UpdateGroupMembers(ctx context.Context, data []*BatchUpdateGroupMember) error // GroupRequest CreateGroupRequest(ctx context.Context, requests []*relationTb.GroupRequestModel) error TakeGroupRequest(ctx context.Context, groupID string, userID string) (*relationTb.GroupRequestModel, error) @@ -130,7 +137,11 @@ func (g *GroupController) TransferGroupOwner(ctx context.Context, groupID string return g.database.TransferGroupOwner(ctx, groupID, oldOwnerUserID, newOwnerUserID, roleLevel) } -func (g *GroupController) UpdateGroupMember(ctx context.Context, groupID, userID string, data map[string]any) error { +func (g *GroupController) UpdateGroupMembers(ctx context.Context, data []*BatchUpdateGroupMember) error { + return g.database.UpdateGroupMembers(ctx, data) +} + +func (g *GroupController) UpdateGroupMember(ctx context.Context, groupID string, userID string, data map[string]any) error { return g.database.UpdateGroupMember(ctx, groupID, userID, data) } @@ -146,9 +157,6 @@ func (g *GroupController) PageGroupRequestUser(ctx context.Context, userID strin return g.database.PageGroupRequestUser(ctx, userID, pageNumber, showNumber) } -// func (g *GroupController) TakeSuperGroup(ctx context.Context, groupID string) (superGroup *unrelationTb.SuperGroupModel, err error) { -// return g.database.TakeSuperGroup(ctx, groupID) -// } func (g *GroupController) FindSuperGroup(ctx context.Context, groupIDs []string) ([]*unrelationTb.SuperGroupModel, error) { return g.database.FindSuperGroup(ctx, groupIDs) } @@ -192,7 +200,8 @@ type GroupDataBaseInterface interface { MapGroupMemberUserID(ctx context.Context, groupIDs []string) (map[string][]string, error) MapGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]uint32, error) TransferGroupOwner(ctx context.Context, groupID string, oldOwnerUserID, newOwnerUserID string, roleLevel int32) error // 转让群 - UpdateGroupMember(ctx context.Context, groupID, userID string, data map[string]any) error + UpdateGroupMember(ctx context.Context, groupID string, userID string, data map[string]any) error + UpdateGroupMembers(ctx context.Context, data []*BatchUpdateGroupMember) error // GroupRequest CreateGroupRequest(ctx context.Context, requests []*relationTb.GroupRequestModel) error TakeGroupRequest(ctx context.Context, groupID string, userID string) (*relationTb.GroupRequestModel, error) @@ -217,7 +226,7 @@ func NewGroupDatabase(db *gorm.DB, rdb redis.UniversalClient, mgoClient *mongo.C groupMemberDB: groupMemberDB, groupRequestDB: groupRequestDB, db: &newDB, - cache: cache.NewGroupCache(rdb, groupDB, groupMemberDB, groupRequestDB, SuperGroupMongoDriver, rockscache.Options{ + cache: cache.NewGroupCacheRedis(rdb, groupDB, groupMemberDB, groupRequestDB, SuperGroupMongoDriver, rockscache.Options{ RandomExpireAdjustment: 0.2, DisableCacheRead: false, DisableCacheDelete: false, @@ -408,7 +417,7 @@ func (g *GroupDataBase) TransferGroupOwner(ctx context.Context, groupID string, }) } -func (g *GroupDataBase) UpdateGroupMember(ctx context.Context, groupID, userID string, data map[string]any) error { +func (g *GroupDataBase) UpdateGroupMember(ctx context.Context, groupID string, userID string, data map[string]any) error { return g.db.Transaction(func(tx *gorm.DB) error { if err := g.groupMemberDB.Update(ctx, groupID, userID, data, tx); err != nil { return err @@ -420,6 +429,20 @@ func (g *GroupDataBase) UpdateGroupMember(ctx context.Context, groupID, userID s }) } +func (g *GroupDataBase) UpdateGroupMembers(ctx context.Context, data []*BatchUpdateGroupMember) error { + return g.db.Transaction(func(tx *gorm.DB) error { + for _, item := range data { + if err := g.groupMemberDB.Update(ctx, item.GroupID, item.UserID, item.Map, tx); err != nil { + return err + } + if err := g.cache.DelGroupMemberInfo(ctx, item.GroupID, item.UserID); err != nil { + return err + } + } + return nil + }) +} + func (g *GroupDataBase) CreateGroupRequest(ctx context.Context, requests []*relationTb.GroupRequestModel) error { return g.groupRequestDB.Create(ctx, requests) } diff --git a/pkg/common/log/file_line_hk.go b/pkg/common/log/file_line_hk.go index 1a609d9be..793d10c06 100644 --- a/pkg/common/log/file_line_hk.go +++ b/pkg/common/log/file_line_hk.go @@ -24,7 +24,7 @@ func (f *fileHook) Levels() []logrus.Level { } //func (f *fileHook) Fire(entry *logrus.Entry) error { -// entry.Data["FilePath"] = findCaller(6) +// entry.Map["FilePath"] = findCaller(6) // utils.GetSelfFuncName() // return nil //} diff --git a/pkg/proto/group/group.pb.go b/pkg/proto/group/group.pb.go index 4a54cc4ee..6de5b0628 100644 --- a/pkg/proto/group/group.pb.go +++ b/pkg/proto/group/group.pb.go @@ -39,7 +39,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} } func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) } func (*CreateGroupReq) ProtoMessage() {} func (*CreateGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{0} + return fileDescriptor_group_b971ad66a8171801, []int{0} } func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b) @@ -98,7 +98,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} } func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) } func (*CreateGroupResp) ProtoMessage() {} func (*CreateGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{1} + return fileDescriptor_group_b971ad66a8171801, []int{1} } func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b) @@ -136,7 +136,7 @@ func (m *GetGroupsInfoReq) Reset() { *m = GetGroupsInfoReq{} } func (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupsInfoReq) ProtoMessage() {} func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{2} + return fileDescriptor_group_b971ad66a8171801, []int{2} } func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b) @@ -174,7 +174,7 @@ func (m *GetGroupsInfoResp) Reset() { *m = GetGroupsInfoResp{} } func (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupsInfoResp) ProtoMessage() {} func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{3} + return fileDescriptor_group_b971ad66a8171801, []int{3} } func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b) @@ -212,7 +212,7 @@ func (m *SetGroupInfoReq) Reset() { *m = SetGroupInfoReq{} } func (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) } func (*SetGroupInfoReq) ProtoMessage() {} func (*SetGroupInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{4} + return fileDescriptor_group_b971ad66a8171801, []int{4} } func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b) @@ -249,7 +249,7 @@ func (m *SetGroupInfoResp) Reset() { *m = SetGroupInfoResp{} } func (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) } func (*SetGroupInfoResp) ProtoMessage() {} func (*SetGroupInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{5} + return fileDescriptor_group_b971ad66a8171801, []int{5} } func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b) @@ -281,7 +281,7 @@ func (m *GetGroupApplicationListReq) Reset() { *m = GetGroupApplicationL func (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) } func (*GetGroupApplicationListReq) ProtoMessage() {} func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{6} + return fileDescriptor_group_b971ad66a8171801, []int{6} } func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b) @@ -327,7 +327,7 @@ func (m *GetGroupApplicationListResp) Reset() { *m = GetGroupApplication func (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) } func (*GetGroupApplicationListResp) ProtoMessage() {} func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{7} + return fileDescriptor_group_b971ad66a8171801, []int{7} } func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b) @@ -373,7 +373,7 @@ func (m *GetUserReqApplicationListReq) Reset() { *m = GetUserReqApplicat func (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) } func (*GetUserReqApplicationListReq) ProtoMessage() {} func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{8} + return fileDescriptor_group_b971ad66a8171801, []int{8} } func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b) @@ -419,7 +419,7 @@ func (m *GetUserReqApplicationListResp) Reset() { *m = GetUserReqApplica func (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) } func (*GetUserReqApplicationListResp) ProtoMessage() {} func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{9} + return fileDescriptor_group_b971ad66a8171801, []int{9} } func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b) @@ -466,7 +466,7 @@ func (m *TransferGroupOwnerReq) Reset() { *m = TransferGroupOwnerReq{} } func (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) } func (*TransferGroupOwnerReq) ProtoMessage() {} func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{10} + return fileDescriptor_group_b971ad66a8171801, []int{10} } func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b) @@ -517,7 +517,7 @@ func (m *TransferGroupOwnerResp) Reset() { *m = TransferGroupOwnerResp{} func (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) } func (*TransferGroupOwnerResp) ProtoMessage() {} func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{11} + return fileDescriptor_group_b971ad66a8171801, []int{11} } func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b) @@ -551,7 +551,7 @@ func (m *JoinGroupReq) Reset() { *m = JoinGroupReq{} } func (m *JoinGroupReq) String() string { return proto.CompactTextString(m) } func (*JoinGroupReq) ProtoMessage() {} func (*JoinGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{12} + return fileDescriptor_group_b971ad66a8171801, []int{12} } func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b) @@ -609,7 +609,7 @@ func (m *JoinGroupResp) Reset() { *m = JoinGroupResp{} } func (m *JoinGroupResp) String() string { return proto.CompactTextString(m) } func (*JoinGroupResp) ProtoMessage() {} func (*JoinGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{13} + return fileDescriptor_group_b971ad66a8171801, []int{13} } func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b) @@ -643,7 +643,7 @@ func (m *GroupApplicationResponseReq) Reset() { *m = GroupApplicationRes func (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) } func (*GroupApplicationResponseReq) ProtoMessage() {} func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{14} + return fileDescriptor_group_b971ad66a8171801, []int{14} } func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b) @@ -701,7 +701,7 @@ func (m *GroupApplicationResponseResp) Reset() { *m = GroupApplicationRe func (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) } func (*GroupApplicationResponseResp) ProtoMessage() {} func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{15} + return fileDescriptor_group_b971ad66a8171801, []int{15} } func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b) @@ -732,7 +732,7 @@ func (m *QuitGroupReq) Reset() { *m = QuitGroupReq{} } func (m *QuitGroupReq) String() string { return proto.CompactTextString(m) } func (*QuitGroupReq) ProtoMessage() {} func (*QuitGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{16} + return fileDescriptor_group_b971ad66a8171801, []int{16} } func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b) @@ -769,7 +769,7 @@ func (m *QuitGroupResp) Reset() { *m = QuitGroupResp{} } func (m *QuitGroupResp) String() string { return proto.CompactTextString(m) } func (*QuitGroupResp) ProtoMessage() {} func (*QuitGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{17} + return fileDescriptor_group_b971ad66a8171801, []int{17} } func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b) @@ -802,7 +802,7 @@ func (m *GetGroupMemberListReq) Reset() { *m = GetGroupMemberListReq{} } func (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberListReq) ProtoMessage() {} func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{18} + return fileDescriptor_group_b971ad66a8171801, []int{18} } func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b) @@ -855,7 +855,7 @@ func (m *GetGroupMemberListResp) Reset() { *m = GetGroupMemberListResp{} func (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberListResp) ProtoMessage() {} func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{19} + return fileDescriptor_group_b971ad66a8171801, []int{19} } func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b) @@ -901,7 +901,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{} func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersInfoReq) ProtoMessage() {} func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{20} + return fileDescriptor_group_b971ad66a8171801, []int{20} } func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b) @@ -946,7 +946,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersInfoResp) ProtoMessage() {} func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{21} + return fileDescriptor_group_b971ad66a8171801, []int{21} } func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b) @@ -986,7 +986,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} } func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*KickGroupMemberReq) ProtoMessage() {} func (*KickGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{22} + return fileDescriptor_group_b971ad66a8171801, []int{22} } func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b) @@ -1037,7 +1037,7 @@ func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} } func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*KickGroupMemberResp) ProtoMessage() {} func (*KickGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{23} + return fileDescriptor_group_b971ad66a8171801, []int{23} } func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b) @@ -1069,7 +1069,7 @@ func (m *GetJoinedGroupListReq) Reset() { *m = GetJoinedGroupListReq{} } func (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) } func (*GetJoinedGroupListReq) ProtoMessage() {} func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{24} + return fileDescriptor_group_b971ad66a8171801, []int{24} } func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b) @@ -1115,7 +1115,7 @@ func (m *GetJoinedGroupListResp) Reset() { *m = GetJoinedGroupListResp{} func (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) } func (*GetJoinedGroupListResp) ProtoMessage() {} func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{25} + return fileDescriptor_group_b971ad66a8171801, []int{25} } func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b) @@ -1162,7 +1162,7 @@ func (m *InviteUserToGroupReq) Reset() { *m = InviteUserToGroupReq{} } func (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) } func (*InviteUserToGroupReq) ProtoMessage() {} func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{26} + return fileDescriptor_group_b971ad66a8171801, []int{26} } func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b) @@ -1213,7 +1213,7 @@ func (m *InviteUserToGroupResp) Reset() { *m = InviteUserToGroupResp{} } func (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) } func (*InviteUserToGroupResp) ProtoMessage() {} func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{27} + return fileDescriptor_group_b971ad66a8171801, []int{27} } func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b) @@ -1245,7 +1245,7 @@ func (m *GetGroupAllMemberReq) Reset() { *m = GetGroupAllMemberReq{} } func (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) } func (*GetGroupAllMemberReq) ProtoMessage() {} func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{28} + return fileDescriptor_group_b971ad66a8171801, []int{28} } func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b) @@ -1290,7 +1290,7 @@ func (m *GetGroupAllMemberResp) Reset() { *m = GetGroupAllMemberResp{} } func (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) } func (*GetGroupAllMemberResp) ProtoMessage() {} func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{29} + return fileDescriptor_group_b971ad66a8171801, []int{29} } func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b) @@ -1330,7 +1330,7 @@ func (m *CMSGroup) Reset() { *m = CMSGroup{} } func (m *CMSGroup) String() string { return proto.CompactTextString(m) } func (*CMSGroup) ProtoMessage() {} func (*CMSGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{30} + return fileDescriptor_group_b971ad66a8171801, []int{30} } func (m *CMSGroup) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CMSGroup.Unmarshal(m, b) @@ -1384,7 +1384,7 @@ func (m *GetGroupsReq) Reset() { *m = GetGroupsReq{} } func (m *GetGroupsReq) String() string { return proto.CompactTextString(m) } func (*GetGroupsReq) ProtoMessage() {} func (*GetGroupsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{31} + return fileDescriptor_group_b971ad66a8171801, []int{31} } func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b) @@ -1437,7 +1437,7 @@ func (m *GetGroupsResp) Reset() { *m = GetGroupsResp{} } func (m *GetGroupsResp) String() string { return proto.CompactTextString(m) } func (*GetGroupsResp) ProtoMessage() {} func (*GetGroupsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{32} + return fileDescriptor_group_b971ad66a8171801, []int{32} } func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b) @@ -1482,7 +1482,7 @@ func (m *GetGroupMemberReq) Reset() { *m = GetGroupMemberReq{} } func (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberReq) ProtoMessage() {} func (*GetGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{33} + return fileDescriptor_group_b971ad66a8171801, []int{33} } func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b) @@ -1522,7 +1522,7 @@ func (m *GetGroupMembersCMSReq) Reset() { *m = GetGroupMembersCMSReq{} } func (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersCMSReq) ProtoMessage() {} func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{34} + return fileDescriptor_group_b971ad66a8171801, []int{34} } func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b) @@ -1575,7 +1575,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{} func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersCMSResp) ProtoMessage() {} func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{35} + return fileDescriptor_group_b971ad66a8171801, []int{35} } func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b) @@ -1620,7 +1620,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} } func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) } func (*DismissGroupReq) ProtoMessage() {} func (*DismissGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{36} + return fileDescriptor_group_b971ad66a8171801, []int{36} } func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b) @@ -1657,7 +1657,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} } func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) } func (*DismissGroupResp) ProtoMessage() {} func (*DismissGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{37} + return fileDescriptor_group_b971ad66a8171801, []int{37} } func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b) @@ -1690,7 +1690,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} } func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*MuteGroupMemberReq) ProtoMessage() {} func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{38} + return fileDescriptor_group_b971ad66a8171801, []int{38} } func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b) @@ -1741,7 +1741,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} } func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*MuteGroupMemberResp) ProtoMessage() {} func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{39} + return fileDescriptor_group_b971ad66a8171801, []int{39} } func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b) @@ -1773,7 +1773,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupMemberReq) ProtoMessage() {} func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{40} + return fileDescriptor_group_b971ad66a8171801, []int{40} } func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b) @@ -1817,7 +1817,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupMemberResp) ProtoMessage() {} func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{41} + return fileDescriptor_group_b971ad66a8171801, []int{41} } func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b) @@ -1848,7 +1848,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} } func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) } func (*MuteGroupReq) ProtoMessage() {} func (*MuteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{42} + return fileDescriptor_group_b971ad66a8171801, []int{42} } func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b) @@ -1885,7 +1885,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} } func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) } func (*MuteGroupResp) ProtoMessage() {} func (*MuteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{43} + return fileDescriptor_group_b971ad66a8171801, []int{43} } func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b) @@ -1916,7 +1916,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} } func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupReq) ProtoMessage() {} func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{44} + return fileDescriptor_group_b971ad66a8171801, []int{44} } func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b) @@ -1953,7 +1953,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} } func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupResp) ProtoMessage() {} func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{45} + return fileDescriptor_group_b971ad66a8171801, []int{45} } func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b) @@ -1973,90 +1973,6 @@ func (m *CancelMuteGroupResp) XXX_DiscardUnknown() { var xxx_messageInfo_CancelMuteGroupResp proto.InternalMessageInfo -type SetGroupMemberNicknameReq struct { - GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` - Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` - UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknameReq{} } -func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) } -func (*SetGroupMemberNicknameReq) ProtoMessage() {} -func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{46} -} -func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b) -} -func (m *SetGroupMemberNicknameReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetGroupMemberNicknameReq.Marshal(b, m, deterministic) -} -func (dst *SetGroupMemberNicknameReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetGroupMemberNicknameReq.Merge(dst, src) -} -func (m *SetGroupMemberNicknameReq) XXX_Size() int { - return xxx_messageInfo_SetGroupMemberNicknameReq.Size(m) -} -func (m *SetGroupMemberNicknameReq) XXX_DiscardUnknown() { - xxx_messageInfo_SetGroupMemberNicknameReq.DiscardUnknown(m) -} - -var xxx_messageInfo_SetGroupMemberNicknameReq proto.InternalMessageInfo - -func (m *SetGroupMemberNicknameReq) GetGroupID() string { - if m != nil { - return m.GroupID - } - return "" -} - -func (m *SetGroupMemberNicknameReq) GetNickname() string { - if m != nil { - return m.Nickname - } - return "" -} - -func (m *SetGroupMemberNicknameReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -type SetGroupMemberNicknameResp struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNicknameResp{} } -func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) } -func (*SetGroupMemberNicknameResp) ProtoMessage() {} -func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{47} -} -func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b) -} -func (m *SetGroupMemberNicknameResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetGroupMemberNicknameResp.Marshal(b, m, deterministic) -} -func (dst *SetGroupMemberNicknameResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetGroupMemberNicknameResp.Merge(dst, src) -} -func (m *SetGroupMemberNicknameResp) XXX_Size() int { - return xxx_messageInfo_SetGroupMemberNicknameResp.Size(m) -} -func (m *SetGroupMemberNicknameResp) XXX_DiscardUnknown() { - xxx_messageInfo_SetGroupMemberNicknameResp.DiscardUnknown(m) -} - -var xxx_messageInfo_SetGroupMemberNicknameResp proto.InternalMessageInfo - type GetJoinedSuperGroupListReq struct { UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -2068,7 +1984,7 @@ func (m *GetJoinedSuperGroupListReq) Reset() { *m = GetJoinedSuperGroupL func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) } func (*GetJoinedSuperGroupListReq) ProtoMessage() {} func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{48} + return fileDescriptor_group_b971ad66a8171801, []int{46} } func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b) @@ -2106,7 +2022,7 @@ func (m *GetJoinedSuperGroupListResp) Reset() { *m = GetJoinedSuperGroup func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) } func (*GetJoinedSuperGroupListResp) ProtoMessage() {} func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{49} + return fileDescriptor_group_b971ad66a8171801, []int{47} } func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b) @@ -2144,7 +2060,7 @@ func (m *GetSuperGroupsInfoReq) Reset() { *m = GetSuperGroupsInfoReq{} } func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupsInfoReq) ProtoMessage() {} func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{50} + return fileDescriptor_group_b971ad66a8171801, []int{48} } func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b) @@ -2182,7 +2098,7 @@ func (m *GetSuperGroupsInfoResp) Reset() { *m = GetSuperGroupsInfoResp{} func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) } func (*GetSuperGroupsInfoResp) ProtoMessage() {} func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{51} + return fileDescriptor_group_b971ad66a8171801, []int{49} } func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b) @@ -2209,7 +2125,7 @@ func (m *GetSuperGroupsInfoResp) GetGroupInfos() []*sdk_ws.GroupInfo { return nil } -type SetGroupMemberInfoReq struct { +type SetGroupMemberInfo struct { GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` Nickname *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=nickname" json:"nickname,omitempty"` @@ -2221,72 +2137,110 @@ type SetGroupMemberInfoReq struct { XXX_sizecache int32 `json:"-"` } -func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} } -func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) } -func (*SetGroupMemberInfoReq) ProtoMessage() {} -func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{52} +func (m *SetGroupMemberInfo) Reset() { *m = SetGroupMemberInfo{} } +func (m *SetGroupMemberInfo) String() string { return proto.CompactTextString(m) } +func (*SetGroupMemberInfo) ProtoMessage() {} +func (*SetGroupMemberInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_group_b971ad66a8171801, []int{50} } -func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b) +func (m *SetGroupMemberInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetGroupMemberInfo.Unmarshal(m, b) } -func (m *SetGroupMemberInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetGroupMemberInfoReq.Marshal(b, m, deterministic) +func (m *SetGroupMemberInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetGroupMemberInfo.Marshal(b, m, deterministic) } -func (dst *SetGroupMemberInfoReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetGroupMemberInfoReq.Merge(dst, src) +func (dst *SetGroupMemberInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetGroupMemberInfo.Merge(dst, src) } -func (m *SetGroupMemberInfoReq) XXX_Size() int { - return xxx_messageInfo_SetGroupMemberInfoReq.Size(m) +func (m *SetGroupMemberInfo) XXX_Size() int { + return xxx_messageInfo_SetGroupMemberInfo.Size(m) } -func (m *SetGroupMemberInfoReq) XXX_DiscardUnknown() { - xxx_messageInfo_SetGroupMemberInfoReq.DiscardUnknown(m) +func (m *SetGroupMemberInfo) XXX_DiscardUnknown() { + xxx_messageInfo_SetGroupMemberInfo.DiscardUnknown(m) } -var xxx_messageInfo_SetGroupMemberInfoReq proto.InternalMessageInfo +var xxx_messageInfo_SetGroupMemberInfo proto.InternalMessageInfo -func (m *SetGroupMemberInfoReq) GetGroupID() string { +func (m *SetGroupMemberInfo) GetGroupID() string { if m != nil { return m.GroupID } return "" } -func (m *SetGroupMemberInfoReq) GetUserID() string { +func (m *SetGroupMemberInfo) GetUserID() string { if m != nil { return m.UserID } return "" } -func (m *SetGroupMemberInfoReq) GetNickname() *wrapperspb.StringValue { +func (m *SetGroupMemberInfo) GetNickname() *wrapperspb.StringValue { if m != nil { return m.Nickname } return nil } -func (m *SetGroupMemberInfoReq) GetFaceURL() *wrapperspb.StringValue { +func (m *SetGroupMemberInfo) GetFaceURL() *wrapperspb.StringValue { if m != nil { return m.FaceURL } return nil } -func (m *SetGroupMemberInfoReq) GetRoleLevel() *wrapperspb.Int32Value { +func (m *SetGroupMemberInfo) GetRoleLevel() *wrapperspb.Int32Value { if m != nil { return m.RoleLevel } return nil } -func (m *SetGroupMemberInfoReq) GetEx() *wrapperspb.StringValue { +func (m *SetGroupMemberInfo) GetEx() *wrapperspb.StringValue { if m != nil { return m.Ex } return nil } +type SetGroupMemberInfoReq struct { + Members []*SetGroupMemberInfo `protobuf:"bytes,1,rep,name=members" json:"members,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} } +func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) } +func (*SetGroupMemberInfoReq) ProtoMessage() {} +func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) { + return fileDescriptor_group_b971ad66a8171801, []int{51} +} +func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b) +} +func (m *SetGroupMemberInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetGroupMemberInfoReq.Marshal(b, m, deterministic) +} +func (dst *SetGroupMemberInfoReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetGroupMemberInfoReq.Merge(dst, src) +} +func (m *SetGroupMemberInfoReq) XXX_Size() int { + return xxx_messageInfo_SetGroupMemberInfoReq.Size(m) +} +func (m *SetGroupMemberInfoReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetGroupMemberInfoReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetGroupMemberInfoReq proto.InternalMessageInfo + +func (m *SetGroupMemberInfoReq) GetMembers() []*SetGroupMemberInfo { + if m != nil { + return m.Members + } + return nil +} + type SetGroupMemberInfoResp struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -2297,7 +2251,7 @@ func (m *SetGroupMemberInfoResp) Reset() { *m = SetGroupMemberInfoResp{} func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) } func (*SetGroupMemberInfoResp) ProtoMessage() {} func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{53} + return fileDescriptor_group_b971ad66a8171801, []int{52} } func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b) @@ -2328,7 +2282,7 @@ func (m *GetGroupAbstractInfoReq) Reset() { *m = GetGroupAbstractInfoReq func (m *GetGroupAbstractInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupAbstractInfoReq) ProtoMessage() {} func (*GetGroupAbstractInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{54} + return fileDescriptor_group_b971ad66a8171801, []int{53} } func (m *GetGroupAbstractInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAbstractInfoReq.Unmarshal(m, b) @@ -2368,7 +2322,7 @@ func (m *GroupAbstractInfo) Reset() { *m = GroupAbstractInfo{} } func (m *GroupAbstractInfo) String() string { return proto.CompactTextString(m) } func (*GroupAbstractInfo) ProtoMessage() {} func (*GroupAbstractInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{55} + return fileDescriptor_group_b971ad66a8171801, []int{54} } func (m *GroupAbstractInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupAbstractInfo.Unmarshal(m, b) @@ -2420,7 +2374,7 @@ func (m *GetGroupAbstractInfoResp) Reset() { *m = GetGroupAbstractInfoRe func (m *GetGroupAbstractInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupAbstractInfoResp) ProtoMessage() {} func (*GetGroupAbstractInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{56} + return fileDescriptor_group_b971ad66a8171801, []int{55} } func (m *GetGroupAbstractInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAbstractInfoResp.Unmarshal(m, b) @@ -2459,7 +2413,7 @@ func (m *GetUserInGroupMembersReq) Reset() { *m = GetUserInGroupMembersR func (m *GetUserInGroupMembersReq) String() string { return proto.CompactTextString(m) } func (*GetUserInGroupMembersReq) ProtoMessage() {} func (*GetUserInGroupMembersReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{57} + return fileDescriptor_group_b971ad66a8171801, []int{56} } func (m *GetUserInGroupMembersReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInGroupMembersReq.Unmarshal(m, b) @@ -2504,7 +2458,7 @@ func (m *GetUserInGroupMembersResp) Reset() { *m = GetUserInGroupMembers func (m *GetUserInGroupMembersResp) String() string { return proto.CompactTextString(m) } func (*GetUserInGroupMembersResp) ProtoMessage() {} func (*GetUserInGroupMembersResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{58} + return fileDescriptor_group_b971ad66a8171801, []int{57} } func (m *GetUserInGroupMembersResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInGroupMembersResp.Unmarshal(m, b) @@ -2542,7 +2496,7 @@ func (m *GetGroupMemberUserIDReq) Reset() { *m = GetGroupMemberUserIDReq func (m *GetGroupMemberUserIDReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberUserIDReq) ProtoMessage() {} func (*GetGroupMemberUserIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{59} + return fileDescriptor_group_b971ad66a8171801, []int{58} } func (m *GetGroupMemberUserIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberUserIDReq.Unmarshal(m, b) @@ -2580,7 +2534,7 @@ func (m *GetGroupMemberUserIDResp) Reset() { *m = GetGroupMemberUserIDRe func (m *GetGroupMemberUserIDResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberUserIDResp) ProtoMessage() {} func (*GetGroupMemberUserIDResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_66c251c19ca9b483, []int{60} + return fileDescriptor_group_b971ad66a8171801, []int{59} } func (m *GetGroupMemberUserIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberUserIDResp.Unmarshal(m, b) @@ -2654,12 +2608,11 @@ func init() { proto.RegisterType((*MuteGroupResp)(nil), "group.MuteGroupResp") proto.RegisterType((*CancelMuteGroupReq)(nil), "group.CancelMuteGroupReq") proto.RegisterType((*CancelMuteGroupResp)(nil), "group.CancelMuteGroupResp") - proto.RegisterType((*SetGroupMemberNicknameReq)(nil), "group.SetGroupMemberNicknameReq") - proto.RegisterType((*SetGroupMemberNicknameResp)(nil), "group.SetGroupMemberNicknameResp") proto.RegisterType((*GetJoinedSuperGroupListReq)(nil), "group.GetJoinedSuperGroupListReq") proto.RegisterType((*GetJoinedSuperGroupListResp)(nil), "group.GetJoinedSuperGroupListResp") proto.RegisterType((*GetSuperGroupsInfoReq)(nil), "group.GetSuperGroupsInfoReq") proto.RegisterType((*GetSuperGroupsInfoResp)(nil), "group.GetSuperGroupsInfoResp") + proto.RegisterType((*SetGroupMemberInfo)(nil), "group.SetGroupMemberInfo") proto.RegisterType((*SetGroupMemberInfoReq)(nil), "group.SetGroupMemberInfoReq") proto.RegisterType((*SetGroupMemberInfoResp)(nil), "group.SetGroupMemberInfoResp") proto.RegisterType((*GetGroupAbstractInfoReq)(nil), "group.GetGroupAbstractInfoReq") @@ -2727,7 +2680,6 @@ type GroupClient interface { // 获取指定的超级群信息 GetSuperGroupsInfo(ctx context.Context, in *GetSuperGroupsInfoReq, opts ...grpc.CallOption) (*GetSuperGroupsInfoResp, error) // 设置群成员昵称 - SetGroupMemberNickname(ctx context.Context, in *SetGroupMemberNicknameReq, opts ...grpc.CallOption) (*SetGroupMemberNicknameResp, error) // 设置群成员信息 SetGroupMemberInfo(ctx context.Context, in *SetGroupMemberInfoReq, opts ...grpc.CallOption) (*SetGroupMemberInfoResp, error) // 获取群信息hash值 @@ -2953,15 +2905,6 @@ func (c *groupClient) GetSuperGroupsInfo(ctx context.Context, in *GetSuperGroups return out, nil } -func (c *groupClient) SetGroupMemberNickname(ctx context.Context, in *SetGroupMemberNicknameReq, opts ...grpc.CallOption) (*SetGroupMemberNicknameResp, error) { - out := new(SetGroupMemberNicknameResp) - err := grpc.Invoke(ctx, "/group.group/setGroupMemberNickname", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *groupClient) SetGroupMemberInfo(ctx context.Context, in *SetGroupMemberInfoReq, opts ...grpc.CallOption) (*SetGroupMemberInfoResp, error) { out := new(SetGroupMemberInfoResp) err := grpc.Invoke(ctx, "/group.group/setGroupMemberInfo", in, out, c.cc, opts...) @@ -3046,7 +2989,6 @@ type GroupServer interface { // 获取指定的超级群信息 GetSuperGroupsInfo(context.Context, *GetSuperGroupsInfoReq) (*GetSuperGroupsInfoResp, error) // 设置群成员昵称 - SetGroupMemberNickname(context.Context, *SetGroupMemberNicknameReq) (*SetGroupMemberNicknameResp, error) // 设置群成员信息 SetGroupMemberInfo(context.Context, *SetGroupMemberInfoReq) (*SetGroupMemberInfoResp, error) // 获取群信息hash值 @@ -3475,24 +3417,6 @@ func _Group_GetSuperGroupsInfo_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _Group_SetGroupMemberNickname_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetGroupMemberNicknameReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServer).SetGroupMemberNickname(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/group.group/SetGroupMemberNickname", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServer).SetGroupMemberNickname(ctx, req.(*SetGroupMemberNicknameReq)) - } - return interceptor(ctx, in, info, handler) -} - func _Group_SetGroupMemberInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetGroupMemberInfoReq) if err := dec(in); err != nil { @@ -3661,10 +3585,6 @@ var _Group_serviceDesc = grpc.ServiceDesc{ MethodName: "getSuperGroupsInfo", Handler: _Group_GetSuperGroupsInfo_Handler, }, - { - MethodName: "setGroupMemberNickname", - Handler: _Group_SetGroupMemberNickname_Handler, - }, { MethodName: "setGroupMemberInfo", Handler: _Group_SetGroupMemberInfo_Handler, @@ -3686,123 +3606,121 @@ var _Group_serviceDesc = grpc.ServiceDesc{ Metadata: "group/group.proto", } -func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_66c251c19ca9b483) } - -var fileDescriptor_group_66c251c19ca9b483 = []byte{ - // 1833 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xdf, 0x53, 0xdb, 0xce, - 0x11, 0x1f, 0x99, 0x2f, 0x04, 0x36, 0x38, 0xc0, 0x81, 0xc1, 0x08, 0x02, 0xe4, 0xc2, 0xa4, 0x4c, - 0x9b, 0x98, 0x4e, 0x48, 0x33, 0xfd, 0x91, 0x99, 0x34, 0x81, 0x86, 0xd0, 0x62, 0x68, 0xe4, 0x24, - 0x9d, 0xa6, 0x93, 0xa1, 0xc2, 0x3e, 0x14, 0x05, 0x59, 0x3a, 0x74, 0x32, 0x64, 0x3a, 0xe9, 0x43, - 0xfb, 0xdc, 0x1f, 0x0f, 0x7d, 0xec, 0x5b, 0xa7, 0x7f, 0x42, 0xdf, 0xfa, 0xcf, 0x75, 0x74, 0x3a, - 0x9d, 0x4f, 0xd2, 0xc9, 0x26, 0x0d, 0xe4, 0xc5, 0x33, 0xda, 0xdb, 0xbd, 0xdd, 0xdb, 0xdb, 0x1f, - 0x9f, 0x3d, 0xc3, 0x8c, 0x13, 0x06, 0x3d, 0xba, 0xc9, 0x7f, 0x1b, 0x34, 0x0c, 0xa2, 0x00, 0x8d, - 0xf2, 0x0f, 0x73, 0xe3, 0x90, 0x12, 0xff, 0xc1, 0x5e, 0xf3, 0x41, 0x8b, 0x84, 0xe7, 0x24, 0xdc, - 0xa4, 0xa7, 0xce, 0x26, 0x67, 0xd8, 0x64, 0x9d, 0xd3, 0xa3, 0x0b, 0xb6, 0x79, 0xc1, 0x12, 0x01, - 0xb3, 0x31, 0x94, 0x33, 0xb4, 0x29, 0x25, 0xa1, 0xe0, 0xc7, 0xff, 0x31, 0xe0, 0xd6, 0x76, 0x48, - 0xec, 0x88, 0xec, 0xc6, 0x9a, 0x2c, 0x72, 0x86, 0xd6, 0xe0, 0xa6, 0xeb, 0xbb, 0x51, 0x93, 0x74, - 0x8f, 0x49, 0xc8, 0xea, 0xc6, 0xda, 0xc8, 0xc6, 0x84, 0xa5, 0x92, 0xd0, 0x4f, 0x61, 0x82, 0xdb, - 0xb5, 0xe7, 0x9f, 0x04, 0xf5, 0xca, 0x9a, 0xb1, 0x71, 0xf3, 0xe1, 0x72, 0x83, 0x71, 0x85, 0x47, - 0x36, 0x75, 0x8f, 0xa8, 0x1d, 0xda, 0x5d, 0xd6, 0xd8, 0x4d, 0x79, 0xac, 0x3e, 0x3b, 0xc2, 0x30, - 0x69, 0x77, 0xba, 0xae, 0xff, 0x86, 0x91, 0x70, 0x6f, 0x87, 0xd5, 0x47, 0xf8, 0xf6, 0x19, 0x5a, - 0x6c, 0x41, 0x70, 0xe1, 0x93, 0x30, 0xf9, 0xae, 0x7f, 0xb7, 0x66, 0xc4, 0x16, 0x28, 0x24, 0xdc, - 0x84, 0xa9, 0x8c, 0xd5, 0x8c, 0x66, 0x8d, 0x32, 0xbe, 0xc8, 0x28, 0xdc, 0x80, 0xe9, 0x5d, 0x12, - 0xf1, 0x25, 0xc6, 0xd7, 0xc8, 0x19, 0x32, 0x61, 0x3c, 0x61, 0xd8, 0x49, 0x7d, 0x20, 0xbf, 0xf1, - 0x2b, 0x98, 0xc9, 0xf1, 0x33, 0x8a, 0x9e, 0x00, 0xc8, 0x1d, 0x13, 0x91, 0x61, 0x16, 0x28, 0xfc, - 0xf8, 0x08, 0xa6, 0x5a, 0x62, 0xcb, 0xd4, 0x82, 0x7d, 0x98, 0x92, 0x0c, 0x2f, 0x82, 0xb0, 0x45, - 0x22, 0x71, 0x2e, 0x3c, 0x68, 0xd7, 0x84, 0xd3, 0xca, 0x8b, 0x62, 0x04, 0xd3, 0x59, 0x05, 0x8c, - 0xe2, 0x3f, 0x1b, 0x60, 0xa6, 0x07, 0x79, 0x46, 0xa9, 0xe7, 0xb6, 0xed, 0xc8, 0x0d, 0xfc, 0x7d, - 0x97, 0x45, 0xb1, 0x01, 0x3b, 0x00, 0xd4, 0x76, 0x5c, 0x9f, 0x13, 0x85, 0xee, 0x75, 0x8d, 0x6e, - 0x8b, 0x9c, 0xf5, 0x08, 0x8b, 0x7e, 0x2d, 0x79, 0x2d, 0x45, 0x0e, 0xad, 0x00, 0x9c, 0x84, 0x41, - 0x57, 0x5c, 0x66, 0x85, 0x5f, 0xa6, 0x42, 0xc1, 0x7f, 0x80, 0xa5, 0x52, 0x1b, 0x18, 0x45, 0x73, - 0x30, 0x1a, 0x05, 0x91, 0xed, 0x71, 0xfd, 0x55, 0x2b, 0xf9, 0x40, 0xbf, 0x80, 0xaa, 0x23, 0x02, - 0x36, 0x56, 0xcd, 0xea, 0x15, 0xee, 0xef, 0xd5, 0x32, 0xcf, 0x08, 0x3e, 0x2b, 0x2b, 0x85, 0x3f, - 0xc3, 0xf2, 0x2e, 0x89, 0x62, 0x43, 0x2c, 0x72, 0x76, 0x6d, 0x1e, 0x98, 0x87, 0xb1, 0x9e, 0x7a, - 0x7a, 0xf1, 0x85, 0x3f, 0xc3, 0xed, 0x01, 0xda, 0xaf, 0xfb, 0xec, 0x7f, 0x32, 0xa0, 0xf6, 0x3a, - 0xb4, 0x7d, 0x76, 0x42, 0x42, 0xce, 0x77, 0x18, 0x27, 0x58, 0x7c, 0xea, 0x3a, 0xdc, 0x10, 0xa1, - 0xce, 0x15, 0x4f, 0x58, 0xe9, 0x27, 0xba, 0x07, 0xb7, 0x02, 0xaf, 0x73, 0xa8, 0x24, 0x67, 0x72, - 0xa2, 0x1c, 0x35, 0xe6, 0xf3, 0xc9, 0x85, 0xca, 0x37, 0x92, 0xf0, 0x65, 0xa9, 0xb8, 0x0e, 0xf3, - 0x3a, 0x13, 0x18, 0xc5, 0x7f, 0x33, 0x60, 0xf2, 0x97, 0x81, 0xeb, 0xcb, 0xb2, 0x54, 0x6e, 0xd4, - 0x0a, 0x40, 0x48, 0xce, 0x9a, 0x84, 0x31, 0xdb, 0x21, 0x69, 0x80, 0xf5, 0x29, 0xf1, 0xfa, 0xc7, - 0xc0, 0xf5, 0x5b, 0x41, 0x2f, 0x6c, 0x13, 0x6e, 0xc8, 0xa8, 0xa5, 0x50, 0xd0, 0x3a, 0x54, 0x5d, - 0xff, 0xdc, 0x8d, 0x72, 0x05, 0x27, 0x4b, 0xc4, 0x53, 0x50, 0x55, 0xec, 0x61, 0x14, 0xff, 0xd3, - 0x80, 0xa5, 0x7c, 0xd4, 0xc6, 0x0b, 0x81, 0xcf, 0xc8, 0x50, 0x83, 0x07, 0x65, 0x44, 0xbc, 0xfe, - 0xc1, 0xf6, 0x3b, 0x1e, 0xe9, 0x34, 0x99, 0x23, 0x3c, 0xa7, 0x50, 0xe2, 0x1a, 0x9a, 0x7c, 0x59, - 0x84, 0xf5, 0xbc, 0x88, 0xdb, 0x3b, 0x6a, 0x65, 0x68, 0x78, 0x05, 0x96, 0xcb, 0x8d, 0x63, 0x14, - 0x6f, 0xc0, 0xe4, 0xab, 0x9e, 0x1b, 0x0d, 0x77, 0x6f, 0x7c, 0x70, 0x85, 0x93, 0x51, 0xfc, 0x77, - 0x03, 0x6a, 0x69, 0xc6, 0x26, 0x2d, 0xe1, 0x6a, 0xd3, 0x45, 0x31, 0xa5, 0x92, 0x75, 0xdc, 0x3c, - 0x8c, 0x9d, 0xb8, 0x5e, 0x44, 0x42, 0x71, 0x8b, 0xe2, 0x0b, 0x53, 0x98, 0xd7, 0x19, 0x54, 0x9a, - 0x41, 0x3f, 0x87, 0x1b, 0x5d, 0xd1, 0xde, 0x92, 0xdc, 0xb9, 0x57, 0x96, 0x3b, 0xc9, 0x76, 0x2f, - 0x7a, 0x9e, 0xc7, 0x8b, 0x66, 0x2a, 0x86, 0xf7, 0xf3, 0x1a, 0x65, 0xdf, 0x28, 0xbf, 0xf6, 0x7a, - 0x56, 0xeb, 0x44, 0x7f, 0xb7, 0xdf, 0xc1, 0x82, 0x76, 0x37, 0x46, 0x55, 0x53, 0x8d, 0xff, 0xcf, - 0x54, 0x0f, 0xd0, 0xaf, 0xdc, 0xf6, 0xa9, 0xc2, 0x33, 0xd8, 0xcc, 0x75, 0xa8, 0x9e, 0xba, 0xed, - 0x53, 0xd2, 0x49, 0x5b, 0x74, 0x62, 0x6c, 0x96, 0x18, 0x5f, 0x45, 0x48, 0x6c, 0x16, 0xf8, 0x22, - 0x3e, 0xc5, 0x17, 0xae, 0xc1, 0x6c, 0x41, 0x1b, 0xa3, 0xf8, 0x8f, 0x3c, 0x64, 0xe2, 0x04, 0x22, - 0x1d, 0xbe, 0xf6, 0x6d, 0x7b, 0x4c, 0x87, 0x5f, 0x57, 0x41, 0x7d, 0x69, 0x80, 0x3c, 0x82, 0x31, - 0xee, 0x8e, 0x34, 0x3e, 0x06, 0xf7, 0x71, 0xc1, 0x8b, 0x29, 0xcc, 0xed, 0xf1, 0x9a, 0x11, 0x6b, - 0x7d, 0x1d, 0x5c, 0xa2, 0x74, 0xf5, 0xbd, 0x58, 0x51, 0xbd, 0x18, 0xd7, 0xcf, 0xa4, 0xfa, 0x74, - 0xb2, 0x38, 0x29, 0x47, 0xc5, 0x0b, 0x50, 0xd3, 0x68, 0x64, 0x14, 0x9f, 0xc3, 0x9c, 0x6c, 0xaa, - 0x9e, 0xd7, 0xbf, 0xf6, 0x6b, 0xce, 0x50, 0xfc, 0xdb, 0x7e, 0x69, 0x50, 0xf4, 0x5e, 0x49, 0x1c, - 0xff, 0xcb, 0x80, 0xf1, 0xed, 0x66, 0x8b, 0xf3, 0x7c, 0x0d, 0xda, 0x43, 0x0d, 0x40, 0x8e, 0x6c, - 0x36, 0xb1, 0xe3, 0x0e, 0xec, 0x6e, 0xda, 0x37, 0x34, 0x2b, 0xe8, 0xfb, 0x30, 0x9d, 0xa5, 0xca, - 0x76, 0x56, 0xa0, 0xe3, 0xbf, 0x18, 0x30, 0x29, 0xa1, 0xe1, 0xd5, 0x39, 0x7c, 0x59, 0x1c, 0x57, - 0xb1, 0xb4, 0x4f, 0x50, 0xaf, 0x63, 0x24, 0x7b, 0x1d, 0x07, 0x50, 0x55, 0xac, 0x29, 0x0d, 0xf7, - 0xef, 0xe5, 0xc2, 0x7d, 0xaa, 0x91, 0x0c, 0x21, 0xa9, 0xbb, 0x65, 0x84, 0x3f, 0xe8, 0x03, 0xdf, - 0x4b, 0x94, 0x12, 0xfc, 0x8f, 0x42, 0xa7, 0x60, 0xdb, 0xcd, 0xd6, 0xb7, 0xe8, 0x14, 0x26, 0x8c, - 0xf7, 0xd2, 0x9b, 0x4d, 0x7c, 0x22, 0xbf, 0x8b, 0xdd, 0x22, 0x31, 0xea, 0x1a, 0xbb, 0xc5, 0x0f, - 0x60, 0x6a, 0xc7, 0x65, 0x5d, 0x97, 0xb1, 0x4b, 0xf4, 0x5b, 0x04, 0xd3, 0x59, 0x66, 0x46, 0xf1, - 0x47, 0x40, 0xcd, 0x9e, 0x98, 0x76, 0x2e, 0x53, 0xc3, 0x4b, 0x10, 0x67, 0x8c, 0x1c, 0xba, 0xbd, - 0x88, 0x74, 0x5a, 0xa4, 0x1d, 0xf8, 0x1d, 0xc6, 0x5d, 0x53, 0xb5, 0x32, 0xb4, 0xb8, 0x82, 0x17, - 0x74, 0x31, 0x8a, 0xf7, 0xa1, 0xbe, 0x6d, 0xfb, 0x6d, 0xe2, 0x5d, 0x85, 0x21, 0x78, 0x09, 0x16, - 0x4b, 0x76, 0x4b, 0xb0, 0x89, 0x24, 0x0f, 0xc5, 0x26, 0x0a, 0x27, 0xa3, 0xb8, 0x01, 0x28, 0xb7, - 0xef, 0xe0, 0x0d, 0x6a, 0x30, 0x5b, 0xe0, 0x67, 0x14, 0xbb, 0xb0, 0xd8, 0xca, 0x84, 0xc8, 0x81, - 0xdb, 0x3e, 0xf5, 0xed, 0xee, 0x10, 0x60, 0x67, 0xc2, 0xb8, 0x2f, 0x18, 0xc5, 0x79, 0xe5, 0xb7, - 0xe2, 0x89, 0x91, 0x8c, 0x27, 0x96, 0xc1, 0x2c, 0x53, 0xc5, 0x28, 0x7e, 0xc4, 0x07, 0xb4, 0xa4, - 0x71, 0xb5, 0x7a, 0x54, 0xc0, 0xe4, 0xb4, 0x79, 0xf6, 0xf7, 0x34, 0x32, 0x7b, 0xb6, 0xf8, 0x48, - 0xa5, 0x97, 0x62, 0x54, 0xe9, 0x6e, 0xc6, 0x17, 0x74, 0xb7, 0x2d, 0x9e, 0xcb, 0xfd, 0xed, 0x2e, - 0x35, 0x29, 0xbf, 0xe5, 0xb9, 0x56, 0x10, 0xfa, 0xea, 0x71, 0xf9, 0xdf, 0x15, 0xa8, 0x65, 0xdd, - 0x36, 0x1c, 0x7f, 0x95, 0x25, 0xc5, 0x8f, 0x95, 0x5b, 0x1b, 0x11, 0xad, 0xc4, 0x09, 0x02, 0xc7, - 0x23, 0xc9, 0x23, 0xc9, 0x71, 0xef, 0xa4, 0xd1, 0x8a, 0x42, 0xd7, 0x77, 0xde, 0xda, 0x5e, 0x8f, - 0x28, 0x77, 0xfa, 0x18, 0x6e, 0x9c, 0xd8, 0x6d, 0xf2, 0xc6, 0xda, 0xe7, 0x18, 0x7c, 0x98, 0x60, - 0xca, 0x8c, 0x7e, 0x02, 0x13, 0x61, 0xe0, 0x91, 0x7d, 0x72, 0x4e, 0xbc, 0xfa, 0x28, 0x97, 0x5c, - 0x2a, 0x48, 0xee, 0xf9, 0xd1, 0xd6, 0xc3, 0x44, 0xb0, 0xcf, 0x8d, 0xee, 0x43, 0x85, 0x7c, 0xaa, - 0x8f, 0x5d, 0x42, 0x5b, 0x85, 0x7c, 0x8a, 0xe7, 0x2b, 0x9d, 0x97, 0x18, 0xc5, 0x3f, 0xea, 0x43, - 0xce, 0x67, 0xc7, 0x2c, 0x0a, 0xed, 0x76, 0x74, 0x99, 0xfb, 0xfc, 0xab, 0x01, 0x33, 0x05, 0xa1, - 0x01, 0x3e, 0xbf, 0x2f, 0x5e, 0xb5, 0x44, 0x68, 0xf7, 0xe2, 0x5f, 0xee, 0xfe, 0xaa, 0x55, 0x5c, - 0x40, 0x3f, 0x84, 0x59, 0x27, 0x0b, 0xe2, 0x5f, 0xda, 0xec, 0x03, 0xbf, 0x94, 0xef, 0x2c, 0xdd, - 0x12, 0xee, 0x40, 0x5d, 0x7f, 0x0c, 0x46, 0xd1, 0x4b, 0xd1, 0xe7, 0xd5, 0x85, 0x34, 0xd2, 0xea, - 0xa2, 0xc3, 0x15, 0x25, 0x35, 0x32, 0xf8, 0x80, 0x6b, 0xe1, 0x2d, 0xde, 0x57, 0xfb, 0xc6, 0x80, - 0x1c, 0xcc, 0x78, 0xb1, 0x92, 0xf3, 0xe2, 0x7b, 0x58, 0x2c, 0xd9, 0xef, 0x4a, 0x90, 0xd2, 0x56, - 0x7e, 0x9c, 0x48, 0xc0, 0xc9, 0xe0, 0x4a, 0xf8, 0xa8, 0xef, 0xc9, 0xac, 0x10, 0xa3, 0xb1, 0x54, - 0x4f, 0xe0, 0xd0, 0x24, 0x20, 0xd2, 0xcf, 0x87, 0xff, 0x9d, 0x81, 0xe4, 0x8d, 0x12, 0x3d, 0x81, - 0x9b, 0xed, 0xfe, 0x93, 0x1c, 0xaa, 0xa5, 0x10, 0x22, 0xf3, 0xb8, 0x68, 0xce, 0xeb, 0xc8, 0x8c, - 0xa2, 0xc7, 0x30, 0xf1, 0x31, 0x9d, 0xae, 0xd1, 0xac, 0x60, 0x52, 0xe7, 0x7f, 0x73, 0xae, 0x48, - 0x4c, 0xe4, 0xce, 0xd2, 0xe1, 0x54, 0xca, 0xa9, 0x83, 0xad, 0x94, 0xcb, 0xcc, 0xb0, 0xe8, 0x39, - 0x54, 0x1d, 0xf5, 0x05, 0x0f, 0x2d, 0xa4, 0x01, 0x91, 0x7b, 0x07, 0x34, 0xeb, 0xfa, 0x05, 0x46, - 0xd1, 0x53, 0x98, 0x64, 0xca, 0x8b, 0x1a, 0x4a, 0xcf, 0x96, 0x7b, 0xc7, 0x33, 0x17, 0xb4, 0x74, - 0x46, 0xd1, 0xef, 0x61, 0xc1, 0xd1, 0xbf, 0x7c, 0xa1, 0x3b, 0x39, 0xad, 0xc5, 0xb7, 0x29, 0x13, - 0x0f, 0x63, 0x61, 0x14, 0x9d, 0xc0, 0xa2, 0x53, 0xf6, 0xc2, 0x84, 0xee, 0xf6, 0x37, 0x28, 0x7d, - 0x01, 0x33, 0xd7, 0x87, 0x33, 0x31, 0x8a, 0x5e, 0x01, 0x8a, 0x0a, 0xef, 0x38, 0x68, 0x59, 0xc8, - 0x6a, 0x5f, 0x99, 0xcc, 0xdb, 0x03, 0x56, 0x19, 0x45, 0x6d, 0xa8, 0x3b, 0x25, 0x0f, 0x18, 0x08, - 0x67, 0xb2, 0x57, 0xfb, 0xfc, 0x62, 0xde, 0x1d, 0xca, 0x93, 0xd8, 0xed, 0x14, 0x1e, 0x0e, 0xa4, - 0xdd, 0xda, 0x47, 0x0e, 0x69, 0x77, 0xc9, 0x8b, 0xc3, 0x6b, 0x98, 0x75, 0x8a, 0xb3, 0x3c, 0xd2, - 0x4b, 0xc9, 0x28, 0x5b, 0x19, 0xb4, 0xcc, 0x6b, 0xd9, 0xd4, 0x69, 0x76, 0xac, 0x46, 0x8b, 0x42, - 0xa4, 0x38, 0xdc, 0x9b, 0x66, 0xd9, 0x92, 0x3c, 0x72, 0x6e, 0x14, 0x56, 0x8f, 0x5c, 0x1c, 0xd2, - 0xd5, 0x23, 0xeb, 0x66, 0xe8, 0x03, 0x98, 0x71, 0xf3, 0x53, 0x28, 0x5a, 0x12, 0x32, 0xba, 0x89, - 0xd8, 0x5c, 0x2e, 0x5f, 0x4c, 0x92, 0x5a, 0x26, 0xa7, 0x4c, 0x6a, 0x75, 0xaa, 0x92, 0x49, 0x9d, - 0x1d, 0x6e, 0x0a, 0xb7, 0x19, 0x03, 0xfb, 0x92, 0xdb, 0x14, 0x83, 0x48, 0xc9, 0x6d, 0xca, 0x89, - 0xe0, 0x29, 0x4c, 0x76, 0x14, 0x30, 0x2e, 0x73, 0x3c, 0x07, 0xe7, 0x65, 0x8e, 0xe7, 0x91, 0x7b, - 0x7c, 0x71, 0xdd, 0x2c, 0xc4, 0x95, 0x17, 0x57, 0x04, 0xd2, 0xf2, 0xe2, 0x34, 0xa8, 0x18, 0xbd, - 0x83, 0x5a, 0x5b, 0x07, 0x99, 0xd1, 0x6a, 0x5a, 0x53, 0x4b, 0xe0, 0xb9, 0xb9, 0x36, 0x98, 0x21, - 0xf1, 0xb8, 0xb4, 0x52, 0x7a, 0x5c, 0x85, 0xd0, 0xd2, 0xe3, 0x19, 0x9c, 0x1c, 0x9f, 0x2e, 0x67, - 0x93, 0x3c, 0x5d, 0x11, 0x86, 0xcb, 0xd3, 0x69, 0x10, 0xb7, 0xa8, 0x85, 0x3a, 0xc8, 0xaa, 0xd6, - 0xc2, 0x12, 0x20, 0xac, 0xd6, 0xc2, 0x52, 0xd4, 0x9b, 0x44, 0x47, 0x0e, 0x8a, 0xaa, 0xd1, 0x51, - 0x84, 0xb6, 0x6a, 0x74, 0xe8, 0x30, 0xec, 0x7b, 0x98, 0x67, 0x5a, 0xec, 0x8e, 0xd6, 0x72, 0x35, - 0xbf, 0x30, 0x45, 0x98, 0x77, 0x86, 0x70, 0x24, 0x16, 0xb3, 0x02, 0x7a, 0x93, 0x16, 0x6b, 0xe1, - 0xaf, 0xb4, 0x58, 0x0f, 0xfb, 0xd0, 0x6f, 0x60, 0xce, 0xd1, 0xe0, 0x25, 0x94, 0xaf, 0x3f, 0x39, - 0x4c, 0x68, 0xae, 0x0e, 0x5c, 0x4f, 0xa2, 0xd3, 0xd1, 0x41, 0x1a, 0xb4, 0x9a, 0x6d, 0x20, 0x05, - 0x00, 0x25, 0xa3, 0xb3, 0x1c, 0x11, 0x29, 0x46, 0xab, 0xd0, 0x04, 0xe9, 0x8b, 0xa6, 0x04, 0x3b, - 0x05, 0xa3, 0xf3, 0xb8, 0xe6, 0xf9, 0xea, 0xbb, 0xdb, 0x87, 0x94, 0xf8, 0x47, 0x7b, 0x4d, 0xe5, - 0x8f, 0x52, 0x2e, 0xf3, 0x33, 0xfe, 0x7b, 0x3c, 0xc6, 0x49, 0x5b, 0xff, 0x0b, 0x00, 0x00, 0xff, - 0xff, 0xfe, 0x40, 0x04, 0x8f, 0x9b, 0x1d, 0x00, 0x00, +func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_b971ad66a8171801) } + +var fileDescriptor_group_b971ad66a8171801 = []byte{ + // 1808 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x5f, 0x53, 0xdc, 0xc8, + 0x11, 0x2f, 0x2d, 0x06, 0x43, 0x9b, 0x35, 0x30, 0xb0, 0x20, 0x04, 0x06, 0x32, 0xa6, 0x1c, 0x2a, + 0xb1, 0x97, 0x94, 0x71, 0x5c, 0xf9, 0xe3, 0x2a, 0xc7, 0x86, 0x18, 0x93, 0xb0, 0x10, 0xb4, 0xb6, + 0x53, 0x71, 0x2a, 0x45, 0xc4, 0xee, 0x20, 0xcb, 0x68, 0xa5, 0x41, 0xa3, 0x05, 0xd7, 0x95, 0xef, + 0xe1, 0xee, 0xf9, 0xfe, 0x3c, 0xdc, 0xe3, 0x3d, 0xdd, 0x7d, 0x86, 0xfb, 0x38, 0xf7, 0x61, 0xae, + 0x34, 0x92, 0x66, 0x47, 0xd2, 0x68, 0x17, 0x9f, 0xc1, 0x2f, 0x5b, 0xa5, 0x9e, 0xee, 0xe9, 0x9e, + 0x9e, 0xfe, 0xf3, 0xeb, 0x59, 0x98, 0xb2, 0x03, 0xbf, 0x4b, 0xd7, 0xf9, 0x6f, 0x9d, 0x06, 0x7e, + 0xe8, 0xa3, 0x61, 0xfe, 0x61, 0xac, 0xed, 0x53, 0xe2, 0xdd, 0xdb, 0x69, 0xdc, 0x6b, 0x92, 0xe0, + 0x8c, 0x04, 0xeb, 0xf4, 0xc4, 0x5e, 0xe7, 0x0c, 0xeb, 0xac, 0x7d, 0x72, 0x78, 0xce, 0xd6, 0xcf, + 0x59, 0x2c, 0x60, 0xd4, 0x07, 0x72, 0x06, 0x16, 0xa5, 0x24, 0x48, 0xf8, 0xf1, 0x4f, 0x1a, 0xdc, + 0xdc, 0x0c, 0x88, 0x15, 0x92, 0xed, 0x48, 0x93, 0x49, 0x4e, 0xd1, 0x0a, 0xdc, 0x70, 0x3c, 0x27, + 0x6c, 0x90, 0xce, 0x11, 0x09, 0x98, 0xae, 0xad, 0x0c, 0xad, 0x8d, 0x99, 0x32, 0x09, 0xfd, 0x05, + 0xc6, 0xb8, 0x5d, 0x3b, 0xde, 0xb1, 0xaf, 0x57, 0x56, 0xb4, 0xb5, 0x1b, 0xf7, 0x17, 0xeb, 0x8c, + 0x2b, 0x3c, 0xb4, 0xa8, 0x73, 0x48, 0xad, 0xc0, 0xea, 0xb0, 0xfa, 0x76, 0xca, 0x63, 0xf6, 0xd8, + 0x11, 0x86, 0x71, 0xab, 0xdd, 0x71, 0xbc, 0x97, 0x8c, 0x04, 0x3b, 0x5b, 0x4c, 0x1f, 0xe2, 0xdb, + 0x67, 0x68, 0x91, 0x05, 0xfe, 0xb9, 0x47, 0x82, 0xf8, 0x5b, 0xbf, 0xb6, 0xa2, 0x45, 0x16, 0x48, + 0x24, 0xdc, 0x80, 0x89, 0x8c, 0xd5, 0x8c, 0x66, 0x8d, 0xd2, 0x3e, 0xc8, 0x28, 0x5c, 0x87, 0xc9, + 0x6d, 0x12, 0xf2, 0x25, 0xc6, 0xd7, 0xc8, 0x29, 0x32, 0x60, 0x34, 0x66, 0xd8, 0x4a, 0x7d, 0x20, + 0xbe, 0xf1, 0x01, 0x4c, 0xe5, 0xf8, 0x19, 0x45, 0x8f, 0x00, 0xc4, 0x8e, 0xb1, 0xc8, 0x20, 0x0b, + 0x24, 0x7e, 0x7c, 0x08, 0x13, 0xcd, 0x64, 0xcb, 0xd4, 0x82, 0x5d, 0x98, 0x10, 0x0c, 0xcf, 0xfc, + 0xa0, 0x49, 0xc2, 0xe4, 0x5c, 0xb8, 0xdf, 0xae, 0x31, 0xa7, 0x99, 0x17, 0xc5, 0x08, 0x26, 0xb3, + 0x0a, 0x18, 0xc5, 0x5f, 0x6a, 0x60, 0xa4, 0x07, 0x79, 0x42, 0xa9, 0xeb, 0xb4, 0xac, 0xd0, 0xf1, + 0xbd, 0x5d, 0x87, 0x85, 0x91, 0x01, 0x5b, 0x00, 0xd4, 0xb2, 0x1d, 0x8f, 0x13, 0x13, 0xdd, 0xab, + 0x0a, 0xdd, 0x26, 0x39, 0xed, 0x12, 0x16, 0xfe, 0x4b, 0xf0, 0x9a, 0x92, 0x1c, 0x5a, 0x02, 0x38, + 0x0e, 0xfc, 0x4e, 0x72, 0x99, 0x15, 0x7e, 0x99, 0x12, 0x05, 0x7f, 0x06, 0x0b, 0xa5, 0x36, 0x30, + 0x8a, 0x66, 0x60, 0x38, 0xf4, 0x43, 0xcb, 0xe5, 0xfa, 0xab, 0x66, 0xfc, 0x81, 0xfe, 0x0e, 0x55, + 0x3b, 0x09, 0xd8, 0x48, 0x35, 0xd3, 0x2b, 0xdc, 0xdf, 0xcb, 0x65, 0x9e, 0x49, 0xf8, 0xcc, 0xac, + 0x14, 0x7e, 0x0f, 0x8b, 0xdb, 0x24, 0x8c, 0x0c, 0x31, 0xc9, 0xe9, 0x95, 0x79, 0x60, 0x16, 0x46, + 0xba, 0xf2, 0xe9, 0x93, 0x2f, 0xfc, 0x1e, 0x6e, 0xf5, 0xd1, 0x7e, 0xd5, 0x67, 0xff, 0x42, 0x83, + 0xda, 0x8b, 0xc0, 0xf2, 0xd8, 0x31, 0x09, 0x38, 0xdf, 0x7e, 0x94, 0x60, 0xd1, 0xa9, 0x75, 0xb8, + 0x9e, 0x84, 0x3a, 0x57, 0x3c, 0x66, 0xa6, 0x9f, 0xe8, 0x0e, 0xdc, 0xf4, 0xdd, 0xf6, 0xbe, 0x94, + 0x9c, 0xf1, 0x89, 0x72, 0xd4, 0x88, 0xcf, 0x23, 0xe7, 0x32, 0xdf, 0x50, 0xcc, 0x97, 0xa5, 0x62, + 0x1d, 0x66, 0x55, 0x26, 0x30, 0x8a, 0xbf, 0xd1, 0x60, 0xfc, 0x1f, 0xbe, 0xe3, 0x89, 0xb2, 0x54, + 0x6e, 0xd4, 0x12, 0x40, 0x40, 0x4e, 0x1b, 0x84, 0x31, 0xcb, 0x26, 0x69, 0x80, 0xf5, 0x28, 0xd1, + 0xfa, 0x5b, 0xdf, 0xf1, 0x9a, 0x7e, 0x37, 0x68, 0x11, 0x6e, 0xc8, 0xb0, 0x29, 0x51, 0xd0, 0x2a, + 0x54, 0x1d, 0xef, 0xcc, 0x09, 0x73, 0x05, 0x27, 0x4b, 0xc4, 0x13, 0x50, 0x95, 0xec, 0x61, 0x14, + 0x7f, 0xaf, 0xc1, 0x42, 0x3e, 0x6a, 0xa3, 0x05, 0xdf, 0x63, 0x64, 0xa0, 0xc1, 0xfd, 0x32, 0x22, + 0x5a, 0x7f, 0x63, 0x79, 0x6d, 0x97, 0xb4, 0x1b, 0xcc, 0x4e, 0x3c, 0x27, 0x51, 0xa2, 0x1a, 0x1a, + 0x7f, 0x99, 0x84, 0x75, 0xdd, 0x90, 0xdb, 0x3b, 0x6c, 0x66, 0x68, 0x78, 0x09, 0x16, 0xcb, 0x8d, + 0x63, 0x14, 0xaf, 0xc1, 0xf8, 0x41, 0xd7, 0x09, 0x07, 0xbb, 0x37, 0x3a, 0xb8, 0xc4, 0xc9, 0x28, + 0xfe, 0x56, 0x83, 0x5a, 0x9a, 0xb1, 0x71, 0x4b, 0xb8, 0xdc, 0x74, 0x91, 0x4c, 0xa9, 0x64, 0x1d, + 0x37, 0x0b, 0x23, 0xc7, 0x8e, 0x1b, 0x92, 0x20, 0xb9, 0xc5, 0xe4, 0x0b, 0x53, 0x98, 0x55, 0x19, + 0x54, 0x9a, 0x41, 0x7f, 0x83, 0xeb, 0x9d, 0xa4, 0xbd, 0xc5, 0xb9, 0x73, 0xa7, 0x2c, 0x77, 0xe2, + 0xed, 0x9e, 0x75, 0x5d, 0x97, 0x17, 0xcd, 0x54, 0x0c, 0xef, 0xe6, 0x35, 0x8a, 0xbe, 0x51, 0x7e, + 0xed, 0x7a, 0x56, 0xeb, 0x58, 0x6f, 0xb7, 0xff, 0xc2, 0x9c, 0x72, 0x37, 0x46, 0x65, 0x53, 0xb5, + 0x5f, 0x67, 0xaa, 0x0b, 0xe8, 0x9f, 0x4e, 0xeb, 0x44, 0xe2, 0xe9, 0x6f, 0xe6, 0x2a, 0x54, 0x4f, + 0x9c, 0xd6, 0x09, 0x69, 0xa7, 0x2d, 0x3a, 0x36, 0x36, 0x4b, 0x8c, 0xae, 0x22, 0x20, 0x16, 0xf3, + 0xbd, 0x24, 0x3e, 0x93, 0x2f, 0x5c, 0x83, 0xe9, 0x82, 0x36, 0x46, 0xf1, 0xe7, 0x3c, 0x64, 0xa2, + 0x04, 0x22, 0x6d, 0xbe, 0xf6, 0x69, 0x7b, 0x4c, 0x9b, 0x5f, 0x57, 0x41, 0x7d, 0x69, 0x80, 0x3c, + 0x80, 0x11, 0xee, 0x8e, 0x34, 0x3e, 0xfa, 0xf7, 0xf1, 0x84, 0x17, 0x53, 0x98, 0xd9, 0xe1, 0x35, + 0x23, 0xd2, 0xfa, 0xc2, 0xbf, 0x40, 0xe9, 0xea, 0x79, 0xb1, 0x22, 0x7b, 0x31, 0xaa, 0x9f, 0x71, + 0xf5, 0x69, 0x67, 0x71, 0x52, 0x8e, 0x8a, 0xe7, 0xa0, 0xa6, 0xd0, 0xc8, 0x28, 0x3e, 0x83, 0x19, + 0xd1, 0x54, 0x5d, 0xb7, 0x77, 0xed, 0x57, 0x9c, 0xa1, 0xf8, 0x3f, 0xbd, 0xd2, 0x20, 0xe9, 0xbd, + 0x94, 0x38, 0xfe, 0x51, 0x83, 0xd1, 0xcd, 0x46, 0x93, 0xf3, 0x7c, 0x0c, 0xda, 0x43, 0x75, 0x40, + 0xb6, 0x68, 0x36, 0x91, 0xe3, 0xf6, 0xac, 0x4e, 0xda, 0x37, 0x14, 0x2b, 0xe8, 0x77, 0x30, 0x99, + 0xa5, 0x8a, 0x76, 0x56, 0xa0, 0xe3, 0xaf, 0x34, 0x18, 0x17, 0xd0, 0xf0, 0xf2, 0x1c, 0xbe, 0x98, + 0x1c, 0x57, 0xb2, 0xb4, 0x47, 0x90, 0xaf, 0x63, 0x28, 0x7b, 0x1d, 0x7b, 0x50, 0x95, 0xac, 0x29, + 0x0d, 0xf7, 0xdf, 0xe6, 0xc2, 0x7d, 0xa2, 0x1e, 0x0f, 0x21, 0xa9, 0xbb, 0x45, 0x84, 0xdf, 0xeb, + 0x01, 0xdf, 0x0b, 0x94, 0x12, 0xfc, 0x5d, 0xa1, 0x53, 0xb0, 0xcd, 0x46, 0xf3, 0x53, 0x74, 0x0a, + 0x03, 0x46, 0xbb, 0xe9, 0xcd, 0xc6, 0x3e, 0x11, 0xdf, 0xc5, 0x6e, 0x11, 0x1b, 0x75, 0x85, 0xdd, + 0xe2, 0xf7, 0x30, 0xb1, 0xe5, 0xb0, 0x8e, 0xc3, 0xd8, 0x05, 0xfa, 0x2d, 0x82, 0xc9, 0x2c, 0x33, + 0xa3, 0xf8, 0x2d, 0xa0, 0x46, 0x37, 0x99, 0x76, 0x2e, 0x52, 0xc3, 0x4b, 0x10, 0x67, 0x84, 0x1c, + 0x3a, 0xdd, 0x90, 0xb4, 0x9b, 0xa4, 0xe5, 0x7b, 0x6d, 0xc6, 0x5d, 0x53, 0x35, 0x33, 0xb4, 0xa8, + 0x82, 0x17, 0x74, 0x31, 0x8a, 0x77, 0x41, 0xdf, 0xb4, 0xbc, 0x16, 0x71, 0x2f, 0xc3, 0x10, 0xbc, + 0x00, 0xf3, 0x25, 0xbb, 0xc5, 0xd8, 0x44, 0x90, 0x07, 0x62, 0x13, 0x89, 0x93, 0x51, 0x5c, 0x07, + 0x94, 0xdb, 0xb7, 0xff, 0x06, 0x35, 0x98, 0x2e, 0xf0, 0x33, 0x8a, 0x1f, 0xf0, 0xb9, 0x28, 0xee, + 0x17, 0xcd, 0x2e, 0x4d, 0xd0, 0x69, 0xda, 0xb3, 0x7a, 0x87, 0xd2, 0x32, 0x87, 0x6a, 0xf2, 0x49, + 0x46, 0x2d, 0xc5, 0xa8, 0xd4, 0x54, 0xb4, 0x0f, 0x68, 0x2a, 0x1b, 0x3c, 0x85, 0x7a, 0xdb, 0x5d, + 0x68, 0x40, 0x7d, 0xc5, 0x43, 0xbc, 0x20, 0xf4, 0xd1, 0x53, 0xea, 0x0f, 0x15, 0x40, 0xcd, 0x4c, + 0xee, 0xf0, 0x8a, 0xfa, 0xe1, 0x81, 0xf8, 0x27, 0x18, 0xf5, 0x9c, 0xd6, 0x89, 0x97, 0xe6, 0x67, + 0x64, 0x84, 0xed, 0xfb, 0xb6, 0x4b, 0xe2, 0x87, 0x89, 0xa3, 0xee, 0x71, 0xbd, 0x19, 0x06, 0x8e, + 0x67, 0xbf, 0xb2, 0xdc, 0x2e, 0x31, 0x05, 0x37, 0x7a, 0x08, 0xd7, 0x8f, 0xad, 0x16, 0x79, 0x69, + 0xee, 0x72, 0xdc, 0x3b, 0x48, 0x30, 0x65, 0x46, 0x7f, 0x86, 0xb1, 0xc0, 0x77, 0xc9, 0x2e, 0x39, + 0x23, 0xae, 0x3e, 0xcc, 0x25, 0x17, 0x0a, 0x92, 0x3b, 0x5e, 0xb8, 0x71, 0x3f, 0x16, 0xec, 0x71, + 0xa3, 0xbb, 0x50, 0x21, 0xef, 0xf4, 0x91, 0x0b, 0x68, 0xab, 0x90, 0x77, 0x78, 0x17, 0x6a, 0x45, + 0x17, 0x45, 0x17, 0xb6, 0x91, 0x6f, 0x81, 0xf3, 0x49, 0x99, 0x55, 0xb0, 0x8b, 0xd2, 0xa1, 0xc3, + 0xac, 0x6a, 0x37, 0x46, 0xf1, 0x1f, 0x7b, 0xa0, 0xf1, 0xc9, 0x11, 0x0b, 0x03, 0xab, 0x15, 0x5e, + 0x24, 0x34, 0xbe, 0xd6, 0x60, 0xaa, 0x20, 0xd4, 0xe7, 0x06, 0xef, 0x26, 0xef, 0x52, 0xb1, 0xf6, + 0xbd, 0x6e, 0xf4, 0xcb, 0x2f, 0xb3, 0x6a, 0x16, 0x17, 0xd0, 0x1f, 0x60, 0xda, 0xce, 0xc2, 0xf0, + 0xe7, 0x16, 0x7b, 0xc3, 0xaf, 0xf8, 0x9a, 0xa9, 0x5a, 0xc2, 0x6d, 0xd0, 0xd5, 0xc7, 0x60, 0x14, + 0x3d, 0x4f, 0x3a, 0xb5, 0xbc, 0x90, 0x3a, 0x4f, 0x4f, 0x9c, 0x57, 0x94, 0x54, 0xc8, 0xe0, 0x3d, + 0xae, 0x85, 0x37, 0x69, 0x4f, 0xae, 0xfc, 0x7d, 0xd2, 0x39, 0xe3, 0xc5, 0x4a, 0xce, 0x8b, 0xff, + 0x83, 0xf9, 0x92, 0xfd, 0x2e, 0x05, 0xeb, 0x6c, 0xe4, 0x07, 0x82, 0x18, 0x5e, 0xf4, 0xaf, 0x65, + 0x0f, 0x7a, 0x9e, 0xcc, 0x0a, 0x31, 0x1a, 0x49, 0x75, 0x13, 0x24, 0x19, 0x07, 0x44, 0xfa, 0x79, + 0xff, 0xe7, 0x49, 0x88, 0x5f, 0x19, 0xd1, 0x23, 0xb8, 0xd1, 0xea, 0x3d, 0xaa, 0xa1, 0x5a, 0x0a, + 0x02, 0x32, 0xcf, 0x83, 0xc6, 0xac, 0x8a, 0xcc, 0x28, 0x7a, 0x08, 0x63, 0x6f, 0xd3, 0xf9, 0x18, + 0x4d, 0x27, 0x4c, 0xf2, 0x04, 0x6f, 0xcc, 0x14, 0x89, 0xb1, 0xdc, 0x69, 0x3a, 0x5e, 0x0a, 0x39, + 0x79, 0x34, 0x15, 0x72, 0x99, 0x29, 0x14, 0x3d, 0x85, 0xaa, 0x2d, 0xbf, 0xc1, 0xa1, 0xb9, 0x34, + 0x20, 0x72, 0x2f, 0x79, 0x86, 0xae, 0x5e, 0x60, 0x14, 0x3d, 0x86, 0x71, 0x26, 0xbd, 0x89, 0xa1, + 0xd9, 0x5c, 0x42, 0xa6, 0x3b, 0xcc, 0x29, 0xe9, 0x8c, 0xa2, 0xff, 0xc3, 0x9c, 0xad, 0x7e, 0xbb, + 0x42, 0xbf, 0xc9, 0x69, 0x2d, 0xbe, 0x2e, 0x19, 0x78, 0x10, 0x0b, 0xa3, 0xe8, 0x18, 0xe6, 0xed, + 0xb2, 0x37, 0x22, 0x74, 0xbb, 0xb7, 0x41, 0xe9, 0x1b, 0x96, 0xb1, 0x3a, 0x98, 0x89, 0x51, 0x74, + 0x00, 0x28, 0x2c, 0xbc, 0xc4, 0xa0, 0xc5, 0x44, 0x56, 0xf9, 0x4e, 0x64, 0xdc, 0xea, 0xb3, 0xca, + 0x28, 0x6a, 0x81, 0x6e, 0x97, 0x3c, 0x41, 0x20, 0x9c, 0xc9, 0x5e, 0xe5, 0x03, 0x8a, 0x71, 0x7b, + 0x20, 0x4f, 0x6c, 0xb7, 0x5d, 0x18, 0xfd, 0x85, 0xdd, 0xca, 0x67, 0x0a, 0x61, 0x77, 0xc9, 0x9b, + 0xc1, 0x0b, 0x98, 0xb6, 0x8b, 0xd3, 0x38, 0x52, 0x4b, 0x89, 0x28, 0x5b, 0xea, 0xb7, 0xcc, 0x6b, + 0xd9, 0xc4, 0x49, 0x76, 0x30, 0x46, 0x69, 0xfd, 0x2f, 0x8e, 0xe7, 0x86, 0x51, 0xb6, 0x24, 0x8e, + 0x9c, 0x1b, 0x66, 0xe5, 0x23, 0x17, 0xc7, 0x6c, 0xf9, 0xc8, 0xaa, 0x29, 0x78, 0x0f, 0xa6, 0x9c, + 0xfc, 0x1c, 0x89, 0x16, 0x12, 0x19, 0xd5, 0x4c, 0x6b, 0x2c, 0x96, 0x2f, 0xc6, 0x49, 0x2d, 0x92, + 0x53, 0x24, 0xb5, 0x3c, 0x17, 0x89, 0xa4, 0xce, 0x8e, 0x27, 0x85, 0xdb, 0x8c, 0xa0, 0x79, 0xc9, + 0x6d, 0x26, 0xa3, 0x44, 0xc9, 0x6d, 0x0a, 0x4c, 0xff, 0x18, 0xc6, 0xdb, 0x12, 0x9c, 0x16, 0x39, + 0x9e, 0x03, 0xe4, 0x22, 0xc7, 0xf3, 0xd8, 0x3b, 0xba, 0xb8, 0x4e, 0x16, 0xa4, 0x8a, 0x8b, 0x2b, + 0x42, 0x61, 0x71, 0x71, 0x0a, 0x5c, 0x8b, 0x5e, 0x43, 0xad, 0xa5, 0x02, 0xbd, 0x68, 0x39, 0xad, + 0xa9, 0x25, 0x00, 0xdb, 0x58, 0xe9, 0xcf, 0x10, 0x7b, 0x5c, 0x58, 0x29, 0x3c, 0x2e, 0x83, 0x60, + 0xe1, 0xf1, 0x0c, 0xd2, 0x8d, 0x4e, 0x97, 0xb3, 0x49, 0x9c, 0xae, 0x08, 0xa4, 0xc5, 0xe9, 0x14, + 0x98, 0x39, 0xa9, 0x85, 0x2a, 0xf4, 0x2b, 0xd7, 0xc2, 0x12, 0x4c, 0x2d, 0xd7, 0xc2, 0x52, 0x00, + 0x1d, 0x47, 0x47, 0x0e, 0xd5, 0xca, 0xd1, 0x51, 0x44, 0xc9, 0x72, 0x74, 0xa8, 0xe0, 0xf0, 0x01, + 0x20, 0x56, 0xc4, 0xb3, 0x8b, 0xe5, 0xc0, 0x4c, 0xda, 0x52, 0x8d, 0xcb, 0xd0, 0xbf, 0x61, 0xc6, + 0x56, 0x00, 0x1a, 0x94, 0x2f, 0x10, 0x39, 0xd0, 0x66, 0x2c, 0xf7, 0x5d, 0x8f, 0xc3, 0xc7, 0x56, + 0x61, 0x0e, 0xb4, 0x9c, 0xad, 0xf0, 0x05, 0x84, 0x23, 0xc2, 0xa7, 0x1c, 0xb2, 0x48, 0x46, 0xcb, + 0xd8, 0x01, 0xa9, 0xab, 0x9a, 0x40, 0x23, 0x05, 0xa3, 0xf3, 0xc0, 0xe3, 0xe9, 0xf2, 0xeb, 0x5b, + 0xfb, 0x94, 0x78, 0x87, 0x3b, 0x0d, 0xe9, 0xbf, 0x48, 0x2e, 0xf3, 0x57, 0xfe, 0x7b, 0x34, 0xc2, + 0x49, 0x1b, 0xbf, 0x04, 0x00, 0x00, 0xff, 0xff, 0x19, 0x28, 0x60, 0x4b, 0xfe, 0x1c, 0x00, 0x00, } diff --git a/pkg/proto/group/group.proto b/pkg/proto/group/group.proto index 227577a30..160cc06a8 100644 --- a/pkg/proto/group/group.proto +++ b/pkg/proto/group/group.proto @@ -227,17 +227,6 @@ message CancelMuteGroupReq{ message CancelMuteGroupResp{ } - - - -message SetGroupMemberNicknameReq{ - string groupID = 1; - string nickname = 2; - string userID = 3; -} -message SetGroupMemberNicknameResp{ -} - message GetJoinedSuperGroupListReq { string userID = 1; } @@ -254,7 +243,7 @@ message GetSuperGroupsInfoResp { repeated server_api_params.GroupInfo groupInfos = 1; } -message SetGroupMemberInfoReq{ +message SetGroupMemberInfo{ string groupID = 1; string userID = 2; google.protobuf.StringValue nickname = 3; @@ -263,6 +252,10 @@ message SetGroupMemberInfoReq{ google.protobuf.StringValue ex = 6; } +message SetGroupMemberInfoReq{ + repeated SetGroupMemberInfo members = 1; +} + message SetGroupMemberInfoResp{ } @@ -348,7 +341,6 @@ service group{ //获取指定的超级群信息 rpc getSuperGroupsInfo(GetSuperGroupsInfoReq) returns (GetSuperGroupsInfoResp); //设置群成员昵称 - rpc setGroupMemberNickname(SetGroupMemberNicknameReq) returns (SetGroupMemberNicknameResp); //设置群成员信息 rpc setGroupMemberInfo(SetGroupMemberInfoReq) returns (SetGroupMemberInfoResp); //获取群信息hash值