Merge remote-tracking branch 'origin/errcode' into errcode

This commit is contained in:
Gordon 2023-02-01 15:58:14 +08:00
commit 7c92de7899
26 changed files with 536 additions and 717 deletions

View File

@ -0,0 +1,11 @@
package check
import (
server_api_params "Open_IM/pkg/proto/sdk_ws"
"context"
"errors"
)
func GetFriendsInfo(ctx context.Context, ownerUserID, friendUserID string) (*server_api_params.FriendInfo, error) {
return nil, errors.New("TODO:GetUserInfo")
}

View File

@ -6,14 +6,17 @@ import (
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
"Open_IM/pkg/common/http" "Open_IM/pkg/common/http"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
"Open_IM/pkg/common/tracelog"
pbFriend "Open_IM/pkg/proto/friend" pbFriend "Open_IM/pkg/proto/friend"
"context"
//"Open_IM/pkg/proto/msg" //"Open_IM/pkg/proto/msg"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
http2 "net/http" http2 "net/http"
) )
func callbackBeforeAddFriendV1(req *pbFriend.AddFriendReq) error { func callbackBeforeAddFriendV1(ctx context.Context, req *pbFriend.AddFriendReq) error {
resp := callbackBeforeAddFriend(req) resp := callbackBeforeAddFriend(ctx, req)
if resp.ErrCode != 0 { if resp.ErrCode != 0 {
return (&constant.ErrInfo{ return (&constant.ErrInfo{
ErrCode: resp.ErrCode, ErrCode: resp.ErrCode,
@ -23,28 +26,28 @@ func callbackBeforeAddFriendV1(req *pbFriend.AddFriendReq) error {
return nil return nil
} }
func callbackBeforeAddFriend(req *pbFriend.AddFriendReq) cbApi.CommonCallbackResp { func callbackBeforeAddFriend(ctx context.Context, req *pbFriend.AddFriendReq) cbApi.CommonCallbackResp {
callbackResp := cbApi.CommonCallbackResp{OperationID: req.CommID.OperationID} callbackResp := cbApi.CommonCallbackResp{OperationID: tracelog.GetOperationID(ctx)}
if !config.Config.Callback.CallbackBeforeAddFriend.Enable { if !config.Config.Callback.CallbackBeforeAddFriend.Enable {
return callbackResp return callbackResp
} }
log.NewDebug(req.CommID.OperationID, utils.GetSelfFuncName(), req.String())
commonCallbackReq := &cbApi.CallbackBeforeAddFriendReq{ commonCallbackReq := &cbApi.CallbackBeforeAddFriendReq{
CallbackCommand: constant.CallbackBeforeAddFriendCommand, CallbackCommand: constant.CallbackBeforeAddFriendCommand,
FromUserID: req.CommID.FromUserID, FromUserID: req.FromUserID,
ToUserID: req.CommID.ToUserID, ToUserID: req.ToUserID,
ReqMsg: req.ReqMsg, ReqMsg: req.ReqMsg,
OperationID: req.CommID.OperationID, OperationID: tracelog.GetOperationID(ctx),
} }
resp := &cbApi.CallbackBeforeAddFriendResp{ resp := &cbApi.CallbackBeforeAddFriendResp{
CommonCallbackResp: &callbackResp, CommonCallbackResp: &callbackResp,
} }
//utils.CopyStructFields(req, msg.MsgData) //utils.CopyStructFields(req, msg.MsgData)
defer log.NewDebug(req.CommID.OperationID, utils.GetSelfFuncName(), commonCallbackReq, *resp) defer log.NewDebug(tracelog.GetOperationID(ctx), utils.GetSelfFuncName(), commonCallbackReq, *resp)
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeAddFriendCommand, commonCallbackReq, resp, config.Config.Callback.CallbackBeforeAddFriend.CallbackTimeOut); err != nil { if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeAddFriendCommand, commonCallbackReq, resp, config.Config.Callback.CallbackBeforeAddFriend); err != nil {
callbackResp.ErrCode = http2.StatusInternalServerError callbackResp.ErrCode = http2.StatusInternalServerError
callbackResp.ErrMsg = err.Error() callbackResp.ErrMsg = err.Error()
if !config.Config.Callback.CallbackBeforeAddFriend.CallbackFailedContinue { if !*config.Config.Callback.CallbackBeforeAddFriend.CallbackFailedContinue {
callbackResp.ActionCode = constant.ActionForbidden callbackResp.ActionCode = constant.ActionForbidden
return callbackResp return callbackResp
} else { } else {

View File

@ -120,7 +120,7 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil { if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil {
return nil, err return nil, err
} }
if err := callbackBeforeAddFriendV1(req); err != nil { if err := callbackBeforeAddFriendV1(ctx, req); err != nil {
return nil, err return nil, err
} }
@ -140,7 +140,7 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
if err = s.FriendInterface.AddFriendRequest(ctx, req.FromUserID, req.ToUserID, req.ReqMsg, req.Ex); err != nil { if err = s.FriendInterface.AddFriendRequest(ctx, req.FromUserID, req.ToUserID, req.ReqMsg, req.Ex); err != nil {
return nil, err return nil, err
} }
chat.FriendApplicationNotification(req) chat.FriendApplicationNotification(ctx, req)
return resp, nil return resp, nil
} }
@ -177,7 +177,7 @@ func (s *friendServer) RespondFriendApply(ctx context.Context, req *pbFriend.Res
if err != nil { if err != nil {
return nil, err return nil, err
} }
chat.FriendApplicationApprovedNotification(req) chat.FriendApplicationApprovedNotification(ctx, req)
return resp, nil return resp, nil
} }
if req.HandleResult == constant.FriendResponseRefuse { if req.HandleResult == constant.FriendResponseRefuse {
@ -185,7 +185,7 @@ func (s *friendServer) RespondFriendApply(ctx context.Context, req *pbFriend.Res
if err != nil { if err != nil {
return nil, err return nil, err
} }
chat.FriendApplicationRejectedNotification(req) chat.FriendApplicationRejectedNotification(ctx, req)
return resp, nil return resp, nil
} }
return nil, constant.ErrArgs.Wrap("req.HandleResult != -1/1") return nil, constant.ErrArgs.Wrap("req.HandleResult != -1/1")
@ -199,7 +199,7 @@ func (s *friendServer) DeleteFriend(ctx context.Context, req *pbFriend.DeleteFri
if err := s.FriendInterface.Delete(ctx, req.OwnerUserID, req.FriendUserID); err != nil { if err := s.FriendInterface.Delete(ctx, req.OwnerUserID, req.FriendUserID); err != nil {
return nil, err return nil, err
} }
chat.FriendDeletedNotification(req) chat.FriendDeletedNotification(ctx, req)
return resp, nil return resp, nil
} }
@ -211,7 +211,7 @@ func (s *friendServer) SetFriendRemark(ctx context.Context, req *pbFriend.SetFri
if err := s.FriendInterface.UpdateRemark(ctx, req.OwnerUserID, req.FriendUserID, req.Remark); err != nil { if err := s.FriendInterface.UpdateRemark(ctx, req.OwnerUserID, req.FriendUserID, req.Remark); err != nil {
return nil, err return nil, err
} }
chat.FriendRemarkSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.OwnerUserID, req.FriendUserID) chat.FriendRemarkSetNotification(ctx, req.OwnerUserID, req.FriendUserID)
return resp, nil return resp, nil
} }

View File

@ -1,9 +1,7 @@
package group package group
import ( import (
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/tracelog"
relation "Open_IM/pkg/common/db/mysql"
pbGroup "Open_IM/pkg/proto/group"
sdk_ws "Open_IM/pkg/proto/sdk_ws" sdk_ws "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
@ -12,32 +10,32 @@ import (
"time" "time"
) )
func getDBGroupRequest(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (dbGroupRequest *relation.GroupRequest) { //func getDBGroupRequest(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (dbGroupRequest *relation.GroupRequest) {
dbGroupRequest = &relation.GroupRequest{} // dbGroupRequest = &relation.GroupRequest{}
utils.CopyStructFields(&dbGroupRequest, req) // utils.CopyStructFields(&dbGroupRequest, req)
dbGroupRequest.UserID = req.FromUserID // dbGroupRequest.UserID = req.FromUserID
dbGroupRequest.HandleUserID = utils.OpUserID(ctx) // dbGroupRequest.HandleUserID = utils.OpUserID(ctx)
dbGroupRequest.HandledTime = time.Now() // dbGroupRequest.HandledTime = time.Now()
return dbGroupRequest // return dbGroupRequest
} //}
//
func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMember *relation.GroupMember, err error) { //func getDBGroupMember(ctx context.Context, groupID, userID string) (dbGroupMember *relation.GroupMember, err error) {
dbGroupMember = &relation.GroupMember{} // dbGroupMember = &relation.GroupMember{}
//
member := relation.GroupMember{} // member := relation.GroupMember{}
member.GroupID = groupID // member.GroupID = groupID
member.UserID = userID // member.UserID = userID
member.RoleLevel = constant.GroupOrdinaryUsers // member.RoleLevel = constant.GroupOrdinaryUsers
member.OperatorUserID = utils.OpUserID(ctx) // member.OperatorUserID = utils.OpUserID(ctx)
//
member.FaceURL = user.FaceURL // member.FaceURL = user.FaceURL
member.Nickname = user.Nickname // member.Nickname = user.Nickname
member.JoinSource = request.JoinSource // member.JoinSource = request.JoinSource
member.InviterUserID = request.InviterUserID // member.InviterUserID = request.InviterUserID
member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0) // member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0)
//
return dbGroupMember, nil // return dbGroupMember, nil
} //}
func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk_ws.UserInfo, error) { func getUsersInfo(ctx context.Context, userIDs []string) ([]*sdk_ws.UserInfo, error) {
return nil, nil return nil, nil
@ -59,7 +57,7 @@ func genGroupID(ctx context.Context, groupID string) string {
if groupID != "" { if groupID != "" {
return groupID return groupID
} }
groupID = utils.Md5(utils.OperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10)) groupID = utils.Md5(tracelog.GetOperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10))
bi := big.NewInt(0) bi := big.NewInt(0)
bi.SetString(groupID[0:8], 16) bi.SetString(groupID[0:8], 16)
groupID = bi.String() groupID = bi.String()

View File

@ -14,8 +14,8 @@ import (
promePkg "Open_IM/pkg/common/prometheus" promePkg "Open_IM/pkg/common/prometheus"
"Open_IM/pkg/common/token_verify" "Open_IM/pkg/common/token_verify"
"Open_IM/pkg/common/tracelog" "Open_IM/pkg/common/tracelog"
"fmt"
cp "Open_IM/internal/utils"
"Open_IM/pkg/getcdv3" "Open_IM/pkg/getcdv3"
pbConversation "Open_IM/pkg/proto/conversation" pbConversation "Open_IM/pkg/proto/conversation"
pbGroup "Open_IM/pkg/proto/group" pbGroup "Open_IM/pkg/proto/group"
@ -144,7 +144,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
return nil, constant.ErrArgs.Wrap("no group owner") return nil, constant.ErrArgs.Wrap("no group owner")
} }
var userIDs []string var userIDs []string
for _, userID := range req.InitMemberList { for _, userID := range req.InitMembers {
userIDs = append(userIDs, userID) userIDs = append(userIDs, userID)
} }
for _, userID := range req.AdminUserIDs { for _, userID := range req.AdminUserIDs {
@ -179,12 +179,11 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
return nil, err return nil, err
} }
} else { } else {
opUserID := utils.OpUserID(ctx)
joinGroup := func(userID string, roleLevel int32) error { joinGroup := func(userID string, roleLevel int32) error {
user := userMap[userID] user := userMap[userID]
groupMember := &relation.GroupMember{GroupID: group.GroupID, RoleLevel: roleLevel, OperatorUserID: opUserID, JoinSource: constant.JoinByInvitation, InviterUserID: opUserID} groupMember := &relation.GroupMember{GroupID: group.GroupID, RoleLevel: roleLevel, OperatorUserID: tracelog.GetOpUserID(ctx), JoinSource: constant.JoinByInvitation, InviterUserID: tracelog.GetOpUserID(ctx)}
utils.CopyStructFields(&groupMember, user) utils.CopyStructFields(&groupMember, user)
if err := CallbackBeforeMemberJoinGroup(ctx, utils.OperationID(ctx), groupMember, group.Ex); err != nil { if err := CallbackBeforeMemberJoinGroup(ctx, tracelog.GetOperationID(ctx), groupMember, group.Ex); err != nil {
return err return err
} }
groupMembers = append(groupMembers, groupMember) groupMembers = append(groupMembers, groupMember)
@ -198,7 +197,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
return nil, err return nil, err
} }
} }
for _, userID := range req.InitMemberList { for _, userID := range req.InitMembers {
if err := joinGroup(userID, constant.GroupOrdinaryUsers); err != nil { if err := joinGroup(userID, constant.GroupOrdinaryUsers); err != nil {
return nil, err return nil, err
} }
@ -212,11 +211,11 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
if req.GroupInfo.GroupType == constant.SuperGroup { if req.GroupInfo.GroupType == constant.SuperGroup {
go func() { go func() {
for _, userID := range userIDs { for _, userID := range userIDs {
chat.SuperGroupNotification(utils.OperationID(ctx), userID, userID) chat.SuperGroupNotification(tracelog.GetOperationID(ctx), userID, userID)
} }
}() }()
} else { } else {
chat.GroupCreatedNotification(utils.OperationID(ctx), utils.OpUserID(ctx), group.GroupID, userIDs) chat.GroupCreatedNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), group.GroupID, userIDs)
} }
return resp, nil return resp, nil
} }
@ -255,18 +254,18 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo
groupNode.OwnerUserID = groupOwnerUserID[group.GroupID] groupNode.OwnerUserID = groupOwnerUserID[group.GroupID]
groupNode.CreateTime = group.CreateTime.UnixMilli() groupNode.CreateTime = group.CreateTime.UnixMilli()
groupNode.NotificationUpdateTime = group.NotificationUpdateTime.UnixMilli() groupNode.NotificationUpdateTime = group.NotificationUpdateTime.UnixMilli()
resp.GroupList = append(resp.GroupList, &groupNode) resp.Groups = append(resp.Groups, &groupNode)
} }
resp.Total = int32(len(resp.GroupList)) resp.Total = int32(len(resp.Groups))
return resp, nil return resp, nil
} }
func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.InviteUserToGroupReq) (*pbGroup.InviteUserToGroupResp, error) { func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.InviteUserToGroupReq) (*pbGroup.InviteUserToGroupResp, error) {
resp := &pbGroup.InviteUserToGroupResp{} resp := &pbGroup.InviteUserToGroupResp{}
if len(req.InvitedUserIDList) == 0 { if len(req.InvitedUserIDs) == 0 {
return nil, constant.ErrArgs.Wrap("user empty") return nil, constant.ErrArgs.Wrap("user empty")
} }
if utils.IsDuplicateID(req.InvitedUserIDList) { if utils.IsDuplicateID(req.InvitedUserIDs) {
return nil, constant.ErrArgs.Wrap("userID duplicate") return nil, constant.ErrArgs.Wrap("userID duplicate")
} }
group, err := s.GroupInterface.TakeGroupByID(ctx, req.GroupID) group, err := s.GroupInterface.TakeGroupByID(ctx, req.GroupID)
@ -284,30 +283,30 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
for i, member := range members { for i, member := range members {
memberMap[member.GroupID] = members[i] memberMap[member.GroupID] = members[i]
} }
for _, userID := range req.InvitedUserIDList { for _, userID := range req.InvitedUserIDs {
if _, ok := memberMap[userID]; ok { if _, ok := memberMap[userID]; ok {
return nil, constant.ErrArgs.Wrap("user in group " + userID) return nil, constant.ErrArgs.Wrap("user in group " + userID)
} }
} }
userMap, err := getUserMap(ctx, req.InvitedUserIDList) userMap, err := getUserMap(ctx, req.InvitedUserIDs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, userID := range req.InvitedUserIDList { for _, userID := range req.InvitedUserIDs {
if _, ok := userMap[userID]; !ok { if _, ok := userMap[userID]; !ok {
return nil, constant.ErrUserIDNotFound.Wrap(userID) return nil, constant.ErrUserIDNotFound.Wrap(userID)
} }
} }
if group.NeedVerification == constant.AllNeedVerification { if group.NeedVerification == constant.AllNeedVerification {
if !token_verify.IsAppManagerUid(ctx) { if !token_verify.IsAppManagerUid(ctx) {
opUserID := utils.OpUserID(ctx) opUserID := tracelog.GetOpUserID(ctx)
member, ok := memberMap[opUserID] member, ok := memberMap[opUserID]
if ok { if !ok {
return nil, constant.ErrNoPermission.Wrap("not in group") return nil, constant.ErrNoPermission.Wrap("not in group")
} }
if !(member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin) { if !(member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin) {
var requests []*relation.GroupRequest var requests []*relation.GroupRequest
for _, userID := range req.InvitedUserIDList { for _, userID := range req.InvitedUserIDs {
requests = append(requests, &relation.GroupRequest{ requests = append(requests, &relation.GroupRequest{
UserID: userID, UserID: userID,
GroupID: req.GroupID, GroupID: req.GroupID,
@ -331,24 +330,25 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
} }
} }
if group.GroupType == constant.SuperGroup { if group.GroupType == constant.SuperGroup {
if err := s.GroupInterface.AddUserToSuperGroup(ctx, req.GroupID, req.InvitedUserIDList); err != nil { if err := s.GroupInterface.AddUserToSuperGroup(ctx, req.GroupID, req.InvitedUserIDs); err != nil {
return nil, err return nil, err
} }
for _, userID := range req.InvitedUserIDList { for _, userID := range req.InvitedUserIDs {
chat.SuperGroupNotification(utils.OperationID(ctx), userID, userID) chat.SuperGroupNotification(tracelog.GetOperationID(ctx), userID, userID)
} }
} else { } else {
opUserID := tracelog.GetOpUserID(ctx)
var groupMembers []*relation.GroupMember var groupMembers []*relation.GroupMember
for _, userID := range req.InvitedUserIDList { for _, userID := range req.InvitedUserIDs {
user := userMap[userID] user := userMap[userID]
var member relation.GroupMember var member relation.GroupMember
utils.CopyStructFields(&member, user) utils.CopyStructFields(&member, user)
member.GroupID = req.GroupID member.GroupID = req.GroupID
member.RoleLevel = constant.GroupOrdinaryUsers member.RoleLevel = constant.GroupOrdinaryUsers
member.OperatorUserID = utils.OpUserID(ctx) member.OperatorUserID = opUserID
member.InviterUserID = utils.OpUserID(ctx) member.InviterUserID = opUserID
member.JoinSource = constant.JoinByInvitation member.JoinSource = constant.JoinByInvitation
if err := CallbackBeforeMemberJoinGroup(ctx, utils.OperationID(ctx), &member, group.Ex); err != nil { if err := CallbackBeforeMemberJoinGroup(ctx, tracelog.GetOperationID(ctx), &member, group.Ex); err != nil {
return nil, err return nil, err
} }
groupMembers = append(groupMembers, &member) groupMembers = append(groupMembers, &member)
@ -356,7 +356,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
if err := s.GroupInterface.CreateGroupMember(ctx, groupMembers); err != nil { if err := s.GroupInterface.CreateGroupMember(ctx, groupMembers); err != nil {
return nil, err return nil, err
} }
chat.MemberInvitedNotification(utils.OperationID(ctx), req.GroupID, utils.OpUserID(ctx), req.Reason, req.InvitedUserIDList) chat.MemberInvitedNotification(tracelog.GetOperationID(ctx), req.GroupID, tracelog.GetOpUserID(ctx), req.Reason, req.InvitedUserIDs)
} }
return resp, nil return resp, nil
} }
@ -379,7 +379,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro
for _, member := range members { for _, member := range members {
var node open_im_sdk.GroupMemberFullInfo var node open_im_sdk.GroupMemberFullInfo
utils.CopyStructFields(&node, member) utils.CopyStructFields(&node, member)
resp.MemberList = append(resp.MemberList, &node) resp.Members = append(resp.Members, &node)
} }
} }
return resp, nil return resp, nil
@ -387,20 +387,14 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro
func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) { func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) {
resp := &pbGroup.GetGroupMemberListResp{} resp := &pbGroup.GetGroupMemberListResp{}
memberList, err := s.GroupInterface.GetGroupMemberFilterList(ctx, req.GroupID, req.Filter, req.NextSeq, 30) members, err := s.GroupInterface.GetGroupMemberFilterList(ctx, req.GroupID, req.Filter, req.Pagination.PageNumber, req.Pagination.ShowNumber)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, v := range memberList { for _, member := range members {
var node open_im_sdk.GroupMemberFullInfo var info open_im_sdk.GroupMemberFullInfo
utils.CopyStructFields(&node, &v) utils.CopyStructFields(&info, &member)
resp.MemberList = append(resp.MemberList, &node) resp.Members = append(resp.Members, &info)
}
//db operate get db sorted by join time
if int32(len(memberList)) < 30 {
resp.NextSeq = 0
} else {
resp.NextSeq = req.NextSeq + int32(len(memberList))
} }
return resp, nil return resp, nil
} }
@ -427,120 +421,74 @@ func (s *groupServer) getGroupUserLevel(groupID, userID string) (int, error) {
func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGroupMemberReq) (*pbGroup.KickGroupMemberResp, error) { func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGroupMemberReq) (*pbGroup.KickGroupMemberResp, error) {
resp := &pbGroup.KickGroupMemberResp{} resp := &pbGroup.KickGroupMemberResp{}
group, err := s.GroupInterface.TakeGroupByID(ctx, req.GroupID)
groupInfo, err := rocksCache.GetGroupInfoFromCache(ctx, req.GroupID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
var okUserIDList []string if len(req.KickedUserIDs) == 0 {
if groupInfo.GroupType != constant.SuperGroup { return nil, constant.ErrArgs.Wrap("KickedUserIDs empty")
opFlag := 0 }
if !token_verify.IsManagerUserID(utils.OpUserID(ctx)) { if utils.IsDuplicateStringSlice(req.KickedUserIDs) {
opInfo, err := rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, utils.OpUserID(ctx)) return nil, constant.ErrArgs.Wrap("KickedUserIDs duplicate")
if err != nil { }
opUserID := tracelog.GetOpUserID(ctx)
if utils.IsContain(opUserID, req.KickedUserIDs) {
return nil, constant.ErrArgs.Wrap("opUserID in KickedUserIDs")
}
if group.GroupType == constant.SuperGroup {
if err := s.GroupInterface.DelSuperGroupMember(ctx, req.GroupID, req.KickedUserIDs); err != nil {
return nil, err return nil, err
} }
if opInfo.RoleLevel == constant.GroupOrdinaryUsers {
return nil, utils.Wrap(constant.ErrNoPermission, "")
} else if opInfo.RoleLevel == constant.GroupOwner {
opFlag = 2 //owner
} else {
opFlag = 3 //admin
}
} else {
opFlag = 1 //app manager
}
//op is group owner?
if len(req.KickedUserIDList) == 0 {
//log.NewError(req.OperationID, "failed, kick list 0")
//return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}, nil
return nil, utils.Wrap(constant.ErrArgs, "")
}
if err := s.DelGroupAndUserCache(ctx, req.GroupID, req.KickedUserIDList); err != nil {
return nil, err
}
//remove
for _, v := range req.KickedUserIDList {
kickedInfo, err := rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, v)
if err != nil {
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1})
tracelog.SetCtxInfo(ctx, "GetGroupMemberInfoFromCache", err, "groupID", req.GroupID, "userID", v)
continue
}
if kickedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 {
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1})
tracelog.SetCtxInfo(ctx, "", nil, "msg", "is constant.GroupAdmin, can't kicked", "groupID", req.GroupID, "userID", v)
continue
}
if kickedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 {
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1})
tracelog.SetCtxInfo(ctx, "", nil, "msg", "is constant.GroupOwner, can't kicked", "groupID", req.GroupID, "userID", v)
continue
}
err = relation.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, v)
tracelog.SetCtxInfo(ctx, "RemoveGroupMember", err, "groupID", req.GroupID, "userID", v)
if err != nil {
log.NewError(utils.OperationID(ctx), "RemoveGroupMember failed ", err.Error(), req.GroupID, v)
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1})
} else {
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: 0})
okUserIDList = append(okUserIDList, v)
}
}
var reqPb pbUser.SetConversationReq
var c pbConversation.Conversation
for _, v := range okUserIDList {
reqPb.OperationID = utils.OperationID(ctx)
c.OwnerUserID = v
c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType)
c.ConversationType = constant.GroupChatType
c.GroupID = req.GroupID
c.IsNotInGroup = true
reqPb.Conversation = &c
etcdConn, err := getcdv3.GetConn(ctx, config.Config.RpcRegisterName.OpenImUserName)
if err != nil {
return nil, err
}
client := pbUser.NewUserClient(etcdConn)
respPb, err := client.SetConversation(context.Background(), &reqPb)
tracelog.SetCtxInfo(ctx, "SetConversation", err, "req", &reqPb, "resp", respPb)
}
} else {
okUserIDList = req.KickedUserIDList
if err := db.DB.RemoverUserFromSuperGroup(req.GroupID, okUserIDList); err != nil {
return nil, err
}
}
if groupInfo.GroupType != constant.SuperGroup {
for _, userID := range okUserIDList {
if err := rocksCache.DelGroupMemberInfoFromCache(ctx, req.GroupID, userID); err != nil {
tracelog.SetCtxInfo(ctx, "DelGroupMemberInfoFromCache", err, "groupID", req.GroupID, "userID", userID)
}
}
chat.MemberKickedNotification(req, okUserIDList)
} else {
for _, userID := range okUserIDList {
if err = rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, userID); err != nil {
tracelog.SetCtxInfo(ctx, "DelGroupMemberInfoFromCache", err, "userID", userID)
}
}
go func() { go func() {
for _, v := range req.KickedUserIDList { for _, userID := range req.KickedUserIDs {
chat.SuperGroupNotification(utils.OperationID(ctx), v, v) chat.SuperGroupNotification(tracelog.GetOperationID(ctx), userID, userID)
} }
}() }()
} else {
members, err := s.GroupInterface.FindGroupMembersByID(ctx, req.GroupID, append(req.KickedUserIDs, opUserID))
if err != nil {
return nil, err
}
memberMap := make(map[string]*relation.GroupMember)
for i, member := range members {
memberMap[member.UserID] = members[i]
}
for _, userID := range req.KickedUserIDs {
if _, ok := memberMap[userID]; !ok {
return nil, constant.ErrUserIDNotFound.Wrap(userID)
}
}
if !token_verify.IsAppManagerUid(ctx) {
member := memberMap[opUserID]
if member == nil {
return nil, constant.ErrNoPermission.Wrap(fmt.Sprintf("opUserID %s no in group", opUserID))
}
switch member.RoleLevel {
case constant.GroupOwner:
case constant.GroupAdmin:
for _, member := range members {
if member.UserID == opUserID {
continue
}
if member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin {
return nil, constant.ErrNoPermission.Wrap("userID:" + member.UserID)
}
}
default:
return nil, constant.ErrNoPermission.Wrap("opUserID is OrdinaryUser")
}
}
if err := s.GroupInterface.DelGroupMember(ctx, group.GroupID, req.KickedUserIDs); err != nil {
return nil, err
}
chat.MemberKickedNotification(req, req.KickedUserIDs)
} }
return resp, nil return resp, nil
} }
func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetGroupMembersInfoReq) (*pbGroup.GetGroupMembersInfoResp, error) { func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetGroupMembersInfoReq) (*pbGroup.GetGroupMembersInfoResp, error) {
resp := &pbGroup.GetGroupMembersInfoResp{} resp := &pbGroup.GetGroupMembersInfoResp{}
members, err := s.GroupInterface.GetGroupMemberListByUserID(ctx, req.GroupID, req.MemberList) members, err := s.GroupInterface.GetGroupMemberListByUserID(ctx, req.GroupID, req.Members)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -548,7 +496,7 @@ func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbGroup.GetG
var memberNode open_im_sdk.GroupMemberFullInfo var memberNode open_im_sdk.GroupMemberFullInfo
utils.CopyStructFields(&memberNode, member) utils.CopyStructFields(&memberNode, member)
memberNode.JoinTime = member.JoinTime.UnixMilli() memberNode.JoinTime = member.JoinTime.UnixMilli()
resp.MemberList = append(resp.MemberList, &memberNode) resp.Members = append(resp.Members, &memberNode)
} }
return resp, nil return resp, nil
} }
@ -578,15 +526,51 @@ func FillPublicUserInfoByUserID(operationID, userID string, userInfo *open_im_sd
func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.GetGroupApplicationListReq) (*pbGroup.GetGroupApplicationListResp, error) { func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.GetGroupApplicationListReq) (*pbGroup.GetGroupApplicationListResp, error) {
resp := &pbGroup.GetGroupApplicationListResp{} resp := &pbGroup.GetGroupApplicationListResp{}
reply, err := relation.GetRecvGroupApplicationList(req.FromUserID) groupRequests, err := s.GroupInterface.GetGroupRecvApplicationList(ctx, req.FromUserID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(groupRequests) == 0 {
return resp, nil
}
var (
userIDs []string
groupIDs []string
)
for _, gr := range groupRequests {
userIDs = append(userIDs, gr.UserID)
groupIDs = append(groupIDs, gr.GroupID)
}
userMap, err := getUserMap(ctx, userIDs)
if err != nil {
return nil, err
}
for _, userID := range userIDs {
if _, ok := userMap[userID]; !ok {
return nil, constant.ErrUserIDNotFound.Wrap(userID)
}
}
groups, err := s.GroupInterface.FindGroupsByID(ctx, groupIDs)
if err != nil {
return nil, err
}
groupMap := make(map[string]*relation.Group)
for i, group := range groups {
groupMap[group.GroupID] = groups[i]
}
for _, gr := range groupRequests {
groupRequest := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}}
utils.CopyStructFields(&groupRequest, gr)
getUserMap()
}
var errResult error var errResult error
tracelog.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", reply) tracelog.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", groupRequests)
for _, v := range reply { for _, v := range groupRequests {
node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}} node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}}
err := FillGroupInfoByGroupID(utils.OperationID(ctx), v.GroupID, node.GroupInfo) err := FillGroupInfoByGroupID(tracelog.GetOperationID(ctx), v.GroupID, node.GroupInfo)
if err != nil { if err != nil {
if !errors.Is(errors.Unwrap(err), constant.ErrDismissedAlready) { if !errors.Is(errors.Unwrap(err), constant.ErrDismissedAlready) {
errResult = err errResult = err
@ -594,7 +578,7 @@ func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup.
continue continue
} }
tracelog.SetCtxInfo(ctx, "FillGroupInfoByGroupID ", nil, " groupID: ", v.GroupID, " groupInfo: ", node.GroupInfo) tracelog.SetCtxInfo(ctx, "FillGroupInfoByGroupID ", nil, " groupID: ", v.GroupID, " groupInfo: ", node.GroupInfo)
err = FillPublicUserInfoByUserID(utils.OperationID(ctx), v.UserID, node.UserInfo) err = FillPublicUserInfoByUserID(tracelog.GetOperationID(ctx), v.UserID, node.UserInfo)
if err != nil { if err != nil {
errResult = err errResult = err
continue continue
@ -639,7 +623,7 @@ func CheckPermission(ctx context.Context, groupID string, userID string) (err er
func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (*pbGroup.GroupApplicationResponseResp, error) { func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (*pbGroup.GroupApplicationResponseResp, error) {
resp := &pbGroup.GroupApplicationResponseResp{} resp := &pbGroup.GroupApplicationResponseResp{}
if err := CheckPermission(ctx, req.GroupID, utils.OpUserID(ctx)); err != nil { if err := CheckPermission(ctx, req.GroupID, tracelog.GetOpUserID(ctx)); err != nil {
return nil, err return nil, err
} }
groupRequest := getDBGroupRequest(ctx, req) groupRequest := getDBGroupRequest(ctx, req)
@ -655,7 +639,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = CallbackBeforeMemberJoinGroup(ctx, utils.OperationID(ctx), member, groupInfo.Ex) err = CallbackBeforeMemberJoinGroup(ctx, tracelog.GetOperationID(ctx), member, groupInfo.Ex)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -663,12 +647,12 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
if err != nil { if err != nil {
return nil, err return nil, err
} }
etcdCacheConn, err := fault_tolerant.GetDefaultConn(config.Config.RpcRegisterName.OpenImCacheName, utils.OperationID(ctx)) etcdCacheConn, err := fault_tolerant.GetDefaultConn(config.Config.RpcRegisterName.OpenImCacheName, tracelog.GetOperationID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
cacheClient := pbCache.NewCacheClient(etcdCacheConn) cacheClient := pbCache.NewCacheClient(etcdCacheConn)
cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{OperationID: utils.OperationID(ctx), GroupID: req.GroupID}) cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{OperationID: tracelog.GetOperationID(ctx), GroupID: req.GroupID})
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -695,7 +679,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) (*pbGroup.JoinGroupResp, error) { func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) (*pbGroup.JoinGroupResp, error) {
resp := &pbGroup.JoinGroupResp{} resp := &pbGroup.JoinGroupResp{}
if _, err := relation.GetUserByUserID(utils.OpUserID(ctx)); err != nil { if _, err := relation.GetUserByUserID(tracelog.GetOpUserID(ctx)); err != nil {
return nil, err return nil, err
} }
groupInfo, err := rocksCache.GetGroupInfoFromCache(ctx, req.GroupID) groupInfo, err := rocksCache.GetGroupInfoFromCache(ctx, req.GroupID)
@ -708,17 +692,17 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
if groupInfo.NeedVerification == constant.Directly { if groupInfo.NeedVerification == constant.Directly {
if groupInfo.GroupType != constant.SuperGroup { if groupInfo.GroupType != constant.SuperGroup {
us, err := relation.GetUserByUserID(utils.OpUserID(ctx)) us, err := relation.GetUserByUserID(tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
//to group member //to group member
groupMember := relation.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: utils.OpUserID(ctx)} groupMember := relation.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: tracelog.GetOpUserID(ctx)}
utils.CopyStructFields(&groupMember, us) utils.CopyStructFields(&groupMember, us)
if err := CallbackBeforeMemberJoinGroup(ctx, utils.OperationID(ctx), &groupMember, groupInfo.Ex); err != nil { if err := CallbackBeforeMemberJoinGroup(ctx, tracelog.GetOperationID(ctx), &groupMember, groupInfo.Ex); err != nil {
return nil, err return nil, err
} }
if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{utils.OpUserID(ctx)}); err != nil { if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{tracelog.GetOpUserID(ctx)}); err != nil {
return nil, err return nil, err
} }
err = relation.InsertIntoGroupMember(groupMember) err = relation.InsertIntoGroupMember(groupMember)
@ -734,8 +718,8 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
} }
var reqPb pbUser.SetConversationReq var reqPb pbUser.SetConversationReq
var c pbConversation.Conversation var c pbConversation.Conversation
reqPb.OperationID = utils.OperationID(ctx) reqPb.OperationID = tracelog.GetOperationID(ctx)
c.OwnerUserID = utils.OpUserID(ctx) c.OwnerUserID = tracelog.GetOpUserID(ctx)
c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType)
c.ConversationType = int32(sessionType) c.ConversationType = int32(sessionType)
c.GroupID = req.GroupID c.GroupID = req.GroupID
@ -749,7 +733,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
client := pbUser.NewUserClient(etcdConn) client := pbUser.NewUserClient(etcdConn)
respPb, err := client.SetConversation(context.Background(), &reqPb) respPb, err := client.SetConversation(context.Background(), &reqPb)
tracelog.SetCtxInfo(ctx, "SetConversation", err, "req", reqPb, "resp", respPb) tracelog.SetCtxInfo(ctx, "SetConversation", err, "req", reqPb, "resp", respPb)
chat.MemberEnterDirectlyNotification(req.GroupID, utils.OpUserID(ctx), utils.OperationID(ctx)) chat.MemberEnterDirectlyNotification(req.GroupID, tracelog.GetOpUserID(ctx), tracelog.GetOperationID(ctx))
return resp, nil return resp, nil
} else { } else {
constant.SetErrorForResp(constant.ErrGroupTypeNotSupport, resp.CommonResp) constant.SetErrorForResp(constant.ErrGroupTypeNotSupport, resp.CommonResp)
@ -757,7 +741,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
} }
} }
var groupRequest relation.GroupRequest var groupRequest relation.GroupRequest
groupRequest.UserID = utils.OpUserID(ctx) groupRequest.UserID = tracelog.GetOpUserID(ctx)
groupRequest.ReqMsg = req.ReqMessage groupRequest.ReqMsg = req.ReqMessage
groupRequest.GroupID = req.GroupID groupRequest.GroupID = req.GroupID
groupRequest.JoinSource = req.JoinSource groupRequest.JoinSource = req.JoinSource
@ -777,31 +761,31 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq)
return nil, err return nil, err
} }
if groupInfo.GroupType != constant.SuperGroup { if groupInfo.GroupType != constant.SuperGroup {
_, err = rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, utils.OpUserID(ctx)) _, err = rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{utils.OpUserID(ctx)}); err != nil { if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{tracelog.GetOpUserID(ctx)}); err != nil {
return nil, err return nil, err
} }
err = relation.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, utils.OpUserID(ctx)) err = relation.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
} else { } else {
okUserIDList := []string{utils.OpUserID(ctx)} okUserIDList := []string{tracelog.GetOpUserID(ctx)}
if err := db.DB.RemoverUserFromSuperGroup(req.GroupID, okUserIDList); err != nil { if err := db.DB.RemoverUserFromSuperGroup(req.GroupID, okUserIDList); err != nil {
return nil, err return nil, err
} }
} }
if groupInfo.GroupType != constant.SuperGroup { if groupInfo.GroupType != constant.SuperGroup {
_ = rocksCache.DelGroupMemberInfoFromCache(ctx, req.GroupID, utils.OpUserID(ctx)) _ = rocksCache.DelGroupMemberInfoFromCache(ctx, req.GroupID, tracelog.GetOpUserID(ctx))
chat.MemberQuitNotification(req) chat.MemberQuitNotification(req)
} else { } else {
_ = rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, utils.OpUserID(ctx)) _ = rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, tracelog.GetOpUserID(ctx))
_ = rocksCache.DelGroupMemberListHashFromCache(ctx, req.GroupID) _ = rocksCache.DelGroupMemberListHashFromCache(ctx, req.GroupID)
chat.SuperGroupNotification(utils.OperationID(ctx), utils.OpUserID(ctx), utils.OpUserID(ctx)) chat.SuperGroupNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), tracelog.GetOpUserID(ctx))
} }
return resp, nil return resp, nil
} }
@ -870,7 +854,7 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf
var groupInfo relation.Group var groupInfo relation.Group
utils.CopyStructFields(&groupInfo, req.GroupInfoForSet) utils.CopyStructFields(&groupInfo, req.GroupInfoForSet)
if req.GroupInfoForSet.Notification != "" { if req.GroupInfoForSet.Notification != "" {
groupInfo.NotificationUserID = utils.OpUserID(ctx) groupInfo.NotificationUserID = tracelog.GetOpUserID(ctx)
groupInfo.NotificationUpdateTime = time.Now() groupInfo.NotificationUpdateTime = time.Now()
} }
if err := rocksCache.DelGroupInfoFromCache(ctx, req.GroupInfoForSet.GroupID); err != nil { if err := rocksCache.DelGroupInfoFromCache(ctx, req.GroupInfoForSet.GroupID); err != nil {
@ -881,11 +865,11 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf
return nil, err return nil, err
} }
if changedType != 0 { if changedType != 0 {
chat.GroupInfoSetNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupInfoForSet.GroupID, groupName, notification, introduction, faceURL, req.GroupInfoForSet.NeedVerification) chat.GroupInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupInfoForSet.GroupID, groupName, notification, introduction, faceURL, req.GroupInfoForSet.NeedVerification)
} }
if req.GroupInfoForSet.Notification != "" { if req.GroupInfoForSet.Notification != "" {
//get group member user id //get group member user id
getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: utils.OperationID(ctx), GroupID: req.GroupInfoForSet.GroupID} getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: tracelog.GetOperationID(ctx), GroupID: req.GroupInfoForSet.GroupID}
etcdConn, err := getcdv3.GetConn(ctx, config.Config.RpcRegisterName.OpenImCacheName) etcdConn, err := getcdv3.GetConn(ctx, config.Config.RpcRegisterName.OpenImCacheName)
if err != nil { if err != nil {
return nil, err return nil, err
@ -900,13 +884,13 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf
} }
var conversationReq pbConversation.ModifyConversationFieldReq var conversationReq pbConversation.ModifyConversationFieldReq
conversation := pbConversation.Conversation{ conversation := pbConversation.Conversation{
OwnerUserID: utils.OpUserID(ctx), OwnerUserID: tracelog.GetOpUserID(ctx),
ConversationID: utils.GetConversationIDBySessionType(req.GroupInfoForSet.GroupID, constant.GroupChatType), ConversationID: utils.GetConversationIDBySessionType(req.GroupInfoForSet.GroupID, constant.GroupChatType),
ConversationType: constant.GroupChatType, ConversationType: constant.GroupChatType,
GroupID: req.GroupInfoForSet.GroupID, GroupID: req.GroupInfoForSet.GroupID,
} }
conversationReq.Conversation = &conversation conversationReq.Conversation = &conversation
conversationReq.OperationID = utils.OperationID(ctx) conversationReq.OperationID = tracelog.GetOperationID(ctx)
conversationReq.FieldType = constant.FieldGroupAtType conversationReq.FieldType = constant.FieldGroupAtType
conversation.GroupAtType = constant.GroupNotification conversation.GroupAtType = constant.GroupNotification
conversationReq.UserIDList = cacheResp.UserIDList conversationReq.UserIDList = cacheResp.UserIDList
@ -1019,7 +1003,7 @@ func (s *groupServer) GetGroupMembersCMS(ctx context.Context, req *pbGroup.GetGr
if err != nil { if err != nil {
return nil, err return nil, err
} }
log.NewInfo(utils.OperationID(ctx), groupMembersCount) log.NewInfo(tracelog.GetOperationID(ctx), groupMembersCount)
resp.MemberNums = int32(groupMembersCount) resp.MemberNums = int32(groupMembersCount)
for _, groupMember := range groupMembers { for _, groupMember := range groupMembers {
member := open_im_sdk.GroupMemberFullInfo{} member := open_im_sdk.GroupMemberFullInfo{}
@ -1064,7 +1048,7 @@ func (s *groupServer) GetUserReqApplicationList(ctx context.Context, req *pbGrou
func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) { func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) {
resp := &pbGroup.DismissGroupResp{} resp := &pbGroup.DismissGroupResp{}
if !token_verify.IsManagerUserID(utils.OpUserID(ctx)) && !relation.IsGroupOwnerAdmin(req.GroupID, utils.OpUserID(ctx)) { if !token_verify.IsManagerUserID(tracelog.GetOpUserID(ctx)) && !relation.IsGroupOwnerAdmin(req.GroupID, tracelog.GetOpUserID(ctx)) {
return nil, utils.Wrap(constant.ErrIdentity, "") return nil, utils.Wrap(constant.ErrIdentity, "")
} }
@ -1092,7 +1076,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou
var reqPb pbUser.SetConversationReq var reqPb pbUser.SetConversationReq
var c pbConversation.Conversation var c pbConversation.Conversation
for _, v := range memberList { for _, v := range memberList {
reqPb.OperationID = utils.OperationID(ctx) reqPb.OperationID = tracelog.GetOperationID(ctx)
c.OwnerUserID = v.UserID c.OwnerUserID = v.UserID
c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType)
c.ConversationType = constant.GroupChatType c.ConversationType = constant.GroupChatType
@ -1121,7 +1105,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou
func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) { func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) {
resp := &pbGroup.MuteGroupMemberResp{} resp := &pbGroup.MuteGroupMemberResp{}
opFlag, err := s.getGroupUserLevel(req.GroupID, utils.OpUserID(ctx)) opFlag, err := s.getGroupUserLevel(req.GroupID, tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -1149,14 +1133,14 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou
if err != nil { if err != nil {
return nil, err return nil, err
} }
chat.GroupMemberMutedNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID, req.UserID, req.MutedSeconds) chat.GroupMemberMutedNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID, req.MutedSeconds)
return resp, nil return resp, nil
} }
func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) { func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) {
resp := &pbGroup.CancelMuteGroupMemberResp{} resp := &pbGroup.CancelMuteGroupMemberResp{}
opFlag, err := s.getGroupUserLevel(req.GroupID, utils.OpUserID(ctx)) opFlag, err := s.getGroupUserLevel(req.GroupID, tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -1184,14 +1168,14 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca
if err != nil { if err != nil {
return nil, err return nil, err
} }
chat.GroupMemberCancelMutedNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID, req.UserID) chat.GroupMemberCancelMutedNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID)
return resp, nil return resp, nil
} }
func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) (*pbGroup.MuteGroupResp, error) { func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) (*pbGroup.MuteGroupResp, error) {
resp := &pbGroup.MuteGroupResp{} resp := &pbGroup.MuteGroupResp{}
opFlag, err := s.getGroupUserLevel(req.GroupID, utils.OpUserID(ctx)) opFlag, err := s.getGroupUserLevel(req.GroupID, tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -1224,14 +1208,14 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq)
return nil, err return nil, err
} }
chat.GroupMutedNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID) chat.GroupMutedNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID)
return resp, nil return resp, nil
} }
func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) { func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) {
resp := &pbGroup.CancelMuteGroupResp{} resp := &pbGroup.CancelMuteGroupResp{}
opFlag, err := s.getGroupUserLevel(req.GroupID, utils.OpUserID(ctx)) opFlag, err := s.getGroupUserLevel(req.GroupID, tracelog.GetOpUserID(ctx))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -1251,7 +1235,7 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu
// errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error()
// return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil // return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
//} //}
log.Debug(utils.OperationID(ctx), "UpdateGroupInfoDefaultZero ", req.GroupID, map[string]interface{}{"status": constant.GroupOk}) log.Debug(tracelog.GetOperationID(ctx), "UpdateGroupInfoDefaultZero ", req.GroupID, map[string]interface{}{"status": constant.GroupOk})
if err := rocksCache.DelGroupInfoFromCache(ctx, req.GroupID); err != nil { if err := rocksCache.DelGroupInfoFromCache(ctx, req.GroupID); err != nil {
return nil, err return nil, err
} }
@ -1259,13 +1243,13 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu
if err != nil { if err != nil {
return nil, err return nil, err
} }
chat.GroupCancelMutedNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID) chat.GroupCancelMutedNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID)
return resp, nil return resp, nil
} }
func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.SetGroupMemberNicknameReq) (*pbGroup.SetGroupMemberNicknameResp, error) { func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.SetGroupMemberNicknameReq) (*pbGroup.SetGroupMemberNicknameResp, error) {
resp := &pbGroup.SetGroupMemberNicknameResp{} resp := &pbGroup.SetGroupMemberNicknameResp{}
if utils.OpUserID(ctx) != req.UserID && !token_verify.IsManagerUserID(utils.OpUserID(ctx)) { if tracelog.GetOpUserID(ctx) != req.UserID && !token_verify.IsManagerUserID(tracelog.GetOpUserID(ctx)) {
return nil, utils.Wrap(constant.ErrIdentity, "") return nil, utils.Wrap(constant.ErrIdentity, "")
} }
cbReq := &pbGroup.SetGroupMemberInfoReq{ cbReq := &pbGroup.SetGroupMemberInfoReq{
@ -1297,7 +1281,7 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S
if err := relation.UpdateGroupMemberInfo(groupMemberInfo); err != nil { if err := relation.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
return nil, err return nil, err
} }
chat.GroupMemberInfoSetNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID, req.UserID) chat.GroupMemberInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID)
return resp, nil return resp, nil
} }
@ -1336,13 +1320,13 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr
switch req.RoleLevel.Value { switch req.RoleLevel.Value {
case constant.GroupOrdinaryUsers: case constant.GroupOrdinaryUsers:
//msg.GroupMemberRoleLevelChangeNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, constant.GroupMemberSetToOrdinaryUserNotification) //msg.GroupMemberRoleLevelChangeNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, constant.GroupMemberSetToOrdinaryUserNotification)
chat.GroupMemberInfoSetNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID, req.UserID) chat.GroupMemberInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID)
case constant.GroupAdmin, constant.GroupOwner: case constant.GroupAdmin, constant.GroupOwner:
//msg.GroupMemberRoleLevelChangeNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, constant.GroupMemberSetToAdminNotification) //msg.GroupMemberRoleLevelChangeNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, constant.GroupMemberSetToAdminNotification)
chat.GroupMemberInfoSetNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID, req.UserID) chat.GroupMemberInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID)
} }
} else { } else {
chat.GroupMemberInfoSetNotification(utils.OperationID(ctx), utils.OpUserID(ctx), req.GroupID, req.UserID) chat.GroupMemberInfoSetNotification(tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx), req.GroupID, req.UserID)
} }
return resp, nil return resp, nil
} }

View File

@ -4,9 +4,8 @@ import (
"Open_IM/internal/common/check" "Open_IM/internal/common/check"
"Open_IM/pkg/common/config" "Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant" "Open_IM/pkg/common/constant"
imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
utils2 "Open_IM/pkg/common/utils" "Open_IM/pkg/common/tracelog"
pbFriend "Open_IM/pkg/proto/friend" pbFriend "Open_IM/pkg/proto/friend"
open_im_sdk "Open_IM/pkg/proto/sdk_ws" open_im_sdk "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
@ -92,82 +91,83 @@ func friendNotification(operationID, fromUserID, toUserID string, contentType in
Notification(&n) Notification(&n)
} }
func FriendApplicationNotification(operationID string, req *pbFriend.AddFriendReq) { func FriendApplicationNotification(ctx context.Context, req *pbFriend.AddFriendReq) {
FriendApplicationTips := open_im_sdk.FriendApplicationTips{FromToUserID: &open_im_sdk.FromToUserID{}} FriendApplicationTips := open_im_sdk.FriendApplicationTips{FromToUserID: &open_im_sdk.FromToUserID{}}
FriendApplicationTips.FromToUserID.FromUserID = req.FromUserID FriendApplicationTips.FromToUserID.FromUserID = req.FromUserID
FriendApplicationTips.FromToUserID.ToUserID = req.ToUserID FriendApplicationTips.FromToUserID.ToUserID = req.ToUserID
friendNotification(operationID, req.FromUserID, req.ToUserID, constant.FriendApplicationNotification, &FriendApplicationTips) friendNotification(tracelog.GetOperationID(ctx), req.FromUserID, req.ToUserID, constant.FriendApplicationNotification, &FriendApplicationTips)
} }
func FriendApplicationApprovedNotification(operationID string, req *pbFriend.RespondFriendApplyReq) { func FriendApplicationApprovedNotification(ctx context.Context, req *pbFriend.RespondFriendApplyReq) {
FriendApplicationApprovedTips := open_im_sdk.FriendApplicationApprovedTips{FromToUserID: &open_im_sdk.FromToUserID{}} FriendApplicationApprovedTips := open_im_sdk.FriendApplicationApprovedTips{FromToUserID: &open_im_sdk.FromToUserID{}}
FriendApplicationApprovedTips.FromToUserID.FromUserID = req.FromUserID FriendApplicationApprovedTips.FromToUserID.FromUserID = req.FromUserID
FriendApplicationApprovedTips.FromToUserID.ToUserID = req.ToUserID FriendApplicationApprovedTips.FromToUserID.ToUserID = req.ToUserID
FriendApplicationApprovedTips.HandleMsg = req.HandleMsg FriendApplicationApprovedTips.HandleMsg = req.HandleMsg
friendNotification(operationID, req.ToUserID, req.FromUserID, constant.FriendApplicationApprovedNotification, &FriendApplicationApprovedTips) friendNotification(tracelog.GetOperationID(ctx), req.ToUserID, req.FromUserID, constant.FriendApplicationApprovedNotification, &FriendApplicationApprovedTips)
} }
func FriendApplicationRejectedNotification(operationID string, req *pbFriend.RespondFriendApplyReq) { func FriendApplicationRejectedNotification(ctx context.Context, req *pbFriend.RespondFriendApplyReq) {
FriendApplicationApprovedTips := open_im_sdk.FriendApplicationApprovedTips{FromToUserID: &open_im_sdk.FromToUserID{}} FriendApplicationApprovedTips := open_im_sdk.FriendApplicationApprovedTips{FromToUserID: &open_im_sdk.FromToUserID{}}
FriendApplicationApprovedTips.FromToUserID.FromUserID = req.FromUserID FriendApplicationApprovedTips.FromToUserID.FromUserID = req.FromUserID
FriendApplicationApprovedTips.FromToUserID.ToUserID = req.ToUserID FriendApplicationApprovedTips.FromToUserID.ToUserID = req.ToUserID
FriendApplicationApprovedTips.HandleMsg = req.HandleMsg FriendApplicationApprovedTips.HandleMsg = req.HandleMsg
friendNotification(operationID, req.ToUserID, req.FromUserID, constant.FriendApplicationRejectedNotification, &FriendApplicationApprovedTips) friendNotification(tracelog.GetOperationID(ctx), req.ToUserID, req.FromUserID, constant.FriendApplicationRejectedNotification, &FriendApplicationApprovedTips)
} }
func FriendAddedNotification(operationID, opUserID, fromUserID, toUserID string) { func FriendAddedNotification(ctx context.Context, operationID, opUserID, fromUserID, toUserID string) {
friendAddedTips := open_im_sdk.FriendAddedTips{Friend: &open_im_sdk.FriendInfo{}, OpUser: &open_im_sdk.PublicUserInfo{}} friendAddedTips := open_im_sdk.FriendAddedTips{Friend: &open_im_sdk.FriendInfo{}, OpUser: &open_im_sdk.PublicUserInfo{}}
user, err := imdb.GetUserByUserID(opUserID) user, err := check.GetUsersInfo(context.Background(), opUserID)
if err != nil { if err != nil {
log.NewError(operationID, "GetUserByUserID failed ", err.Error(), opUserID)
return return
} }
utils2.UserDBCopyOpenIMPublicUser(friendAddedTips.OpUser, user) friendAddedTips.OpUser.UserID = user[0].UserID
friend, err := imdb.GetFriendRelationshipFromFriend(fromUserID, toUserID) friendAddedTips.OpUser.Ex = user[0].Ex
if err != nil { friendAddedTips.OpUser.Nickname = user[0].Nickname
log.NewError(operationID, "GetFriendRelationshipFromFriend failed ", err.Error(), fromUserID, toUserID) friendAddedTips.OpUser.FaceURL = user[0].FaceURL
return
}
utils2.FriendDBCopyOpenIM(friendAddedTips.Friend, friend)
friend, err := check.GetFriendsInfo(ctx, fromUserID, toUserID)
if err != nil {
return
}
friendAddedTips.Friend = friend
friendNotification(operationID, fromUserID, toUserID, constant.FriendAddedNotification, &friendAddedTips) friendNotification(operationID, fromUserID, toUserID, constant.FriendAddedNotification, &friendAddedTips)
} }
func FriendDeletedNotification(operationID string, req *pbFriend.DeleteFriendReq) { func FriendDeletedNotification(ctx context.Context, req *pbFriend.DeleteFriendReq) {
friendDeletedTips := open_im_sdk.FriendDeletedTips{FromToUserID: &open_im_sdk.FromToUserID{}} friendDeletedTips := open_im_sdk.FriendDeletedTips{FromToUserID: &open_im_sdk.FromToUserID{}}
friendDeletedTips.FromToUserID.FromUserID = req.OwnerUserID friendDeletedTips.FromToUserID.FromUserID = req.OwnerUserID
friendDeletedTips.FromToUserID.ToUserID = req.FriendUserID friendDeletedTips.FromToUserID.ToUserID = req.FriendUserID
friendNotification(operationID, req.OwnerUserID, req.FriendUserID, constant.FriendDeletedNotification, &friendDeletedTips) friendNotification(tracelog.GetOperationID(ctx), req.OwnerUserID, req.FriendUserID, constant.FriendDeletedNotification, &friendDeletedTips)
} }
func FriendRemarkSetNotification(operationID, fromUserID, toUserID string) { func FriendRemarkSetNotification(ctx context.Context, fromUserID, toUserID string) {
friendInfoChangedTips := open_im_sdk.FriendInfoChangedTips{FromToUserID: &open_im_sdk.FromToUserID{}} friendInfoChangedTips := open_im_sdk.FriendInfoChangedTips{FromToUserID: &open_im_sdk.FromToUserID{}}
friendInfoChangedTips.FromToUserID.FromUserID = fromUserID friendInfoChangedTips.FromToUserID.FromUserID = fromUserID
friendInfoChangedTips.FromToUserID.ToUserID = toUserID friendInfoChangedTips.FromToUserID.ToUserID = toUserID
friendNotification(operationID, fromUserID, toUserID, constant.FriendRemarkSetNotification, &friendInfoChangedTips) friendNotification(tracelog.GetOperationID(ctx), fromUserID, toUserID, constant.FriendRemarkSetNotification, &friendInfoChangedTips)
} }
func BlackAddedNotification(operationID string, req *pbFriend.AddBlackReq) { func BlackAddedNotification(ctx context.Context, req *pbFriend.AddBlackReq) {
blackAddedTips := open_im_sdk.BlackAddedTips{FromToUserID: &open_im_sdk.FromToUserID{}} blackAddedTips := open_im_sdk.BlackAddedTips{FromToUserID: &open_im_sdk.FromToUserID{}}
blackAddedTips.FromToUserID.FromUserID = req.OwnerUserID blackAddedTips.FromToUserID.FromUserID = req.OwnerUserID
blackAddedTips.FromToUserID.ToUserID = req.BlackUserID blackAddedTips.FromToUserID.ToUserID = req.BlackUserID
friendNotification(operationID, req.OwnerUserID, req.BlackUserID, constant.BlackAddedNotification, &blackAddedTips) friendNotification(tracelog.GetOperationID(ctx), req.OwnerUserID, req.BlackUserID, constant.BlackAddedNotification, &blackAddedTips)
} }
func BlackDeletedNotification(operationID string, req *pbFriend.RemoveBlackReq) { func BlackDeletedNotification(ctx context.Context, req *pbFriend.RemoveBlackReq) {
blackDeletedTips := open_im_sdk.BlackDeletedTips{FromToUserID: &open_im_sdk.FromToUserID{}} blackDeletedTips := open_im_sdk.BlackDeletedTips{FromToUserID: &open_im_sdk.FromToUserID{}}
blackDeletedTips.FromToUserID.FromUserID = req.OwnerUserID blackDeletedTips.FromToUserID.FromUserID = req.OwnerUserID
blackDeletedTips.FromToUserID.ToUserID = req.BlackUserID blackDeletedTips.FromToUserID.ToUserID = req.BlackUserID
friendNotification(operationID, req.OwnerUserID, req.BlackUserID, constant.BlackDeletedNotification, &blackDeletedTips) friendNotification(tracelog.GetOperationID(ctx), req.OwnerUserID, req.BlackUserID, constant.BlackDeletedNotification, &blackDeletedTips)
} }
// send to myself // send to myself
func UserInfoUpdatedNotification(operationID, opUserID string, changedUserID string) { func UserInfoUpdatedNotification(ctx context.Context, opUserID string, changedUserID string) {
selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: changedUserID} selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: changedUserID}
friendNotification(operationID, opUserID, changedUserID, constant.UserInfoUpdatedNotification, &selfInfoUpdatedTips) friendNotification(tracelog.GetOperationID(ctx), opUserID, changedUserID, constant.UserInfoUpdatedNotification, &selfInfoUpdatedTips)
} }
func FriendInfoUpdatedNotification(operationID, changedUserID string, needNotifiedUserID string, opUserID string) { func FriendInfoUpdatedNotification(ctx context.Context, changedUserID string, needNotifiedUserID string, opUserID string) {
selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: changedUserID} selfInfoUpdatedTips := open_im_sdk.UserInfoUpdatedTips{UserID: changedUserID}
friendNotification(operationID, opUserID, needNotifiedUserID, constant.FriendInfoUpdatedNotification, &selfInfoUpdatedTips) friendNotification(tracelog.GetOperationID(ctx), opUserID, needNotifiedUserID, constant.FriendInfoUpdatedNotification, &selfInfoUpdatedTips)
} }

View File

@ -1,14 +1,5 @@
package api_struct package api_struct
//UserID string `protobuf:"bytes,1,opt,name=UserID" json:"UserID,omitempty"`
// Nickname string `protobuf:"bytes,2,opt,name=Nickname" json:"Nickname,omitempty"`
// FaceUrl string `protobuf:"bytes,3,opt,name=FaceUrl" json:"FaceUrl,omitempty"`
// Gender int32 `protobuf:"varint,4,opt,name=Gender" json:"Gender,omitempty"`
// PhoneNumber string `protobuf:"bytes,5,opt,name=PhoneNumber" json:"PhoneNumber,omitempty"`
// Birth string `protobuf:"bytes,6,opt,name=Birth" json:"Birth,omitempty"`
// Email string `protobuf:"bytes,7,opt,name=Email" json:"Email,omitempty"`
// Ex string `protobuf:"bytes,8,opt,name=Ex" json:"Ex,omitempty"`
type UserRegisterReq struct { type UserRegisterReq struct {
Secret string `json:"secret" binding:"required,max=32"` Secret string `json:"secret" binding:"required,max=32"`
Platform int32 `json:"platform" binding:"required,min=1,max=12"` Platform int32 `json:"platform" binding:"required,min=1,max=12"`

30
pkg/api_struct/public.go Normal file
View File

@ -0,0 +1,30 @@
package api_struct
import (
"net/http"
"github.com/gin-gonic/gin"
)
type ApiUserInfo struct {
UserID string `json:"userID" binding:"required,min=1,max=64" swaggo:"true,用户ID,"`
Nickname string `json:"nickname" binding:"omitempty,min=1,max=64" swaggo:"true,my id,19"`
FaceURL string `json:"faceURL" binding:"omitempty,max=1024"`
Gender int32 `json:"gender" binding:"omitempty,oneof=0 1 2"`
PhoneNumber string `json:"phoneNumber" binding:"omitempty,max=32"`
Birth int64 `json:"birth" binding:"omitempty"`
Email string `json:"email" binding:"omitempty,max=64"`
CreateTime int64 `json:"createTime"`
Ex string `json:"ex" binding:"omitempty,max=1024"`
}
type GroupAddMemberInfo struct {
UserID string `json:"userID" binding:"required"`
RoleLevel int32 `json:"roleLevel" binding:"required,oneof= 1 3"`
}
func SetErrCodeMsg(c *gin.Context, status int) *CommResp {
resp := CommResp{ErrCode: int32(status), ErrMsg: http.StatusText(status)}
c.JSON(status, resp)
return &resp
}

View File

@ -1,143 +0,0 @@
package api_struct
import (
"net/http"
"github.com/gin-gonic/gin"
)
type ApiUserInfo struct {
UserID string `json:"userID" binding:"required,min=1,max=64" swaggo:"true,用户ID,"`
Nickname string `json:"nickname" binding:"omitempty,min=1,max=64" swaggo:"true,my id,19"`
FaceURL string `json:"faceURL" binding:"omitempty,max=1024"`
Gender int32 `json:"gender" binding:"omitempty,oneof=0 1 2"`
PhoneNumber string `json:"phoneNumber" binding:"omitempty,max=32"`
Birth uint32 `json:"birth" binding:"omitempty"`
Email string `json:"email" binding:"omitempty,max=64"`
CreateTime int64 `json:"createTime"`
LoginLimit int32 `json:"loginLimit" binding:"omitempty"`
Ex string `json:"ex" binding:"omitempty,max=1024"`
BirthStr string `json:"birthStr" binding:"omitempty"`
}
//type Conversation struct {
// OwnerUserID string `gorm:"column:owner_user_id;primary_key;type:char(128)" json:"OwnerUserID"`
// ConversationID string `gorm:"column:conversation_id;primary_key;type:char(128)" json:"conversationID"`
// ConversationType int32 `gorm:"column:conversation_type" json:"conversationType"`
// UserID string `gorm:"column:user_id;type:char(64)" json:"userID"`
// GroupID string `gorm:"column:group_id;type:char(128)" json:"groupID"`
// RecvMsgOpt int32 `gorm:"column:recv_msg_opt" json:"recvMsgOpt"`
// UnreadCount int32 `gorm:"column:unread_count" json:"unreadCount"`
// DraftTextTime int64 `gorm:"column:draft_text_time" json:"draftTextTime"`
// IsPinned bool `gorm:"column:is_pinned" json:"isPinned"`
// AttachedInfo string `gorm:"column:attached_info;type:varchar(1024)" json:"attachedInfo"`
// Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"`
//}
type GroupAddMemberInfo struct {
UserID string `json:"userID" binding:"required"`
RoleLevel int32 `json:"roleLevel" binding:"required,oneof= 1 3"`
}
func SetErrCodeMsg(c *gin.Context, status int) *CommResp {
resp := CommResp{ErrCode: int32(status), ErrMsg: http.StatusText(status)}
c.JSON(status, resp)
return &resp
}
//GroupName string `json:"groupName"`
// Introduction string `json:"introduction"`
// Notification string `json:"notification"`
// FaceUrl string `json:"faceUrl"`
// OperationID string `json:"operationID" binding:"required"`
// GroupType int32 `json:"groupType"`
// Ex string `json:"ex"`
//type GroupInfo struct {
// GroupID string `json:"groupID"`
// GroupName string `json:"groupName"`
// Notification string `json:"notification"`
// Introduction string `json:"introduction"`
// FaceUrl string `json:"faceUrl"`
// OwnerUserID string `json:"ownerUserID"`
// Ex string `json:"ex"`
// GroupType int32 `json:"groupType"`
//}
//type GroupMemberFullInfo struct {
// GroupID string `json:"groupID"`
// UserID string `json:"userID"`
// RoleLevel int32 `json:"roleLevel"`
// JoinTime uint64 `json:"joinTime"`
// Nickname string `json:"nickname"`
// FaceUrl string `json:"faceUrl"`
// FriendRemark string `json:"friendRemark"`
// AppMangerLevel int32 `json:"appMangerLevel"`
// JoinSource int32 `json:"joinSource"`
// OperatorUserID string `json:"operatorUserID"`
// Ex string `json:"ex"`
//}
//
//type PublicUserInfo struct {
// UserID string `json:"userID"`
// Nickname string `json:"nickname"`
// FaceUrl string `json:"faceUrl"`
// Gender int32 `json:"gender"`
//}
//
//type UserInfo struct {
// UserID string `json:"userID"`
// Nickname string `json:"nickname"`
// FaceUrl string `json:"faceUrl"`
// Gender int32 `json:"gender"`
// Mobile string `json:"mobile"`
// Birth string `json:"birth"`
// Email string `json:"email"`
// Ex string `json:"ex"`
//}
//
//type FriendInfo struct {
// OwnerUserID string `json:"ownerUserID"`
// Remark string `json:"remark"`
// CreateTime int64 `json:"createTime"`
// FriendUser UserInfo `json:"friendUser"`
// AddSource int32 `json:"addSource"`
// OperatorUserID string `json:"operatorUserID"`
// Ex string `json:"ex"`
//}
//
//type BlackInfo struct {
// OwnerUserID string `json:"ownerUserID"`
// CreateTime int64 `json:"createTime"`
// BlackUser PublicUserInfo `json:"friendUser"`
// AddSource int32 `json:"addSource"`
// OperatorUserID string `json:"operatorUserID"`
// Ex string `json:"ex"`
//}
//
//type GroupRequest struct {
// UserID string `json:"userID"`
// GroupID string `json:"groupID"`
// HandleResult string `json:"handleResult"`
// ReqMsg string `json:"reqMsg"`
// HandleMsg string `json:"handleMsg"`
// ReqTime int64 `json:"reqTime"`
// HandleUserID string `json:"handleUserID"`
// HandleTime int64 `json:"handleTime"`
// Ex string `json:"ex"`
//}
//
//type FriendRequest struct {
// FromUserID string `json:"fromUserID"`
// ToUserID string `json:"toUserID"`
// HandleResult int32 `json:"handleResult"`
// ReqMessage string `json:"reqMessage"`
// CreateTime int64 `json:"createTime"`
// HandlerUserID string `json:"handlerUserID"`
// HandleMsg string `json:"handleMsg"`
// HandleTime int64 `json:"handleTime"`
// Ex string `json:"ex"`
//}
//
//
//

View File

@ -17,19 +17,23 @@ type GroupInterface interface {
CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error
DeleteGroupByIDs(ctx context.Context, groupIDs []string) error DeleteGroupByIDs(ctx context.Context, groupIDs []string) error
TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error) TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error)
TakeGroupMemberByID(ctx context.Context, groupID string, userID string) (groupMember *relation.GroupMember, err error)
GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error)
GetGroupMemberList(ctx context.Context, groupID string) ([]*relation.GroupMember, error) GetGroupMemberList(ctx context.Context, groupID string) ([]*relation.GroupMember, error)
GetGroupMemberListByUserID(ctx context.Context, groupID string, userIDs []string) ([]*relation.GroupMember, error) GetGroupMemberListByUserID(ctx context.Context, groupID string, userIDs []string) ([]*relation.GroupMember, error)
GetGroupMemberFilterList(ctx context.Context, groupID string, filter int32, begin int32, maxNumber int32) ([]*relation.GroupMember, error) // relation.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30) GetGroupMemberFilterList(ctx context.Context, groupID string, filter int32, begin int32, maxNumber int32) ([]*relation.GroupMember, error) // relation.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30)
FindGroupMembersByID(ctx context.Context, groupID string, userIDs []string) (groups []*relation.GroupMember, err error)
DelGroupMember(ctx context.Context, groupID string, userIDs []string) error
GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error) GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error)
GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error) GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error)
GetGroupRecvApplicationList(ctx context.Context, userID string) ([]*relation.GroupRequest, error)
CreateGroupMember(ctx context.Context, groupMember []*relation.GroupMember) error CreateGroupMember(ctx context.Context, groupMember []*relation.GroupMember) error
CreateGroupRequest(ctx context.Context, requests []*relation.GroupRequest) error CreateGroupRequest(ctx context.Context, requests []*relation.GroupRequest) error
//mongo //mongo
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error
DelSuperGroupMember(ctx context.Context, groupID string, userIDs []string) error
AddUserToSuperGroup(ctx context.Context, groupID string, userIDs []string) error AddUserToSuperGroup(ctx context.Context, groupID string, userIDs []string) error
GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error) GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error)
} }
@ -40,6 +44,51 @@ type GroupController struct {
database GroupDataBaseInterface database GroupDataBaseInterface
} }
func (g *GroupController) TakeGroupMemberByID(ctx context.Context, groupID string, userID string) (groupMember *relation.GroupMember, err error) {
//TODO implement me
panic("implement me")
}
func (g *GroupController) FindGroupMembersByID(ctx context.Context, groupID string, userIDs []string) (groups []*relation.GroupMember, err error) {
//TODO implement me
panic("implement me")
}
func (g *GroupController) DelGroupMember(ctx context.Context, groupID string, userIDs []string) error {
//TODO implement me
panic("implement me")
}
func (g *GroupController) GetGroupRecvApplicationList(ctx context.Context, userID string) ([]*relation.GroupRequest, error) {
/*
var groupRequestList []db.GroupRequest
memberList, err := GetGroupMemberListByUserID(userID)
if err != nil {
return nil, err
}
for _, v := range memberList {
if v.RoleLevel > constant.GroupOrdinaryUsers {
list, err := GetGroupRequestByGroupID(v.GroupID)
if err != nil {
// fmt.Println("111 GetGroupRequestByGroupID failed ", err.Error())
continue
}
// fmt.Println("222 GetGroupRequestByGroupID ok ", list)
groupRequestList = append(groupRequestList, list...)
// fmt.Println("333 GetGroupRequestByGroupID ok ", groupRequestList)
}
}
return groupRequestList, nil
*/
//TODO implement me
panic("implement me")
}
func (g *GroupController) DelSuperGroupMember(ctx context.Context, groupID string, userIDs []string) error {
//TODO implement me
panic("implement me")
}
func (g *GroupController) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) { func (g *GroupController) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) {
//TODO implement me //TODO implement me
panic("implement me") panic("implement me")

View File

@ -1,10 +1,6 @@
package middleware package middleware
import ( import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/log"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/utils"
"bytes" "bytes"
"encoding/json" "encoding/json"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -12,27 +8,6 @@ import (
"net/http" "net/http"
) )
func JWTAuth() gin.HandlerFunc {
return func(c *gin.Context) {
ok, userID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), "")
// log.NewInfo("0", utils.GetSelfFuncName(), "userID: ", userID)
c.Set("userID", userID)
if !ok {
log.NewError("", "GetUserIDFromToken false ", c.Request.Header.Get("token"))
c.Abort()
c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errInfo})
return
} else {
if !utils.IsContain(userID, config.Config.Manager.AppManagerUid) {
c.Abort()
c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": "user is not admin"})
return
}
log.NewInfo("0", utils.GetSelfFuncName(), "failed: ", errInfo)
}
}
}
func CorsHandler() gin.HandlerFunc { func CorsHandler() gin.HandlerFunc {
return func(context *gin.Context) { return func(context *gin.Context) {
context.Writer.Header().Set("Access-Control-Allow-Origin", "*") context.Writer.Header().Set("Access-Control-Allow-Origin", "*")

View File

@ -1,73 +0,0 @@
package multi_terminal_login
//
//import (
// "Open_IM/internal/push/content_struct"
// "Open_IM/internal/push/logic"
// "Open_IM/pkg/common/config"
// "Open_IM/pkg/common/constant"
// "Open_IM/pkg/common/db"
// pbChat "Open_IM/pkg/proto/msg"
// "Open_IM/pkg/utils"
//)
//
//const DayOfSecond = 24*60*60
//func MultiTerminalLoginChecker(uid, token string, platformID int32) error {
// // 1.check userid and platform class 0 not exists and 1 exists
// exists, err := db.DB.ExistsUserIDAndPlatform(uid, constant.PlatformNameToClass(constant.PlatformIDToName(platformID)))
// if err != nil {
// return err
// }
// //get config multi login policy
// if config.Config.MultiLoginPolicy {
// //OnlyOneTerminalAccess policy need to check all terminal
// if constant.PlatformNameToClass(constant.PlatformIDToName(platformID)) == "PC" {
// exists, err = db.DB.ExistsUserIDAndPlatform(uid, "Mobile")
// if err != nil {
// return err
// }
// } else {
// exists, err = db.DB.ExistsUserIDAndPlatform(uid, "PC")
// if err != nil {
// return err
// }
// }
// if exists == 1 {
// err := db.DB.SetUserIDAndPlatform(uid, constant.PlatformNameToClass(constant.PlatformIDToName(platformID)), token, config.Config.TokenPolicy.AccessExpire*DayOfSecond)
// if err != nil {
// return err
// }
// PushMessageToTheTerminal(uid, platformID)
// return nil
// }
// } else if config.Config.MultiLoginPolicy.MobileAndPCTerminalAccessButOtherTerminalKickEachOther {
// // common terminal need to kick eich other
// if exists == 1 {
// err := db.DB.SetUserIDAndPlatform(uid, constant.PlatformNameToClass(constant.PlatformIDToName(platformID)), token, config.Config.TokenPolicy.AccessExpire*DayOfSecond)
// if err != nil {
// return err
// }
// PushMessageToTheTerminal(uid, platformID)
// return nil
// }
// }
// err = db.DB.SetUserIDAndPlatform(uid, constant.PlatformNameToClass(constant.PlatformIDToName(platformID)), token, config.Config.TokenPolicy.AccessExpire*DayOfSecond)
// if err != nil {
// return err
// }
// PushMessageToTheTerminal(uid, platformID)
// return nil
//}
////
////func PushMessageToTheTerminal(uid string, platform int32) {
////
//// logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
//// SendID: uid,
//// RecvID: uid,
//// Content: content_struct.NewContentStructString(1, "", "Your account is already logged on other terminal,please confirm"),
//// SendTime: utils.GetCurrentTimestampBySecond(),
//// MsgFrom: constant.SysMsgType,
//// ContentType: constant.KickOnlineTip,
//// PlatformID: platform,
//// })
////}

View File

@ -26,7 +26,7 @@ var _ = math.Inf
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type CreateGroupReq struct { type CreateGroupReq struct {
InitMemberList []string `protobuf:"bytes,1,rep,name=initMemberList" json:"initMemberList,omitempty"` InitMembers []string `protobuf:"bytes,1,rep,name=initMembers" json:"initMembers,omitempty"`
GroupInfo *sdk_ws.GroupInfo `protobuf:"bytes,2,opt,name=groupInfo" json:"groupInfo,omitempty"` GroupInfo *sdk_ws.GroupInfo `protobuf:"bytes,2,opt,name=groupInfo" json:"groupInfo,omitempty"`
AdminUserIDs []string `protobuf:"bytes,3,rep,name=adminUserIDs" json:"adminUserIDs,omitempty"` AdminUserIDs []string `protobuf:"bytes,3,rep,name=adminUserIDs" json:"adminUserIDs,omitempty"`
OwnerUserID string `protobuf:"bytes,4,opt,name=ownerUserID" json:"ownerUserID,omitempty"` OwnerUserID string `protobuf:"bytes,4,opt,name=ownerUserID" json:"ownerUserID,omitempty"`
@ -39,7 +39,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} }
func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) } func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) }
func (*CreateGroupReq) ProtoMessage() {} func (*CreateGroupReq) ProtoMessage() {}
func (*CreateGroupReq) Descriptor() ([]byte, []int) { func (*CreateGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{0} return fileDescriptor_group_5c8d3aafef0e7d21, []int{0}
} }
func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error { func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b) return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b)
@ -59,9 +59,9 @@ func (m *CreateGroupReq) XXX_DiscardUnknown() {
var xxx_messageInfo_CreateGroupReq proto.InternalMessageInfo var xxx_messageInfo_CreateGroupReq proto.InternalMessageInfo
func (m *CreateGroupReq) GetInitMemberList() []string { func (m *CreateGroupReq) GetInitMembers() []string {
if m != nil { if m != nil {
return m.InitMemberList return m.InitMembers
} }
return nil return nil
} }
@ -98,7 +98,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} }
func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) } func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) }
func (*CreateGroupResp) ProtoMessage() {} func (*CreateGroupResp) ProtoMessage() {}
func (*CreateGroupResp) Descriptor() ([]byte, []int) { func (*CreateGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{1} return fileDescriptor_group_5c8d3aafef0e7d21, []int{1}
} }
func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error { func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b) 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 (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupsInfoReq) ProtoMessage() {} func (*GetGroupsInfoReq) ProtoMessage() {}
func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) { func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{2} return fileDescriptor_group_5c8d3aafef0e7d21, []int{2}
} }
func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b) 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 (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupsInfoResp) ProtoMessage() {} func (*GetGroupsInfoResp) ProtoMessage() {}
func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) { func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{3} return fileDescriptor_group_5c8d3aafef0e7d21, []int{3}
} }
func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b) 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 (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupInfoReq) ProtoMessage() {} func (*SetGroupInfoReq) ProtoMessage() {}
func (*SetGroupInfoReq) Descriptor() ([]byte, []int) { func (*SetGroupInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{4} return fileDescriptor_group_5c8d3aafef0e7d21, []int{4}
} }
func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error { func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b) 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 (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupInfoResp) ProtoMessage() {} func (*SetGroupInfoResp) ProtoMessage() {}
func (*SetGroupInfoResp) Descriptor() ([]byte, []int) { func (*SetGroupInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{5} return fileDescriptor_group_5c8d3aafef0e7d21, []int{5}
} }
func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error { func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b) 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 (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupApplicationListReq) ProtoMessage() {} func (*GetGroupApplicationListReq) ProtoMessage() {}
func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) { func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{6} return fileDescriptor_group_5c8d3aafef0e7d21, []int{6}
} }
func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b) 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 (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupApplicationListResp) ProtoMessage() {} func (*GetGroupApplicationListResp) ProtoMessage() {}
func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) { func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{7} return fileDescriptor_group_5c8d3aafef0e7d21, []int{7}
} }
func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b) 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 (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) }
func (*GetUserReqApplicationListReq) ProtoMessage() {} func (*GetUserReqApplicationListReq) ProtoMessage() {}
func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) { func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{8} return fileDescriptor_group_5c8d3aafef0e7d21, []int{8}
} }
func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error { func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b) 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 (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) }
func (*GetUserReqApplicationListResp) ProtoMessage() {} func (*GetUserReqApplicationListResp) ProtoMessage() {}
func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) { func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{9} return fileDescriptor_group_5c8d3aafef0e7d21, []int{9}
} }
func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error { func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b) 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 (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) }
func (*TransferGroupOwnerReq) ProtoMessage() {} func (*TransferGroupOwnerReq) ProtoMessage() {}
func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) { func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{10} return fileDescriptor_group_5c8d3aafef0e7d21, []int{10}
} }
func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error { func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b) 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 (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) }
func (*TransferGroupOwnerResp) ProtoMessage() {} func (*TransferGroupOwnerResp) ProtoMessage() {}
func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) { func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{11} return fileDescriptor_group_5c8d3aafef0e7d21, []int{11}
} }
func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error { func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b) 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 (m *JoinGroupReq) String() string { return proto.CompactTextString(m) }
func (*JoinGroupReq) ProtoMessage() {} func (*JoinGroupReq) ProtoMessage() {}
func (*JoinGroupReq) Descriptor() ([]byte, []int) { func (*JoinGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{12} return fileDescriptor_group_5c8d3aafef0e7d21, []int{12}
} }
func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error { func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b) 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 (m *JoinGroupResp) String() string { return proto.CompactTextString(m) }
func (*JoinGroupResp) ProtoMessage() {} func (*JoinGroupResp) ProtoMessage() {}
func (*JoinGroupResp) Descriptor() ([]byte, []int) { func (*JoinGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{13} return fileDescriptor_group_5c8d3aafef0e7d21, []int{13}
} }
func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error { func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b) 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 (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationResponseReq) ProtoMessage() {} func (*GroupApplicationResponseReq) ProtoMessage() {}
func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) { func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{14} return fileDescriptor_group_5c8d3aafef0e7d21, []int{14}
} }
func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b) 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 (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationResponseResp) ProtoMessage() {} func (*GroupApplicationResponseResp) ProtoMessage() {}
func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) { func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{15} return fileDescriptor_group_5c8d3aafef0e7d21, []int{15}
} }
func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b) 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 (m *QuitGroupReq) String() string { return proto.CompactTextString(m) }
func (*QuitGroupReq) ProtoMessage() {} func (*QuitGroupReq) ProtoMessage() {}
func (*QuitGroupReq) Descriptor() ([]byte, []int) { func (*QuitGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{16} return fileDescriptor_group_5c8d3aafef0e7d21, []int{16}
} }
func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error { func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b) 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 (m *QuitGroupResp) String() string { return proto.CompactTextString(m) }
func (*QuitGroupResp) ProtoMessage() {} func (*QuitGroupResp) ProtoMessage() {}
func (*QuitGroupResp) Descriptor() ([]byte, []int) { func (*QuitGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{17} return fileDescriptor_group_5c8d3aafef0e7d21, []int{17}
} }
func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error { func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b) 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 (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberListReq) ProtoMessage() {} func (*GetGroupMemberListReq) ProtoMessage() {}
func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) { func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{18} return fileDescriptor_group_5c8d3aafef0e7d21, []int{18}
} }
func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b) 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 (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberListResp) ProtoMessage() {} func (*GetGroupMemberListResp) ProtoMessage() {}
func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) { func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{19} return fileDescriptor_group_5c8d3aafef0e7d21, []int{19}
} }
func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b) return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b)
@ -891,7 +891,7 @@ func (m *GetGroupMemberListResp) GetMembers() []*sdk_ws.GroupMemberFullInfo {
type GetGroupMembersInfoReq struct { type GetGroupMembersInfoReq struct {
GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"`
MemberList []string `protobuf:"bytes,2,rep,name=memberList" json:"memberList,omitempty"` Members []string `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -901,7 +901,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{}
func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersInfoReq) ProtoMessage() {} func (*GetGroupMembersInfoReq) ProtoMessage() {}
func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) { func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{20} return fileDescriptor_group_5c8d3aafef0e7d21, []int{20}
} }
func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b)
@ -928,9 +928,9 @@ func (m *GetGroupMembersInfoReq) GetGroupID() string {
return "" return ""
} }
func (m *GetGroupMembersInfoReq) GetMemberList() []string { func (m *GetGroupMembersInfoReq) GetMembers() []string {
if m != nil { if m != nil {
return m.MemberList return m.Members
} }
return nil return nil
} }
@ -946,7 +946,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp
func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersInfoResp) ProtoMessage() {} func (*GetGroupMembersInfoResp) ProtoMessage() {}
func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) { func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{21} return fileDescriptor_group_5c8d3aafef0e7d21, []int{21}
} }
func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b)
@ -975,7 +975,7 @@ func (m *GetGroupMembersInfoResp) GetMembers() []*sdk_ws.GroupMemberFullInfo {
type KickGroupMemberReq struct { type KickGroupMemberReq struct {
GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"`
KickedUserIDList []string `protobuf:"bytes,2,rep,name=kickedUserIDList" json:"kickedUserIDList,omitempty"` KickedUserIDs []string `protobuf:"bytes,2,rep,name=kickedUserIDs" json:"kickedUserIDs,omitempty"`
Reason string `protobuf:"bytes,3,opt,name=reason" json:"reason,omitempty"` Reason string `protobuf:"bytes,3,opt,name=reason" json:"reason,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -986,7 +986,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} }
func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) } func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*KickGroupMemberReq) ProtoMessage() {} func (*KickGroupMemberReq) ProtoMessage() {}
func (*KickGroupMemberReq) Descriptor() ([]byte, []int) { func (*KickGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{22} return fileDescriptor_group_5c8d3aafef0e7d21, []int{22}
} }
func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error { func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b) return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b)
@ -1013,9 +1013,9 @@ func (m *KickGroupMemberReq) GetGroupID() string {
return "" return ""
} }
func (m *KickGroupMemberReq) GetKickedUserIDList() []string { func (m *KickGroupMemberReq) GetKickedUserIDs() []string {
if m != nil { if m != nil {
return m.KickedUserIDList return m.KickedUserIDs
} }
return nil return nil
} }
@ -1037,7 +1037,7 @@ func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} }
func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) } func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*KickGroupMemberResp) ProtoMessage() {} func (*KickGroupMemberResp) ProtoMessage() {}
func (*KickGroupMemberResp) Descriptor() ([]byte, []int) { func (*KickGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{23} return fileDescriptor_group_5c8d3aafef0e7d21, []int{23}
} }
func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error { func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b) 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 (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) }
func (*GetJoinedGroupListReq) ProtoMessage() {} func (*GetJoinedGroupListReq) ProtoMessage() {}
func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) { func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{24} return fileDescriptor_group_5c8d3aafef0e7d21, []int{24}
} }
func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error { func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b) 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 (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) }
func (*GetJoinedGroupListResp) ProtoMessage() {} func (*GetJoinedGroupListResp) ProtoMessage() {}
func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) { func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{25} return fileDescriptor_group_5c8d3aafef0e7d21, []int{25}
} }
func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error { func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b) 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 (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) }
func (*InviteUserToGroupReq) ProtoMessage() {} func (*InviteUserToGroupReq) ProtoMessage() {}
func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) { func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{26} return fileDescriptor_group_5c8d3aafef0e7d21, []int{26}
} }
func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error { func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b) 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 (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) }
func (*InviteUserToGroupResp) ProtoMessage() {} func (*InviteUserToGroupResp) ProtoMessage() {}
func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) { func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{27} return fileDescriptor_group_5c8d3aafef0e7d21, []int{27}
} }
func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error { func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b) 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 (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupAllMemberReq) ProtoMessage() {} func (*GetGroupAllMemberReq) ProtoMessage() {}
func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) { func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{28} return fileDescriptor_group_5c8d3aafef0e7d21, []int{28}
} }
func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b) 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 (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupAllMemberResp) ProtoMessage() {} func (*GetGroupAllMemberResp) ProtoMessage() {}
func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) { func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{29} return fileDescriptor_group_5c8d3aafef0e7d21, []int{29}
} }
func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b) 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 (m *CMSGroup) String() string { return proto.CompactTextString(m) }
func (*CMSGroup) ProtoMessage() {} func (*CMSGroup) ProtoMessage() {}
func (*CMSGroup) Descriptor() ([]byte, []int) { func (*CMSGroup) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{30} return fileDescriptor_group_5c8d3aafef0e7d21, []int{30}
} }
func (m *CMSGroup) XXX_Unmarshal(b []byte) error { func (m *CMSGroup) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CMSGroup.Unmarshal(m, b) 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 (m *GetGroupsReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupsReq) ProtoMessage() {} func (*GetGroupsReq) ProtoMessage() {}
func (*GetGroupsReq) Descriptor() ([]byte, []int) { func (*GetGroupsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{31} return fileDescriptor_group_5c8d3aafef0e7d21, []int{31}
} }
func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b) 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 (m *GetGroupsResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupsResp) ProtoMessage() {} func (*GetGroupsResp) ProtoMessage() {}
func (*GetGroupsResp) Descriptor() ([]byte, []int) { func (*GetGroupsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{32} return fileDescriptor_group_5c8d3aafef0e7d21, []int{32}
} }
func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b) 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 (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberReq) ProtoMessage() {} func (*GetGroupMemberReq) ProtoMessage() {}
func (*GetGroupMemberReq) Descriptor() ([]byte, []int) { func (*GetGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{33} return fileDescriptor_group_5c8d3aafef0e7d21, []int{33}
} }
func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b) 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 (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersCMSReq) ProtoMessage() {} func (*GetGroupMembersCMSReq) ProtoMessage() {}
func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) { func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{34} return fileDescriptor_group_5c8d3aafef0e7d21, []int{34}
} }
func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b) return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b)
@ -1576,7 +1576,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{}
func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) } func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersCMSResp) ProtoMessage() {} func (*GetGroupMembersCMSResp) ProtoMessage() {}
func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) { func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{35} return fileDescriptor_group_5c8d3aafef0e7d21, []int{35}
} }
func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b) return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b)
@ -1628,7 +1628,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} }
func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) } func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) }
func (*DismissGroupReq) ProtoMessage() {} func (*DismissGroupReq) ProtoMessage() {}
func (*DismissGroupReq) Descriptor() ([]byte, []int) { func (*DismissGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{36} return fileDescriptor_group_5c8d3aafef0e7d21, []int{36}
} }
func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error { func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b) return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b)
@ -1665,7 +1665,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} }
func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) } func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) }
func (*DismissGroupResp) ProtoMessage() {} func (*DismissGroupResp) ProtoMessage() {}
func (*DismissGroupResp) Descriptor() ([]byte, []int) { func (*DismissGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{37} return fileDescriptor_group_5c8d3aafef0e7d21, []int{37}
} }
func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error { func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b) return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b)
@ -1698,7 +1698,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} }
func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*MuteGroupMemberReq) ProtoMessage() {} func (*MuteGroupMemberReq) ProtoMessage() {}
func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) { func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{38} return fileDescriptor_group_5c8d3aafef0e7d21, []int{38}
} }
func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error { func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b) return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b)
@ -1749,7 +1749,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} }
func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*MuteGroupMemberResp) ProtoMessage() {} func (*MuteGroupMemberResp) ProtoMessage() {}
func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) { func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{39} return fileDescriptor_group_5c8d3aafef0e7d21, []int{39}
} }
func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error { func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b) return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b)
@ -1781,7 +1781,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR
func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupMemberReq) ProtoMessage() {} func (*CancelMuteGroupMemberReq) ProtoMessage() {}
func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) { func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{40} return fileDescriptor_group_5c8d3aafef0e7d21, []int{40}
} }
func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error { func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b) return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b)
@ -1825,7 +1825,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember
func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupMemberResp) ProtoMessage() {} func (*CancelMuteGroupMemberResp) ProtoMessage() {}
func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) { func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{41} return fileDescriptor_group_5c8d3aafef0e7d21, []int{41}
} }
func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error { func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b) return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b)
@ -1856,7 +1856,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} }
func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) } func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) }
func (*MuteGroupReq) ProtoMessage() {} func (*MuteGroupReq) ProtoMessage() {}
func (*MuteGroupReq) Descriptor() ([]byte, []int) { func (*MuteGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{42} return fileDescriptor_group_5c8d3aafef0e7d21, []int{42}
} }
func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error { func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b) return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b)
@ -1893,7 +1893,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} }
func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) } func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) }
func (*MuteGroupResp) ProtoMessage() {} func (*MuteGroupResp) ProtoMessage() {}
func (*MuteGroupResp) Descriptor() ([]byte, []int) { func (*MuteGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{43} return fileDescriptor_group_5c8d3aafef0e7d21, []int{43}
} }
func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error { func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b) return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b)
@ -1924,7 +1924,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} }
func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) } func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupReq) ProtoMessage() {} func (*CancelMuteGroupReq) ProtoMessage() {}
func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) { func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{44} return fileDescriptor_group_5c8d3aafef0e7d21, []int{44}
} }
func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error { func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b) return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b)
@ -1961,7 +1961,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} }
func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) } func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupResp) ProtoMessage() {} func (*CancelMuteGroupResp) ProtoMessage() {}
func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) { func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{45} return fileDescriptor_group_5c8d3aafef0e7d21, []int{45}
} }
func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error { func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b) return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b)
@ -1994,7 +1994,7 @@ func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknam
func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) } func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberNicknameReq) ProtoMessage() {} func (*SetGroupMemberNicknameReq) ProtoMessage() {}
func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) { func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{46} return fileDescriptor_group_5c8d3aafef0e7d21, []int{46}
} }
func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error { func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b) return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b)
@ -2045,7 +2045,7 @@ func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNickna
func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) } func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberNicknameResp) ProtoMessage() {} func (*SetGroupMemberNicknameResp) ProtoMessage() {}
func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) { func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{47} return fileDescriptor_group_5c8d3aafef0e7d21, []int{47}
} }
func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error { func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b) return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b)
@ -2077,7 +2077,7 @@ func (m *GetJoinedSuperGroupListReq) Reset() { *m = GetJoinedSuperGroupL
func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) } func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) }
func (*GetJoinedSuperGroupListReq) ProtoMessage() {} func (*GetJoinedSuperGroupListReq) ProtoMessage() {}
func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) { func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{48} return fileDescriptor_group_5c8d3aafef0e7d21, []int{48}
} }
func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error { func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b) return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b)
@ -2123,7 +2123,7 @@ func (m *GetJoinedSuperGroupListResp) Reset() { *m = GetJoinedSuperGroup
func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) } func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) }
func (*GetJoinedSuperGroupListResp) ProtoMessage() {} func (*GetJoinedSuperGroupListResp) ProtoMessage() {}
func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) { func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{49} return fileDescriptor_group_5c8d3aafef0e7d21, []int{49}
} }
func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error { func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b) return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b)
@ -2168,7 +2168,7 @@ func (m *GetSuperGroupsInfoReq) Reset() { *m = GetSuperGroupsInfoReq{} }
func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetSuperGroupsInfoReq) ProtoMessage() {} func (*GetSuperGroupsInfoReq) ProtoMessage() {}
func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) { func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{50} return fileDescriptor_group_5c8d3aafef0e7d21, []int{50}
} }
func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b)
@ -2206,7 +2206,7 @@ func (m *GetSuperGroupsInfoResp) Reset() { *m = GetSuperGroupsInfoResp{}
func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetSuperGroupsInfoResp) ProtoMessage() {} func (*GetSuperGroupsInfoResp) ProtoMessage() {}
func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) { func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{51} return fileDescriptor_group_5c8d3aafef0e7d21, []int{51}
} }
func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b)
@ -2249,7 +2249,7 @@ func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} }
func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) } func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberInfoReq) ProtoMessage() {} func (*SetGroupMemberInfoReq) ProtoMessage() {}
func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) { func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{52} return fileDescriptor_group_5c8d3aafef0e7d21, []int{52}
} }
func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error { func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b) return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b)
@ -2321,7 +2321,7 @@ func (m *SetGroupMemberInfoResp) Reset() { *m = SetGroupMemberInfoResp{}
func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) } func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberInfoResp) ProtoMessage() {} func (*SetGroupMemberInfoResp) ProtoMessage() {}
func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) { func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{53} return fileDescriptor_group_5c8d3aafef0e7d21, []int{53}
} }
func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error { func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b) return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b)
@ -2352,7 +2352,7 @@ func (m *GetGroupAbstractInfoReq) Reset() { *m = GetGroupAbstractInfoReq
func (m *GetGroupAbstractInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetGroupAbstractInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupAbstractInfoReq) ProtoMessage() {} func (*GetGroupAbstractInfoReq) ProtoMessage() {}
func (*GetGroupAbstractInfoReq) Descriptor() ([]byte, []int) { func (*GetGroupAbstractInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{54} return fileDescriptor_group_5c8d3aafef0e7d21, []int{54}
} }
func (m *GetGroupAbstractInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetGroupAbstractInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAbstractInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetGroupAbstractInfoReq.Unmarshal(m, b)
@ -2392,7 +2392,7 @@ func (m *GroupAbstractInfo) Reset() { *m = GroupAbstractInfo{} }
func (m *GroupAbstractInfo) String() string { return proto.CompactTextString(m) } func (m *GroupAbstractInfo) String() string { return proto.CompactTextString(m) }
func (*GroupAbstractInfo) ProtoMessage() {} func (*GroupAbstractInfo) ProtoMessage() {}
func (*GroupAbstractInfo) Descriptor() ([]byte, []int) { func (*GroupAbstractInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{55} return fileDescriptor_group_5c8d3aafef0e7d21, []int{55}
} }
func (m *GroupAbstractInfo) XXX_Unmarshal(b []byte) error { func (m *GroupAbstractInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupAbstractInfo.Unmarshal(m, b) return xxx_messageInfo_GroupAbstractInfo.Unmarshal(m, b)
@ -2444,7 +2444,7 @@ func (m *GetGroupAbstractInfoResp) Reset() { *m = GetGroupAbstractInfoRe
func (m *GetGroupAbstractInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetGroupAbstractInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupAbstractInfoResp) ProtoMessage() {} func (*GetGroupAbstractInfoResp) ProtoMessage() {}
func (*GetGroupAbstractInfoResp) Descriptor() ([]byte, []int) { func (*GetGroupAbstractInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{56} return fileDescriptor_group_5c8d3aafef0e7d21, []int{56}
} }
func (m *GetGroupAbstractInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetGroupAbstractInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAbstractInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetGroupAbstractInfoResp.Unmarshal(m, b)
@ -2483,7 +2483,7 @@ func (m *GetUserInGroupMembersReq) Reset() { *m = GetUserInGroupMembersR
func (m *GetUserInGroupMembersReq) String() string { return proto.CompactTextString(m) } func (m *GetUserInGroupMembersReq) String() string { return proto.CompactTextString(m) }
func (*GetUserInGroupMembersReq) ProtoMessage() {} func (*GetUserInGroupMembersReq) ProtoMessage() {}
func (*GetUserInGroupMembersReq) Descriptor() ([]byte, []int) { func (*GetUserInGroupMembersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{57} return fileDescriptor_group_5c8d3aafef0e7d21, []int{57}
} }
func (m *GetUserInGroupMembersReq) XXX_Unmarshal(b []byte) error { func (m *GetUserInGroupMembersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInGroupMembersReq.Unmarshal(m, b) return xxx_messageInfo_GetUserInGroupMembersReq.Unmarshal(m, b)
@ -2528,7 +2528,7 @@ func (m *GetUserInGroupMembersResp) Reset() { *m = GetUserInGroupMembers
func (m *GetUserInGroupMembersResp) String() string { return proto.CompactTextString(m) } func (m *GetUserInGroupMembersResp) String() string { return proto.CompactTextString(m) }
func (*GetUserInGroupMembersResp) ProtoMessage() {} func (*GetUserInGroupMembersResp) ProtoMessage() {}
func (*GetUserInGroupMembersResp) Descriptor() ([]byte, []int) { func (*GetUserInGroupMembersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_19947c3109871c24, []int{58} return fileDescriptor_group_5c8d3aafef0e7d21, []int{58}
} }
func (m *GetUserInGroupMembersResp) XXX_Unmarshal(b []byte) error { func (m *GetUserInGroupMembersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInGroupMembersResp.Unmarshal(m, b) return xxx_messageInfo_GetUserInGroupMembersResp.Unmarshal(m, b)
@ -3597,124 +3597,124 @@ var _Group_serviceDesc = grpc.ServiceDesc{
Metadata: "group/group.proto", Metadata: "group/group.proto",
} }
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_19947c3109871c24) } func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_5c8d3aafef0e7d21) }
var fileDescriptor_group_19947c3109871c24 = []byte{ var fileDescriptor_group_5c8d3aafef0e7d21 = []byte{
// 1848 bytes of a gzipped FileDescriptorProto // 1851 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x53, 0xdb, 0xc0, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x53, 0xe4, 0xc6,
0x11, 0x1f, 0x99, 0x40, 0xc2, 0x06, 0x02, 0x1c, 0x18, 0x8c, 0x20, 0x40, 0x2e, 0x69, 0xca, 0xb4, 0x11, 0x2f, 0x2d, 0x07, 0x77, 0xf4, 0x81, 0xe1, 0x06, 0x16, 0x74, 0x82, 0x03, 0x3c, 0x26, 0x0e,
0x89, 0xe9, 0x24, 0x6d, 0xa6, 0x7f, 0x32, 0x93, 0x26, 0x90, 0x10, 0x5a, 0x0c, 0x8d, 0x4c, 0xd2, 0x95, 0xf8, 0x96, 0xd4, 0x5d, 0xe2, 0xca, 0x1f, 0x57, 0x39, 0x36, 0xd8, 0x98, 0x84, 0x85, 0x9c,
0x69, 0x3a, 0x19, 0x2a, 0xec, 0x43, 0x51, 0xb0, 0xa5, 0x43, 0x27, 0x43, 0x26, 0x93, 0x3e, 0xb4, 0x16, 0x3b, 0x15, 0xa7, 0x5c, 0x44, 0xec, 0x0e, 0xb2, 0x0e, 0xad, 0x34, 0x68, 0xb4, 0xe0, 0x72,
0xcf, 0xfd, 0xf3, 0xd0, 0xc7, 0xbe, 0x75, 0xfa, 0x29, 0xfa, 0xd6, 0xaf, 0xd2, 0x4f, 0xd2, 0xd1, 0x39, 0x0f, 0xc9, 0x73, 0xfe, 0x3c, 0xe4, 0x31, 0x6f, 0xa9, 0x7c, 0x84, 0x7c, 0x81, 0x7c, 0x95,
0xe9, 0x74, 0x3e, 0x49, 0x27, 0xd9, 0x25, 0xee, 0x8b, 0x67, 0xb4, 0xb7, 0x7b, 0xb7, 0xb7, 0xff, 0x7c, 0x92, 0x94, 0x66, 0x46, 0xb3, 0x23, 0x69, 0xb4, 0xbb, 0xc1, 0x9b, 0x97, 0xad, 0x52, 0x4f,
0xee, 0xb7, 0x6b, 0x98, 0x73, 0x02, 0xbf, 0x47, 0xb7, 0xf8, 0x6f, 0x9d, 0x06, 0x7e, 0xe8, 0xa3, 0xf7, 0x4c, 0x4f, 0xff, 0x9b, 0x5f, 0xf7, 0xc2, 0x13, 0x3f, 0x89, 0x07, 0x74, 0x9f, 0xff, 0xb6,
0x71, 0xfe, 0x61, 0x6e, 0x1e, 0x52, 0xe2, 0x3d, 0xdc, 0x6b, 0x3c, 0x6c, 0x92, 0xe0, 0x82, 0x04, 0x68, 0x12, 0xa7, 0x31, 0x9a, 0xe5, 0x1f, 0xce, 0xde, 0x19, 0x25, 0xd1, 0xf3, 0xe3, 0xf6, 0xf3,
0x5b, 0xf4, 0xcc, 0xd9, 0xe2, 0x0c, 0x5b, 0xac, 0x7d, 0x76, 0x7c, 0xc9, 0xb6, 0x2e, 0x59, 0x2c, 0x0e, 0x49, 0x6e, 0x49, 0xb2, 0x4f, 0xaf, 0xfd, 0x7d, 0xce, 0xb0, 0xcf, 0x7a, 0xd7, 0x17, 0x77,
0x60, 0xd6, 0x07, 0x72, 0x06, 0x36, 0xa5, 0x24, 0x10, 0xfc, 0xf8, 0x5f, 0x06, 0xdc, 0xda, 0x0e, 0x6c, 0xff, 0x8e, 0x09, 0x01, 0xa7, 0x35, 0x96, 0x33, 0xf1, 0x28, 0x25, 0x89, 0xe4, 0xc7, 0xff,
0x88, 0x1d, 0x92, 0xdd, 0xe8, 0x24, 0x8b, 0x9c, 0xa3, 0xfb, 0x70, 0xcb, 0xf5, 0xdc, 0xb0, 0x41, 0xb2, 0xe0, 0x8d, 0x83, 0x84, 0x78, 0x29, 0x39, 0xca, 0x4e, 0x72, 0xc9, 0x0d, 0xda, 0x81, 0xc7,
0xba, 0x27, 0x24, 0xd8, 0x77, 0x59, 0x58, 0x33, 0x36, 0xc6, 0x36, 0x27, 0xad, 0x0c, 0x15, 0xfd, 0x41, 0x14, 0xa4, 0x6d, 0xd2, 0xbf, 0x24, 0x09, 0xb3, 0xad, 0x9d, 0x99, 0xbd, 0x79, 0x57, 0x27,
0x14, 0x26, 0xb9, 0x76, 0x7b, 0xde, 0xa9, 0x5f, 0xab, 0x6c, 0x18, 0x9b, 0x37, 0x1f, 0xad, 0xd6, 0xa1, 0x9f, 0xc2, 0x3c, 0xd7, 0xeb, 0x38, 0xba, 0x8a, 0xed, 0xc6, 0x8e, 0xb5, 0xf7, 0xf8, 0xc5,
0x19, 0x3f, 0xf6, 0xd8, 0xa6, 0xee, 0x31, 0xb5, 0x03, 0xbb, 0xcb, 0xea, 0xbb, 0x09, 0x8f, 0xd5, 0x66, 0x8b, 0xf1, 0x03, 0x2f, 0x3c, 0x1a, 0x5c, 0x50, 0x2f, 0xf1, 0xfa, 0xac, 0x75, 0x94, 0xf3,
0x67, 0x47, 0x18, 0xa6, 0xec, 0x76, 0xd7, 0xf5, 0xde, 0x32, 0x12, 0xec, 0xed, 0xb0, 0xda, 0x18, 0xb8, 0x43, 0x76, 0x84, 0x61, 0xc1, 0xeb, 0xf5, 0x83, 0xe8, 0x53, 0x46, 0x92, 0xe3, 0x43, 0x66,
0x3f, 0x21, 0x45, 0x43, 0x1b, 0x70, 0xd3, 0xbf, 0xf4, 0x48, 0x10, 0x7f, 0xd7, 0xae, 0x6d, 0x18, 0xcf, 0xf0, 0xed, 0x0b, 0xb4, 0x4c, 0x83, 0xf8, 0x2e, 0x22, 0x89, 0xf8, 0xb6, 0x1f, 0xec, 0x58,
0x9b, 0x93, 0x96, 0x4a, 0xc2, 0x0d, 0x98, 0x49, 0xe9, 0xce, 0x68, 0x5a, 0x29, 0xe3, 0x7f, 0x52, 0x99, 0x06, 0x1a, 0x09, 0xb7, 0x61, 0xa9, 0xa0, 0x35, 0xa3, 0x45, 0xa5, 0xac, 0xff, 0x49, 0x29,
0x0a, 0xd7, 0x61, 0x76, 0x97, 0x84, 0x7c, 0x89, 0xf1, 0x35, 0x72, 0x8e, 0x4c, 0xb8, 0x11, 0x33, 0xdc, 0x82, 0xe5, 0x23, 0x92, 0xf2, 0x25, 0xc6, 0xd7, 0xc8, 0x0d, 0x72, 0xe0, 0x91, 0x60, 0x38,
0xec, 0x30, 0x61, 0x06, 0xf9, 0x8d, 0xdf, 0xc0, 0x5c, 0x86, 0x9f, 0x51, 0xf4, 0x14, 0x40, 0xee, 0xcc, 0x6d, 0xa0, 0xbe, 0xf1, 0x2b, 0x78, 0x52, 0xe2, 0x67, 0x14, 0xbd, 0x07, 0xa0, 0x76, 0x14,
0x18, 0x8b, 0x0c, 0xd2, 0x40, 0xe1, 0xc7, 0xc7, 0x30, 0xd3, 0x14, 0x5b, 0x26, 0x1a, 0xec, 0xc3, 0x22, 0xe3, 0x34, 0xd0, 0xf8, 0xf1, 0x05, 0x2c, 0x75, 0xe4, 0x96, 0xb9, 0x06, 0x27, 0xb0, 0xa4,
0x8c, 0x64, 0x78, 0xe5, 0x07, 0x4d, 0x12, 0x8a, 0x7b, 0xe1, 0xb2, 0x5d, 0x63, 0x4e, 0x2b, 0x2b, 0x18, 0x3e, 0x8e, 0x93, 0x0e, 0x49, 0xe5, 0xbd, 0xf0, 0xa8, 0x5d, 0x05, 0xa7, 0x5b, 0x16, 0xc5,
0x8a, 0x11, 0xcc, 0xa6, 0x0f, 0x60, 0x14, 0xff, 0xd1, 0x00, 0x33, 0xb9, 0xc8, 0x73, 0x4a, 0x3b, 0x08, 0x96, 0x8b, 0x07, 0x30, 0x8a, 0xff, 0x68, 0x81, 0x93, 0x5f, 0xe4, 0x03, 0x4a, 0xc3, 0xa0,
0x6e, 0xcb, 0x0e, 0x5d, 0xdf, 0x8b, 0x9c, 0x1c, 0x29, 0xb0, 0x03, 0x40, 0x6d, 0xc7, 0xf5, 0x38, 0xeb, 0xa5, 0x41, 0x1c, 0x9d, 0x04, 0x2c, 0xcd, 0x14, 0x38, 0x04, 0xa0, 0x9e, 0x1f, 0x44, 0x9c,
0x51, 0x9c, 0x7d, 0x4f, 0x73, 0xb6, 0x45, 0xce, 0x7b, 0x84, 0x85, 0xbf, 0x92, 0xbc, 0x96, 0x22, 0x28, 0xcf, 0xde, 0x35, 0x9c, 0xed, 0x92, 0x9b, 0x01, 0x61, 0xe9, 0xaf, 0x14, 0xaf, 0xab, 0xc9,
0x87, 0xd6, 0x00, 0x4e, 0x03, 0xbf, 0x2b, 0x9c, 0x59, 0xe1, 0xce, 0x54, 0x28, 0xf8, 0x0b, 0xac, 0xa1, 0x2d, 0x80, 0xab, 0x24, 0xee, 0x4b, 0x67, 0x36, 0xb8, 0x33, 0x35, 0x0a, 0xfe, 0x1a, 0x36,
0x14, 0xea, 0xc0, 0x28, 0x5a, 0x80, 0xf1, 0xd0, 0x0f, 0xed, 0x0e, 0x3f, 0x7f, 0xdc, 0x8a, 0x3f, 0x6a, 0x75, 0x60, 0x14, 0xad, 0xc2, 0x6c, 0x1a, 0xa7, 0x5e, 0xc8, 0xcf, 0x9f, 0x75, 0xc5, 0x07,
0xd0, 0x4b, 0x98, 0x76, 0x44, 0xd8, 0x46, 0x47, 0xb3, 0x5a, 0x85, 0xdb, 0x7b, 0xbd, 0xc8, 0x32, 0xfa, 0x08, 0x16, 0x7d, 0x19, 0xb0, 0xd9, 0xd1, 0xcc, 0x6e, 0x70, 0x7b, 0x6f, 0xd7, 0x59, 0x46,
0x82, 0xcf, 0x4a, 0x4b, 0xe1, 0xaf, 0xb0, 0xba, 0x4b, 0xc2, 0x48, 0x11, 0x8b, 0x9c, 0x6b, 0x2c, 0xf2, 0xb9, 0x45, 0x29, 0xfc, 0x0d, 0x6c, 0x1e, 0x91, 0x34, 0x53, 0xc4, 0x25, 0x37, 0x06, 0x0b,
0xb0, 0x08, 0x13, 0xbd, 0x58, 0x6f, 0x83, 0xeb, 0x2d, 0xbe, 0x32, 0x96, 0xa9, 0x5c, 0xcd, 0x32, 0xac, 0xc1, 0xdc, 0x40, 0xe8, 0x6d, 0x71, 0xbd, 0xe5, 0x57, 0xc9, 0x32, 0x8d, 0xfb, 0x59, 0x06,
0xf8, 0x2b, 0xdc, 0x2e, 0x39, 0xfd, 0xff, 0x7d, 0xf7, 0x3f, 0x18, 0x50, 0x3d, 0x0a, 0x6c, 0x8f, 0x7f, 0x03, 0xcf, 0x46, 0x9c, 0xfe, 0xff, 0xbe, 0xfb, 0x1f, 0x2c, 0x68, 0x9e, 0x27, 0x5e, 0xc4,
0x9d, 0x92, 0x80, 0xf3, 0x1d, 0x46, 0x09, 0x16, 0xdd, 0xba, 0x06, 0xd7, 0x45, 0xa8, 0x8b, 0x6b, 0xae, 0x48, 0xc2, 0xf9, 0xce, 0xb2, 0x04, 0xcb, 0x6e, 0x6d, 0xc3, 0x43, 0x19, 0xea, 0xf2, 0xda,
0x27, 0x9f, 0x51, 0x85, 0xf0, 0x3b, 0xed, 0x43, 0x25, 0x39, 0x63, 0x7f, 0x66, 0xa8, 0x11, 0x9f, 0xf9, 0x27, 0x7a, 0x1b, 0xde, 0x88, 0xc3, 0xde, 0x99, 0x96, 0x9c, 0xc2, 0x9f, 0x25, 0x6a, 0xc6,
0x47, 0x2e, 0x55, 0xbe, 0xb1, 0x98, 0x2f, 0x4d, 0xc5, 0x35, 0x58, 0xd4, 0xa9, 0xc0, 0x28, 0xfe, 0x17, 0x91, 0x3b, 0x9d, 0x6f, 0x46, 0xf0, 0x15, 0xa9, 0xd8, 0x86, 0x35, 0x93, 0x0a, 0x8c, 0xe2,
0x8b, 0x01, 0x53, 0xbf, 0xf0, 0x5d, 0x4f, 0x16, 0xa7, 0x62, 0xa5, 0xd6, 0x00, 0x02, 0x72, 0xde, 0xbf, 0x58, 0xb0, 0xf0, 0x8b, 0x38, 0x88, 0x54, 0x59, 0xaa, 0x57, 0x6a, 0x0b, 0x20, 0x21, 0x37,
0x20, 0x8c, 0xd9, 0x0e, 0x49, 0x02, 0xac, 0x4f, 0x89, 0xd6, 0x3f, 0xf9, 0xae, 0xd7, 0xf4, 0x7b, 0x6d, 0xc2, 0x98, 0xe7, 0x93, 0x3c, 0xc0, 0x86, 0x94, 0x6c, 0xfd, 0x75, 0x1c, 0x44, 0x9d, 0x78,
0x41, 0x8b, 0x70, 0x45, 0xc6, 0x2d, 0x85, 0x82, 0xee, 0xc1, 0xb4, 0xeb, 0x5d, 0xb8, 0x61, 0xa6, 0x90, 0x74, 0x09, 0x57, 0x64, 0xd6, 0xd5, 0x28, 0x68, 0x17, 0x16, 0x83, 0xe8, 0x36, 0x48, 0x4b,
0xe0, 0xa4, 0x89, 0x78, 0x06, 0xa6, 0x15, 0x7d, 0x18, 0xc5, 0x7f, 0x37, 0x60, 0x25, 0x1b, 0xb5, 0x05, 0xa7, 0x48, 0xc4, 0x4b, 0xb0, 0xa8, 0xe9, 0xc3, 0x28, 0xfe, 0xbb, 0x05, 0x1b, 0xe5, 0xa8,
0xd1, 0x82, 0xef, 0x31, 0x32, 0x50, 0xe1, 0xb2, 0x8c, 0x88, 0xd6, 0x3f, 0xda, 0x5e, 0xbb, 0x43, 0xcd, 0x16, 0xe2, 0x88, 0x91, 0xb1, 0x0a, 0x8f, 0xca, 0x88, 0x6c, 0xfd, 0x4b, 0x2f, 0xea, 0x85,
0xda, 0x0d, 0xe6, 0x08, 0xcb, 0x29, 0x94, 0xa8, 0x86, 0xc6, 0x5f, 0x16, 0x61, 0xbd, 0x4e, 0xc8, 0xa4, 0xd7, 0x66, 0xbe, 0xb4, 0x9c, 0x46, 0xc9, 0x6a, 0xa8, 0xf8, 0x72, 0x09, 0x1b, 0x84, 0x29,
0xf5, 0x1d, 0xb7, 0x52, 0x34, 0xbc, 0x06, 0xab, 0xc5, 0xca, 0x31, 0x8a, 0x37, 0x61, 0xea, 0x4d, 0xd7, 0x77, 0xd6, 0x2d, 0xd0, 0xf0, 0x16, 0x6c, 0xd6, 0x2b, 0xc7, 0x28, 0xde, 0x83, 0x85, 0x57,
0xcf, 0x0d, 0x07, 0x9b, 0x37, 0xba, 0xb8, 0xc2, 0xc9, 0x28, 0xfe, 0xab, 0x01, 0xd5, 0x24, 0x63, 0x83, 0x20, 0x1d, 0x6f, 0xde, 0xec, 0xe2, 0x1a, 0x27, 0xa3, 0xf8, 0xaf, 0x16, 0x34, 0xf3, 0x8c,
0xfb, 0xaf, 0x42, 0xf9, 0x95, 0x17, 0x61, 0xe2, 0xd4, 0xed, 0x84, 0x24, 0xe0, 0xd7, 0x1d, 0xb7, 0x15, 0x4f, 0x42, 0x9e, 0x2e, 0xf5, 0x57, 0x5e, 0x83, 0xb9, 0xab, 0x20, 0x4c, 0x49, 0xc2, 0xaf,
0xc4, 0x57, 0x26, 0x91, 0xae, 0x5d, 0x31, 0x91, 0x28, 0x2c, 0xea, 0x14, 0x2a, 0xcc, 0xa0, 0x9f, 0x3b, 0xeb, 0xca, 0xaf, 0x52, 0x22, 0x3d, 0xb8, 0x67, 0x22, 0x51, 0x58, 0x33, 0x29, 0x54, 0x9b,
0xc3, 0xf5, 0x2e, 0xe7, 0x4b, 0x72, 0xe7, 0x7e, 0x51, 0xee, 0xc4, 0xdb, 0xbd, 0xea, 0x75, 0x3a, 0x41, 0x3f, 0x87, 0x87, 0x7d, 0xf9, 0xbc, 0x89, 0xdc, 0x79, 0xbb, 0x2e, 0x77, 0xc4, 0x76, 0x1f,
0xbc, 0x68, 0x26, 0x62, 0xd8, 0xca, 0x9e, 0x28, 0xdf, 0x8d, 0x52, 0xb7, 0x77, 0xfb, 0x4f, 0x6b, 0x0f, 0xc2, 0x90, 0x17, 0xcd, 0x5c, 0x0c, 0x9f, 0x94, 0x4f, 0x54, 0xef, 0x46, 0xbd, 0x0d, 0xec,
0x85, 0xbf, 0x29, 0x0a, 0x05, 0xff, 0x16, 0x96, 0xb4, 0x7b, 0x32, 0xaa, 0x2a, 0x6c, 0x5c, 0x4d, 0xe2, 0xa9, 0xf3, 0xc3, 0xdd, 0x7e, 0x0b, 0xeb, 0xc6, 0xdd, 0x18, 0xd5, 0x55, 0xb5, 0xee, 0xa7,
0xe1, 0x00, 0xd0, 0x2f, 0xdd, 0xd6, 0x99, 0xc2, 0x53, 0xae, 0xec, 0xf7, 0x60, 0xf6, 0xcc, 0x6d, 0x6a, 0x08, 0xe8, 0x97, 0x41, 0xf7, 0x5a, 0xe3, 0x19, 0xad, 0xe6, 0x2e, 0x2c, 0x5e, 0x07, 0xdd,
0x9d, 0x91, 0x76, 0x1c, 0x93, 0x8a, 0xca, 0x39, 0x7a, 0xe4, 0xdc, 0x80, 0xd8, 0xcc, 0xf7, 0x44, 0x6b, 0xd2, 0xcb, 0x9f, 0x68, 0xa1, 0x6c, 0x91, 0x98, 0x39, 0x34, 0x21, 0x1e, 0x8b, 0x23, 0x19,
0xac, 0x8a, 0x2f, 0x5c, 0x85, 0xf9, 0xdc, 0x99, 0x8c, 0xe2, 0xdf, 0xf3, 0xf0, 0x89, 0x92, 0x89, 0x9f, 0xf2, 0x0b, 0x37, 0x61, 0xa5, 0x72, 0x1a, 0xa3, 0xf8, 0xf7, 0x3c, 0x64, 0xb2, 0x04, 0x22,
0xb4, 0xf9, 0x5a, 0x12, 0x3e, 0xe9, 0xbc, 0x30, 0x72, 0x79, 0x31, 0x9a, 0xaa, 0xdb, 0xe6, 0xae, 0x3d, 0xbe, 0x96, 0x87, 0x4c, 0x31, 0x17, 0xac, 0x4a, 0x2e, 0x4c, 0xa7, 0xd2, 0xf6, 0xb8, 0xbb,
0xcb, 0x1d, 0x5f, 0x18, 0x2c, 0x3f, 0x84, 0x09, 0x6e, 0x94, 0x24, 0x56, 0xca, 0xdf, 0x74, 0xc1, 0x2a, 0xc7, 0xd7, 0x06, 0xc8, 0x0f, 0x61, 0x8e, 0x9b, 0x23, 0x8f, 0x8f, 0xd1, 0xef, 0xb8, 0xe4,
0x8b, 0x29, 0x2c, 0xec, 0xf1, 0xfa, 0x11, 0xe9, 0x7e, 0xe4, 0x0f, 0x51, 0xc6, 0xfa, 0x56, 0xac, 0xc5, 0x14, 0x56, 0x8f, 0x79, 0xcd, 0xc8, 0x74, 0x3f, 0x8f, 0x27, 0x28, 0x5d, 0x43, 0x2b, 0x36,
0xa8, 0x56, 0x8c, 0x51, 0x59, 0xb4, 0x53, 0x3b, 0x8d, 0x99, 0x32, 0x54, 0xbc, 0x04, 0x55, 0xcd, 0x74, 0x2b, 0x66, 0xf5, 0x53, 0x54, 0x9f, 0x5e, 0x11, 0x27, 0x95, 0xa8, 0x78, 0x1d, 0x9a, 0x86,
0x89, 0x8c, 0xe2, 0x0b, 0x58, 0x90, 0x0f, 0x6c, 0xa7, 0x33, 0x8c, 0xf3, 0x47, 0x63, 0xe8, 0xdf, 0x13, 0x19, 0xc5, 0xb7, 0xb0, 0xaa, 0x1e, 0xd5, 0x30, 0x9c, 0xc4, 0xed, 0xd3, 0x31, 0xf4, 0x6f,
0xf4, 0xcb, 0x84, 0x72, 0xee, 0x48, 0xa2, 0xf9, 0x1f, 0x06, 0xdc, 0xd8, 0x6e, 0x34, 0x39, 0xcf, 0x86, 0xa5, 0x41, 0x3b, 0x77, 0x2a, 0x71, 0xfc, 0x0f, 0x0b, 0x1e, 0x1d, 0xb4, 0x3b, 0x9c, 0xe7,
0xb7, 0x20, 0x3f, 0x54, 0x07, 0xe4, 0xc8, 0x87, 0x27, 0x32, 0xdc, 0x81, 0xdd, 0x4d, 0xde, 0x10, 0xdb, 0xa0, 0x3d, 0xd4, 0x02, 0xe4, 0xab, 0xc7, 0x26, 0x33, 0xdc, 0xa9, 0xd7, 0xcf, 0xdf, 0x0d,
0xcd, 0x4a, 0x94, 0x16, 0x69, 0xaa, 0x7c, 0xda, 0x72, 0x74, 0xfc, 0x27, 0x03, 0xa6, 0x24, 0x4c, 0xc3, 0x0a, 0xfa, 0x1e, 0x2c, 0x17, 0xa9, 0xea, 0x39, 0xab, 0xd0, 0xf1, 0x9f, 0x2c, 0x58, 0x50,
0x1c, 0x1d, 0x9e, 0x5a, 0x15, 0xd7, 0x55, 0x34, 0xed, 0x13, 0x54, 0xa7, 0x8e, 0xa5, 0xeb, 0xf8, 0xd0, 0x70, 0x7a, 0x18, 0x6a, 0x53, 0x5e, 0x57, 0xd3, 0x74, 0x48, 0xd0, 0x9d, 0x3a, 0x53, 0xac,
0x11, 0x4c, 0x2b, 0xda, 0x30, 0x8a, 0xbe, 0x2b, 0x03, 0x3b, 0xf6, 0xc2, 0x4c, 0x3d, 0x6e, 0x40, 0xdd, 0xe7, 0xb0, 0xa8, 0x69, 0xc3, 0x28, 0xfa, 0xae, 0x0a, 0x6c, 0xe1, 0x85, 0xa5, 0x96, 0x68,
0x12, 0xc3, 0x26, 0xb1, 0x1c, 0x41, 0x61, 0x4e, 0x38, 0xe8, 0x75, 0x45, 0xf9, 0x96, 0xdf, 0xf8, 0x37, 0x72, 0xc3, 0xe6, 0xb1, 0x9c, 0xc1, 0x5f, 0x4e, 0x38, 0x1d, 0xf4, 0x65, 0xc9, 0x56, 0xdf,
0x61, 0x1f, 0x0a, 0x0f, 0x11, 0x59, 0xf8, 0x6f, 0xb9, 0xb7, 0x83, 0x6d, 0x37, 0x9a, 0xe5, 0xd1, 0xf8, 0xf9, 0x10, 0xfe, 0x4e, 0x10, 0x59, 0xf8, 0x6f, 0x95, 0xf7, 0x82, 0x1d, 0xb4, 0x3b, 0xa3,
0x68, 0xc2, 0x8d, 0x5e, 0xda, 0x33, 0xf2, 0x3b, 0x63, 0xd2, 0xb1, 0x2b, 0x46, 0xea, 0xbf, 0x8d, 0xa3, 0xd1, 0x81, 0x47, 0x83, 0xa2, 0x67, 0xd4, 0x77, 0xc9, 0xa4, 0x33, 0xf7, 0x8c, 0xd4, 0x7f,
0x5c, 0x39, 0xe7, 0x5a, 0x8d, 0x22, 0x56, 0xd1, 0x4b, 0x4d, 0x32, 0x7d, 0x47, 0xab, 0x62, 0xfc, 0x5b, 0x95, 0x12, 0xce, 0xb5, 0x9a, 0x46, 0xac, 0xa2, 0x8f, 0x0c, 0xc9, 0xf4, 0x1d, 0xa3, 0x8a,
0x3c, 0x17, 0xc3, 0xe8, 0x78, 0xc7, 0x83, 0x5e, 0x97, 0x25, 0x28, 0xa6, 0x4f, 0xc1, 0xdf, 0x87, 0xe2, 0x49, 0xae, 0x87, 0xce, 0x62, 0xc7, 0xd3, 0x41, 0x9f, 0xe5, 0xc8, 0x65, 0x48, 0xc1, 0xdf,
0x99, 0x1d, 0x97, 0x75, 0x5d, 0xc6, 0x86, 0x78, 0xd3, 0x11, 0xcc, 0xa6, 0x99, 0x19, 0xc5, 0x9f, 0x87, 0xa5, 0xc3, 0x80, 0xf5, 0x03, 0xc6, 0x26, 0x78, 0xc7, 0x11, 0x2c, 0x17, 0x99, 0x19, 0xc5,
0x00, 0x35, 0x7a, 0xa2, 0xa3, 0x1a, 0xa6, 0x48, 0xf4, 0xb1, 0x71, 0x25, 0x85, 0x8d, 0x31, 0x4c, 0xaf, 0x01, 0xb5, 0x07, 0xb2, 0x8b, 0x9a, 0xa4, 0x48, 0x0c, 0xf1, 0x70, 0xa3, 0x80, 0x87, 0x31,
0x75, 0x7b, 0x21, 0x69, 0x37, 0x49, 0xcb, 0xf7, 0xda, 0xb1, 0xaa, 0xd3, 0x56, 0x8a, 0x16, 0xbd, 0x2c, 0xf4, 0x07, 0x29, 0xe9, 0x75, 0x48, 0x37, 0x8e, 0x7a, 0x42, 0xd5, 0x45, 0xb7, 0x40, 0xcb,
0x0c, 0xb9, 0xb3, 0x18, 0xc5, 0xfb, 0x50, 0xdb, 0xb6, 0xbd, 0x16, 0xe9, 0x8c, 0x42, 0x11, 0xbc, 0x5e, 0x86, 0xca, 0x59, 0x8c, 0xe2, 0x13, 0xb0, 0x0f, 0xbc, 0xa8, 0x4b, 0xc2, 0x69, 0x28, 0x82,
0x02, 0xcb, 0x05, 0xbb, 0xc5, 0xf8, 0x47, 0x92, 0x07, 0xe2, 0x1f, 0x85, 0x93, 0x51, 0x5c, 0x07, 0x37, 0xe0, 0x69, 0xcd, 0x6e, 0x02, 0xf3, 0x28, 0xf2, 0x58, 0xcc, 0xa3, 0x71, 0x32, 0x8a, 0x5b,
0x94, 0xd9, 0xb7, 0x7c, 0x83, 0x2a, 0xcc, 0xe7, 0xf8, 0x19, 0xc5, 0x2e, 0x2c, 0x37, 0x53, 0x31, 0x80, 0x4a, 0xfb, 0x8e, 0xde, 0xa0, 0x09, 0x2b, 0x15, 0x7e, 0x46, 0x71, 0x00, 0x4f, 0x3b, 0x85,
0x77, 0xe0, 0xb6, 0xce, 0x3c, 0xbb, 0x4b, 0x06, 0x66, 0x83, 0x27, 0x18, 0x93, 0x6c, 0x48, 0xbe, 0x98, 0x3b, 0x0d, 0xba, 0xd7, 0x91, 0xd7, 0x27, 0x63, 0xb3, 0x21, 0x92, 0x8c, 0x79, 0x36, 0xe4,
0x15, 0x4b, 0x8c, 0xa5, 0x2c, 0xb1, 0x0a, 0x66, 0xd1, 0x51, 0x8c, 0xe2, 0x2f, 0xbc, 0x09, 0x8c, 0xdf, 0x9a, 0x25, 0x66, 0x0a, 0x96, 0xd8, 0x04, 0xa7, 0xee, 0x28, 0x46, 0xf1, 0xd7, 0xbc, 0xf1,
0x1f, 0xc4, 0x66, 0x8f, 0x0a, 0x28, 0x3e, 0xda, 0x26, 0xb0, 0xc8, 0x47, 0x2e, 0x6f, 0xfe, 0xf4, 0x13, 0x0f, 0x62, 0x67, 0x40, 0x25, 0xfc, 0x9e, 0x6e, 0xe3, 0x57, 0xe7, 0xa3, 0x80, 0x37, 0x7c,
0x67, 0x8f, 0xf8, 0x45, 0x7e, 0xcc, 0x2b, 0x4f, 0xff, 0x90, 0xa1, 0x3a, 0xfd, 0x77, 0xbc, 0x30, 0xe6, 0xb3, 0xa7, 0xfc, 0x22, 0xbf, 0xe4, 0x95, 0x67, 0x78, 0xc8, 0x44, 0xdd, 0xfd, 0x67, 0xbc,
0xe4, 0x84, 0xbe, 0xb9, 0xdd, 0xff, 0x67, 0x05, 0xaa, 0x69, 0x97, 0x0c, 0xc6, 0x8f, 0x45, 0x09, 0x30, 0x54, 0x84, 0xbe, 0x75, 0x8b, 0xff, 0xcf, 0x06, 0x34, 0x8b, 0x2e, 0x19, 0x8f, 0x19, 0xeb,
0xf7, 0x63, 0x25, 0x22, 0xc6, 0xc4, 0xf3, 0xe7, 0xf8, 0xbe, 0xd3, 0x21, 0xf1, 0xa8, 0xe7, 0xa4, 0x12, 0xee, 0xc7, 0x5a, 0x44, 0xcc, 0xc8, 0xe7, 0xcf, 0x8f, 0x63, 0x3f, 0x24, 0x62, 0xb0, 0x73,
0x77, 0x5a, 0x6f, 0x86, 0x81, 0xeb, 0x39, 0xef, 0xec, 0x4e, 0x8f, 0x28, 0xf1, 0xf2, 0x04, 0xae, 0x39, 0xb8, 0x6a, 0x75, 0xd2, 0x24, 0x88, 0xfc, 0xcf, 0xbc, 0x70, 0x40, 0xb4, 0x78, 0x79, 0x17,
0x9f, 0xda, 0x2d, 0xf2, 0xd6, 0xda, 0x17, 0xd0, 0xbb, 0x5c, 0x30, 0x61, 0x46, 0x3f, 0x81, 0xc9, 0x1e, 0x5e, 0x79, 0x5d, 0xf2, 0xa9, 0x7b, 0x22, 0xe1, 0xf6, 0x68, 0xc1, 0x9c, 0x19, 0xfd, 0x04,
0xc0, 0xef, 0x90, 0x7d, 0x72, 0x41, 0x3a, 0xb5, 0x71, 0x2e, 0xb9, 0x92, 0x93, 0xdc, 0xf3, 0xc2, 0xe6, 0x93, 0x38, 0x24, 0x27, 0xe4, 0x96, 0x84, 0xf6, 0x2c, 0x97, 0xdc, 0xa8, 0x48, 0x1e, 0x47,
0xc7, 0x8f, 0x62, 0xc1, 0x3e, 0x37, 0x7a, 0x00, 0x15, 0xf2, 0xb9, 0x36, 0x31, 0xc4, 0x69, 0x15, 0xe9, 0xcb, 0x17, 0x42, 0x70, 0xc8, 0x8d, 0xde, 0x81, 0x06, 0xf9, 0xca, 0x9e, 0x9b, 0xe0, 0xb4,
0xf2, 0x39, 0xea, 0x0f, 0x75, 0x56, 0x62, 0x14, 0xff, 0xa8, 0x0f, 0x96, 0x9f, 0x9f, 0xb0, 0x30, 0x06, 0xf9, 0x2a, 0xeb, 0x09, 0x4d, 0x56, 0x62, 0x14, 0xff, 0x68, 0x08, 0x93, 0x3f, 0xb8, 0x64,
0xb0, 0x5b, 0xe1, 0x30, 0xfe, 0xfc, 0xb3, 0x01, 0x73, 0x39, 0xa1, 0x12, 0x9b, 0x3f, 0x10, 0xb3, 0x69, 0xe2, 0x75, 0xd3, 0x49, 0xfc, 0xf9, 0x67, 0x0b, 0x9e, 0x54, 0x84, 0x46, 0xd8, 0xfc, 0x1d,
0xb9, 0x46, 0x52, 0x68, 0x4f, 0x64, 0x0b, 0x93, 0x5f, 0x40, 0x3f, 0x80, 0x79, 0x27, 0xdd, 0x84, 0x39, 0x89, 0x6b, 0xe7, 0x85, 0xf6, 0x52, 0xb5, 0x2d, 0xd5, 0x05, 0xf4, 0x03, 0x58, 0xf1, 0x8b,
0xbc, 0xb6, 0xd9, 0x47, 0xee, 0x94, 0x6b, 0x96, 0x6e, 0x09, 0xb7, 0xa1, 0xa6, 0xbf, 0x06, 0xa3, 0x8d, 0xc7, 0x27, 0x1e, 0xfb, 0x92, 0x3b, 0xe5, 0x81, 0x6b, 0x5a, 0xc2, 0x3d, 0xb0, 0xcd, 0xd7,
0xe8, 0xb5, 0xc0, 0x26, 0xea, 0x42, 0x12, 0x69, 0x35, 0xf1, 0x56, 0xe7, 0x25, 0x35, 0x32, 0xf8, 0x60, 0x14, 0x7d, 0x22, 0xb1, 0x89, 0xbe, 0x90, 0x47, 0x9a, 0x2d, 0xdf, 0xea, 0xaa, 0xa4, 0x41,
0x00, 0x6a, 0x4e, 0x3c, 0x68, 0xd8, 0xf3, 0xd4, 0x47, 0xae, 0x6c, 0xc4, 0xa1, 0x5a, 0xb1, 0x92, 0x06, 0x9f, 0x82, 0xed, 0x8b, 0xe1, 0xc2, 0x71, 0xa4, 0x3f, 0x72, 0xa3, 0xc6, 0x1a, 0xba, 0x15,
0xb1, 0xe2, 0x07, 0x58, 0x2e, 0xd8, 0x6f, 0x14, 0x2f, 0xe6, 0xa3, 0xff, 0xcc, 0x42, 0x3c, 0xfe, 0x1b, 0x25, 0x2b, 0x7e, 0x01, 0x4f, 0x6b, 0xf6, 0x9b, 0xc6, 0x8b, 0xf9, 0xe2, 0x3f, 0xcb, 0x20,
0x44, 0x4f, 0xe1, 0x66, 0xab, 0x3f, 0xe7, 0x43, 0xd5, 0x04, 0xa1, 0xa4, 0xe6, 0x96, 0xe6, 0xa2, 0x86, 0x9d, 0xe8, 0x3d, 0x78, 0xdc, 0x1d, 0xce, 0xf6, 0x50, 0x33, 0x47, 0x28, 0x85, 0x29, 0xa5,
0x8e, 0xcc, 0x28, 0x7a, 0x02, 0x93, 0x9f, 0x92, 0x96, 0x1d, 0xcd, 0x0b, 0x26, 0x75, 0xa8, 0x60, 0xb3, 0x66, 0x22, 0x33, 0x8a, 0xde, 0x85, 0xf9, 0xd7, 0x79, 0x9b, 0x8e, 0x56, 0x24, 0x93, 0x3e,
0x2e, 0xe4, 0x89, 0xb1, 0xdc, 0x79, 0xd2, 0xf1, 0x4a, 0x39, 0xb5, 0x5b, 0x96, 0x72, 0xa9, 0xc6, 0x48, 0x70, 0x56, 0xab, 0x44, 0x21, 0x77, 0x93, 0x77, 0xb9, 0x4a, 0x4e, 0xef, 0x90, 0x95, 0x5c,
0x18, 0xbd, 0x80, 0x69, 0x47, 0x1d, 0x0b, 0xa2, 0xa5, 0xc4, 0x4b, 0x99, 0xe1, 0xa2, 0x59, 0xd3, 0xa1, 0x19, 0x46, 0x1f, 0xc2, 0xa2, 0xaf, 0x8f, 0x02, 0xd1, 0x7a, 0xee, 0xa5, 0xd2, 0x40, 0xd1,
0x2f, 0x30, 0x8a, 0x9e, 0xc1, 0x14, 0x53, 0xc6, 0x74, 0x28, 0xb9, 0x5b, 0x66, 0x38, 0x68, 0x2e, 0xb1, 0xcd, 0x0b, 0x8c, 0xa2, 0xf7, 0x61, 0x81, 0x69, 0xa3, 0x39, 0x94, 0xdf, 0xad, 0x34, 0x10,
0x69, 0xe9, 0x8c, 0xa2, 0xdf, 0xc1, 0x92, 0xa3, 0x1f, 0xa7, 0xa1, 0x3b, 0x99, 0x53, 0xf3, 0x03, 0x74, 0xd6, 0x8d, 0x74, 0x46, 0xd1, 0xef, 0x60, 0xdd, 0x37, 0x8f, 0xd0, 0xd0, 0x9b, 0xa5, 0x53,
0x2f, 0x13, 0x0f, 0x62, 0x61, 0x14, 0x9d, 0x4a, 0xef, 0xe7, 0xc7, 0x56, 0xe8, 0x6e, 0x7f, 0x83, 0xab, 0x43, 0x2e, 0x07, 0x8f, 0x63, 0x61, 0x14, 0x5d, 0x29, 0xef, 0x57, 0x47, 0x55, 0xe8, 0xad,
0xc2, 0xb1, 0x9a, 0x79, 0x6f, 0x30, 0x13, 0xa3, 0xe8, 0x0d, 0xa0, 0x30, 0x37, 0x1c, 0x42, 0xab, 0xe1, 0x06, 0xb5, 0xa3, 0x34, 0x67, 0x77, 0x3c, 0x13, 0xa3, 0xe8, 0x15, 0xa0, 0xb4, 0x32, 0x10,
0x42, 0x56, 0x3b, 0xba, 0x32, 0x6f, 0x97, 0xac, 0x32, 0x8a, 0x5a, 0x50, 0x73, 0x0a, 0xa6, 0x22, 0x42, 0x9b, 0x52, 0xd6, 0x38, 0xae, 0x72, 0x9e, 0x8d, 0x58, 0x65, 0x14, 0x75, 0xc1, 0xf6, 0x6b,
0x08, 0xa7, 0x52, 0x4a, 0x3b, 0xd3, 0x31, 0xef, 0x0e, 0xe4, 0x89, 0xf5, 0x76, 0x72, 0xd3, 0x08, 0x26, 0x21, 0x08, 0x17, 0x52, 0xca, 0x38, 0xc7, 0x71, 0xde, 0x1a, 0xcb, 0x23, 0xf4, 0xf6, 0x2b,
0xa9, 0xb7, 0x76, 0x72, 0x22, 0xf5, 0x2e, 0x18, 0x63, 0x1c, 0xc1, 0xbc, 0x93, 0x1f, 0x0d, 0x20, 0x13, 0x08, 0xa5, 0xb7, 0x71, 0x5a, 0xa2, 0xf4, 0xae, 0x19, 0x5d, 0x9c, 0xc3, 0x8a, 0x5f, 0x1d,
0xbd, 0x94, 0x8c, 0xb2, 0xb5, 0xb2, 0x65, 0x5e, 0x60, 0x66, 0xce, 0xd2, 0xfd, 0x39, 0x5a, 0x16, 0x0a, 0x20, 0xb3, 0x94, 0x8a, 0xb2, 0xad, 0x51, 0xcb, 0xbc, 0xc0, 0x2c, 0x5d, 0x17, 0xfb, 0x73,
0x22, 0xf9, 0x59, 0x81, 0x69, 0x16, 0x2d, 0xc9, 0x2b, 0x67, 0x7a, 0x6a, 0xf5, 0xca, 0xf9, 0x6e, 0xf4, 0x54, 0x8a, 0x54, 0xa7, 0x04, 0x8e, 0x53, 0xb7, 0xa4, 0xae, 0x5c, 0xea, 0xa9, 0xf5, 0x2b,
0x5f, 0xbd, 0xb2, 0xae, 0x19, 0x3f, 0x80, 0x39, 0x37, 0xdb, 0xce, 0xa2, 0x15, 0x21, 0xa3, 0x6b, 0x57, 0xbb, 0x7d, 0xfd, 0xca, 0xa6, 0x66, 0xfc, 0x14, 0x9e, 0x04, 0xe5, 0x76, 0x16, 0x6d, 0x48,
0xad, 0xcd, 0xd5, 0xe2, 0xc5, 0x38, 0xa9, 0x65, 0x72, 0xca, 0xa4, 0x56, 0xdb, 0x33, 0x99, 0xd4, 0x19, 0x53, 0x6b, 0xed, 0x6c, 0xd6, 0x2f, 0x8a, 0xa4, 0x56, 0xc9, 0xa9, 0x92, 0x5a, 0x6f, 0xcf,
0xe9, 0x2e, 0x29, 0xe7, 0xcd, 0xa8, 0x35, 0x28, 0xf0, 0xa6, 0xe8, 0x65, 0x0a, 0xbc, 0x29, 0x7b, 0x54, 0x52, 0x17, 0xbb, 0xa4, 0x8a, 0x37, 0xb3, 0xd6, 0xa0, 0xc6, 0x9b, 0xb2, 0x97, 0xa9, 0xf1,
0x8a, 0x67, 0x30, 0xd5, 0x56, 0xd0, 0xb7, 0xcc, 0xf1, 0x0c, 0x7e, 0x97, 0x39, 0x9e, 0x85, 0xea, 0xa6, 0xea, 0x29, 0xde, 0x87, 0x85, 0x9e, 0x86, 0xbe, 0x55, 0x8e, 0x97, 0xf0, 0xbb, 0xca, 0xf1,
0x91, 0xe3, 0xba, 0x69, 0x4c, 0x2b, 0x1d, 0x97, 0x47, 0xce, 0xd2, 0x71, 0x1a, 0x18, 0x8c, 0xde, 0x32, 0x54, 0xcf, 0x1c, 0xd7, 0x2f, 0x62, 0x5a, 0xe5, 0xb8, 0x2a, 0x72, 0x56, 0x8e, 0x33, 0xc0,
0x43, 0xb5, 0xa5, 0xc3, 0xc8, 0x68, 0x3d, 0xa9, 0xa9, 0x05, 0x78, 0xdc, 0xdc, 0x28, 0x67, 0x88, 0x60, 0xf4, 0x39, 0x34, 0xbb, 0x26, 0x8c, 0x8c, 0xb6, 0xf3, 0x9a, 0x5a, 0x83, 0xc7, 0x9d, 0x9d,
0x2d, 0x2e, 0xb5, 0x94, 0x16, 0x57, 0x31, 0xb3, 0xb4, 0x78, 0x0a, 0x18, 0x47, 0xb7, 0xcb, 0xe8, 0xd1, 0x0c, 0xc2, 0xe2, 0x4a, 0x4b, 0x65, 0x71, 0x1d, 0x33, 0x2b, 0x8b, 0x17, 0x80, 0x71, 0x76,
0x24, 0x6f, 0x97, 0xc7, 0xdd, 0xf2, 0x76, 0x1a, 0x88, 0x2d, 0x6a, 0xa1, 0x0e, 0x5d, 0xaa, 0xb5, 0xbb, 0x92, 0x4e, 0xea, 0x76, 0x55, 0xdc, 0xad, 0x6e, 0x67, 0x80, 0xd8, 0xb2, 0x16, 0x9a, 0xd0,
0xb0, 0x00, 0xf9, 0xaa, 0xb5, 0xb0, 0x10, 0xa0, 0xc6, 0xd1, 0x91, 0xc1, 0x87, 0x6a, 0x74, 0xe4, 0xa5, 0x5e, 0x0b, 0x6b, 0x90, 0xaf, 0x5e, 0x0b, 0x6b, 0x01, 0xaa, 0x88, 0x8e, 0x12, 0x3e, 0xd4,
0xf1, 0xa6, 0x1a, 0x1d, 0x3a, 0x60, 0xf9, 0x01, 0x16, 0x99, 0x16, 0xac, 0xa3, 0x8d, 0x4c, 0xcd, 0xa3, 0xa3, 0x8a, 0x37, 0xf5, 0xe8, 0x30, 0x01, 0xcb, 0x2f, 0x60, 0x8d, 0x19, 0xc1, 0x3a, 0xda,
0xcf, 0xb5, 0x0d, 0xe6, 0x9d, 0x01, 0x1c, 0xb1, 0xc6, 0x2c, 0x07, 0xa9, 0xa4, 0xc6, 0x5a, 0x4c, 0x29, 0xd5, 0xfc, 0x4a, 0xdb, 0xe0, 0xbc, 0x39, 0x86, 0x43, 0x68, 0xcc, 0x2a, 0x90, 0x4a, 0x69,
0x2a, 0x35, 0xd6, 0x63, 0x31, 0xf4, 0x6b, 0x58, 0x70, 0x34, 0x20, 0x06, 0x65, 0xeb, 0x4f, 0x06, 0x6c, 0xc4, 0xa4, 0x4a, 0x63, 0x33, 0x16, 0x43, 0xbf, 0x86, 0x55, 0xdf, 0x00, 0x62, 0x50, 0xb9,
0xa8, 0x99, 0xeb, 0xa5, 0xeb, 0x71, 0x74, 0x6a, 0x71, 0x86, 0x8c, 0xce, 0x22, 0x54, 0x23, 0xa3, 0xfe, 0x94, 0x80, 0x9a, 0xb3, 0x3d, 0x72, 0x5d, 0x44, 0xa7, 0x11, 0x67, 0xa8, 0xe8, 0xac, 0x43,
0xb3, 0x10, 0xa6, 0xbc, 0x58, 0x7f, 0x7f, 0xfb, 0x90, 0x12, 0xef, 0x78, 0xaf, 0xa1, 0xfc, 0x55, 0x35, 0x2a, 0x3a, 0x6b, 0x61, 0xca, 0x87, 0xdb, 0x9f, 0x3f, 0x3b, 0xa3, 0x24, 0xba, 0x38, 0x6e,
0xca, 0x85, 0x7e, 0xc6, 0x7f, 0x4f, 0x26, 0x38, 0xe9, 0xf1, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x7f, 0x8c, 0x72, 0xa1, 0x9f, 0xf1, 0xdf, 0xcb, 0x39, 0x4e, 0x7a, 0xf9, 0xdf, 0x00, 0x00,
0x5e, 0xb6, 0x4c, 0x79, 0x9d, 0x1d, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x6c, 0x49, 0xeb, 0x8b, 0x1d, 0x00, 0x00,
} }

View File

@ -420,12 +420,6 @@ message OrganizationChangedTips{
//////////////////////friend///////////////////// //////////////////////friend/////////////////////
//message FriendInfo{
// UserInfo OwnerUser = 1;
// string Remark = 2;
// uint64 CreateTime = 3;
// UserInfo FriendUser = 4;
//}
message FriendApplication{ message FriendApplication{
int64 addTime = 1; int64 addTime = 1;
@ -440,18 +434,18 @@ message FromToUserID{
//FromUserID apply to add ToUserID //FromUserID apply to add ToUserID
message FriendApplicationTips{ message FriendApplicationTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //from to
} }
//FromUserID accept or reject ToUserID //FromUserID accept or reject ToUserID
message FriendApplicationApprovedTips{ message FriendApplicationApprovedTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //fromto
string handleMsg = 2; string handleMsg = 2;
} }
//FromUserID accept or reject ToUserID //FromUserID accept or reject ToUserID
message FriendApplicationRejectedTips{ message FriendApplicationRejectedTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //fromto
string handleMsg = 2; string handleMsg = 2;
} }
@ -466,21 +460,21 @@ message FriendAddedTips{
// FromUserID deleted a friend ToUserID // FromUserID deleted a friend ToUserID
message FriendDeletedTips{ message FriendDeletedTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //fromowner tofriend
} }
message BlackAddedTips{ message BlackAddedTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //fromowner toblack
} }
message BlackDeletedTips{ message BlackDeletedTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //fromowner toblack
} }
message FriendInfoChangedTips{ message FriendInfoChangedTips{
FromToUserID fromToUserID = 1; FromToUserID fromToUserID = 1; //fromchanged tofriend
} }
//////////////////////user///////////////////// //////////////////////user/////////////////////
message UserInfoUpdatedTips{ message UserInfoUpdatedTips{