diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 9d67999ce..539290887 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 9d67999cec3e4a9792c33a95e5514a945df54052 +Subproject commit 539290887aff41515b291b7ecf174af25887f870 diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 6bbb43dbc..cf1783117 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -8,6 +8,7 @@ import ( "Open_IM/internal/api/group" "Open_IM/internal/api/manage" "Open_IM/internal/api/office" + "Open_IM/internal/api/organization" apiThird "Open_IM/internal/api/third" "Open_IM/internal/api/user" "Open_IM/pkg/common/config" @@ -37,9 +38,10 @@ func main() { // user routing group, which handles user registration and login services userRouterGroup := r.Group("/user") { - userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1 - userRouterGroup.POST("/get_users_info", user.GetUsersInfo) //1 - userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1 + userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1 + userRouterGroup.POST("/get_users_info", user.GetUsersInfo) //1 + userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1 + userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1 } //friend routing group friendRouterGroup := r.Group("/friend") @@ -83,6 +85,9 @@ func main() { groupRouterGroup.POST("/cancel_mute_group_member", group.CancelMuteGroupMember) //MuteGroup groupRouterGroup.POST("/mute_group", group.MuteGroup) groupRouterGroup.POST("/cancel_mute_group", group.CancelMuteGroup) + + groupRouterGroup.POST("/set_group_member_nickname", group.SetGroupMemberNickname) + } //certificate authRouterGroup := r.Group("/auth") @@ -135,7 +140,38 @@ func main() { officeGroup.POST("/set_tag", office.SetTag) officeGroup.POST("/send_msg_to_tag", office.SendMsg2Tag) officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs) + + officeGroup.POST("/create_one_work_moment", office.CreateOneWorkMoment) + officeGroup.POST("/delete_one_work_moment", office.DeleteOneWorkMoment) + officeGroup.POST("/like_one_work_moment", office.LikeOneWorkMoment) + officeGroup.POST("/comment_one_work_moment", office.CommentOneWorkMoment) + officeGroup.POST("/get_work_moment_by_id", office.GetWorkMomentByID) + officeGroup.POST("/get_user_work_moments", office.GetUserWorkMoments) + officeGroup.POST("/get_user_friend_work_moments", office.GetUserFriendWorkMoments) + officeGroup.POST("/set_user_work_moments_level", office.SetUserWorkMomentsLevel) } + + organizationGroup := r.Group("/organization") + { + organizationGroup.POST("/create_department", organization.CreateDepartment) + organizationGroup.POST("/update_department", organization.UpdateDepartment) + organizationGroup.POST("/get_sub_department", organization.GetSubDepartment) + organizationGroup.POST("/delete_department", organization.DeleteDepartment) + organizationGroup.POST("/get_all_department", organization.GetAllDepartment) + + organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) + organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) + organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser) + + organizationGroup.POST("/create_department_member", organization.CreateDepartmentMember) + organizationGroup.POST("/get_user_in_department", organization.GetUserInDepartment) + organizationGroup.POST("/update_user_in_department", organization.UpdateUserInDepartment) + + organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) + organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) + + } + go apiThird.MinioInit() ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") flag.Parse() diff --git a/cmd/rpc/open_im_organization/Makefile b/cmd/rpc/open_im_organization/Makefile new file mode 100644 index 000000000..77d658db9 --- /dev/null +++ b/cmd/rpc/open_im_organization/Makefile @@ -0,0 +1,25 @@ +.PHONY: all build run gotool install clean help + +BINARY_NAME=open_im_organization +BIN_DIR=../../../bin/ + +all: gotool build + +build: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" + +run: + @go run ./ + +gotool: + go fmt ./ + go vet ./ + +install: + make build + mv ${BINARY_NAME} ${BIN_DIR} + +clean: + @if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi + + diff --git a/cmd/rpc/open_im_organization/main.go b/cmd/rpc/open_im_organization/main.go new file mode 100644 index 000000000..906ac510f --- /dev/null +++ b/cmd/rpc/open_im_organization/main.go @@ -0,0 +1,15 @@ +package main + +import ( + "Open_IM/internal/rpc/organization" + "flag" + "fmt" +) + +func main() { + rpcPort := flag.Int("port", 11200, "get RpcOrganizationPort from cmd,default 11200 as port") + flag.Parse() + fmt.Println("start organization rpc server, port: ", *rpcPort) + rpcServer := organization.NewServer(*rpcPort) + rpcServer.Run() +} diff --git a/config/config.yaml b/config/config.yaml index a34cd921b..39a69298f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -92,7 +92,9 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio bucket: openim location: us-east-1 - endpoint: http://121.37.25.71:9000 + endpoint: http://127.0.0.1:9000 #minio外网ip 这个ip是给客户端访问的 + endpointInner: http://127.0.0.1:9000 #minio内网地址 如果im server 可以通过内网访问到 minio就可以填写 + endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化,IM server连接minio走内网地址访问 accessKeyID: user12345 secretAccessKey: key12345 ali: # ali oss @@ -120,6 +122,7 @@ rpcport: #rpc服务端口 默认即可 openImMessageCmsPort: [ 10900 ] openImAdminCmsPort: [ 11000 ] openImOfficePort: [ 11100 ] + openImOrganizationPort: [ 11200 ] c2c: callbackBeforeSendMsg: switch: false @@ -142,6 +145,7 @@ rpcregistername: #rpc注册服务名,默认即可 OpenImMessageCMSName: MessageCMS openImAdminCMSName: AdminCMS openImOfficeName: Office + openImOrganizationName: Organization log: storageLocation: ../logs/ @@ -165,7 +169,7 @@ longconnsvr: websocketMaxMsgLen: 4096 websocketTimeOut: 10 -## 推送只能开启一个 +## 推送只能开启一个 enable代表开启 push: tpns: #腾讯推送,暂未测试 暂不要使用 ios: @@ -200,6 +204,9 @@ secret: tuoyun # 1:多平台登录:Android、iOS、Windows、Mac 每种平台只能一个在线,web端可以多个同时在线 multiloginpolicy: 1 +#chat log insert to db +chatPersistenceMysql: true + #token config tokenpolicy: accessSecret: "open_im_server" #token生成相关,默认即可 @@ -428,6 +435,34 @@ notification: ext: "groupMemberCancelMuted ext" defaultTips: tips: "group Member Cancel Muted" + + groupMemberInfoSet: + conversation: + reliabilityLevel: 2 + unreadCount: false + offlinePush: + switch: false + title: "groupMemberInfoSet title" + desc: "groupMemberInfoSet desc" + ext: "groupMemberInfoSet ext" + defaultTips: + tips: "group member info set" + + + organizationChanged: + conversation: + reliabilityLevel: 2 + unreadCount: false + offlinePush: + switch: false + title: "organizationChanged title" + desc: "organizationChanged desc" + ext: "organizationChanged ext" + defaultTips: + tips: "organization changed" + + + #############################friend################################# friendApplicationAdded: @@ -565,7 +600,7 @@ notification: conversationSetPrivate: conversation: - reliabilityLevel: 2 + reliabilityLevel: 3 unreadCount: true offlinePush: switch: true @@ -576,6 +611,19 @@ notification: openTips: "burn after reading was opened" closeTips: "burn after reading was closed" + ###################workMoments################ + workMomentsNotification: + conversation: + reliabilityLevel: 2 + unreadCount: true + offlinePush: + switch: true + title: "burn after reading" + desc: "burn after reading" + ext: "burn after reading" + defaultTips: + openTips: "burn after reading was opened" + closeTips: "burn after reading was closed" #---------------demo configuration---------------------# diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index fed744d4f..bf3a19a5a 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -23,8 +23,9 @@ func UserRegister(c *gin.Context) { } if params.Secret != config.Config.Secret { - log.NewError(params.OperationID, "params.Secret != config.Config.Secret", params.Secret, config.Config.Secret) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "not authorized"}) + errMsg := " params.Secret != config.Config.Secret " + log.NewError(params.OperationID, errMsg, params.Secret, config.Config.Secret) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": errMsg}) return } req := &rpc.UserRegisterReq{UserInfo: &open_im_sdk.UserInfo{}} @@ -36,7 +37,7 @@ func UserRegister(c *gin.Context) { client := rpc.NewAuthClient(etcdConn) reply, err := client.UserRegister(context.Background(), req) if err != nil { - log.NewError(req.OperationID, "call rpc err ", err) + log.NewError(req.OperationID, "call rpc err ", err.Error()) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "internal service err"}) return } @@ -86,6 +87,6 @@ func UserToken(c *gin.Context) { } resp := api.UserTokenResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}, UserToken: api.UserTokenInfo{UserID: req.FromUserID, Token: reply.Token, ExpiredTime: reply.ExpiredTime}} - log.NewInfo(req.OperationID, "UserRegister return ", resp) + log.NewInfo(req.OperationID, "UserToken return ", resp) c.JSON(http.StatusOK, resp) } diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 35365cc10..2f3b58007 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -696,3 +696,37 @@ func CancelMuteGroup(c *gin.Context) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) c.JSON(http.StatusOK, resp) } + +//SetGroupMemberNickname + +func SetGroupMemberNickname(c *gin.Context) { + params := api.SetGroupMemberNicknameReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &rpc.SetGroupMemberNicknameReq{} + utils.CopyStructFields(req, ¶ms) + var ok bool + ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) + + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + client := rpc.NewGroupClient(etcdConn) + reply, err := client.SetGroupMemberNickname(context.Background(), req) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) + return + } + + resp := api.SetGroupMemberNicknameResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) + c.JSON(http.StatusOK, resp) +} diff --git a/internal/api/manage/management_user.go b/internal/api/manage/management_user.go index 5bcc19be0..6fca39732 100644 --- a/internal/api/manage/management_user.go +++ b/internal/api/manage/management_user.go @@ -118,6 +118,7 @@ func AccountCheck(c *gin.Context) { log.NewInfo(req.OperationID, "AccountCheck api return", resp) c.JSON(http.StatusOK, resp) } + func GetUsersOnlineStatus(c *gin.Context) { params := api.GetUsersOnlineStatusReq{} if err := c.BindJSON(¶ms); err != nil { @@ -133,6 +134,7 @@ func GetUsersOnlineStatus(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) return } + log.NewInfo(params.OperationID, "GetUsersOnlineStatus args ", req.String()) var wsResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult var respResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult @@ -176,5 +178,4 @@ func GetUsersOnlineStatus(c *gin.Context) { } log.NewInfo(req.OperationID, "GetUsersOnlineStatus api return", resp) c.JSON(http.StatusOK, resp) - } diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go new file mode 100644 index 000000000..fcea9a1a0 --- /dev/null +++ b/internal/api/office/work_moments.go @@ -0,0 +1,339 @@ +package office + +import ( + apiStruct "Open_IM/pkg/base_info" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + pbOffice "Open_IM/pkg/proto/office" + pbCommon "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "github.com/gin-gonic/gin" + "net/http" + "strings" +) + +func CreateOneWorkMoment(c *gin.Context) { + var ( + req apiStruct.CreateOneWorkMomentReq + resp apiStruct.CreateOneWorkMomentResp + reqPb pbOffice.CreateOneWorkMomentReq + respPb *pbOffice.CreateOneWorkMomentResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + reqPb.WorkMoment.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.CreateOneWorkMoment(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CreateOneWorkMoment rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "CreateOneWorkMoment rpc server failed" + err.Error()}) + return + } + resp.CommResp = apiStruct.CommResp{ + ErrCode: respPb.CommonResp.ErrCode, + ErrMsg: respPb.CommonResp.ErrMsg, + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func DeleteOneWorkMoment(c *gin.Context) { + var ( + req apiStruct.DeleteOneWorkMomentReq + resp apiStruct.DeleteOneWorkMomentResp + reqPb pbOffice.DeleteOneWorkMomentReq + respPb *pbOffice.DeleteOneWorkMomentResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + reqPb.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.DeleteOneWorkMoment(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DeleteOneWorkMoment rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "DeleteOneWorkMoment rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func LikeOneWorkMoment(c *gin.Context) { + var ( + req apiStruct.LikeOneWorkMomentReq + resp apiStruct.LikeOneWorkMomentResp + reqPb pbOffice.LikeOneWorkMomentReq + respPb *pbOffice.LikeOneWorkMomentResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + reqPb.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.LikeOneWorkMoment(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "LikeOneWorkMoment rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "LikeOneWorkMoment rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func CommentOneWorkMoment(c *gin.Context) { + var ( + req apiStruct.CommentOneWorkMomentReq + resp apiStruct.CommentOneWorkMomentResp + reqPb pbOffice.CommentOneWorkMomentReq + respPb *pbOffice.CommentOneWorkMomentResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + reqPb.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.CommentOneWorkMoment(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CommentOneWorkMoment rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "CommentOneWorkMoment rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func GetWorkMomentByID(c *gin.Context) { + var ( + req apiStruct.GetWorkMomentByIDReq + resp apiStruct.GetWorkMomentByIDResp + reqPb pbOffice.GetWorkMomentByIDReq + respPb *pbOffice.GetWorkMomentByIDResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + reqPb.OperationID = req.OperationID + reqPb.OpUserID = userID + reqPb.WorkMomentID = req.WorkMomentID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.GetWorkMomentByID(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMoments rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMoments rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + //resp.Data.WorkMoment = respPb.WorkMoment + resp.Data.WorkMoment = &apiStruct.WorkMoment{} + if err := utils.CopyStructFields(&resp.Data.WorkMoment, respPb.WorkMoment); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func GetUserWorkMoments(c *gin.Context) { + var ( + req apiStruct.GetUserWorkMomentsReq + resp apiStruct.GetUserWorkMomentsResp + reqPb pbOffice.GetUserWorkMomentsReq + respPb *pbOffice.GetUserWorkMomentsResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + reqPb.OperationID = req.OperationID + reqPb.Pagination = &pbCommon.RequestPagination{ + PageNumber: req.PageNumber, + ShowNumber: req.ShowNumber, + } + reqPb.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.GetUserWorkMoments(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMoments rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMoments rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + if err := utils.CopyStructFields(&resp.Data.WorkMoments, respPb.WorkMoments); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + resp.Data.ShowNumber = respPb.Pagination.ShowNumber + resp.Data.CurrentPage = respPb.Pagination.CurrentPage + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func GetUserFriendWorkMoments(c *gin.Context) { + var ( + req apiStruct.GetUserFriendWorkMomentsReq + resp apiStruct.GetUserFriendWorkMomentsResp + reqPb pbOffice.GetUserFriendWorkMomentsReq + respPb *pbOffice.GetUserFriendWorkMomentsResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + reqPb.OperationID = req.OperationID + reqPb.Pagination = &pbCommon.RequestPagination{ + PageNumber: req.PageNumber, + ShowNumber: req.ShowNumber, + } + reqPb.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.GetUserFriendWorkMoments(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserFriendWorkMoments rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserFriendWorkMoments rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + if err := utils.CopyStructFields(&resp.Data.WorkMoments, respPb.WorkMoments); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + resp.Data.ShowNumber = respPb.Pagination.ShowNumber + resp.Data.CurrentPage = respPb.Pagination.CurrentPage + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + +func SetUserWorkMomentsLevel(c *gin.Context) { + var ( + req apiStruct.SetUserWorkMomentsLevelReq + resp apiStruct.SetUserWorkMomentsLevelResp + reqPb pbOffice.SetUserWorkMomentsLevelReq + respPb *pbOffice.SetUserWorkMomentsLevelResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + reqPb.UserID = userID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.SetUserWorkMomentsLevel(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetUserWorkMomentsLevel rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "SetUserWorkMomentsLevel rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go new file mode 100644 index 000000000..9d134a253 --- /dev/null +++ b/internal/api/organization/organization.go @@ -0,0 +1,443 @@ +package organization + +import ( + jsonData "Open_IM/internal/utils" + api "Open_IM/pkg/base_info" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + rpc "Open_IM/pkg/proto/organization" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "github.com/gin-gonic/gin" + "net/http" + "strings" +) + +func CreateDepartment(c *gin.Context) { + params := api.CreateDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &rpc.CreateDepartmentReq{DepartmentInfo: &open_im_sdk.Department{}} + utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req.DepartmentInfo, ¶ms) + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + " " + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.CreateDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc CreateDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.CreateDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Department: RpcResp.DepartmentInfo} + apiResp.Data = jsonData.JsonDataOne(RpcResp.DepartmentInfo) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func UpdateDepartment(c *gin.Context) { + params := api.UpdateDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &rpc.UpdateDepartmentReq{DepartmentInfo: &open_im_sdk.Department{}} + utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req.DepartmentInfo, ¶ms) + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.UpdateDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc UpdateDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.UpdateDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func GetSubDepartment(c *gin.Context) { + params := api.GetSubDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &rpc.GetSubDepartmentReq{} + utils.CopyStructFields(req, ¶ms) + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.GetSubDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc GetDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.GetSubDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, DepartmentList: RpcResp.DepartmentList} + apiResp.Data = jsonData.JsonDataList(RpcResp.DepartmentList) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func GetAllDepartment(c *gin.Context) { + +} + +func DeleteDepartment(c *gin.Context) { + params := api.DeleteDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &rpc.DeleteDepartmentReq{} + utils.CopyStructFields(req, ¶ms) + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.DeleteDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc DeleteDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.DeleteDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func CreateOrganizationUser(c *gin.Context) { + params := api.CreateOrganizationUserReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.CreateOrganizationUserReq{OrganizationUser: &open_im_sdk.OrganizationUser{}} + utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req.OrganizationUser, ¶ms) + + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.CreateOrganizationUser(context.Background(), req) + if err != nil { + errMsg := "rpc CreateOrganizationUser failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.CreateOrganizationUserResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func UpdateOrganizationUser(c *gin.Context) { + params := api.UpdateOrganizationUserReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.UpdateOrganizationUserReq{OrganizationUser: &open_im_sdk.OrganizationUser{}} + utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req.OrganizationUser, ¶ms) + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.UpdateOrganizationUser(context.Background(), req) + if err != nil { + errMsg := "rpc UpdateOrganizationUser failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.UpdateOrganizationUserResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func CreateDepartmentMember(c *gin.Context) { + params := api.CreateDepartmentMemberReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.CreateDepartmentMemberReq{DepartmentMember: &open_im_sdk.DepartmentMember{}} + utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req.DepartmentMember, ¶ms) + + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.CreateDepartmentMember(context.Background(), req) + if err != nil { + errMsg := "rpc CreateDepartmentMember failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.CreateDepartmentMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func GetUserInDepartment(c *gin.Context) { + params := api.GetUserInDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.GetUserInDepartmentReq{} + utils.CopyStructFields(req, ¶ms) + + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.GetUserInDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc GetUserInDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.GetUserInDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, UserInDepartment: RpcResp.UserInDepartment} + apiResp.Data = jsonData.JsonDataOne(RpcResp.UserInDepartment) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func UpdateUserInDepartment(c *gin.Context) { + params := api.UpdateUserInDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.UpdateUserInDepartmentReq{DepartmentMember: &open_im_sdk.DepartmentMember{}} + utils.CopyStructFields(req.DepartmentMember, ¶ms) + utils.CopyStructFields(req, ¶ms) + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.UpdateUserInDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc UpdateUserInDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.UpdateUserInDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func DeleteOrganizationUser(c *gin.Context) { + params := api.DeleteOrganizationUserReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.DeleteOrganizationUserReq{} + utils.CopyStructFields(req, ¶ms) + + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.DeleteOrganizationUser(context.Background(), req) + if err != nil { + errMsg := "rpc DeleteOrganizationUser failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.DeleteOrganizationUserResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func GetDepartmentMember(c *gin.Context) { + params := api.GetDepartmentMemberReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + + req := &rpc.GetDepartmentMemberReq{} + utils.CopyStructFields(req, ¶ms) + + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.GetDepartmentMember(context.Background(), req) + if err != nil { + errMsg := "rpc GetDepartmentMember failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.GetDepartmentMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, UserInDepartmentList: RpcResp.UserDepartmentMemberList} + apiResp.Data = jsonData.JsonDataList(RpcResp.UserDepartmentMemberList) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} + +func DeleteUserInDepartment(c *gin.Context) { + params := api.DeleteUserInDepartmentReq{} + if err := c.BindJSON(¶ms); err != nil { + log.NewError("0", "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &rpc.DeleteUserInDepartmentReq{} + utils.CopyStructFields(req, ¶ms) + + err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) + req.OpUserID = opUserID + if err != nil { + errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String(), "params", params) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.DeleteUserInDepartment(context.Background(), req) + if err != nil { + errMsg := "rpc DeleteUserInDepartment failed " + err.Error() + req.String() + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + apiResp := api.DeleteUserInDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 23ad88405..b3d66b934 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -17,7 +17,14 @@ var ( func MinioInit() { operationID := utils.OperationIDGenerator() log.NewInfo(operationID, utils.GetSelfFuncName(), "minio config: ", config.Config.Credential.Minio) - minioUrl, err := url2.Parse(config.Config.Credential.Minio.Endpoint) + var initUrl string + if config.Config.Credential.Minio.EndpointInnerEnable { + initUrl = config.Config.Credential.Minio.EndpointInner + } else { + initUrl = config.Config.Credential.Minio.Endpoint + } + log.NewInfo(operationID, utils.GetSelfFuncName(), "use initUrl: ", initUrl) + minioUrl, err := url2.Parse(initUrl) if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) return diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index b11f04690..f9f4c078d 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -111,7 +111,13 @@ func MinioStorageCredential(c *gin.Context) { stsOpts.AccessKey = config.Config.Credential.Minio.AccessKeyID stsOpts.SecretKey = config.Config.Credential.Minio.SecretAccessKey stsOpts.DurationSeconds = constant.MinioDurationTimes - li, err := cr.NewSTSAssumeRole(config.Config.Credential.Minio.Endpoint, stsOpts) + var endpoint string + if config.Config.Credential.Minio.EndpointInnerEnable { + endpoint = config.Config.Credential.Minio.EndpointInner + } else { + endpoint = config.Config.Credential.Minio.Endpoint + } + li, err := cr.NewSTSAssumeRole(endpoint, stsOpts) if err != nil { log.NewError("", utils.GetSelfFuncName(), "NewSTSAssumeRole failed", err.Error(), stsOpts, config.Config.Credential.Minio.Endpoint) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) diff --git a/internal/api/user/user.go b/internal/api/user/user.go index 1756a9f8d..4fbbcf5ef 100644 --- a/internal/api/user/user.go +++ b/internal/api/user/user.go @@ -4,9 +4,11 @@ import ( jsonData "Open_IM/internal/utils" api "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" + pbRelay "Open_IM/pkg/proto/relay" open_im_sdk "Open_IM/pkg/proto/sdk_ws" rpc "Open_IM/pkg/proto/user" "Open_IM/pkg/utils" @@ -127,3 +129,70 @@ func GetSelfUserInfo(c *gin.Context) { } } + +func GetUsersOnlineStatus(c *gin.Context) { + params := api.GetUsersOnlineStatusReq{} + if err := c.BindJSON(¶ms); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &pbRelay.GetUsersOnlineStatusReq{} + utils.CopyStructFields(req, ¶ms) + var ok bool + ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + if len(config.Config.Manager.AppManagerUid) == 0 { + log.NewError(req.OperationID, "Manager == 0") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "Manager == 0"}) + return + } + req.OpUserID = config.Config.Manager.AppManagerUid[0] + + log.NewInfo(params.OperationID, "GetUsersOnlineStatus args ", req.String()) + var wsResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult + var respResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult + flag := false + grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName) + for _, v := range grpcCons { + client := pbRelay.NewOnlineMessageRelayServiceClient(v) + reply, err := client.GetUsersOnlineStatus(context.Background(), req) + if err != nil { + log.NewError(params.OperationID, "GetUsersOnlineStatus rpc err", req.String(), err.Error()) + continue + } else { + if reply.ErrCode == 0 { + wsResult = append(wsResult, reply.SuccessResult...) + } + } + } + log.NewInfo(params.OperationID, "call GetUsersOnlineStatus rpc server is success", wsResult) + //Online data merge of each node + for _, v1 := range params.UserIDList { + flag = false + temp := new(pbRelay.GetUsersOnlineStatusResp_SuccessResult) + for _, v2 := range wsResult { + if v2.UserID == v1 { + flag = true + temp.UserID = v1 + temp.Status = constant.OnlineStatus + temp.DetailPlatformStatus = append(temp.DetailPlatformStatus, v2.DetailPlatformStatus...) + } + + } + if !flag { + temp.UserID = v1 + temp.Status = constant.OfflineStatus + } + respResult = append(respResult, temp) + } + resp := api.GetUsersOnlineStatusResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, SuccessResult: respResult} + if len(respResult) == 0 { + resp.SuccessResult = []*pbRelay.GetUsersOnlineStatusResp_SuccessResult{} + } + log.NewInfo(req.OperationID, "GetUsersOnlineStatus api return", resp) + c.JSON(http.StatusOK, resp) +} diff --git a/internal/msg_gateway/gate/rpc_server.go b/internal/msg_gateway/gate/rpc_server.go index 4c96b9241..a088303cb 100644 --- a/internal/msg_gateway/gate/rpc_server.go +++ b/internal/msg_gateway/gate/rpc_server.go @@ -101,7 +101,7 @@ func (r *RPCServer) OnlinePushMsg(_ context.Context, in *pbRelay.OnlinePushMsgRe } func (r *RPCServer) GetUsersOnlineStatus(_ context.Context, req *pbRelay.GetUsersOnlineStatusReq) (*pbRelay.GetUsersOnlineStatusResp, error) { log.NewInfo(req.OperationID, "rpc GetUsersOnlineStatus arrived server", req.String()) - if !token_verify.IsMangerUserID(req.OpUserID) { + if !token_verify.IsManagerUserID(req.OpUserID) { log.NewError(req.OperationID, "no permission GetUsersOnlineStatus ", req.OpUserID) return &pbRelay.GetUsersOnlineStatusResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil } diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 7c602a5fc..dd18f7bc8 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -262,20 +262,26 @@ func (ws *WServer) getUserUid(conn *UserConn) (uid, platform string) { func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { status := http.StatusUnauthorized query := r.URL.Query() + operationID := "" + if len(query["operationID"]) != 0 { + operationID = query["operationID"][0] + } if len(query["token"]) != 0 && len(query["sendID"]) != 0 && len(query["platformID"]) != 0 { if ok, err, msg := token_verify.WsVerifyToken(query["token"][0], query["sendID"][0], query["platformID"][0]); !ok { - e := err.(*constant.ErrInfo) - log.ErrorByKv("Token verify failed", "", "query", query, msg) + // e := err.(*constant.ErrInfo) + log.Error(operationID, "Token verify failed ", "query ", query, msg, err.Error()) w.Header().Set("Sec-Websocket-Version", "13") - http.Error(w, e.ErrMsg, int(e.ErrCode)) + w.Header().Set("ws_err_msg", err.Error()) + http.Error(w, err.Error(), status) return false } else { - log.InfoByKv("Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) + log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) return true } } else { - log.ErrorByKv("Args err", "", "query", query) + log.Error(operationID, "Args err", "query", query) w.Header().Set("Sec-Websocket-Version", "13") + w.Header().Set("ws_err_msg", "args err") http.Error(w, http.StatusText(status), status) return false } diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index 20326bbfc..a67b9cff4 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -2,8 +2,8 @@ package logic import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/kafka" + "fmt" ) var ( @@ -20,6 +20,10 @@ func Init() { } func Run() { //register mysqlConsumerHandler to - go persistentCH.persistentConsumerGroup.RegisterHandleAndConsumer(&persistentCH) + if config.Config.ChatPersistenceMysql { + go persistentCH.persistentConsumerGroup.RegisterHandleAndConsumer(&persistentCH) + } else { + fmt.Println("not start mysql consumer") + } go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) } diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index d95aca887..b91b51fc2 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -7,6 +7,8 @@ import ( "Open_IM/pkg/utils" "bytes" "crypto/sha256" + "errors" + //"crypto/sha512" "encoding/hex" "encoding/json" @@ -18,10 +20,12 @@ import ( var ( GetuiClient *Getui + + TokenExpireError = errors.New("token expire") ) const ( - PushURL = "/push/single/cid" + PushURL = "/push/single/alias" AuthURL = "/auth" ) @@ -51,31 +55,50 @@ type AuthResp struct { type PushReq struct { RequestID string `json:"request_id"` Audience struct { - Cid []string `json:"cid"` + Alias []string `json:"alias"` } `json:"audience"` PushMessage struct { Notification Notification `json:"notification,omitempty"` Transmission string `json:"transmission,omitempty"` } `json:"push_message"` + PushChannel struct { + Ios Ios `json:"ios"` + Android Android `json:"android"` + } `json:"push_channel"` +} + +type Ios struct { + Aps struct { + Sound string `json:"sound"` + Alert Alert `json:"alert"` + } `json:"aps"` +} + +type Alert struct { + Title string `json:"title"` + Body string `json:"body"` +} + +type Android struct { + Ups struct { + Notification Notification `json:"notification"` + } `json:"ups"` } type Notification struct { Title string `json:"title"` Body string `json:"body"` ClickType string `json:"click_type"` - //Intent string `json:"intent,omitempty"` - //Url string `json:"url,omitempty"` } type PushResp struct { - GetuiCommonResp } func newGetuiClient() *Getui { return &Getui{} } -func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operationID string) (resp string, err error) { +func (g *Getui) Push(userIDList []string, alert, detailContent, operationID string) (resp string, err error) { token, err := db.DB.GetGetuiToken() log.NewDebug(operationID, utils.GetSelfFuncName(), "token:", token) if err != nil { @@ -91,23 +114,38 @@ func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operat pushReq := PushReq{ RequestID: utils.OperationIDGenerator(), Audience: struct { - Cid []string `json:"cid"` - }{Cid: []string{userIDList[0]}}, + Alias []string `json:"alias"` + }{Alias: []string{userIDList[0]}}, } pushReq.PushMessage.Notification = Notification{ Title: alert, Body: alert, ClickType: "startapp", } + pushReq.PushChannel.Ios.Aps.Sound = "default" + pushReq.PushChannel.Ios.Aps.Alert = Alert{ + Title: alert, + Body: alert, + } + pushReq.PushChannel.Android.Ups.Notification = Notification{ + Title: alert, + Body: alert, + ClickType: "startapp", + } pushResp := PushResp{} err = g.request(PushURL, pushReq, token, &pushResp, operationID) + switch err { + case TokenExpireError: + token, err = g.getTokenAndSave2Redis(operationID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "getTokenAndSave2Redis failed, ", err.Error()) + } else { + log.NewInfo(operationID, utils.GetSelfFuncName(), "getTokenAndSave2Redis: ", token) + } + } if err != nil { return "", utils.Wrap(err, "push failed") } - log.NewDebug(operationID, utils.GetSelfFuncName(), "resp: ", pushResp) - if pushResp.Code == 10001 { - _, _ = g.getTokenAndSave2Redis(operationID) - } respBytes, err := json.Marshal(pushResp) return string(respBytes), utils.Wrap(err, "") } @@ -164,6 +202,9 @@ func (g *Getui) request(url string, content interface{}, token string, returnStr if err := json.Unmarshal(result, &commonResp); err != nil { return err } + if commonResp.Code == 10001 { + return TokenExpireError + } return nil } diff --git a/internal/push/jpush/push.go b/internal/push/jpush/push.go index 439ee845f..aaaee306d 100644 --- a/internal/push/jpush/push.go +++ b/internal/push/jpush/push.go @@ -32,13 +32,13 @@ func (j *JPush) SetAlias(cid, alias string) (resp string, err error) { return resp, nil } -func (j *JPush) Push(accounts []string, alert, detailContent, platform, operationID string) (string, error) { +func (j *JPush) Push(accounts []string, alert, detailContent, operationID string) (string, error) { var pf requestBody.Platform - _ = pf.SetPlatform(platform) + pf.SetAll() var au requestBody.Audience au.SetAlias(accounts) var no requestBody.Notification - no.SetAlert(alert, platform) + no.SetAlert(alert) var me requestBody.Message me.SetMsgContent(detailContent) var o requestBody.Options diff --git a/internal/push/jpush/requestBody/notification.go b/internal/push/jpush/requestBody/notification.go index 3f2876612..9ff49a439 100644 --- a/internal/push/jpush/requestBody/notification.go +++ b/internal/push/jpush/requestBody/notification.go @@ -2,7 +2,6 @@ package requestBody import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" ) type Notification struct { @@ -23,18 +22,14 @@ type Ios struct { Badge string `json:"badge,omitempty"` } -func (n *Notification) SetAlert(alert, platform string) { +func (n *Notification) SetAlert(alert string) { n.Alert = alert - switch platform { - case constant.AndroidPlatformStr: - n.Android.Alert = alert - n.SetAndroidIntent() - case constant.IOSPlatformStr: - n.IOS.Alert = alert - n.IOS.Sound = "default" - n.IOS.Badge = "+1" - default: - } + n.Android.Alert = alert + n.SetAndroidIntent() + n.IOS.Alert = alert + n.IOS.Sound = "default" + n.IOS.Badge = "+1" + } func (n *Notification) SetAndroidIntent() { n.Android.Intent.URL = config.Config.Push.Jpns.PushIntent diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index c6e512ccb..607d36db0 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -59,68 +59,66 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { if v.ResultCode == 0 { continue } - //supported terminal - for _, t := range pushTerminal { - if v.RecvPlatFormID == t { - //Use offline push messaging - var UIDList []string - UIDList = append(UIDList, v.RecvID) - customContent := OpenIMContent{ - SessionType: int(pushMsg.MsgData.SessionType), - From: pushMsg.MsgData.SendID, - To: pushMsg.MsgData.RecvID, - Seq: pushMsg.MsgData.Seq, - } - bCustomContent, _ := json.Marshal(customContent) - jsonCustomContent := string(bCustomContent) - var content string - if pushMsg.MsgData.OfflinePushInfo != nil { - content = pushMsg.MsgData.OfflinePushInfo.Title + if utils.IsContainInt32(v.RecvPlatFormID, pushTerminal) { + //Use offline push messaging + var UIDList []string + UIDList = append(UIDList, v.RecvID) + customContent := OpenIMContent{ + SessionType: int(pushMsg.MsgData.SessionType), + From: pushMsg.MsgData.SendID, + To: pushMsg.MsgData.RecvID, + Seq: pushMsg.MsgData.Seq, + } + bCustomContent, _ := json.Marshal(customContent) + jsonCustomContent := string(bCustomContent) + var content string + if pushMsg.MsgData.OfflinePushInfo != nil { + content = pushMsg.MsgData.OfflinePushInfo.Title - } else { - switch pushMsg.MsgData.ContentType { - case constant.Text: - content = constant.ContentType2PushContent[constant.Text] - case constant.Picture: - content = constant.ContentType2PushContent[constant.Picture] - case constant.Voice: - content = constant.ContentType2PushContent[constant.Voice] - case constant.Video: - content = constant.ContentType2PushContent[constant.Video] - case constant.File: - content = constant.ContentType2PushContent[constant.File] - case constant.AtText: - a := AtContent{} - _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) - if utils.IsContain(v.RecvID, a.AtUserList) { - content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] - } else { - content = constant.ContentType2PushContent[constant.GroupMsg] - } - default: - content = constant.ContentType2PushContent[constant.Common] + } else { + switch pushMsg.MsgData.ContentType { + case constant.Text: + content = constant.ContentType2PushContent[constant.Text] + case constant.Picture: + content = constant.ContentType2PushContent[constant.Picture] + case constant.Voice: + content = constant.ContentType2PushContent[constant.Voice] + case constant.Video: + content = constant.ContentType2PushContent[constant.Video] + case constant.File: + content = constant.ContentType2PushContent[constant.File] + case constant.AtText: + a := AtContent{} + _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) + if utils.IsContain(v.RecvID, a.AtUserList) { + content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] + } else { + content = constant.ContentType2PushContent[constant.GroupMsg] } + default: + content = constant.ContentType2PushContent[constant.Common] } - var offlinePusher pusher.OfflinePusher - if config.Config.Push.Getui.Enable { - log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), config.Config.Push.Getui) - offlinePusher = getui.GetuiClient - } - if config.Config.Push.Jpns.Enable { - offlinePusher = jpush.JPushClient - } - if offlinePusher == nil { - offlinePusher = jpush.JPushClient - } - pushResult, err := offlinePusher.Push(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t), pushMsg.OperationID) - if err != nil { - log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error(), constant.PlatformIDToName(t)) - } else { - log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData, constant.PlatformIDToName(t)) - } - } + var offlinePusher pusher.OfflinePusher + if config.Config.Push.Getui.Enable { + log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), config.Config.Push.Getui) + offlinePusher = getui.GetuiClient + } + if config.Config.Push.Jpns.Enable { + offlinePusher = jpush.JPushClient + } + if offlinePusher == nil { + offlinePusher = jpush.JPushClient + } + pushResult, err := offlinePusher.Push(UIDList, content, jsonCustomContent, pushMsg.OperationID) + if err != nil { + log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error()) + } else { + log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData) + } + break } + } } diff --git a/internal/push/push_interface.go b/internal/push/push_interface.go index f89fcf664..59b4764b4 100644 --- a/internal/push/push_interface.go +++ b/internal/push/push_interface.go @@ -1,5 +1,5 @@ package push type OfflinePusher interface { - Push(userIDList []string, alert, detailContent, platform, operationID string) (resp string, err error) + Push(userIDList []string, alert, detailContent, operationID string) (resp string, err error) } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index b4520e92a..4704fa191 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -13,6 +13,7 @@ import ( "Open_IM/pkg/grpc-etcdv3/getcdv3" pbGroup "Open_IM/pkg/proto/group" open_im_sdk "Open_IM/pkg/proto/sdk_ws" + pbUser "Open_IM/pkg/proto/user" "Open_IM/pkg/utils" "context" "net" @@ -202,15 +203,19 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.InviteUserToGroupReq) (*pbGroup.InviteUserToGroupResp, error) { log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String()) - if !imdb.IsExistGroupMember(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { + if !imdb.IsExistGroupMember(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) { log.NewError(req.OperationID, "no permission InviteUserToGroup ", req.GroupID, req.OpUserID) return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil } - _, err := imdb.GetGroupInfoByGroupID(req.GroupID) + groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID) if err != nil { log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.GroupID, err) - return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + if groupInfo.Status == constant.GroupStatusDismissed { + errMsg := " group status is dismissed " + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrStatus.ErrCode, ErrMsg: errMsg}, nil } // //from User: invite: applicant @@ -254,7 +259,53 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite } resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) } - + var haveConUserID []string + conversations, err := imdb.GetConversationsByConversationIDMultipleOwner(okUserIDList, utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType)) + for _, v := range conversations { + haveConUserID = append(haveConUserID, v.OwnerUserID) + } + var reqPb pbUser.SetConversationReq + var c pbUser.Conversation + for _, v := range conversations { + reqPb.OperationID = req.OperationID + c.OwnerUserID = v.OwnerUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.RecvMsgOpt = v.RecvMsgOpt + c.ConversationType = constant.GroupChatType + c.GroupID = req.GroupID + c.IsPinned = v.IsPinned + c.AttachedInfo = v.AttachedInfo + c.IsPrivateChat = v.IsPrivateChat + c.GroupAtType = v.GroupAtType + c.IsNotInGroup = false + c.Ex = v.Ex + reqPb.Conversation = &c + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v.OwnerUserID) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v.OwnerUserID) + } + } + for _, v := range utils.DifferenceString(haveConUserID, okUserIDList) { + reqPb.OperationID = req.OperationID + c.OwnerUserID = v + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.ConversationType = constant.GroupChatType + c.GroupID = req.GroupID + c.IsNotInGroup = false + reqPb.Conversation = &c + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) + } + } chat.MemberInvitedNotification(req.OperationID, req.GroupID, req.OpUserID, req.Reason, okUserIDList) resp.ErrCode = 0 log.NewInfo(req.OperationID, "InviteUserToGroup rpc return ", resp.String()) @@ -331,7 +382,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou //op is app manager if flag != 1 { - if token_verify.IsMangerUserID(req.OpUserID) { + if token_verify.IsManagerUserID(req.OpUserID) { flag = 1 log.NewDebug(req.OperationID, "is app manager ", req.OpUserID) } @@ -374,9 +425,28 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou okUserIDList = append(okUserIDList, v) } - err = db.DB.DelGroupMember(req.GroupID, v) + //err = db.DB.DelGroupMember(req.GroupID, v) + //if err != nil { + // log.NewError(req.OperationID, "DelGroupMember failed ", err.Error(), req.GroupID, v) + //} + } + var reqPb pbUser.SetConversationReq + var c pbUser.Conversation + for _, v := range okUserIDList { + reqPb.OperationID = req.OperationID + 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 := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) if err != nil { - log.NewError(req.OperationID, "DelGroupMember failed ", err.Error(), req.GroupID, v) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) } } chat.MemberKickedNotification(req, okUserIDList) @@ -467,8 +537,8 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G groupRequest.UserID = req.FromUserID groupRequest.HandleUserID = req.OpUserID groupRequest.HandledTime = time.Now() - if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { - log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) + if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { + log.NewError(req.OperationID, "IsManagerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } err := imdb.UpdateGroupRequest(groupRequest) @@ -497,6 +567,38 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), member) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + var reqPb pbUser.SetConversationReq + reqPb.OperationID = req.OperationID + var c pbUser.Conversation + conversation, err := imdb.GetConversation(req.FromUserID, utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType)) + if err != nil { + c.OwnerUserID = req.FromUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.ConversationType = constant.GroupChatType + c.GroupID = req.GroupID + c.IsNotInGroup = false + } else { + c.OwnerUserID = conversation.OwnerUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.RecvMsgOpt = conversation.RecvMsgOpt + c.ConversationType = constant.GroupChatType + c.GroupID = req.GroupID + c.IsPinned = conversation.IsPinned + c.AttachedInfo = conversation.AttachedInfo + c.IsPrivateChat = conversation.IsPrivateChat + c.GroupAtType = conversation.GroupAtType + c.IsNotInGroup = false + c.Ex = conversation.Ex + } + reqPb.Conversation = &c + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String()) + } chat.GroupApplicationAcceptedNotification(req) chat.MemberEnterNotification(req) } else if req.HandleResult == constant.GroupResponseRefuse { @@ -518,6 +620,16 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID) + if err != nil { + log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.GroupID, err) + return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + if groupInfo.Status == constant.GroupStatusDismissed { + errMsg := " group status is dismissed " + return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrStatus.ErrCode, ErrMsg: errMsg}}, nil + } + var groupRequest db.GroupRequest groupRequest.UserID = req.OpUserID groupRequest.ReqMsg = req.ReqMessage @@ -542,7 +654,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) } func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) (*pbGroup.QuitGroupResp, error) { - log.NewError(req.OperationID, "QuitGroup args ", req.String()) + log.NewInfo(req.OperationID, "QuitGroup args ", req.String()) _, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.OpUserID) if err != nil { log.NewError(req.OperationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), req.GroupID, req.OpUserID) @@ -560,7 +672,24 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) log.NewError(req.OperationID, "DelGroupMember failed ", req.GroupID, req.OpUserID) // return &pbGroup.CommonResp{ErrorCode: constant.ErrQuitGroup.ErrCode, ErrorMsg: constant.ErrQuitGroup.ErrMsg}, nil } - + //modify quitter conversation info + var reqPb pbUser.SetConversationReq + var c pbUser.Conversation + reqPb.OperationID = req.OperationID + c.OwnerUserID = req.OpUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.ConversationType = constant.GroupChatType + c.GroupID = req.GroupID + c.IsNotInGroup = true + reqPb.Conversation = &c + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String()) + } chat.MemberQuitNotification(req) log.NewInfo(req.OperationID, "rpc QuitGroup return ", pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}) return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -595,6 +724,11 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, http.WrapError(constant.ErrDB) } + if group.Status == constant.GroupStatusDismissed { + errMsg := " group status is dismissed " + return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrStatus.ErrCode, ErrMsg: errMsg}}, nil + } + ////bitwise operators: 0001:groupName; 0010:Notification 0100:Introduction; 1000:FaceUrl; 10000:owner var changedType int32 if group.GroupName != req.GroupInfo.GroupName && req.GroupInfo.GroupName != "" { @@ -627,12 +761,22 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.TransferGroupOwnerReq) (*pbGroup.TransferGroupOwnerResp, error) { log.NewInfo(req.OperationID, "TransferGroupOwner ", req.String()) + groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID) + if err != nil { + log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.GroupID, err) + return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + if groupInfo.Status == constant.GroupStatusDismissed { + errMsg := " group status is dismissed " + return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrStatus.ErrCode, ErrMsg: errMsg}}, nil + } + if req.OldOwnerUserID == req.NewOwnerUserID { log.NewError(req.OperationID, "same owner ", req.OldOwnerUserID, req.NewOwnerUserID) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil } groupMemberInfo := db.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers} - err := imdb.UpdateGroupMemberInfo(groupMemberInfo) + err = imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil @@ -867,6 +1011,25 @@ func (s *groupServer) RemoveGroupMembersCMS(_ context.Context, req *pbGroup.Remo OperationID: req.OperationID, OpUserID: req.OpUserId, } + var reqPb pbUser.SetConversationReq + var c pbUser.Conversation + for _, v := range resp.Success { + reqPb.OperationID = req.OperationID + 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 := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) + } + } chat.MemberKickedNotification(reqKick, resp.Success) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "success: ", resp.Success) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "failed: ", resp.Failed) @@ -948,7 +1111,7 @@ func (s *groupServer) GetUserReqApplicationList(_ context.Context, req *pbGroup. func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) - if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { + if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { log.NewError(req.OperationID, "verify failed ", req.OpUserID, req.GroupID) return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } @@ -958,14 +1121,38 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou log.NewError(req.OperationID, "OperateGroupStatus failed ", req.GroupID, constant.GroupStatusDismissed) return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + memberList, err := imdb.GetGroupMemberListByGroupID(req.GroupID) + if err != nil { + log.NewError(req.OperationID, "GetGroupMemberListByGroupID failed,", err.Error(), req.GroupID) + } + //modify quitter conversation info + var reqPb pbUser.SetConversationReq + var c pbUser.Conversation + for _, v := range memberList { + reqPb.OperationID = req.OperationID + c.OwnerUserID = v.UserID + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) + c.ConversationType = constant.GroupChatType + c.GroupID = req.GroupID + c.IsNotInGroup = true + reqPb.Conversation = &c + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetConversation(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v.UserID) + } else { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v.UserID) + } + } chat.GroupDismissedNotification(req) - err = imdb.DeleteGroupMemberByGroupID(req.GroupID) if err != nil { log.NewError(req.OperationID, "DeleteGroupMemberByGroupID failed ", req.GroupID) return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil } @@ -977,7 +1164,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) - if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { + if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) { log.Error(req.OperationID, "verify failed ", req.GroupID, req.UserID) return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } @@ -996,7 +1183,7 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) - if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { + if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) { log.Error(req.OperationID, "verify failed ", req.OpUserID, req.GroupID) return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } @@ -1014,7 +1201,7 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) (*pbGroup.MuteGroupResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) - if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { + if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) { log.Error(req.OperationID, "verify failed ", req.GroupID, req.GroupID) return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } @@ -1030,7 +1217,7 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) - if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { + if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) { log.Error(req.OperationID, "verify failed ", req.OpUserID, req.GroupID) return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } @@ -1044,3 +1231,36 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil } + +func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.SetGroupMemberNicknameReq) (*pbGroup.SetGroupMemberNicknameResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) + if req.OpUserID != req.UserID && !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " verify failed " + req.OpUserID + req.GroupID + log.Error(req.OperationID, errMsg) + return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil + } + + groupMemberInfo := db.GroupMember{} + groupMemberInfo.UserID = req.UserID + groupMemberInfo.GroupID = req.GroupID + if req.Nickname == "" { + userNickname, err := imdb.GetUserNameByUserID(groupMemberInfo.UserID) + if err != nil { + errMsg := req.OperationID + " GetUserNameByUserID failed " + err.Error() + log.Error(req.OperationID, errMsg) + return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + groupMemberInfo.Nickname = userNickname + } else { + groupMemberInfo.Nickname = req.Nickname + } + err := imdb.UpdateGroupMemberInfo(groupMemberInfo) + if err != nil { + errMsg := req.OperationID + " UpdateGroupMemberInfo failed " + err.Error() + log.Error(req.OperationID, errMsg) + return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + chat.GroupMemberInfoSetNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}) + return &pbGroup.SetGroupMemberNicknameResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil +} diff --git a/internal/rpc/msg/group_notification.go b/internal/rpc/msg/group_notification.go index d6def3ff2..5ba2400dd 100644 --- a/internal/rpc/msg/group_notification.go +++ b/internal/rpc/msg/group_notification.go @@ -22,7 +22,7 @@ import ( //} creator->group func setOpUserInfo(opUserID, groupID string, groupMemberInfo *open_im_sdk.GroupMemberFullInfo) error { - if token_verify.IsMangerUserID(opUserID) { + if token_verify.IsManagerUserID(opUserID) { u, err := imdb.GetUserByUserID(opUserID) if err != nil { return utils.Wrap(err, "GetUserByUserID failed") @@ -168,6 +168,9 @@ func groupNotification(contentType int32, m proto.Message, sendID, groupID, recv tips.DefaultTips = toNickname + "" + cn.GroupMemberMuted.DefaultTips.Tips case constant.GroupMemberCancelMutedNotification: tips.DefaultTips = toNickname + "" + cn.GroupMemberCancelMuted.DefaultTips.Tips + case constant.GroupMemberInfoSetNotification: + tips.DefaultTips = toNickname + "" + cn.GroupMemberInfoSet.DefaultTips.Tips + default: log.Error(operationID, "contentType failed ", contentType) return @@ -282,6 +285,24 @@ func GroupMemberMutedNotification(operationID, opUserID, groupID, groupMemberUse groupNotification(constant.GroupMemberMutedNotification, &tips, opUserID, groupID, "", operationID) } +func GroupMemberInfoSetNotification(operationID, opUserID, groupID, groupMemberUserID string) { + tips := open_im_sdk.GroupMemberInfoSetTips{Group: &open_im_sdk.GroupInfo{}, + OpUser: &open_im_sdk.GroupMemberFullInfo{}, ChangedUser: &open_im_sdk.GroupMemberFullInfo{}} + if err := setGroupInfo(groupID, tips.Group); err != nil { + log.Error(operationID, "setGroupInfo failed ", err.Error(), groupID) + return + } + if err := setOpUserInfo(opUserID, groupID, tips.OpUser); err != nil { + log.Error(operationID, "setOpUserInfo failed ", err.Error(), opUserID, groupID) + return + } + if err := setGroupMemberInfo(groupID, groupMemberUserID, tips.ChangedUser); err != nil { + log.Error(operationID, "setGroupMemberInfo failed ", err.Error(), groupID, groupMemberUserID) + return + } + groupNotification(constant.GroupMemberInfoSetNotification, &tips, opUserID, groupID, "", operationID) +} + func GroupMemberCancelMutedNotification(operationID, opUserID, groupID, groupMemberUserID string) { tips := open_im_sdk.GroupMemberCancelMutedTips{Group: &open_im_sdk.GroupInfo{}, OpUser: &open_im_sdk.GroupMemberFullInfo{}, MutedUser: &open_im_sdk.GroupMemberFullInfo{}} diff --git a/internal/rpc/msg/organization_notification.go b/internal/rpc/msg/organization_notification.go new file mode 100644 index 000000000..d9dd6fd52 --- /dev/null +++ b/internal/rpc/msg/organization_notification.go @@ -0,0 +1,76 @@ +package msg + +import ( + "Open_IM/pkg/common/constant" + imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" + "Open_IM/pkg/common/log" + utils2 "Open_IM/pkg/common/utils" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" +) + +func OrganizationNotificationToAll(opUserID string, operationID string) { + err, userIDList := imdb.GetAllOrganizationUserID() + if err != nil { + log.Error(operationID, "GetAllOrganizationUserID failed ", err.Error()) + return + } + + tips := open_im_sdk.OrganizationChangedTips{OpUser: &open_im_sdk.UserInfo{}} + + user, err := imdb.GetUserByUserID(opUserID) + if err != nil { + log.NewError(operationID, "GetUserByUserID failed ", err.Error(), opUserID) + return + } + utils2.UserDBCopyOpenIM(tips.OpUser, user) + + for _, v := range userIDList { + log.Debug(operationID, "OrganizationNotification", opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) + OrganizationNotification(opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) + } +} + +func OrganizationNotification(opUserID string, recvUserID string, contentType int32, m proto.Message, operationID string) { + log.Info(operationID, utils.GetSelfFuncName(), "args: ", contentType, opUserID) + var err error + var tips open_im_sdk.TipsComm + tips.Detail, err = proto.Marshal(m) + if err != nil { + log.Error(operationID, "Marshal failed ", err.Error(), m.String()) + return + } + + marshaler := jsonpb.Marshaler{ + OrigName: true, + EnumsAsInts: false, + EmitDefaults: false, + } + + tips.JsonDetail, _ = marshaler.MarshalToString(m) + + switch contentType { + case constant.OrganizationChangedNotification: + tips.DefaultTips = "OrganizationChangedNotification" + + default: + log.Error(operationID, "contentType failed ", contentType) + return + } + + var n NotificationMsg + n.SendID = opUserID + n.RecvID = recvUserID + n.ContentType = contentType + n.SessionType = constant.SingleChatType + n.MsgFrom = constant.SysMsgType + n.OperationID = operationID + n.Content, err = proto.Marshal(&tips) + if err != nil { + log.Error(operationID, "Marshal failed ", err.Error(), tips.String()) + return + } + Notification(&n) +} diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index c84549f6c..141c072ec 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -246,6 +246,21 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } case constant.MemberQuitNotification: addUidList = append(addUidList, pb.MsgData.SendID) + case constant.AtText: + //tagMe := utils.IsContain(c.loginUserID, s.AtElem.AtUserList) + //tagAll := utils.IsContain(constant.AtAllString, pb.MsgData.AtUserIDList) + //if tagAll { + // if tagMe { + // lc.GroupAtType = constant.AtAllAtMe + // return + // } + // lc.GroupAtType = constant.AtAll + // return + //} + //if tagMe { + // lc.GroupAtType = constant.AtMe + //} + default: } groupID := pb.MsgData.GroupID @@ -562,6 +577,38 @@ func Notification(n *NotificationMsg) { ex = config.Config.Notification.GroupMemberCancelMuted.OfflinePush.Ext reliabilityLevel = config.Config.Notification.GroupMemberCancelMuted.Conversation.ReliabilityLevel unReadCount = config.Config.Notification.GroupMemberCancelMuted.Conversation.UnreadCount + + case constant.GroupMemberInfoSetNotification: + pushSwitch = config.Config.Notification.GroupMemberInfoSet.OfflinePush.PushSwitch + title = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Title + desc = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Desc + ex = config.Config.Notification.GroupMemberInfoSet.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.GroupMemberInfoSet.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.GroupMemberInfoSet.Conversation.UnreadCount + + case constant.OrganizationChangedNotification: + pushSwitch = config.Config.Notification.OrganizationChanged.OfflinePush.PushSwitch + title = config.Config.Notification.OrganizationChanged.OfflinePush.Title + desc = config.Config.Notification.OrganizationChanged.OfflinePush.Desc + ex = config.Config.Notification.OrganizationChanged.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.OrganizationChanged.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.OrganizationChanged.Conversation.UnreadCount + + case constant.WorkMomentNotification: + pushSwitch = config.Config.Notification.WorkMomentsNotification.OfflinePush.PushSwitch + title = config.Config.Notification.WorkMomentsNotification.OfflinePush.Title + desc = config.Config.Notification.WorkMomentsNotification.OfflinePush.Desc + ex = config.Config.Notification.WorkMomentsNotification.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.WorkMomentsNotification.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.WorkMomentsNotification.Conversation.UnreadCount + + case constant.ConversationPrivateChatNotification: + pushSwitch = config.Config.Notification.ConversationSetPrivate.OfflinePush.PushSwitch + title = config.Config.Notification.ConversationSetPrivate.OfflinePush.Title + desc = config.Config.Notification.ConversationSetPrivate.OfflinePush.Desc + ex = config.Config.Notification.ConversationSetPrivate.OfflinePush.Ext + reliabilityLevel = config.Config.Notification.ConversationSetPrivate.Conversation.ReliabilityLevel + unReadCount = config.Config.Notification.ConversationSetPrivate.Conversation.UnreadCount } switch reliabilityLevel { case constant.UnreliableNotification: diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go new file mode 100644 index 000000000..af333a354 --- /dev/null +++ b/internal/rpc/msg/work_moments_notification.go @@ -0,0 +1,45 @@ +package msg + +import ( + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" + pbOffice "Open_IM/pkg/proto/office" + sdk "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" +) + +func WorkMomentSendNotification(operationID, sendID, recvID string, notificationMsg *pbOffice.WorkMomentNotificationMsg) { + log.NewInfo(operationID, utils.GetSelfFuncName(), sendID, recvID, notificationMsg) + //if sendID == recvID { + // return + //} + WorkMomentNotification(operationID, sendID, recvID, notificationMsg) +} + +func WorkMomentNotification(operationID, sendID, recvID string, m proto.Message) { + var tips sdk.TipsComm + var err error + marshaler := jsonpb.Marshaler{ + OrigName: true, + EnumsAsInts: false, + EmitDefaults: false, + } + tips.JsonDetail, _ = marshaler.MarshalToString(m) + n := &NotificationMsg{ + SendID: sendID, + RecvID: recvID, + MsgFrom: constant.UserMsgType, + ContentType: constant.WorkMomentNotification, + SessionType: constant.SingleChatType, + OperationID: operationID, + } + n.Content, err = proto.Marshal(&tips) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "proto.Marshal failed") + return + } + log.NewInfo(operationID, utils.GetSelfFuncName(), string(n.Content)) + Notification(n) +} diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 43e757497..ea4095f04 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -266,3 +266,283 @@ func (s *officeServer) GetUserTagByID(_ context.Context, req *pbOffice.GetUserTa log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } + +func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.CreateOneWorkMomentReq) (resp *pbOffice.CreateOneWorkMomentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.CreateOneWorkMomentResp{CommonResp: &pbOffice.CommonResp{}} + workMoment := db.WorkMoment{ + Comments: []*db.Comment{}, + LikeUserList: []*db.LikeUser{}, + } + createUser, err := imdb.GetUserByUserID(req.WorkMoment.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserByUserID", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + if err := utils.CopyStructFields(&workMoment, req.WorkMoment); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + workMoment.UserName = createUser.Nickname + workMoment.FaceURL = createUser.FaceURL + workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupList, req.WorkMoment.PermissionUserList) + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment to create", workMoment) + err = db.DB.CreateOneWorkMoment(&workMoment) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CreateOneWorkMoment", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + + // send notification to at users + for _, atUser := range req.WorkMoment.AtUserList { + workMomentNotificationMsg := &pbOffice.WorkMomentNotificationMsg{ + NotificationMsgType: constant.WorkMomentAtUserNotification, + WorkMomentID: workMoment.WorkMomentID, + WorkMomentContent: workMoment.Content, + UserID: workMoment.UserID, + FaceURL: createUser.FaceURL, + UserName: createUser.Nickname, + } + msg.WorkMomentSendNotification(req.OperationID, workMoment.UserID, atUser.UserID, workMomentNotificationMsg) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +// count and distinct permission users +func (s *officeServer) getPermissionUserIDList(operationID string, groupList []*pbOffice.PermissionGroup, userList []*pbOffice.WorkMomentUser) []string { + var permissionUserIDList []string + for _, group := range groupList { + GroupMemberIDList, err := imdb.GetGroupMemberIDListByGroupID(group.GroupID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID failed", group, err.Error()) + continue + } + permissionUserIDList = append(permissionUserIDList, GroupMemberIDList...) + } + var userIDList []string + for _, user := range userList { + userIDList = append(userIDList, user.UserID) + } + permissionUserIDList = append(permissionUserIDList, userIDList...) + permissionUserIDList = utils.RemoveRepeatedStringInList(permissionUserIDList) + return permissionUserIDList +} + +func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.DeleteOneWorkMomentReq) (resp *pbOffice.DeleteOneWorkMomentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.DeleteOneWorkMomentResp{CommonResp: &pbOffice.CommonResp{}} + workMoment, err := db.DB.GetWorkMomentByID(req.WorkMomentID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetWorkMomentByID failed", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment", workMoment) + if workMoment.UserID != req.UserID { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoment.UserID != req.WorkMomentID, delete failed", workMoment, req.WorkMomentID) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg} + return resp, nil + } + err = db.DB.DeleteOneWorkMoment(req.WorkMomentID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DeleteOneWorkMoment", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func isUserCanSeeWorkMoment(userID string, workMoment db.WorkMoment) bool { + if userID != workMoment.UserID { + switch workMoment.Permission { + case constant.WorkMomentPublic: + return true + case constant.WorkMomentPrivate: + return false + case constant.WorkMomentPermissionCanSee: + return utils.IsContain(userID, workMoment.PermissionUserIDList) + case constant.WorkMomentPermissionCantSee: + return !utils.IsContain(userID, workMoment.PermissionUserIDList) + } + return false + } + return true +} + +func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOneWorkMomentReq) (resp *pbOffice.LikeOneWorkMomentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.LikeOneWorkMomentResp{CommonResp: &pbOffice.CommonResp{}} + userName, err := imdb.GetUserNameByUserID(req.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + workMoment, like, err := db.DB.LikeOneWorkMoment(req.UserID, userName, req.WorkMomentID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "LikeOneWorkMoment failed ", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + workMomentNotificationMsg := &pbOffice.WorkMomentNotificationMsg{ + NotificationMsgType: constant.WorkMomentLikeNotification, + WorkMomentID: workMoment.WorkMomentID, + WorkMomentContent: workMoment.Content, + UserID: workMoment.UserID, + FaceURL: workMoment.FaceURL, + UserName: workMoment.UserName, + } + // send notification + if like { + msg.WorkMomentSendNotification(req.OperationID, req.UserID, workMoment.UserID, workMomentNotificationMsg) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.CommentOneWorkMomentReq) (resp *pbOffice.CommentOneWorkMomentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.CommentOneWorkMomentResp{CommonResp: &pbOffice.CommonResp{}} + commentUser, err := imdb.GetUserByUserID(req.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID commentUserName failed", req.UserID, err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + var replyUserName string + if req.ReplyUserID != "" { + replyUserName, err = imdb.GetUserNameByUserID(req.ReplyUserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID get replyUserName failed", req.ReplyUserID, err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + } + comment := &db.Comment{ + UserID: req.UserID, + UserName: commentUser.Nickname, + ReplyUserID: req.ReplyUserID, + ReplyUserName: replyUserName, + Content: req.Content, + CreateTime: int32(time.Now().Unix()), + } + workMoment, err := db.DB.CommentOneWorkMoment(comment, req.WorkMomentID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CommentOneWorkMoment failed", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + workMomentNotificationMsg := &pbOffice.WorkMomentNotificationMsg{ + NotificationMsgType: constant.WorkMomentCommentNotification, + WorkMomentID: workMoment.WorkMomentID, + WorkMomentContent: workMoment.Content, + UserID: workMoment.UserID, + FaceURL: workMoment.FaceURL, + UserName: workMoment.UserName, + Comment: &pbOffice.Comment{ + UserID: comment.UserID, + UserName: comment.UserName, + FaceURL: commentUser.FaceURL, + ReplyUserID: comment.ReplyUserID, + ReplyUserName: comment.ReplyUserName, + ContentID: comment.ContentID, + Content: comment.Content, + CreateTime: comment.CreateTime, + }, + } + msg.WorkMomentSendNotification(req.OperationID, req.UserID, workMoment.UserID, workMomentNotificationMsg) + if req.ReplyUserID != "" { + msg.WorkMomentSendNotification(req.OperationID, req.UserID, req.ReplyUserID, workMomentNotificationMsg) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWorkMomentByIDReq) (resp *pbOffice.GetWorkMomentByIDResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.GetWorkMomentByIDResp{ + WorkMoment: &pbOffice.WorkMoment{}, + CommonResp: &pbOffice.CommonResp{}, + } + workMoment, err := db.DB.GetWorkMomentByID(req.WorkMomentID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetWorkMomentByID failed", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + canSee := isUserCanSeeWorkMoment(req.OpUserID, *workMoment) + log.Debug(req.OperationID, utils.GetSelfFuncName(), canSee, req.OpUserID, *workMoment) + if !canSee { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoments not access to user", canSee, workMoment, req.OpUserID) + } + if err := utils.CopyStructFields(resp.WorkMoment, workMoment); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUserWorkMomentsReq) (resp *pbOffice.GetUserWorkMomentsResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.GetUserWorkMomentsResp{CommonResp: &pbOffice.CommonResp{}, WorkMoments: []*pbOffice.WorkMoment{}} + //resp.WorkMoments = make([]*pbOffice.WorkMoment, 0) + workMoments, err := db.DB.GetUserWorkMoments(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + if err := utils.CopyStructFields(&resp.WorkMoments, workMoments); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + resp.Pagination = &pbCommon.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice.GetUserFriendWorkMomentsReq) (resp *pbOffice.GetUserFriendWorkMomentsResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.GetUserFriendWorkMomentsResp{CommonResp: &pbOffice.CommonResp{}, WorkMoments: []*pbOffice.WorkMoment{}} + //resp.WorkMoments = make([]*pbOffice.WorkMoment, 0) + friendIDList, err := imdb.GetFriendIDListByUserID(req.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetFriendIDListByUserID", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "friendIDList: ", friendIDList) + workMoments, err := db.DB.GetUserFriendWorkMoments(friendIDList, req.Pagination.ShowNumber, req.Pagination.PageNumber, req.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserFriendWorkMoments", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + if err := utils.CopyStructFields(&resp.WorkMoments, workMoments); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + resp.Pagination = &pbCommon.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) SetUserWorkMomentsLevel(_ context.Context, req *pbOffice.SetUserWorkMomentsLevelReq) (resp *pbOffice.SetUserWorkMomentsLevelResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.SetUserWorkMomentsLevelResp{CommonResp: &pbOffice.CommonResp{}} + if err := db.DB.SetUserWorkMomentsLevel(req.UserID, req.Level); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetUserWorkMomentsLevel failed", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) ChangeWorkMomentPermission(_ context.Context, req *pbOffice.ChangeWorkMomentPermissionReq) (resp *pbOffice.ChangeWorkMomentPermissionResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.ChangeWorkMomentPermissionResp{CommonResp: &pbOffice.CommonResp{}} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go new file mode 100644 index 000000000..d9f503d69 --- /dev/null +++ b/internal/rpc/organization/organization.go @@ -0,0 +1,429 @@ +package organization + +import ( + chat "Open_IM/internal/rpc/msg" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/db" + imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" + "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + "Open_IM/pkg/proto/auth" + rpc "Open_IM/pkg/proto/organization" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "google.golang.org/grpc" + "net" + "strconv" + "strings" + "time" +) + +type organizationServer struct { + rpcPort int + rpcRegisterName string + etcdSchema string + etcdAddr []string +} + +func NewServer(port int) *organizationServer { + log.NewPrivateLog(constant.LogFileName) + return &organizationServer{ + rpcPort: port, + rpcRegisterName: config.Config.RpcRegisterName.OpenImOrganizationName, + etcdSchema: config.Config.Etcd.EtcdSchema, + etcdAddr: config.Config.Etcd.EtcdAddr, + } +} + +func (s *organizationServer) Run() { + log.NewInfo("", "organization rpc start ") + ip := utils.ServerIP + registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + //listener network + listener, err := net.Listen("tcp", registerAddress) + if err != nil { + log.NewError("", "Listen failed ", err.Error(), registerAddress) + return + } + log.NewInfo("", "listen network success, ", registerAddress, listener) + defer listener.Close() + //grpc server + srv := grpc.NewServer() + defer srv.GracefulStop() + //Service registers with etcd + rpc.RegisterOrganizationServer(srv, s) + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + if err != nil { + log.NewError("", "RegisterEtcd failed ", err.Error()) + return + } + log.NewInfo("", "organization rpc RegisterEtcd success", ip, s.rpcPort, s.rpcRegisterName, 10) + err = srv.Serve(listener) + if err != nil { + log.NewError("", "Serve failed ", err.Error()) + return + } + log.NewInfo("", "organization rpc success") +} + +func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.CreateDepartmentReq) (*rpc.CreateDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.CreateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + + department := db.Department{} + utils.CopyStructFields(&department, req.DepartmentInfo) + if department.DepartmentID == "" { + department.DepartmentID = utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) + } + log.Debug(req.OperationID, "dst ", department, "src ", req.DepartmentInfo) + if err := imdb.CreateDepartment(&department); err != nil { + errMsg := req.OperationID + " " + "CreateDepartment failed " + err.Error() + log.Error(req.OperationID, errMsg) + return &rpc.CreateDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + err, createdDepartment := imdb.GetDepartment(department.DepartmentID) + if err != nil { + errMsg := req.OperationID + " " + "GetDepartment failed " + err.Error() + department.DepartmentID + log.Error(req.OperationID, errMsg) + return &rpc.CreateDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "GetDepartment ", department.DepartmentID, *createdDepartment) + resp := &rpc.CreateDepartmentResp{DepartmentInfo: &open_im_sdk.Department{}} + utils.CopyStructFields(resp.DepartmentInfo, createdDepartment) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) UpdateDepartment(ctx context.Context, req *rpc.UpdateDepartmentReq) (*rpc.UpdateDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.UpdateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + + department := db.Department{} + utils.CopyStructFields(&department, req.DepartmentInfo) + + log.Debug(req.OperationID, "dst ", department, "src ", req.DepartmentInfo) + if err := imdb.UpdateDepartment(&department, nil); err != nil { + errMsg := req.OperationID + " " + "UpdateDepartment failed " + err.Error() + log.Error(req.OperationID, errMsg) + return &rpc.UpdateDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + + resp := &rpc.UpdateDepartmentResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) GetSubDepartment(ctx context.Context, req *rpc.GetSubDepartmentReq) (*rpc.GetSubDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + err, departmentList := imdb.GetSubDepartmentList(req.DepartmentID) + if err != nil { + errMsg := req.OperationID + " " + "GetDepartment failed " + err.Error() + log.Error(req.OperationID, errMsg) + return &rpc.GetSubDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "GetSubDepartmentList ", req.DepartmentID, departmentList) + resp := &rpc.GetSubDepartmentResp{} + for _, v := range departmentList { + v1 := open_im_sdk.Department{} + utils.CopyStructFields(&v1, v) + log.Debug(req.OperationID, "src ", v, "dst ", v1) + err, v1.MemberNum = imdb.GetDepartmentMemberNum(v1.DepartmentID) + if err != nil { + log.Error(req.OperationID, "GetDepartmentMemberNum failed ", err.Error(), v1.DepartmentID) + continue + } + err, v1.SubDepartmentNum = imdb.GetSubDepartmentNum(v1.DepartmentID) + if err != nil { + log.Error(req.OperationID, "GetSubDepartmentNum failed ", err.Error(), v1.DepartmentID) + continue + } + resp.DepartmentList = append(resp.DepartmentList, &v1) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + return resp, nil +} + +func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.DeleteDepartmentReq) (*rpc.DeleteDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.DeleteDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + err := imdb.DeleteDepartment(req.DepartmentID) + if err != nil { + errMsg := req.OperationID + " " + "DeleteDepartment failed " + err.Error() + log.Error(req.OperationID, errMsg, req.DepartmentID) + return &rpc.DeleteDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "DeleteDepartment ", req.DepartmentID) + resp := &rpc.DeleteDepartmentResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rpc.CreateOrganizationUserReq) (*rpc.CreateOrganizationUserResp, error) { + authReq := &pbAuth.UserRegisterReq{UserInfo: &open_im_sdk.UserInfo{}} + utils.CopyStructFields(authReq.UserInfo, req.OrganizationUser) + authReq.OperationID = req.OperationID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) + client := pbAuth.NewAuthClient(etcdConn) + + reply, err := client.UserRegister(context.Background(), authReq) + if err != nil { + errMsg := "UserRegister failed " + err.Error() + log.NewError(req.OperationID, errMsg) + return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + if reply.CommonResp.ErrCode != 0 { + errMsg := "UserRegister failed " + reply.CommonResp.ErrMsg + log.NewError(req.OperationID, errMsg) + return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + organizationUser := db.OrganizationUser{} + utils.CopyStructFields(&organizationUser, req.OrganizationUser) + organizationUser.Birth = utils.UnixSecondToTime(int64(req.OrganizationUser.Birth)) + log.Debug(req.OperationID, "src ", *req.OrganizationUser, "dst ", organizationUser) + err = imdb.CreateOrganizationUser(&organizationUser) + if err != nil { + errMsg := req.OperationID + " " + "CreateOrganizationUser failed " + err.Error() + log.Error(req.OperationID, errMsg, organizationUser) + return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "CreateOrganizationUser ", organizationUser) + resp := &rpc.CreateOrganizationUserResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rpc.UpdateOrganizationUserReq) (*rpc.UpdateOrganizationUserResp, error) { + authReq := &pbAuth.UserRegisterReq{UserInfo: &open_im_sdk.UserInfo{}} + utils.CopyStructFields(authReq.UserInfo, req.OrganizationUser) + authReq.OperationID = req.OperationID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) + client := pbAuth.NewAuthClient(etcdConn) + + reply, err := client.UserRegister(context.Background(), authReq) + if err != nil { + errMsg := "UserRegister failed " + err.Error() + log.NewError(req.OperationID, errMsg) + return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + if reply.CommonResp.ErrCode != 0 { + errMsg := "UserRegister failed " + reply.CommonResp.ErrMsg + log.NewError(req.OperationID, errMsg) + return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + organizationUser := db.OrganizationUser{} + utils.CopyStructFields(&organizationUser, req.OrganizationUser) + if req.OrganizationUser.Birth != 0 { + organizationUser.Birth = utils.UnixSecondToTime(int64(req.OrganizationUser.Birth)) + log.Debug(req.OperationID, "time: ", organizationUser.Birth, req.OrganizationUser.Birth) + } + + log.Debug(req.OperationID, "src ", *req.OrganizationUser, "dst ", organizationUser) + err = imdb.UpdateOrganizationUser(&organizationUser, nil) + if err != nil { + errMsg := req.OperationID + " " + "CreateOrganizationUser failed " + err.Error() + log.Error(req.OperationID, errMsg, organizationUser) + return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "UpdateOrganizationUser ", organizationUser) + resp := &rpc.UpdateOrganizationUserResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rpc.CreateDepartmentMemberReq) (*rpc.CreateDepartmentMemberResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + + err, _ := imdb.GetOrganizationUser(req.DepartmentMember.UserID) + if err != nil { + errMsg := req.OperationID + " " + req.DepartmentMember.UserID + " is not exist" + log.Error(req.OperationID, errMsg) + return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + + departmentMember := db.DepartmentMember{} + utils.CopyStructFields(&departmentMember, req.DepartmentMember) + log.Debug(req.OperationID, "src ", *req.DepartmentMember, "dst ", departmentMember) + err = imdb.CreateDepartmentMember(&departmentMember) + if err != nil { + errMsg := req.OperationID + " " + "CreateDepartmentMember failed " + err.Error() + log.Error(req.OperationID, errMsg, departmentMember) + return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "UpdateOrganizationUser ", departmentMember) + + resp := &rpc.CreateDepartmentMemberResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) GetUserInDepartmentByUserID(userID string, operationID string) (*open_im_sdk.UserInDepartment, error) { + err, organizationUser := imdb.GetOrganizationUser(userID) + if err != nil { + return nil, utils.Wrap(err, "GetOrganizationUser failed") + } + err, departmentMemberList := imdb.GetUserInDepartment(userID) + if err != nil { + return nil, utils.Wrap(err, "GetUserInDepartment failed") + } + log.Debug(operationID, "GetUserInDepartment ", departmentMemberList) + resp := &open_im_sdk.UserInDepartment{OrganizationUser: &open_im_sdk.OrganizationUser{}} + utils.CopyStructFields(resp.OrganizationUser, organizationUser) + for _, v := range departmentMemberList { + v1 := open_im_sdk.DepartmentMember{} + utils.CopyStructFields(&v1, v) + log.Debug(operationID, "DepartmentMember src ", v, "dst ", v1) + resp.DepartmentMemberList = append(resp.DepartmentMemberList, &v1) + } + return resp, nil +} + +func (s *organizationServer) GetUserInDepartment(ctx context.Context, req *rpc.GetUserInDepartmentReq) (*rpc.GetUserInDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + r, err := s.GetUserInDepartmentByUserID(req.UserID, req.OperationID) + if err != nil { + errMsg := req.OperationID + " " + "GetUserInDepartmentByUserID failed " + err.Error() + log.Error(req.OperationID, errMsg, req.UserID) + return &rpc.GetUserInDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", req.UserID, r) + resp := rpc.GetUserInDepartmentResp{UserInDepartment: &open_im_sdk.UserInDepartment{OrganizationUser: &open_im_sdk.OrganizationUser{}}} + resp.UserInDepartment.DepartmentMemberList = r.DepartmentMemberList + resp.UserInDepartment.OrganizationUser = r.OrganizationUser + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp) + return &resp, nil +} + +func (s *organizationServer) UpdateUserInDepartment(ctx context.Context, req *rpc.UpdateUserInDepartmentReq) (*rpc.UpdateUserInDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.UpdateUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + departmentMember := &db.DepartmentMember{} + utils.CopyStructFields(departmentMember, req.DepartmentMember) + log.Debug(req.OperationID, "dst ", departmentMember, "src ", req.DepartmentMember) + err := imdb.UpdateUserInDepartment(departmentMember, nil) + if err != nil { + errMsg := req.OperationID + " " + "UpdateUserInDepartment failed " + err.Error() + log.Error(req.OperationID, errMsg, *departmentMember) + return &rpc.UpdateUserInDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + resp := &rpc.UpdateUserInDepartmentResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) DeleteUserInDepartment(ctx context.Context, req *rpc.DeleteUserInDepartmentReq) (*rpc.DeleteUserInDepartmentResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.DeleteUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + + err := imdb.DeleteUserInDepartment(req.DepartmentID, req.UserID) + if err != nil { + errMsg := req.OperationID + " " + "DeleteUserInDepartment failed " + err.Error() + log.Error(req.OperationID, errMsg, req.DepartmentID, req.UserID) + return &rpc.DeleteUserInDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "DeleteUserInDepartment success ", req.DepartmentID, req.UserID) + resp := &rpc.DeleteUserInDepartmentResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rpc.DeleteOrganizationUserReq) (*rpc.DeleteOrganizationUserResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + if !token_verify.IsManagerUserID(req.OpUserID) { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.DeleteOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + err := imdb.DeleteOrganizationUser(req.UserID) + if err != nil { + errMsg := req.OperationID + " " + "DeleteOrganizationUser failed " + err.Error() + log.Error(req.OperationID, errMsg, req.UserID) + return &rpc.DeleteOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + log.Debug(req.OperationID, "DeleteOrganizationUser success ", req.UserID) + resp := &rpc.DeleteOrganizationUserResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + return resp, nil +} + +func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.GetDepartmentMemberReq) (*rpc.GetDepartmentMemberResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + err, departmentMemberList := imdb.GetDepartmentMemberList(req.DepartmentID) + if err != nil { + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" + log.Error(req.OperationID, errMsg) + return &rpc.GetDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil + } + + log.Debug(req.OperationID, "GetDepartmentMemberList ", departmentMemberList) + resp := rpc.GetDepartmentMemberResp{} + for _, v := range departmentMemberList { + err, organizationUser := imdb.GetOrganizationUser(v.UserID) + if err != nil { + log.Error(req.OperationID, "GetOrganizationUser failed ", err.Error()) + continue + } + respOrganizationUser := &open_im_sdk.OrganizationUser{} + respDepartmentMember := &open_im_sdk.DepartmentMember{} + + utils.CopyStructFields(respOrganizationUser, organizationUser) + utils.CopyStructFields(respDepartmentMember, &v) + userDepartmentMember := open_im_sdk.UserDepartmentMember{OrganizationUser: respOrganizationUser, DepartmentMember: respDepartmentMember} + + log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", userDepartmentMember) + resp.UserDepartmentMemberList = append(resp.UserDepartmentMemberList, &userDepartmentMember) + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp) + return &resp, nil +} diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 8e57ba2bf..23423bcd4 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -75,7 +75,7 @@ func (s *userServer) Run() { func syncPeerUserConversation(conversation *pbUser.Conversation, operationID string) error { peerUserConversation := db.Conversation{ OwnerUserID: conversation.UserID, - ConversationID: "single_" + conversation.OwnerUserID, + ConversationID: utils.GetConversationIDBySessionType(conversation.OwnerUserID, constant.SingleChatType), ConversationType: constant.SingleChatType, UserID: conversation.OwnerUserID, GroupID: "", @@ -129,6 +129,7 @@ func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.Batc if err := utils.CopyStructFields(&conversation, v); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), v.String(), "CopyStructFields failed", err.Error()) } + //redis op if err := db.DB.SetSingleConversationRecvMsgOpt(req.OwnerUserID, v.ConversationID, v.RecvMsgOpt); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error()) resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -206,10 +207,23 @@ func (s *userServer) GetConversations(ctx context.Context, req *pbUser.GetConver func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConversationReq) (*pbUser.SetConversationResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp := &pbUser.SetConversationResp{} if req.NotificationType == 0 { req.NotificationType = constant.ConversationOptChangeNotification } - resp := &pbUser.SetConversationResp{} + if req.Conversation.ConversationType == constant.GroupChatType { + groupInfo, err := imdb.GetGroupInfoByGroupID(req.Conversation.GroupID) + if err != nil { + log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.Conversation.GroupID, err.Error()) + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + if groupInfo.Status == constant.GroupStatusDismissed && !req.Conversation.IsNotInGroup { + errMsg := "group status is dismissed" + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg} + return resp, nil + } + } var conversation db.Conversation if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", *req.Conversation, err.Error()) @@ -278,8 +292,8 @@ func (s *userServer) SetRecvMsgOpt(ctx context.Context, req *pbUser.SetRecvMsgOp func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq) (*pbUser.DeleteUsersResp, error) { log.NewInfo(req.OperationID, "DeleteUsers args ", req.String()) - if !token_verify.IsMangerUserID(req.OpUserID) { - log.NewError(req.OperationID, "IsMangerUserID false ", req.OpUserID) + if !token_verify.IsManagerUserID(req.OpUserID) { + log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID) return &pbUser.DeleteUsersResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, FailedUserIDList: req.DeleteUserIDList}, nil } var common pbUser.CommonResp @@ -299,8 +313,8 @@ func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq) func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq) (*pbUser.GetAllUserIDResp, error) { log.NewInfo(req.OperationID, "GetAllUserID args ", req.String()) - if !token_verify.IsMangerUserID(req.OpUserID) { - log.NewError(req.OperationID, "IsMangerUserID false ", req.OpUserID) + if !token_verify.IsManagerUserID(req.OpUserID) { + log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID) return &pbUser.GetAllUserIDResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } uidList, err := imdb.SelectAllUserID() @@ -315,8 +329,8 @@ func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq func (s *userServer) AccountCheck(_ context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) { log.NewInfo(req.OperationID, "AccountCheck args ", req.String()) - if !token_verify.IsMangerUserID(req.OpUserID) { - log.NewError(req.OperationID, "IsMangerUserID false ", req.OpUserID) + if !token_verify.IsManagerUserID(req.OpUserID) { + log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID) return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } uidList, err := imdb.SelectSomeUserID(req.CheckUserIDList) diff --git a/pkg/base_info/conversation_api_struct.go b/pkg/base_info/conversation_api_struct.go index 10b46f547..5e9d021f6 100644 --- a/pkg/base_info/conversation_api_struct.go +++ b/pkg/base_info/conversation_api_struct.go @@ -43,6 +43,8 @@ type Conversation struct { DraftTextTime int64 `json:"draftTextTime"` IsPinned bool `json:"isPinned" binding:"omitempty"` IsPrivateChat bool `json:"isPrivateChat"` + GroupAtType int32 `json:"groupAtType"` + IsNotInGroup bool `json:"isNotInGroup"` AttachedInfo string `json:"attachedInfo"` Ex string `json:"ex"` } diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 47b6a6c67..94a152818 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -220,3 +220,14 @@ type CancelMuteGroupReq struct { type CancelMuteGroupResp struct { CommResp } + +type SetGroupMemberNicknameReq struct { + OperationID string `json:"operationID" binding:"required"` + GroupID string `json:"groupID" binding:"required"` + UserID string `json:"userID" binding:"required"` + Nickname string `json:"nickname"` +} + +type SetGroupMemberNicknameResp struct { + CommResp +} diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go new file mode 100644 index 000000000..31a9c038b --- /dev/null +++ b/pkg/base_info/organization_api_struct.go @@ -0,0 +1,110 @@ +package base_info + +import open_im_sdk "Open_IM/pkg/proto/sdk_ws" + +type CreateDepartmentReq struct { + *open_im_sdk.Department + OperationID string `json:"operationID" binding:"required"` +} +type CreateDepartmentResp struct { + CommResp + Department *open_im_sdk.Department `json:"-"` + Data map[string]interface{} `json:"data"` +} + +type UpdateDepartmentReq struct { + *open_im_sdk.Department + DepartmentID string `json:"departmentID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` +} +type UpdateDepartmentResp struct { + CommResp +} + +type GetSubDepartmentReq struct { + OperationID string `json:"operationID" binding:"required"` + DepartmentID string `json:"departmentID" binding:"required"` +} +type GetSubDepartmentResp struct { + CommResp + DepartmentList []*open_im_sdk.Department `json:"-"` + Data []map[string]interface{} `json:"data"` +} + +type DeleteDepartmentReq struct { + OperationID string `json:"operationID" binding:"required"` + DepartmentID string `json:"departmentID" binding:"required"` +} +type DeleteDepartmentResp struct { + CommResp +} + +type CreateOrganizationUserReq struct { + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.OrganizationUser +} +type CreateOrganizationUserResp struct { + CommResp +} + +type UpdateOrganizationUserReq struct { + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.OrganizationUser +} +type UpdateOrganizationUserResp struct { + CommResp +} + +type CreateDepartmentMemberReq struct { + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.DepartmentMember +} + +type CreateDepartmentMemberResp struct { + CommResp +} + +type GetUserInDepartmentReq struct { + UserID string `json:"userID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` +} +type GetUserInDepartmentResp struct { + CommResp + UserInDepartment *open_im_sdk.UserInDepartment `json:"-"` + Data map[string]interface{} `json:"data"` +} + +type UpdateUserInDepartmentReq struct { + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.DepartmentMember +} +type UpdateUserInDepartmentResp struct { + CommResp +} + +type DeleteOrganizationUserReq struct { + UserID string `json:"userID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` +} +type DeleteOrganizationUserResp struct { + CommResp +} + +type GetDepartmentMemberReq struct { + DepartmentID string `json:"departmentID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` +} +type GetDepartmentMemberResp struct { + CommResp + UserInDepartmentList []*open_im_sdk.UserDepartmentMember `json:"-"` + Data []map[string]interface{} `json:"data"` +} + +type DeleteUserInDepartmentReq struct { + DepartmentID string `json:"departmentID" binding:"required"` + UserID string `json:"userID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` +} +type DeleteUserInDepartmentResp struct { + CommResp +} diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go new file mode 100644 index 000000000..ecc80f834 --- /dev/null +++ b/pkg/base_info/work_moments_struct.go @@ -0,0 +1,116 @@ +package base_info + +import "Open_IM/pkg/proto/office" + +type CreateOneWorkMomentReq struct { + office.CreateOneWorkMomentReq +} + +type CreateOneWorkMomentResp struct { + CommResp +} + +type DeleteOneWorkMomentReq struct { + office.DeleteOneWorkMomentReq +} + +type DeleteOneWorkMomentResp struct { + CommResp +} + +type LikeOneWorkMomentReq struct { + office.LikeOneWorkMomentReq +} + +type LikeOneWorkMomentResp struct { + CommResp +} + +type CommentOneWorkMomentReq struct { + office.CommentOneWorkMomentReq +} + +type CommentOneWorkMomentResp struct { + CommResp +} + +type WorkMomentsUserCommonReq struct { + PageNumber int32 `json:"pageNumber" binding:"required"` + ShowNumber int32 `json:"showNumber" binding:"required"` + OperationID string `json:"operationID" binding:"required"` +} + +type GetWorkMomentByIDReq struct { + office.GetWorkMomentByIDReq +} + +type WorkMoment struct { + WorkMomentID string `json:"workMomentID"` + UserID string `json:"userID"` + Content string `json:"content"` + LikeUserList []*WorkMomentUser `json:"likeUsers"` + Comments []*Comment `json:"comments"` + FaceURL string `json:"faceUrl"` + UserName string `json:"userName"` + //Permission int32 `json:"permission"` + //PermissionUserIDList []string `json:"permissionUserIDList"` + //PermissionGroupIDList []string `json:"permissionGroupIDList"` + AtUserList []*WorkMomentUser `json:"atUsers"` + CreateTime int32 `json:"createTime"` +} + +type WorkMomentUser struct { + UserID string `json:"userID"` + UserName string `json:"userName"` +} + +type Comment struct { + UserID string `json:"userID"` + UserName string `json:"userName"` + ReplyUserID string `json:"replyUserID"` + ReplyUserName string `json:"replyUserName"` + ContentID string `json:"contentID"` + Content string `json:"content"` + CreateTime int32 `json:"createTime"` +} + +type GetWorkMomentByIDResp struct { + CommResp + Data struct { + WorkMoment *WorkMoment `json:"workMoment"` + } `json:"data"` +} + +type GetUserWorkMomentsReq struct { + WorkMomentsUserCommonReq +} + +type GetUserWorkMomentsResp struct { + CommResp + Data struct { + WorkMoments []*WorkMoment `json:"workMoments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` + } `json:"data"` +} + +type GetUserFriendWorkMomentsReq struct { + WorkMomentsUserCommonReq +} + +type GetUserFriendWorkMomentsResp struct { + CommResp + Data struct { + WorkMoments []*WorkMoment `json:"workMoments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` + } `json:"data"` +} + +type SetUserWorkMomentsLevelReq struct { + office.SetUserWorkMomentsLevelReq +} + +type SetUserWorkMomentsLevelResp struct { + CommResp +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index b497ee268..aed2c1173 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -56,11 +56,13 @@ type config struct { OssRoleArn string `yaml:"OssRoleArn"` } Minio struct { - Bucket string `yaml:"bucket"` - Location string `yaml:"location"` - Endpoint string `yaml:"endpoint"` - AccessKeyID string `yaml:"accessKeyID"` - SecretAccessKey string `yaml:"secretAccessKey"` + Bucket string `yaml:"bucket"` + Location string `yaml:"location"` + Endpoint string `yaml:"endpoint"` + AccessKeyID string `yaml:"accessKeyID"` + SecretAccessKey string `yaml:"secretAccessKey"` + EndpointInner string `yaml:"endpointInner"` + EndpointInnerEnable bool `yaml:"endpointInnerEnable"` } `yaml:"minio"` } @@ -115,6 +117,7 @@ type config struct { OpenImMessageCMSName string `yaml:"openImMessageCMSName"` OpenImAdminCMSName string `yaml:"openImAdminCMSName"` OpenImOfficeName string `yaml:"openImOfficeName"` + OpenImOrganizationName string `yaml:"openImOrganizationName"` } Etcd struct { EtcdSchema string `yaml:"etcdSchema"` @@ -173,6 +176,7 @@ type config struct { AppManagerUid []string `yaml:"appManagerUid"` Secrets []string `yaml:"secrets"` } + Kafka struct { Ws2mschat struct { Addr []string `yaml:"addr"` @@ -188,9 +192,11 @@ type config struct { MsgToPush string `yaml:"msgToPush"` } } - Secret string `yaml:"secret"` - MultiLoginPolicy int `yaml:"multiloginpolicy"` - TokenPolicy struct { + Secret string `yaml:"secret"` + MultiLoginPolicy int `yaml:"multiloginpolicy"` + ChatPersistenceMysql bool `yaml:"chatPersistenceMysql"` + + TokenPolicy struct { AccessSecret string `yaml:"accessSecret"` AccessExpire int64 `yaml:"accessExpire"` } @@ -301,6 +307,16 @@ type config struct { OfflinePush POfflinePush `yaml:"offlinePush"` DefaultTips PDefaultTips `yaml:"defaultTips"` } `yaml:"groupMemberCancelMuted"` + GroupMemberInfoSet struct { + Conversation PConversation `yaml:"conversation"` + OfflinePush POfflinePush `yaml:"offlinePush"` + DefaultTips PDefaultTips `yaml:"defaultTips"` + } `yaml:"groupMemberInfoSet"` + OrganizationChanged struct { + Conversation PConversation `yaml:"conversation"` + OfflinePush POfflinePush `yaml:"offlinePush"` + DefaultTips PDefaultTips `yaml:"defaultTips"` + } `yaml:"organizationChanged"` ////////////////////////user/////////////////////// UserInfoUpdated struct { @@ -366,6 +382,11 @@ type config struct { CloseTips string `yaml:"closeTips"` } `yaml:"defaultTips"` } `yaml:"conversationSetPrivate"` + WorkMomentsNotification struct { + Conversation PConversation `yaml:"conversation"` + OfflinePush POfflinePush `yaml:"offlinePush"` + DefaultTips PDefaultTips `yaml:"defaultTips"` + } `yaml:"workMomentsNotification"` } Demo struct { Port []int `yaml:"openImDemoPort"` diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index fdee4f2b7..87eae8d4b 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -81,6 +81,7 @@ const ( GroupMemberCancelMutedNotification = 1513 GroupMutedNotification = 1514 GroupCancelMutedNotification = 1515 + GroupMemberInfoSetNotification = 1516 SignalingNotificationBegin = 1600 SignalingNotification = 1601 @@ -88,6 +89,11 @@ const ( ConversationPrivateChatNotification = 1701 + OrganizationChangedNotification = 1801 + + WorkMomentNotificationBegin = 1900 + WorkMomentNotification = 1901 + NotificationEnd = 2000 //status @@ -177,6 +183,24 @@ const ( OtherType = 1 VideoType = 2 ImageType = 3 + + // workMoment permission + WorkMomentPublic = 0 + WorkMomentPrivate = 1 + WorkMomentPermissionCanSee = 2 + WorkMomentPermissionCantSee = 3 + + // workMoment sdk notification type + WorkMomentCommentNotification = 0 + WorkMomentLikeNotification = 1 + WorkMomentAtUserNotification = 2 +) +const ( + AtAllString = "AtAllTag" + AtNormal = 0 + AtMe = 1 + AtAll = 2 + AtAllAtMe = 3 ) var ContentType2PushContent = map[int64]string{ diff --git a/pkg/common/constant/error.go b/pkg/common/constant/error.go index 00a11fd49..c8aca5fe6 100644 --- a/pkg/common/constant/error.go +++ b/pkg/common/constant/error.go @@ -51,7 +51,8 @@ var ( ErrAccess = ErrInfo{ErrCode: 801, ErrMsg: AccessMsg.Error()} ErrDB = ErrInfo{ErrCode: 802, ErrMsg: DBMsg.Error()} - ErrArgs = ErrInfo{ErrCode: 8003, ErrMsg: ArgsMsg.Error()} + ErrArgs = ErrInfo{ErrCode: 803, ErrMsg: ArgsMsg.Error()} + ErrStatus = ErrInfo{ErrCode: 804, ErrMsg: StatusMsg.Error()} ErrCallback = ErrInfo{ErrCode: 809, ErrMsg: CallBackMsg.Error()} ) @@ -64,6 +65,7 @@ var ( TokenUnknownMsg = errors.New("couldn't handle this token") TokenUserKickedMsg = errors.New("user has been kicked") AccessMsg = errors.New("no permission") + StatusMsg = errors.New("status is abnormal") DBMsg = errors.New("db failed") ArgsMsg = errors.New("args failed") CallBackMsg = errors.New("callback failed") diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index f9550e7b3..3ffce9ddf 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -2,6 +2,8 @@ package db import ( "Open_IM/pkg/common/config" + "go.mongodb.org/mongo-driver/bson" + //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" @@ -34,7 +36,6 @@ func key(dbAddress, dbName string) string { func init() { //log.NewPrivateLog(constant.LogFileName) - //var mgoSession *mgo.Session var mongoClient *mongo.Client var err1 error //mysql init @@ -46,11 +47,15 @@ func init() { // example: mongodb://$user:$password@mongo1.mongo:27017,mongo2.mongo:27017,mongo3.mongo:27017/$DBDatabase/?replicaSet=rs0&readPreference=secondary&authSource=admin&maxPoolSize=$DBMaxPoolSize uri = config.Config.Mongo.DBUri } else { - uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d", - config.Config.Mongo.DBAddress[0], config.Config.Mongo.DBDatabase, - config.Config.Mongo.DBMaxPoolSize) + if config.Config.Mongo.DBPassword != "" && config.Config.Mongo.DBUserName != "" { + uri = fmt.Sprintf("mongodb://%s:%s@%s/%s?maxPoolSize=%d", config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, config.Config.Mongo.DBAddress[0], + config.Config.Mongo.DBDatabase, config.Config.Mongo.DBMaxPoolSize) + } else { + uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d", + config.Config.Mongo.DBAddress[0], config.Config.Mongo.DBDatabase, + config.Config.Mongo.DBMaxPoolSize) + } } - mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err != nil { fmt.Println(" mongo.Connect failed, try ", utils.GetSelfFuncName(), err.Error(), uri) @@ -61,39 +66,67 @@ func init() { panic(err1.Error()) } } - fmt.Println("0", utils.GetSelfFuncName(), "mongo driver client init success") + fmt.Println("0", utils.GetSelfFuncName(), "mongo driver client init success: ", uri) + // mongodb create index + opts := options.CreateIndexes().SetMaxTime(10 * time.Second) + dataBase := mongoClient.Database(config.Config.Mongo.DBDatabase) - DB.mongoClient = mongoClient + cCommentMsgModels := []mongo.IndexModel{ + { + Keys: bson.M{"create_time": -1, "user_id": -1}, + }, + } + result, err := dataBase.Collection(cCommentMsg).Indexes().CreateMany(context.Background(), cCommentMsgModels, opts) + if err != nil { + fmt.Println("mongodb create cCommentMsgModels failed", result, err.Error()) + } - //mgoDailInfo := &mgo.DialInfo{ - // Addrs: config.Config.Mongo.DBAddress, - // Direct: config.Config.Mongo.DBDirect, - // Timeout: time.Second * time.Duration(config.Config.Mongo.DBTimeout), - // Database: config.Config.Mongo.DBDatabase, - // Source: config.Config.Mongo.DBSource, - // Username: config.Config.Mongo.DBUserName, - // Password: config.Config.Mongo.DBPassword, - // PoolLimit: config.Config.Mongo.DBMaxPoolSize, - //} - //mgoSession, err = mgo.DialWithInfo(mgoDailInfo) - // - //if err != nil { - // - // mgoSession, err1 = mgo.DialWithInfo(mgoDailInfo) - // if err1 != nil { - // log.NewError(" mongo.Connect failed, panic", err.Error()) - // panic(err1.Error()) - // } - //} + cSendLogModels := []mongo.IndexModel{ + { + Keys: bson.M{"user_id": -1, "send_time": -1}, + }, + } + result, err = dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) + if err != nil { + fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) + } - //DB.mgoSession = mgoSession - //DB.mgoSession.SetMode(mgo.Monotonic, true) - //c := DB.mgoSession.DB(config.Config.Mongo.DBDatabase).C(cChat) - //err = c.EnsureIndexKey("uid") - //if err != nil { - // panic(err.Error()) - //} - // + cChatModels := []mongo.IndexModel{ + { + Keys: bson.M{"uid": -1}, + }, + } + result, err = dataBase.Collection(cChat).Indexes().CreateMany(context.Background(), cChatModels, opts) + if err != nil { + fmt.Println("mongodb create cChatModels failed", result, err.Error()) + } + + cWorkMomentModels := []mongo.IndexModel{ + { + Keys: bson.M{"work_moment_id": -1}, + }, + { + Keys: bson.M{"user_id": -1, "create_time": -1}, + }, + } + result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModels, opts) + if err != nil { + fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + } + + cTagModels := []mongo.IndexModel{ + { + Keys: bson.M{"tag_id": -1}, + }, + { + Keys: bson.M{"user_id": -1, "tag_id": -1}, + }, + } + result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModels, opts) + if err != nil { + fmt.Println("mongodb create cTagModels failed", result, err.Error()) + } + DB.mongoClient = mongoClient // redis pool init DB.redisPool = &redis.Pool{ diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 41053b1c3..9e50a8fc6 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -215,6 +215,8 @@ type Conversation struct { DraftTextTime int64 `gorm:"column:draft_text_time" json:"draftTextTime"` IsPinned bool `gorm:"column:is_pinned" json:"isPinned"` IsPrivateChat bool `gorm:"column:is_private_chat" json:"isPrivateChat"` + GroupAtType int32 `gorm:"column:group_at_type" json:"groupAtType"` + IsNotInGroup bool `gorm:"column:is_not_in_group" json:"isNotInGroup"` AttachedInfo string `gorm:"column:attached_info;type:varchar(1024)" json:"attachedInfo"` Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` } @@ -227,9 +229,9 @@ type Department struct { DepartmentID string `gorm:"column:department_id;primary_key;size:64" json:"departmentID"` FaceURL string `gorm:"column:face_url;size:255" json:"faceURL"` Name string `gorm:"column:name;size:256" json:"name" binding:"required"` - ParentID string `gorm:"column:parent_id;size:64" json:"parentID" binding:"required"` - Order int32 `gorm:"column:order" json:"order" ` - DepartmentType int32 `gorm:"column:department_type" json:"departmentType"` + ParentID string `gorm:"column:parent_id;size:64" json:"parentID" binding:"required"` // "0" or Real parent id + Order int32 `gorm:"column:order" json:"order" ` // 1, 2, ... + DepartmentType int32 `gorm:"column:department_type" json:"departmentType"` //1, 2... CreateTime time.Time `gorm:"column:create_time" json:"createTime"` Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` } @@ -238,32 +240,33 @@ func (Department) TableName() string { return "departments" } -type DepartmentUser struct { +type OrganizationUser struct { UserID string `gorm:"column:user_id;primary_key;size:64"` Nickname string `gorm:"column:nickname;size:256"` EnglishName string `gorm:"column:english_name;size:256"` FaceURL string `gorm:"column:face_url;size:256"` - Gender int32 `gorm:"column:gender"` - mobile string `gorm:"column:mobile;size:32"` - telephone string `gorm:"column:telephone;size:32"` + Gender int32 `gorm:"column:gender"` //1 ,2 + Mobile string `gorm:"column:mobile;size:32"` + Telephone string `gorm:"column:telephone;size:32"` Birth time.Time `gorm:"column:birth"` Email string `gorm:"column:email;size:64"` CreateTime time.Time `gorm:"column:create_time"` Ex string `gorm:"column:ex;size:1024"` } -func (DepartmentUser) TableName() string { - return "Department_users" +func (OrganizationUser) TableName() string { + return "organization_users" } type DepartmentMember struct { - userID string `gorm:"column:user_id;primary_key;size:64"` - DepartmentID string `gorm:"column:department_id;primary_key;size:64"` - Order int32 `gorm:"column:order" json:"order"` - Position string `gorm:"column:position;size:256" json:"position"` - Leader int32 `gorm:"column:leader" json:"leader"` - Status int32 `gorm:"column:status" json:"status"` - Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` + UserID string `gorm:"column:user_id;primary_key;size:64"` + DepartmentID string `gorm:"column:department_id;primary_key;size:64"` + Order int32 `gorm:"column:order" json:"order"` //1,2 + Position string `gorm:"column:position;size:256" json:"position"` + Leader int32 `gorm:"column:leader" json:"leader"` //-1, 1 + Status int32 `gorm:"column:status" json:"status"` //-1, 1 + CreateTime time.Time `gorm:"column:create_time"` + Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` } func (DepartmentMember) TableName() string { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 59ec1a0f2..f44799ecf 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -26,6 +26,8 @@ const cChat = "msg" const cGroup = "group" const cTag = "tag" const cSendLog = "send_log" +const cWorkMoment = "work_moment" +const cCommentMsg = "comment_msg" const singleGocMsgNum = 5000 type MsgInfo struct { @@ -563,10 +565,141 @@ func (d *DataBases) GetTagSendLogs(userID string, showNumber, pageNumber int32) return tagSendLogs, nil } +type WorkMoment struct { + WorkMomentID string `bson:"work_moment_id"` + UserID string `bson:"user_id"` + UserName string `bson:"user_name"` + FaceURL string `bson:"face_url"` + Content string `bson:"content"` + LikeUserList []*LikeUser `bson:"like_user_list"` + AtUserList []*AtUser `bson:"at_user_list"` + Comments []*Comment `bson:"comments"` + PermissionUserIDList []string `bson:"permission_user_id_list"` + Permission int32 `bson:"permission"` + CreateTime int32 `bson:"create_time"` +} + +type AtUser struct { + UserID string `bson:"user_id"` + UserName string `bson:"user_name"` +} + +type LikeUser struct { + UserID string `bson:"user_id"` + UserName string `bson:"user_name"` +} + +type Comment struct { + UserID string `bson:"user_id" json:"user_id"` + UserName string `bson:"user_name" json:"user_name"` + ReplyUserID string `bson:"reply_user_id" json:"reply_user_id"` + ReplyUserName string `bson:"reply_user_name" json:"reply_user_name"` + ContentID string `bson:"content_id" json:"content_id"` + Content string `bson:"content" json:"content"` + CreateTime int32 `bson:"create_time" json:"create_time"` +} + +func (d *DataBases) CreateOneWorkMoment(workMoment *WorkMoment) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + workMomentID := generateWorkMomentID(workMoment.UserID) + workMoment.WorkMomentID = workMomentID + workMoment.CreateTime = int32(time.Now().Unix()) + _, err := c.InsertOne(ctx, workMoment) + return err +} + +func (d *DataBases) DeleteOneWorkMoment(workMomentID string) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + _, err := c.DeleteOne(ctx, bson.M{"work_moment_id": workMomentID}) + return err +} + +func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + workMoment := &WorkMoment{} + err := c.FindOne(ctx, bson.M{"work_moment_id": workMomentID}).Decode(workMoment) + return workMoment, err +} + +func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) (*WorkMoment, bool, error) { + workMoment, err := d.GetWorkMomentByID(workMomentID) + if err != nil { + return nil, false, err + } + var isAlreadyLike bool + for i, user := range workMoment.LikeUserList { + if likeUserID == user.UserID { + isAlreadyLike = true + workMoment.LikeUserList = append(workMoment.LikeUserList[0:i], workMoment.LikeUserList[i+1:]...) + } + } + if !isAlreadyLike { + workMoment.LikeUserList = append(workMoment.LikeUserList, &LikeUser{UserID: likeUserID, UserName: userName}) + } + log.NewDebug("", utils.GetSelfFuncName(), workMoment) + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + _, err = c.UpdateOne(ctx, bson.M{"work_moment_id": workMomentID}, bson.M{"$set": bson.M{"like_user_list": workMoment.LikeUserList}}) + return workMoment, !isAlreadyLike, err +} + +func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { + return nil +} + +func (d *DataBases) CommentOneWorkMoment(comment *Comment, workMomentID string) (WorkMoment, error) { + comment.ContentID = generateWorkMomentCommentID(workMomentID) + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + var workMoment WorkMoment + err := c.FindOneAndUpdate(ctx, bson.M{"work_moment_id": workMomentID}, bson.M{"$push": bson.M{"comments": comment}}).Decode(&workMoment) + return workMoment, err +} + +func (d *DataBases) GetUserWorkMoments(userID string, showNumber, pageNumber int32) ([]WorkMoment, error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + var workMomentList []WorkMoment + findOpts := options.Find().SetLimit(int64(showNumber)).SetSkip(int64(showNumber) * (int64(pageNumber) - 1)).SetSort(bson.M{"create_time": -1}) + result, err := c.Find(ctx, bson.M{"user_id": userID}, findOpts) + if err != nil { + return workMomentList, nil + } + err = result.All(ctx, &workMomentList) + return workMomentList, err +} + +func (d *DataBases) GetUserFriendWorkMoments(friendIDList []*string, showNumber, pageNumber int32, userID string) ([]WorkMoment, error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + var workMomentList []WorkMoment + findOpts := options.Find().SetLimit(int64(showNumber)).SetSkip(int64(showNumber) * (int64(pageNumber) - 1)).SetSort(bson.M{"create_time": -1}) + result, err := c.Find(ctx, + bson.M{"user_id": friendIDList, "$or": bson.M{"who_can_see_user_id_list": bson.M{"$elemMatch": bson.M{"$eq": userID}}, + "who_cant_see_user_id_list": bson.M{"$nin": userID}}, + }, findOpts) + if err != nil { + return workMomentList, err + } + err = result.All(ctx, &workMomentList) + return workMomentList, err +} + func generateTagID(tagName, userID string) string { return utils.Md5(tagName + userID + strconv.Itoa(rand.Int()) + time.Now().String()) } +func generateWorkMomentID(userID string) string { + return utils.Md5(userID + strconv.Itoa(rand.Int()) + time.Now().String()) +} + +func generateWorkMomentCommentID(workMomentID string) string { + return utils.Md5(workMomentID + strconv.Itoa(rand.Int()) + time.Now().String()) +} + func getCurrentTimestampByMill() int64 { return time.Now().UnixNano() / 1e6 } @@ -588,9 +721,7 @@ func getMsgIndex(seq uint32) int { } func isContainInt32(target uint32, List []uint32) bool { - for _, element := range List { - if target == element { return true } diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index 92ad6d309..cfef4dfee 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -106,18 +106,20 @@ func initMysqlDB() { fmt.Println("CreateTable Conversation") db.CreateTable(&Conversation{}) } - if db.HasTable(&Department{}) { + + if !db.HasTable(&Department{}) { fmt.Println("CreateTable Department") db.CreateTable(&Department{}) } - if db.HasTable(&DepartmentUser{}) { - fmt.Println("CreateTable DepartmentUser") - db.CreateTable(&DepartmentUser{}) + if !db.HasTable(&OrganizationUser{}) { + fmt.Println("CreateTable OrganizationUser") + db.CreateTable(&OrganizationUser{}) } - if db.HasTable(&DepartmentMember{}) { + if !db.HasTable(&DepartmentMember{}) { fmt.Println("CreateTable DepartmentMember") db.CreateTable(&DepartmentMember{}) } + return } diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_model.go b/pkg/common/db/mysql_model/im_mysql_model/friend_model.go index 700082353..08d4597dc 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_model.go @@ -49,6 +49,19 @@ func GetFriendListByUserID(OwnerUserID string) ([]db.Friend, error) { return friends, nil } +func GetFriendIDListByUserID(OwnerUserID string) ([]*string, error) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return nil, err + } + var friendIDList []*string + err = dbConn.Table("friends").Select("friend_user_id").Where("owner_user_id=?", OwnerUserID).Find(&friendIDList).Error + if err != nil { + return nil, err + } + return friendIDList, nil +} + func UpdateFriendComment(OwnerUserID, FriendUserID, Remark string) error { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { diff --git a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go new file mode 100644 index 000000000..2eacf7a44 --- /dev/null +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -0,0 +1,238 @@ +package im_mysql_model + +import ( + "Open_IM/pkg/common/db" + "Open_IM/pkg/utils" + "time" +) + +func CreateDepartment(department *db.Department) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + department.CreateTime = time.Now() + return dbConn.Table("departments").Create(department).Error +} + +func GetDepartment(departmentID string) (error, *db.Department) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + var department db.Department + err = dbConn.Table("departments").Where("department_id=?", departmentID).Find(&department).Error + return err, &department +} + +func UpdateDepartment(department *db.Department, args map[string]interface{}) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + if err = dbConn.Table("departments").Where("department_id=?", department.DepartmentID).Updates(department).Error; err != nil { + return err + } + if args != nil { + return dbConn.Table("departments").Where("department_id=?", department.DepartmentID).Updates(args).Error + } + return nil +} + +func GetSubDepartmentList(departmentID string) (error, []db.Department) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + var departmentList []db.Department + if departmentID == "-1" { + err = dbConn.Table("departments").Find(&departmentList).Error + } else { + err = dbConn.Table("departments").Where("parent_id=?", departmentID).Find(&departmentList).Error + } + + return err, departmentList +} + +func DeleteDepartment(departmentID string) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + if err = dbConn.Table("departments").Where("department_id=?", departmentID).Delete(db.Department{}).Error; err != nil { + return err + } + if err = dbConn.Table("department_members").Where("department_id=?", departmentID).Delete(db.DepartmentMember{}).Error; err != nil { + return err + } + return nil +} + +func CreateOrganizationUser(organizationUser *db.OrganizationUser) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + organizationUser.CreateTime = time.Now() + + return dbConn.Table("organization_users").Create(organizationUser).Error +} + +func GetOrganizationUser(userID string) (error, *db.OrganizationUser) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + organizationUser := db.OrganizationUser{} + err = dbConn.Table("organization_users").Where("user_id=?", userID).Take(&organizationUser).Error + return err, &organizationUser +} + +func UpdateOrganizationUser(organizationUser *db.OrganizationUser, args map[string]interface{}) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + if err = dbConn.Table("organization_users").Where("user_id=?", organizationUser.UserID).Updates(organizationUser).Error; err != nil { + return err + } + if args != nil { + return dbConn.Table("organization_users").Where("user_id=?", organizationUser.UserID).Updates(args).Error + } + return nil +} + +func CreateDepartmentMember(departmentMember *db.DepartmentMember) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + departmentMember.CreateTime = time.Now() + return dbConn.Table("department_members").Create(departmentMember).Error +} + +func GetUserInDepartment(userID string) (error, []db.DepartmentMember) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + var departmentMemberList []db.DepartmentMember + err = dbConn.Table("department_members").Where("user_id=?", userID).Find(&departmentMemberList).Error + return err, departmentMemberList +} + +func UpdateUserInDepartment(departmentMember *db.DepartmentMember, args map[string]interface{}) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + if err = dbConn.Table("department_members").Where("department_id=? AND user_id=?", departmentMember.DepartmentID, departmentMember.UserID). + Updates(departmentMember).Error; err != nil { + return err + } + if args != nil { + return dbConn.Table("department_members").Where("department_id=? AND user_id=?", departmentMember.DepartmentID, departmentMember.UserID). + Updates(args).Error + } + return nil +} + +func DeleteUserInDepartment(departmentID, userID string) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + return dbConn.Table("department_members").Where("department_id=? AND user_id=?", departmentID, userID).Delete(db.DepartmentMember{}).Error +} + +func DeleteUserInAllDepartment(userID string) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + return dbConn.Table("department_members").Where("user_id=?", userID).Delete(db.DepartmentMember{}).Error +} + +func DeleteOrganizationUser(OrganizationUserID string) error { + if err := DeleteUserInAllDepartment(OrganizationUserID); err != nil { + return err + } + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + return dbConn.Table("organization_users").Where("user_id=?", OrganizationUserID).Delete(db.OrganizationUser{}).Error +} + +func GetDepartmentMemberUserIDList(departmentID string) (error, []string) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + var departmentMemberList []db.DepartmentMember + err = dbConn.Table("department_members").Where("department_id=?", departmentID).Take(&departmentMemberList).Error + if err != nil { + return err, nil + } + var userIDList []string = make([]string, 0) + for _, v := range departmentMemberList { + userIDList = append(userIDList, v.UserID) + } + return err, userIDList +} + +func GetDepartmentMemberList(departmentID string) (error, []db.DepartmentMember) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + var departmentMemberList []db.DepartmentMember + if departmentID == "-1" { + err = dbConn.Table("department_members").Find(&departmentMemberList).Error + } else { + err = dbConn.Table("department_members").Where("department_id=?", departmentID).Find(&departmentMemberList).Error + } + + if err != nil { + return err, nil + } + return err, departmentMemberList +} + +func GetAllOrganizationUserID() (error, []string) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err, nil + } + var OrganizationUser db.OrganizationUser + var result []string + return dbConn.Model(&OrganizationUser).Pluck("user_id", &result).Error, result +} + +func GetDepartmentMemberNum(departmentID string) (error, uint32) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return utils.Wrap(err, "DefaultGormDB failed"), 0 + } + var number uint32 + err = dbConn.Table("department_members").Where("department_id=?", departmentID).Count(&number).Error + if err != nil { + return utils.Wrap(err, ""), 0 + } + return nil, number + +} + +func GetSubDepartmentNum(departmentID string) (error, uint32) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return utils.Wrap(err, "DefaultGormDB failed"), 0 + } + var number uint32 + err = dbConn.Table("departments").Where("parent_id=?", departmentID).Count(&number).Error + if err != nil { + return utils.Wrap(err, ""), 0 + } + return nil, number + +} diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model.go b/pkg/common/db/mysql_model/im_mysql_model/user_model.go index 003b7afa7..5e805686d 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/user_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model.go @@ -321,7 +321,8 @@ func SetConversation(conversation db.Conversation) error { log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update") //force update return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID). - Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt, "is_pinned": conversation.IsPinned, "is_private_chat": conversation.IsPrivateChat}).Error + Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt, "is_pinned": conversation.IsPinned, "is_private_chat": conversation.IsPrivateChat, + "group_at_type": conversation.GroupAtType, "is_not_in_group": conversation.IsNotInGroup}).Error } } @@ -380,10 +381,7 @@ func GetConversation(OwnerUserID, conversationID string) (db.Conversation, error if err != nil { return conversation, err } - err = dbConn.Model(&db.Conversation{ - OwnerUserID: OwnerUserID, - ConversationID: conversationID, - }).Find(&conversation).Error + err = dbConn.Table("conversations").Where("owner_user_id=? and conversation_id=?", OwnerUserID, conversationID).Take(&conversation).Error return conversation, err } @@ -396,3 +394,12 @@ func GetConversations(OwnerUserID string, conversationIDs []string) ([]db.Conver err = dbConn.Model(&db.Conversation{}).Where("conversation_id IN (?) and owner_user_id=?", conversationIDs, OwnerUserID).Find(&conversations).Error return conversations, err } +func GetConversationsByConversationIDMultipleOwner(OwnerUserIDList []string, conversationID string) ([]db.Conversation, error) { + var conversations []db.Conversation + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return conversations, err + } + err = dbConn.Model(&db.Conversation{}).Where("owner_user_id IN (?) and conversation_id=?", OwnerUserIDList, conversationID).Find(&conversations).Error + return conversations, err +} diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 69b112bf7..e58424623 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -93,7 +93,7 @@ func GetClaimFromToken(tokensString string) (*Claims, error) { } } else { if claims, ok := token.Claims.(*Claims); ok && token.Valid { - log.NewDebug("", claims.UID, claims.Platform) + //log.NewDebug("", claims.UID, claims.Platform) return claims, nil } return nil, &constant.ErrTokenNotValidYet @@ -111,7 +111,7 @@ func IsAppManagerAccess(token string, OpUserID string) bool { return false } -func IsMangerUserID(OpUserID string) bool { +func IsManagerUserID(OpUserID string) bool { if utils.IsContain(OpUserID, config.Config.Manager.AppManagerUid) { return true } else { @@ -138,21 +138,29 @@ func GetUserIDFromToken(token string, operationID string) (bool, string) { return true, claims.UID } +func ParseTokenGetUserID(token string, operationID string) (error, string) { + claims, err := ParseToken(token, operationID) + if err != nil { + return utils.Wrap(err, ""), "" + } + return nil, claims.UID +} + func ParseToken(tokensString, operationID string) (claims *Claims, err error) { claims, err = GetClaimFromToken(tokensString) if err != nil { log.NewError(operationID, "token validate err", err.Error(), tokensString) - return nil, err + return nil, utils.Wrap(err, "") } m, err := commonDB.DB.GetTokenMapByUidPid(claims.UID, claims.Platform) if err != nil { log.NewError(operationID, "get token from redis err", err.Error(), tokensString) - return nil, &constant.ErrTokenInvalid + return nil, utils.Wrap(&constant.ErrTokenInvalid, "get token from redis err") } if m == nil { log.NewError(operationID, "get token from redis err", "m is nil", tokensString) - return nil, &constant.ErrTokenInvalid + return nil, utils.Wrap(&constant.ErrTokenInvalid, "get token from redis err") } if v, ok := m[tokensString]; ok { switch v { @@ -160,18 +168,18 @@ func ParseToken(tokensString, operationID string) (claims *Claims, err error) { log.NewDebug(operationID, "this is normal return", claims) return claims, nil case constant.InValidToken: - return nil, &constant.ErrTokenInvalid + return nil, utils.Wrap(&constant.ErrTokenInvalid, "") case constant.KickedToken: log.Error(operationID, "this token has been kicked by other same terminal ", constant.ErrTokenKicked) - return nil, &constant.ErrTokenKicked + return nil, utils.Wrap(&constant.ErrTokenKicked, "this token has been kicked by other same terminal ") case constant.ExpiredToken: - return nil, &constant.ErrTokenExpired + return nil, utils.Wrap(&constant.ErrTokenExpired, "") default: - return nil, &constant.ErrTokenUnknown + return nil, utils.Wrap(&constant.ErrTokenUnknown, "") } } log.NewError(operationID, "redis token map not find", constant.ErrTokenUnknown) - return nil, &constant.ErrTokenUnknown + return nil, utils.Wrap(&constant.ErrTokenUnknown, "redis token map not find") } //func MakeTheTokenInvalid(currentClaims *Claims, platformClass string) (bool, error) { @@ -210,13 +218,13 @@ func VerifyToken(token, uid string) (bool, error) { func WsVerifyToken(token, uid string, platformID string) (bool, error, string) { claims, err := ParseToken(token, "") if err != nil { - return false, err, "parse token err" + return false, utils.Wrap(err, "parse token err"), "parse token err" } if claims.UID != uid { - return false, &constant.ErrTokenUnknown, "uid is not same to token uid" + return false, utils.Wrap(&constant.ErrTokenUnknown, "uid is not same to token uid"), "uid is not same to token uid" } if claims.Platform != constant.PlatformIDToName(utils.StringToInt32(platformID)) { - return false, &constant.ErrTokenUnknown, "platform is not same to token platform" + return false, utils.Wrap(&constant.ErrTokenUnknown, "platform is not same to token platform"), "platform is not same to token platform" } log.NewDebug("", claims.UID, claims.Platform) return true, nil, "" diff --git a/pkg/common/utils/utils.go b/pkg/common/utils/utils.go index 5c317e4c9..003f659a9 100644 --- a/pkg/common/utils/utils.go +++ b/pkg/common/utils/utils.go @@ -107,7 +107,7 @@ func GroupMemberOpenIMCopyDB(dst *db.GroupMember, src *open_im_sdk.GroupMemberFu func GroupMemberDBCopyOpenIM(dst *open_im_sdk.GroupMemberFullInfo, src *db.GroupMember) error { utils.CopyStructFields(dst, src) - if token_verify.IsMangerUserID(src.UserID) { + if token_verify.IsManagerUserID(src.UserID) { u, err := imdb.GetUserByUserID(src.UserID) if err != nil { return utils.Wrap(err, "") diff --git a/pkg/proto/conversation/conversation.proto b/pkg/proto/conversation/conversation.proto new file mode 100644 index 000000000..7821eeaaf --- /dev/null +++ b/pkg/proto/conversation/conversation.proto @@ -0,0 +1,302 @@ +syntax = "proto3"; +option go_package = "./conversation;conversation"; +package conversation; + +message CommonResp{ + int32 errCode = 1; + string errMsg = 2; +} + +message DeleteUsersReq{ + repeated string DeleteUserIDList = 2; + string OpUserID = 3; + string OperationID = 4; +} + +message DeleteUsersResp{ + CommonResp CommonResp = 1; + repeated string FailedUserIDList = 2; +} + + +message GetAllUserIDReq{ + string opUserID = 1; + string operationID = 2; +} +message GetAllUserIDResp{ + CommonResp CommonResp = 1; + repeated string UserIDList = 2; +} + + +message AccountCheckReq{ + repeated string CheckUserIDList = 1; + string OpUserID = 2; + string OperationID = 3; + +} +message AccountCheckResp{ + CommonResp commonResp = 1; + message SingleUserStatus { + string userID = 1; + string accountStatus = 2; + } + repeated SingleUserStatus ResultList = 2; +} + + +message GetUserInfoReq{ + repeated string userIDList = 1; + string OpUserID = 2; + string OperationID = 3; +} +message GetUserInfoResp{ + CommonResp commonResp = 1; + repeated server_api_params.UserInfo UserInfoList = 3; +} + + + +message UpdateUserInfoReq{ + server_api_params.UserInfo UserInfo = 1; + string OpUserID = 2; + string operationID = 3; +} +message UpdateUserInfoResp{ + CommonResp commonResp = 1; +} + +message Conversation{ + string OwnerUserID = 1; + string ConversationID = 2; + int32 RecvMsgOpt = 3; + int32 ConversationType = 4; + string UserID = 5; + string GroupID = 6; + int32 UnreadCount = 7; + int64 DraftTextTime = 8; + bool IsPinned = 9; + string AttachedInfo = 10; + bool IsPrivateChat = 11; + int32 GroupAtType = 12; + bool IsNotInGroup = 13; + string Ex = 14; +} + +message ModifyConversationFiledReq{ + Conversation Conversation = 1; + int32 notificationType = 2; + string OperationID = 3; +} + +message SetConversationResp{ + CommonResp commonResp = 1; +} + +message SetRecvMsgOptReq { + string OwnerUserID = 1; + string ConversationID = 2; + int32 RecvMsgOpt = 3; + int32 notificationType = 4; + string OperationID = 5; +} + +message SetRecvMsgOptResp { + CommonResp commonResp = 1; +} + +message GetConversationReq{ + string ConversationID = 1; + string OwnerUserID = 2; + string OperationID = 3; +} + +message GetConversationResp{ + CommonResp commonResp = 1; + Conversation Conversation = 2; +} + +message GetConversationsReq{ + string OwnerUserID = 1; + repeated string ConversationIDs = 2; + string OperationID = 3; +} + +message GetConversationsResp{ + CommonResp commonResp = 1; + repeated Conversation Conversations = 2; +} + +message GetAllConversationsReq{ + string OwnerUserID = 1; + string OperationID = 2; +} + +message GetAllConversationsResp{ + CommonResp commonResp = 1; + repeated Conversation Conversations = 2; +} + +message BatchSetConversationsReq{ + repeated Conversation Conversations = 1; + string OwnerUserID = 2; + int32 notificationType = 3; + string OperationID = 4; +} + +message BatchSetConversationsResp{ + CommonResp commonResp = 1; + repeated string Success = 2; + repeated string Failed = 3; +} + +message ResignUserReq{ + string UserId = 1; + string OperationID = 2; +} + +message ResignUserResp{ + CommonResp commonResp = 1; +} + +message GetUserByIdReq{ + string UserId = 1; + string OperationID = 2; +} + +message User{ + string ProfilePhoto = 1; + string Nickname = 2; + string UserId = 3; + string CreateTime = 4; + bool IsBlock = 5; +} + +message GetUserByIdResp{ + CommonResp CommonResp = 1; + User user = 2; +} + +message GetUsersByNameReq { + string UserName = 1; + server_api_params.RequestPagination Pagination = 2; + string OperationID = 3; +} + +message GetUsersByNameResp { + repeated User users = 1; + server_api_params.ResponsePagination Pagination = 2; + int32 UserNums = 3; +} + +message AlterUserReq{ + string UserId = 1; + string OperationID = 2; + int64 PhoneNumber = 3; + string Nickname = 4; + string Email = 5; + string OpUserId = 6; +} + +message AlterUserResp{ + CommonResp CommonResp = 1; +} + +message GetUsersReq { + string OperationID = 1; + server_api_params.RequestPagination Pagination = 2; + string UserName = 3; +} + +message GetUsersResp{ + CommonResp CommonResp = 1; + repeated User user = 2; + server_api_params.ResponsePagination Pagination = 3; + int32 UserNums = 4; +} + +message AddUserReq{ + string OperationID = 1; + string PhoneNumber = 2; + string UserId = 3; + string name = 4; + string OpUserId = 5; +} + +message AddUserResp{ + CommonResp CommonResp = 1; +} + + +message BlockUserReq{ + string UserId = 1; + string EndDisableTime = 2; + string OperationID = 3; + string OpUserId = 4; +} + +message BlockUserResp{ + CommonResp CommonResp = 1; +} + +message UnBlockUserReq{ + string UserId = 1; + string OperationID = 2; + string OpUserId = 3; +} + +message UnBlockUserResp{ + CommonResp CommonResp = 1; +} + +message GetBlockUsersReq{ + server_api_params.RequestPagination Pagination = 1; + string OperationID = 2; + int32 BlockUserNum = 3; +} + +message BlockUser { + User User = 1; + string BeginDisableTime = 2; + string EndDisableTime = 3; +} + +message GetBlockUsersResp{ + CommonResp CommonResp = 1; + repeated BlockUser BlockUsers = 2; + server_api_params.ResponsePagination Pagination = 3; + int32 UserNums = 4; +} + +message GetBlockUserByIdReq { + string User_id = 1; + string OperationID = 2; +} + +message GetBlockUserByIdResp { + BlockUser BlockUser = 2; +} + +message DeleteUserReq { + string User_id = 1; + string OperationID = 2; + string OpUserId = 3; +} + +message DeleteUserResp { + CommonResp CommonResp = 1; +} + + + +service user { + rpc AccountCheck(AccountCheckReq)returns(AccountCheckResp); + rpc GetConversation(GetConversationReq)returns(GetConversationResp); + rpc GetAllConversations(GetAllConversationsReq)returns(GetAllConversationsResp); + rpc GetConversations(GetConversationsReq)returns(GetConversationsResp); + rpc BatchSetConversations(BatchSetConversationsReq)returns(BatchSetConversationsResp); + rpc SetConversation(SetConversationReq)returns(SetConversationResp); + rpc SetRecvMsgOpt(SetRecvMsgOptReq)returns(SetRecvMsgOptResp); + + +} diff --git a/pkg/proto/group/group.pb.go b/pkg/proto/group/group.pb.go index 2f8176fad..db8bb328b 100644 --- a/pkg/proto/group/group.pb.go +++ b/pkg/proto/group/group.pb.go @@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} } func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (*CommonResp) ProtoMessage() {} func (*CommonResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{0} + return fileDescriptor_group_95c16320d90511af, []int{0} } func (m *CommonResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommonResp.Unmarshal(m, b) @@ -82,7 +82,7 @@ func (m *GroupAddMemberInfo) Reset() { *m = GroupAddMemberInfo{} } func (m *GroupAddMemberInfo) String() string { return proto.CompactTextString(m) } func (*GroupAddMemberInfo) ProtoMessage() {} func (*GroupAddMemberInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{1} + return fileDescriptor_group_95c16320d90511af, []int{1} } func (m *GroupAddMemberInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupAddMemberInfo.Unmarshal(m, b) @@ -131,7 +131,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} } func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) } func (*CreateGroupReq) ProtoMessage() {} func (*CreateGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{2} + return fileDescriptor_group_95c16320d90511af, []int{2} } func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b) @@ -199,7 +199,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} } func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) } func (*CreateGroupResp) ProtoMessage() {} func (*CreateGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{3} + return fileDescriptor_group_95c16320d90511af, []int{3} } func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b) @@ -253,7 +253,7 @@ func (m *GetGroupsInfoReq) Reset() { *m = GetGroupsInfoReq{} } func (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupsInfoReq) ProtoMessage() {} func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{4} + return fileDescriptor_group_95c16320d90511af, []int{4} } func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b) @@ -307,7 +307,7 @@ func (m *GetGroupsInfoResp) Reset() { *m = GetGroupsInfoResp{} } func (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupsInfoResp) ProtoMessage() {} func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{5} + return fileDescriptor_group_95c16320d90511af, []int{5} } func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b) @@ -361,7 +361,7 @@ func (m *SetGroupInfoReq) Reset() { *m = SetGroupInfoReq{} } func (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) } func (*SetGroupInfoReq) ProtoMessage() {} func (*SetGroupInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{6} + return fileDescriptor_group_95c16320d90511af, []int{6} } func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b) @@ -413,7 +413,7 @@ func (m *SetGroupInfoResp) Reset() { *m = SetGroupInfoResp{} } func (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) } func (*SetGroupInfoResp) ProtoMessage() {} func (*SetGroupInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{7} + return fileDescriptor_group_95c16320d90511af, []int{7} } func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b) @@ -453,7 +453,7 @@ func (m *GetGroupApplicationListReq) Reset() { *m = GetGroupApplicationL func (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) } func (*GetGroupApplicationListReq) ProtoMessage() {} func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{8} + return fileDescriptor_group_95c16320d90511af, []int{8} } func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b) @@ -507,7 +507,7 @@ func (m *GetGroupApplicationListResp) Reset() { *m = GetGroupApplication func (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) } func (*GetGroupApplicationListResp) ProtoMessage() {} func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{9} + return fileDescriptor_group_95c16320d90511af, []int{9} } func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b) @@ -561,7 +561,7 @@ func (m *GetUserReqApplicationListReq) Reset() { *m = GetUserReqApplicat func (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) } func (*GetUserReqApplicationListReq) ProtoMessage() {} func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{10} + return fileDescriptor_group_95c16320d90511af, []int{10} } func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b) @@ -614,7 +614,7 @@ func (m *GetUserReqApplicationListResp) Reset() { *m = GetUserReqApplica func (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) } func (*GetUserReqApplicationListResp) ProtoMessage() {} func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{11} + return fileDescriptor_group_95c16320d90511af, []int{11} } func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b) @@ -663,7 +663,7 @@ func (m *TransferGroupOwnerReq) Reset() { *m = TransferGroupOwnerReq{} } func (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) } func (*TransferGroupOwnerReq) ProtoMessage() {} func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{12} + return fileDescriptor_group_95c16320d90511af, []int{12} } func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b) @@ -729,7 +729,7 @@ func (m *TransferGroupOwnerResp) Reset() { *m = TransferGroupOwnerResp{} func (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) } func (*TransferGroupOwnerResp) ProtoMessage() {} func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{13} + return fileDescriptor_group_95c16320d90511af, []int{13} } func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b) @@ -770,7 +770,7 @@ func (m *JoinGroupReq) Reset() { *m = JoinGroupReq{} } func (m *JoinGroupReq) String() string { return proto.CompactTextString(m) } func (*JoinGroupReq) ProtoMessage() {} func (*JoinGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{14} + return fileDescriptor_group_95c16320d90511af, []int{14} } func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b) @@ -829,7 +829,7 @@ func (m *JoinGroupResp) Reset() { *m = JoinGroupResp{} } func (m *JoinGroupResp) String() string { return proto.CompactTextString(m) } func (*JoinGroupResp) ProtoMessage() {} func (*JoinGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{15} + return fileDescriptor_group_95c16320d90511af, []int{15} } func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b) @@ -872,7 +872,7 @@ func (m *GroupApplicationResponseReq) Reset() { *m = GroupApplicationRes func (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) } func (*GroupApplicationResponseReq) ProtoMessage() {} func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{16} + return fileDescriptor_group_95c16320d90511af, []int{16} } func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b) @@ -945,7 +945,7 @@ func (m *GroupApplicationResponseResp) Reset() { *m = GroupApplicationRe func (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) } func (*GroupApplicationResponseResp) ProtoMessage() {} func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{17} + return fileDescriptor_group_95c16320d90511af, []int{17} } func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b) @@ -985,7 +985,7 @@ func (m *QuitGroupReq) Reset() { *m = QuitGroupReq{} } func (m *QuitGroupReq) String() string { return proto.CompactTextString(m) } func (*QuitGroupReq) ProtoMessage() {} func (*QuitGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{18} + return fileDescriptor_group_95c16320d90511af, []int{18} } func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b) @@ -1037,7 +1037,7 @@ func (m *QuitGroupResp) Reset() { *m = QuitGroupResp{} } func (m *QuitGroupResp) String() string { return proto.CompactTextString(m) } func (*QuitGroupResp) ProtoMessage() {} func (*QuitGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{19} + return fileDescriptor_group_95c16320d90511af, []int{19} } func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b) @@ -1079,7 +1079,7 @@ func (m *GetGroupMemberListReq) Reset() { *m = GetGroupMemberListReq{} } func (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberListReq) ProtoMessage() {} func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{20} + return fileDescriptor_group_95c16320d90511af, []int{20} } func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b) @@ -1148,7 +1148,7 @@ func (m *GetGroupMemberListResp) Reset() { *m = GetGroupMemberListResp{} func (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberListResp) ProtoMessage() {} func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{21} + return fileDescriptor_group_95c16320d90511af, []int{21} } func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b) @@ -1210,7 +1210,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{} func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersInfoReq) ProtoMessage() {} func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{22} + return fileDescriptor_group_95c16320d90511af, []int{22} } func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b) @@ -1271,7 +1271,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersInfoResp) ProtoMessage() {} func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{23} + return fileDescriptor_group_95c16320d90511af, []int{23} } func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b) @@ -1327,7 +1327,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} } func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*KickGroupMemberReq) ProtoMessage() {} func (*KickGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{24} + return fileDescriptor_group_95c16320d90511af, []int{24} } func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b) @@ -1394,7 +1394,7 @@ func (m *Id2Result) Reset() { *m = Id2Result{} } func (m *Id2Result) String() string { return proto.CompactTextString(m) } func (*Id2Result) ProtoMessage() {} func (*Id2Result) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{25} + return fileDescriptor_group_95c16320d90511af, []int{25} } func (m *Id2Result) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Id2Result.Unmarshal(m, b) @@ -1441,7 +1441,7 @@ func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} } func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*KickGroupMemberResp) ProtoMessage() {} func (*KickGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{26} + return fileDescriptor_group_95c16320d90511af, []int{26} } func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b) @@ -1495,7 +1495,7 @@ func (m *GetJoinedGroupListReq) Reset() { *m = GetJoinedGroupListReq{} } func (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) } func (*GetJoinedGroupListReq) ProtoMessage() {} func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{27} + return fileDescriptor_group_95c16320d90511af, []int{27} } func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b) @@ -1549,7 +1549,7 @@ func (m *GetJoinedGroupListResp) Reset() { *m = GetJoinedGroupListResp{} func (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) } func (*GetJoinedGroupListResp) ProtoMessage() {} func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{28} + return fileDescriptor_group_95c16320d90511af, []int{28} } func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b) @@ -1605,7 +1605,7 @@ func (m *InviteUserToGroupReq) Reset() { *m = InviteUserToGroupReq{} } func (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) } func (*InviteUserToGroupReq) ProtoMessage() {} func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{29} + return fileDescriptor_group_95c16320d90511af, []int{29} } func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b) @@ -1673,7 +1673,7 @@ func (m *InviteUserToGroupResp) Reset() { *m = InviteUserToGroupResp{} } func (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) } func (*InviteUserToGroupResp) ProtoMessage() {} func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{30} + return fileDescriptor_group_95c16320d90511af, []int{30} } func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b) @@ -1727,7 +1727,7 @@ func (m *GetGroupAllMemberReq) Reset() { *m = GetGroupAllMemberReq{} } func (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) } func (*GetGroupAllMemberReq) ProtoMessage() {} func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{31} + return fileDescriptor_group_95c16320d90511af, []int{31} } func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b) @@ -1781,7 +1781,7 @@ func (m *GetGroupAllMemberResp) Reset() { *m = GetGroupAllMemberResp{} } func (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) } func (*GetGroupAllMemberResp) ProtoMessage() {} func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{32} + return fileDescriptor_group_95c16320d90511af, []int{32} } func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b) @@ -1835,7 +1835,7 @@ func (m *CMSGroup) Reset() { *m = CMSGroup{} } func (m *CMSGroup) String() string { return proto.CompactTextString(m) } func (*CMSGroup) ProtoMessage() {} func (*CMSGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{33} + return fileDescriptor_group_95c16320d90511af, []int{33} } func (m *CMSGroup) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CMSGroup.Unmarshal(m, b) @@ -1889,7 +1889,7 @@ func (m *GetGroupReq) Reset() { *m = GetGroupReq{} } func (m *GetGroupReq) String() string { return proto.CompactTextString(m) } func (*GetGroupReq) ProtoMessage() {} func (*GetGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{34} + return fileDescriptor_group_95c16320d90511af, []int{34} } func (m *GetGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupReq.Unmarshal(m, b) @@ -1943,7 +1943,7 @@ func (m *GetGroupResp) Reset() { *m = GetGroupResp{} } func (m *GetGroupResp) String() string { return proto.CompactTextString(m) } func (*GetGroupResp) ProtoMessage() {} func (*GetGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{35} + return fileDescriptor_group_95c16320d90511af, []int{35} } func (m *GetGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupResp.Unmarshal(m, b) @@ -1996,7 +1996,7 @@ func (m *GetGroupsReq) Reset() { *m = GetGroupsReq{} } func (m *GetGroupsReq) String() string { return proto.CompactTextString(m) } func (*GetGroupsReq) ProtoMessage() {} func (*GetGroupsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{36} + return fileDescriptor_group_95c16320d90511af, []int{36} } func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b) @@ -2043,7 +2043,7 @@ func (m *GetGroupsResp) Reset() { *m = GetGroupsResp{} } func (m *GetGroupsResp) String() string { return proto.CompactTextString(m) } func (*GetGroupsResp) ProtoMessage() {} func (*GetGroupsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{37} + return fileDescriptor_group_95c16320d90511af, []int{37} } func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b) @@ -2096,7 +2096,7 @@ func (m *GetGroupMemberReq) Reset() { *m = GetGroupMemberReq{} } func (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMemberReq) ProtoMessage() {} func (*GetGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{38} + return fileDescriptor_group_95c16320d90511af, []int{38} } func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b) @@ -2143,7 +2143,7 @@ func (m *OperateGroupStatusReq) Reset() { *m = OperateGroupStatusReq{} } func (m *OperateGroupStatusReq) String() string { return proto.CompactTextString(m) } func (*OperateGroupStatusReq) ProtoMessage() {} func (*OperateGroupStatusReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{39} + return fileDescriptor_group_95c16320d90511af, []int{39} } func (m *OperateGroupStatusReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OperateGroupStatusReq.Unmarshal(m, b) @@ -2194,7 +2194,7 @@ func (m *OperateGroupStatusResp) Reset() { *m = OperateGroupStatusResp{} func (m *OperateGroupStatusResp) String() string { return proto.CompactTextString(m) } func (*OperateGroupStatusResp) ProtoMessage() {} func (*OperateGroupStatusResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{40} + return fileDescriptor_group_95c16320d90511af, []int{40} } func (m *OperateGroupStatusResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OperateGroupStatusResp.Unmarshal(m, b) @@ -2228,7 +2228,7 @@ func (m *OperateUserRoleReq) Reset() { *m = OperateUserRoleReq{} } func (m *OperateUserRoleReq) String() string { return proto.CompactTextString(m) } func (*OperateUserRoleReq) ProtoMessage() {} func (*OperateUserRoleReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{41} + return fileDescriptor_group_95c16320d90511af, []int{41} } func (m *OperateUserRoleReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OperateUserRoleReq.Unmarshal(m, b) @@ -2286,7 +2286,7 @@ func (m *OperateUserRoleResp) Reset() { *m = OperateUserRoleResp{} } func (m *OperateUserRoleResp) String() string { return proto.CompactTextString(m) } func (*OperateUserRoleResp) ProtoMessage() {} func (*OperateUserRoleResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{42} + return fileDescriptor_group_95c16320d90511af, []int{42} } func (m *OperateUserRoleResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OperateUserRoleResp.Unmarshal(m, b) @@ -2318,7 +2318,7 @@ func (m *DeleteGroupReq) Reset() { *m = DeleteGroupReq{} } func (m *DeleteGroupReq) String() string { return proto.CompactTextString(m) } func (*DeleteGroupReq) ProtoMessage() {} func (*DeleteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{43} + return fileDescriptor_group_95c16320d90511af, []int{43} } func (m *DeleteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteGroupReq.Unmarshal(m, b) @@ -2362,7 +2362,7 @@ func (m *DeleteGroupResp) Reset() { *m = DeleteGroupResp{} } func (m *DeleteGroupResp) String() string { return proto.CompactTextString(m) } func (*DeleteGroupResp) ProtoMessage() {} func (*DeleteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{44} + return fileDescriptor_group_95c16320d90511af, []int{44} } func (m *DeleteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteGroupResp.Unmarshal(m, b) @@ -2394,7 +2394,7 @@ func (m *GetGroupByIdReq) Reset() { *m = GetGroupByIdReq{} } func (m *GetGroupByIdReq) String() string { return proto.CompactTextString(m) } func (*GetGroupByIdReq) ProtoMessage() {} func (*GetGroupByIdReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{45} + return fileDescriptor_group_95c16320d90511af, []int{45} } func (m *GetGroupByIdReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupByIdReq.Unmarshal(m, b) @@ -2439,7 +2439,7 @@ func (m *GetGroupByIdResp) Reset() { *m = GetGroupByIdResp{} } func (m *GetGroupByIdResp) String() string { return proto.CompactTextString(m) } func (*GetGroupByIdResp) ProtoMessage() {} func (*GetGroupByIdResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{46} + return fileDescriptor_group_95c16320d90511af, []int{46} } func (m *GetGroupByIdResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupByIdResp.Unmarshal(m, b) @@ -2480,7 +2480,7 @@ func (m *GetGroupMembersCMSReq) Reset() { *m = GetGroupMembersCMSReq{} } func (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersCMSReq) ProtoMessage() {} func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{47} + return fileDescriptor_group_95c16320d90511af, []int{47} } func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b) @@ -2541,7 +2541,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{} func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) } func (*GetGroupMembersCMSResp) ProtoMessage() {} func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{48} + return fileDescriptor_group_95c16320d90511af, []int{48} } func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b) @@ -2596,7 +2596,7 @@ func (m *RemoveGroupMembersCMSReq) Reset() { *m = RemoveGroupMembersCMSR func (m *RemoveGroupMembersCMSReq) String() string { return proto.CompactTextString(m) } func (*RemoveGroupMembersCMSReq) ProtoMessage() {} func (*RemoveGroupMembersCMSReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{49} + return fileDescriptor_group_95c16320d90511af, []int{49} } func (m *RemoveGroupMembersCMSReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RemoveGroupMembersCMSReq.Unmarshal(m, b) @@ -2656,7 +2656,7 @@ func (m *RemoveGroupMembersCMSResp) Reset() { *m = RemoveGroupMembersCMS func (m *RemoveGroupMembersCMSResp) String() string { return proto.CompactTextString(m) } func (*RemoveGroupMembersCMSResp) ProtoMessage() {} func (*RemoveGroupMembersCMSResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{50} + return fileDescriptor_group_95c16320d90511af, []int{50} } func (m *RemoveGroupMembersCMSResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RemoveGroupMembersCMSResp.Unmarshal(m, b) @@ -2704,7 +2704,7 @@ func (m *AddGroupMembersCMSReq) Reset() { *m = AddGroupMembersCMSReq{} } func (m *AddGroupMembersCMSReq) String() string { return proto.CompactTextString(m) } func (*AddGroupMembersCMSReq) ProtoMessage() {} func (*AddGroupMembersCMSReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{51} + return fileDescriptor_group_95c16320d90511af, []int{51} } func (m *AddGroupMembersCMSReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AddGroupMembersCMSReq.Unmarshal(m, b) @@ -2764,7 +2764,7 @@ func (m *AddGroupMembersCMSResp) Reset() { *m = AddGroupMembersCMSResp{} func (m *AddGroupMembersCMSResp) String() string { return proto.CompactTextString(m) } func (*AddGroupMembersCMSResp) ProtoMessage() {} func (*AddGroupMembersCMSResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{52} + return fileDescriptor_group_95c16320d90511af, []int{52} } func (m *AddGroupMembersCMSResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AddGroupMembersCMSResp.Unmarshal(m, b) @@ -2811,7 +2811,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} } func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) } func (*DismissGroupReq) ProtoMessage() {} func (*DismissGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{53} + return fileDescriptor_group_95c16320d90511af, []int{53} } func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b) @@ -2863,7 +2863,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} } func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) } func (*DismissGroupResp) ProtoMessage() {} func (*DismissGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{54} + return fileDescriptor_group_95c16320d90511af, []int{54} } func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b) @@ -2905,7 +2905,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} } func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*MuteGroupMemberReq) ProtoMessage() {} func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{55} + return fileDescriptor_group_95c16320d90511af, []int{55} } func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b) @@ -2971,7 +2971,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} } func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*MuteGroupMemberResp) ProtoMessage() {} func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{56} + return fileDescriptor_group_95c16320d90511af, []int{56} } func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b) @@ -3012,7 +3012,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupMemberReq) ProtoMessage() {} func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{57} + return fileDescriptor_group_95c16320d90511af, []int{57} } func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b) @@ -3071,7 +3071,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupMemberResp) ProtoMessage() {} func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{58} + return fileDescriptor_group_95c16320d90511af, []int{58} } func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b) @@ -3111,7 +3111,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} } func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) } func (*MuteGroupReq) ProtoMessage() {} func (*MuteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{59} + return fileDescriptor_group_95c16320d90511af, []int{59} } func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b) @@ -3163,7 +3163,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} } func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) } func (*MuteGroupResp) ProtoMessage() {} func (*MuteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{60} + return fileDescriptor_group_95c16320d90511af, []int{60} } func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b) @@ -3203,7 +3203,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} } func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupReq) ProtoMessage() {} func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{61} + return fileDescriptor_group_95c16320d90511af, []int{61} } func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b) @@ -3255,7 +3255,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} } func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) } func (*CancelMuteGroupResp) ProtoMessage() {} func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) { - return fileDescriptor_group_3c77315b028a1402, []int{62} + return fileDescriptor_group_95c16320d90511af, []int{62} } func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b) @@ -3282,6 +3282,114 @@ func (m *CancelMuteGroupResp) GetCommonResp() *CommonResp { return nil } +type SetGroupMemberNicknameReq struct { + GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` + UserID string `protobuf:"bytes,5,opt,name=userID" json:"userID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknameReq{} } +func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) } +func (*SetGroupMemberNicknameReq) ProtoMessage() {} +func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) { + return fileDescriptor_group_95c16320d90511af, []int{63} +} +func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b) +} +func (m *SetGroupMemberNicknameReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetGroupMemberNicknameReq.Marshal(b, m, deterministic) +} +func (dst *SetGroupMemberNicknameReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetGroupMemberNicknameReq.Merge(dst, src) +} +func (m *SetGroupMemberNicknameReq) XXX_Size() int { + return xxx_messageInfo_SetGroupMemberNicknameReq.Size(m) +} +func (m *SetGroupMemberNicknameReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetGroupMemberNicknameReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetGroupMemberNicknameReq proto.InternalMessageInfo + +func (m *SetGroupMemberNicknameReq) GetGroupID() string { + if m != nil { + return m.GroupID + } + return "" +} + +func (m *SetGroupMemberNicknameReq) GetNickname() string { + if m != nil { + return m.Nickname + } + return "" +} + +func (m *SetGroupMemberNicknameReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *SetGroupMemberNicknameReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *SetGroupMemberNicknameReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +type SetGroupMemberNicknameResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=CommonResp" json:"CommonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNicknameResp{} } +func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) } +func (*SetGroupMemberNicknameResp) ProtoMessage() {} +func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) { + return fileDescriptor_group_95c16320d90511af, []int{64} +} +func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b) +} +func (m *SetGroupMemberNicknameResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetGroupMemberNicknameResp.Marshal(b, m, deterministic) +} +func (dst *SetGroupMemberNicknameResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetGroupMemberNicknameResp.Merge(dst, src) +} +func (m *SetGroupMemberNicknameResp) XXX_Size() int { + return xxx_messageInfo_SetGroupMemberNicknameResp.Size(m) +} +func (m *SetGroupMemberNicknameResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetGroupMemberNicknameResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SetGroupMemberNicknameResp proto.InternalMessageInfo + +func (m *SetGroupMemberNicknameResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + func init() { proto.RegisterType((*CommonResp)(nil), "group.CommonResp") proto.RegisterType((*GroupAddMemberInfo)(nil), "group.GroupAddMemberInfo") @@ -3346,6 +3454,8 @@ func init() { proto.RegisterType((*MuteGroupResp)(nil), "group.MuteGroupResp") proto.RegisterType((*CancelMuteGroupReq)(nil), "group.CancelMuteGroupReq") proto.RegisterType((*CancelMuteGroupResp)(nil), "group.CancelMuteGroupResp") + proto.RegisterType((*SetGroupMemberNicknameReq)(nil), "group.SetGroupMemberNicknameReq") + proto.RegisterType((*SetGroupMemberNicknameResp)(nil), "group.SetGroupMemberNicknameResp") } // Reference imports to suppress errors if they are not otherwise used. @@ -3388,6 +3498,7 @@ type GroupClient interface { CancelMuteGroupMember(ctx context.Context, in *CancelMuteGroupMemberReq, opts ...grpc.CallOption) (*CancelMuteGroupMemberResp, error) MuteGroup(ctx context.Context, in *MuteGroupReq, opts ...grpc.CallOption) (*MuteGroupResp, error) CancelMuteGroup(ctx context.Context, in *CancelMuteGroupReq, opts ...grpc.CallOption) (*CancelMuteGroupResp, error) + SetGroupMemberNickname(ctx context.Context, in *SetGroupMemberNicknameReq, opts ...grpc.CallOption) (*SetGroupMemberNicknameResp, error) } type groupClient struct { @@ -3659,6 +3770,15 @@ func (c *groupClient) CancelMuteGroup(ctx context.Context, in *CancelMuteGroupRe return out, nil } +func (c *groupClient) SetGroupMemberNickname(ctx context.Context, in *SetGroupMemberNicknameReq, opts ...grpc.CallOption) (*SetGroupMemberNicknameResp, error) { + out := new(SetGroupMemberNicknameResp) + err := grpc.Invoke(ctx, "/group.group/SetGroupMemberNickname", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Group service type GroupServer interface { @@ -3691,6 +3811,7 @@ type GroupServer interface { CancelMuteGroupMember(context.Context, *CancelMuteGroupMemberReq) (*CancelMuteGroupMemberResp, error) MuteGroup(context.Context, *MuteGroupReq) (*MuteGroupResp, error) CancelMuteGroup(context.Context, *CancelMuteGroupReq) (*CancelMuteGroupResp, error) + SetGroupMemberNickname(context.Context, *SetGroupMemberNicknameReq) (*SetGroupMemberNicknameResp, error) } func RegisterGroupServer(s *grpc.Server, srv GroupServer) { @@ -4219,6 +4340,24 @@ func _Group_CancelMuteGroup_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _Group_SetGroupMemberNickname_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetGroupMemberNicknameReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GroupServer).SetGroupMemberNickname(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/group.group/SetGroupMemberNickname", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GroupServer).SetGroupMemberNickname(ctx, req.(*SetGroupMemberNicknameReq)) + } + return interceptor(ctx, in, info, handler) +} + var _Group_serviceDesc = grpc.ServiceDesc{ ServiceName: "group.group", HandlerType: (*GroupServer)(nil), @@ -4339,143 +4478,151 @@ var _Group_serviceDesc = grpc.ServiceDesc{ MethodName: "CancelMuteGroup", Handler: _Group_CancelMuteGroup_Handler, }, + { + MethodName: "SetGroupMemberNickname", + Handler: _Group_SetGroupMemberNickname_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "group/group.proto", } -func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_3c77315b028a1402) } - -var fileDescriptor_group_3c77315b028a1402 = []byte{ - // 2068 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0x07, 0xed, 0xc8, 0xb6, 0x9e, 0xad, 0xc8, 0x1e, 0x47, 0xb6, 0xc2, 0xf5, 0x66, 0xbd, 0xb3, - 0xe9, 0x22, 0xe8, 0x1f, 0x1b, 0xcd, 0x02, 0x39, 0x74, 0x8b, 0xa6, 0xf1, 0x9f, 0xc4, 0x4a, 0x22, - 0xbb, 0xa1, 0xd3, 0x4b, 0x2e, 0xa9, 0x56, 0x1c, 0x0b, 0xaa, 0x25, 0x92, 0xe6, 0x50, 0x4e, 0xdb, - 0xcb, 0xa2, 0x97, 0x05, 0xb6, 0xed, 0xa1, 0x45, 0x81, 0x3d, 0x15, 0x68, 0x73, 0xeb, 0xa1, 0x87, - 0x1e, 0xda, 0x73, 0xd1, 0x8f, 0xd1, 0x4f, 0xd1, 0xaf, 0x50, 0x70, 0x66, 0x38, 0x1c, 0x0e, 0x87, - 0xb4, 0x42, 0x25, 0xcd, 0x45, 0xc0, 0xbc, 0x79, 0xc3, 0xf7, 0x7b, 0x6f, 0xe6, 0xbd, 0x79, 0xef, - 0x8d, 0x60, 0x6d, 0x10, 0xfa, 0x93, 0x60, 0x97, 0xfd, 0xee, 0x04, 0xa1, 0x1f, 0xf9, 0xa8, 0xc6, - 0x06, 0xf6, 0xc7, 0x27, 0x01, 0xf1, 0x5e, 0x76, 0xba, 0xbb, 0xc1, 0xf9, 0x60, 0x97, 0xcd, 0xec, - 0x52, 0xf7, 0xfc, 0xe5, 0x2b, 0xba, 0xfb, 0x8a, 0x72, 0x4e, 0xfc, 0x23, 0x80, 0x7d, 0x7f, 0x3c, - 0xf6, 0x3d, 0x87, 0xd0, 0x00, 0xb5, 0x61, 0xf1, 0x30, 0x0c, 0xf7, 0x7d, 0x97, 0xb4, 0xad, 0x6d, - 0xeb, 0x4e, 0xcd, 0x49, 0x86, 0x68, 0x03, 0x16, 0x0e, 0xc3, 0xb0, 0x4b, 0x07, 0xed, 0xb9, 0x6d, - 0xeb, 0x4e, 0xdd, 0x11, 0x23, 0xfc, 0x18, 0xd0, 0xa3, 0x58, 0xd6, 0x03, 0xd7, 0xed, 0x92, 0xf1, - 0x17, 0x24, 0xec, 0x78, 0x67, 0x7e, 0xcc, 0xfd, 0x53, 0x4a, 0xc2, 0xce, 0x01, 0xfb, 0x4c, 0xdd, - 0x11, 0x23, 0xb4, 0x05, 0x75, 0xc7, 0x1f, 0x91, 0xa7, 0xe4, 0x92, 0x8c, 0xd8, 0x87, 0x6a, 0x4e, - 0x4a, 0xc0, 0xff, 0xb5, 0xe0, 0xfa, 0x7e, 0x48, 0x7a, 0x11, 0x61, 0x9f, 0x74, 0xc8, 0x05, 0x7a, - 0x00, 0xd7, 0x3b, 0xde, 0x30, 0xe2, 0x9f, 0x7e, 0x3a, 0xa4, 0x51, 0xdb, 0xda, 0x9e, 0xbf, 0xb3, - 0x7c, 0xf7, 0xe6, 0x0e, 0x57, 0x37, 0x2f, 0xdb, 0xd1, 0x16, 0xa0, 0x1f, 0x40, 0x9d, 0x71, 0xc5, - 0x93, 0x4c, 0xe6, 0xf2, 0xdd, 0xad, 0x1d, 0x4a, 0xc2, 0x4b, 0x12, 0xbe, 0xec, 0x05, 0xc3, 0x97, - 0x41, 0x2f, 0xec, 0x8d, 0xe9, 0x8e, 0xe4, 0x71, 0x52, 0x76, 0xb4, 0x0d, 0xcb, 0x27, 0x01, 0x09, - 0x7b, 0xd1, 0xd0, 0xf7, 0x3a, 0x07, 0xed, 0x79, 0xa6, 0x8c, 0x4a, 0x42, 0x36, 0x2c, 0x9d, 0x04, - 0x42, 0xd7, 0x6b, 0x6c, 0x5a, 0x8e, 0xd9, 0xea, 0x57, 0x1e, 0x09, 0xc5, 0x74, 0x4d, 0xac, 0x4e, - 0x49, 0xf8, 0x4b, 0x68, 0x66, 0x14, 0xae, 0xb2, 0x05, 0x59, 0x05, 0xe7, 0xdf, 0x48, 0x41, 0x1c, - 0xc2, 0xea, 0x23, 0x12, 0xb1, 0x31, 0x65, 0x73, 0xe4, 0x22, 0x86, 0xcd, 0x19, 0x0e, 0xa4, 0xc1, - 0xeb, 0x8e, 0x4a, 0xd2, 0xcd, 0x32, 0x57, 0x6e, 0x96, 0xf9, 0xac, 0x59, 0xf0, 0xd7, 0x16, 0xac, - 0x69, 0x42, 0x2b, 0xe9, 0xbd, 0x07, 0x0d, 0xa9, 0x08, 0x43, 0x3a, 0xcf, 0x8e, 0x46, 0xb9, 0xee, - 0xd9, 0x25, 0xf8, 0xb7, 0x16, 0x34, 0x4f, 0x05, 0x96, 0x44, 0xff, 0x8c, 0x3d, 0xad, 0x37, 0x3b, - 0x30, 0xaa, 0xde, 0x73, 0x86, 0xe3, 0x50, 0x7a, 0x98, 0xf0, 0x21, 0xac, 0x66, 0xc1, 0xd0, 0x00, - 0x7d, 0x5f, 0x75, 0x50, 0x01, 0x67, 0x4d, 0x9c, 0xfe, 0x74, 0xc2, 0x51, 0x98, 0xf0, 0xaf, 0xc0, - 0x4e, 0xec, 0xfb, 0x20, 0x08, 0x46, 0xc3, 0x3e, 0xfb, 0x7e, 0xac, 0x6f, 0xac, 0x9e, 0x0a, 0xd1, - 0x2a, 0x87, 0x68, 0xd8, 0xd8, 0x5b, 0x00, 0x0f, 0x43, 0x7f, 0x9c, 0xd9, 0x5a, 0x85, 0x82, 0xff, - 0x64, 0xc1, 0x07, 0x85, 0xc2, 0x2b, 0x6d, 0xf3, 0x13, 0x58, 0x4d, 0xc2, 0xc1, 0x84, 0xd0, 0x48, - 0xd9, 0xe9, 0x8f, 0x8a, 0x76, 0x45, 0xb0, 0x3a, 0xb9, 0x85, 0x38, 0x82, 0xad, 0x47, 0x24, 0x8a, - 0xb1, 0x3a, 0xe4, 0xc2, 0x60, 0x9c, 0xa2, 0xc0, 0x35, 0xdb, 0xbe, 0xfe, 0xd9, 0x82, 0x0f, 0x4b, - 0xc4, 0x56, 0xda, 0x65, 0xa3, 0x5d, 0xe6, 0xaa, 0xda, 0xe5, 0x5f, 0x16, 0xb4, 0x9e, 0x87, 0x3d, - 0x8f, 0x9e, 0x91, 0x90, 0x4d, 0xb2, 0x28, 0x15, 0x5b, 0xa4, 0x0d, 0x8b, 0xc2, 0xf5, 0x85, 0x49, - 0x92, 0x21, 0xfa, 0x14, 0xae, 0x9f, 0x8c, 0x5c, 0x35, 0xc2, 0x71, 0xcb, 0x68, 0xd4, 0x98, 0xef, - 0x98, 0xbc, 0x52, 0xf9, 0xb8, 0x89, 0x34, 0xaa, 0x6e, 0xc7, 0x6b, 0xe5, 0x51, 0xa5, 0xa6, 0x45, - 0x95, 0x27, 0xb0, 0x61, 0x52, 0xa0, 0x9a, 0x07, 0x7d, 0x65, 0xc1, 0xca, 0x63, 0x7f, 0xe8, 0xc9, - 0x7b, 0xa8, 0xd8, 0x0a, 0xb7, 0x00, 0x1c, 0x72, 0xd1, 0x25, 0x94, 0xf6, 0x06, 0x44, 0x58, 0x40, - 0xa1, 0x94, 0x45, 0xc2, 0xab, 0x35, 0xc6, 0x7b, 0xd0, 0x50, 0x70, 0x54, 0x53, 0xe6, 0x3f, 0xb1, - 0x4b, 0x6a, 0xfe, 0x18, 0x4f, 0xf8, 0x1e, 0x25, 0x22, 0xde, 0xab, 0x28, 0xac, 0x72, 0xbb, 0xeb, - 0xa7, 0x5f, 0xb1, 0xcc, 0x7c, 0xce, 0x32, 0x4a, 0xa8, 0xb8, 0xa6, 0x87, 0x8a, 0x78, 0xfe, 0xa8, - 0xe7, 0xb9, 0x23, 0xe2, 0xc6, 0x4e, 0xcf, 0xf7, 0x53, 0xa1, 0x20, 0x0c, 0x2b, 0x7c, 0xe4, 0x10, - 0x3a, 0x19, 0x45, 0xed, 0x05, 0x16, 0x2f, 0x32, 0x34, 0xfc, 0x0c, 0xb6, 0x8a, 0x55, 0xab, 0x66, - 0xae, 0x33, 0x58, 0x79, 0x36, 0x19, 0x46, 0x53, 0x6c, 0xfd, 0x6c, 0xd7, 0xe0, 0x1e, 0x34, 0x14, - 0x39, 0xd5, 0xb0, 0xbe, 0xb6, 0xa0, 0x95, 0x44, 0xdb, 0x34, 0xe5, 0x29, 0x47, 0x3d, 0x53, 0x28, - 0x8b, 0x03, 0xe4, 0xc3, 0xe1, 0x28, 0x22, 0x21, 0xdb, 0xd0, 0x9a, 0x23, 0x46, 0xb1, 0xbc, 0x63, - 0xf2, 0x8b, 0xe8, 0x94, 0x5c, 0xb0, 0x9d, 0xac, 0x39, 0xc9, 0x10, 0xff, 0xcd, 0x82, 0x0d, 0x13, - 0xc6, 0x4a, 0x97, 0xc1, 0x43, 0x80, 0x71, 0x9a, 0x0b, 0xf2, 0x6b, 0xe0, 0xd3, 0xa2, 0x70, 0xc7, - 0xa5, 0x3d, 0x9c, 0x8c, 0x46, 0xec, 0x36, 0x55, 0x56, 0xc6, 0x92, 0x3d, 0x01, 0x97, 0xeb, 0x91, - 0x0c, 0xf1, 0xef, 0x73, 0x70, 0x65, 0x62, 0x54, 0x1a, 0x04, 0x14, 0x58, 0x73, 0x2c, 0x63, 0x52, - 0xc5, 0xcd, 0x16, 0x04, 0xfe, 0x68, 0xc1, 0xa6, 0x11, 0xd2, 0xfb, 0x34, 0x21, 0xfe, 0xbb, 0x05, - 0xe8, 0xc9, 0xb0, 0x7f, 0xae, 0xf0, 0x95, 0x1b, 0xe9, 0xdb, 0xb0, 0x1a, 0xf3, 0x13, 0x97, 0x2b, - 0xae, 0x98, 0x2a, 0x47, 0x8f, 0xc1, 0x3b, 0xa4, 0x47, 0x7d, 0x4f, 0x98, 0x4b, 0x8c, 0x74, 0x63, - 0xd5, 0xca, 0x5d, 0x6e, 0x41, 0x73, 0xb9, 0xcf, 0xa1, 0xde, 0x71, 0xef, 0xf2, 0xd0, 0x51, 0x78, - 0xd5, 0x33, 0xd1, 0x2c, 0xe0, 0xf0, 0x02, 0x45, 0x8c, 0xf0, 0x97, 0xb0, 0x9e, 0x53, 0xb7, 0xd2, - 0x06, 0xdc, 0x83, 0x86, 0x44, 0xa1, 0xec, 0xc1, 0xaa, 0x70, 0x75, 0x39, 0xe7, 0x64, 0xd9, 0xf0, - 0x84, 0xf9, 0x7a, 0x7c, 0x1d, 0x10, 0x97, 0xa1, 0x48, 0x7c, 0x3d, 0x1b, 0x68, 0xad, 0x5c, 0xa0, - 0xdd, 0x86, 0x65, 0x3f, 0x1f, 0xa7, 0xfc, 0x29, 0xe3, 0xd4, 0x57, 0xdc, 0x21, 0x72, 0x72, 0x67, - 0xaa, 0x55, 0xa6, 0xce, 0xd7, 0x53, 0x76, 0xfc, 0x0f, 0x0b, 0x6e, 0x74, 0xbc, 0xcb, 0x61, 0x44, - 0x62, 0x64, 0xcf, 0x7d, 0x19, 0xa1, 0xaf, 0x8e, 0xc3, 0xc5, 0x97, 0x54, 0x7a, 0xd0, 0xae, 0x65, - 0x0e, 0xda, 0x77, 0x61, 0x8d, 0xcb, 0x52, 0x4f, 0x6b, 0x8d, 0x9d, 0xd6, 0xfc, 0x44, 0xe9, 0xa1, - 0xfb, 0xb5, 0x05, 0x2d, 0x03, 0xec, 0xff, 0xeb, 0xd1, 0xf1, 0xe0, 0x86, 0x4c, 0xca, 0x47, 0xa3, - 0x69, 0x9c, 0x75, 0xb6, 0x84, 0xf7, 0x0f, 0xca, 0xbd, 0xa4, 0x08, 0x7c, 0xaf, 0xf1, 0xea, 0x1b, - 0x0b, 0x96, 0xf6, 0xbb, 0xa7, 0x8c, 0x6d, 0xa6, 0x1a, 0xef, 0x0e, 0x34, 0xb9, 0xac, 0x1e, 0x8d, - 0x48, 0x78, 0xdc, 0x1b, 0x27, 0x69, 0x9f, 0x4e, 0x46, 0xb7, 0x45, 0x85, 0xca, 0x49, 0x1d, 0x57, - 0x98, 0x2a, 0x4b, 0x8c, 0xc3, 0xfb, 0x72, 0x62, 0xac, 0x78, 0x53, 0xb6, 0x04, 0x36, 0xf6, 0x65, - 0xbe, 0x2d, 0x29, 0x01, 0x1d, 0x00, 0xfc, 0xa4, 0x37, 0x18, 0x7a, 0xcc, 0xd4, 0xa2, 0x9f, 0x71, - 0xdb, 0x00, 0x5d, 0x64, 0xf7, 0x29, 0xaf, 0xa3, 0xac, 0x9b, 0x62, 0x0b, 0x5f, 0x5b, 0xb0, 0x92, - 0xa2, 0xa2, 0x01, 0xfa, 0x1e, 0xd4, 0x13, 0xf3, 0x51, 0xd1, 0x85, 0x69, 0x26, 0xd9, 0x89, 0xa0, - 0x3b, 0x29, 0xc7, 0x5b, 0xc2, 0x29, 0x6d, 0x31, 0x19, 0x53, 0x86, 0xb2, 0xe6, 0xa4, 0x04, 0x7c, - 0x99, 0x42, 0xa4, 0xb1, 0xe5, 0xb2, 0x32, 0xad, 0xb7, 0x63, 0x9b, 0x7c, 0x38, 0xc1, 0x7f, 0xb1, - 0xa0, 0xa1, 0x08, 0x7e, 0x5f, 0xc6, 0xb1, 0x61, 0x29, 0xb1, 0x85, 0xb0, 0x8d, 0x1c, 0xe3, 0x93, - 0xb4, 0xc7, 0x62, 0x70, 0x77, 0x37, 0xeb, 0xee, 0xee, 0x14, 0x3a, 0x9f, 0x43, 0x8b, 0x0f, 0x79, - 0xaf, 0xea, 0x34, 0xea, 0x45, 0x13, 0x5a, 0xfe, 0xd1, 0x0d, 0x58, 0xe0, 0x6c, 0xc9, 0x4d, 0xca, - 0x47, 0x53, 0x1c, 0xbe, 0x36, 0x6c, 0x98, 0x84, 0xf1, 0xca, 0x0c, 0x89, 0x29, 0x56, 0x4e, 0xfb, - 0x23, 0x72, 0x25, 0x08, 0x16, 0xb6, 0xdc, 0x24, 0xac, 0xf0, 0x51, 0xb6, 0x15, 0x39, 0xaf, 0xb5, - 0x22, 0xa7, 0x48, 0xca, 0x5a, 0xb0, 0x9e, 0xc3, 0x41, 0x03, 0xfc, 0x14, 0xae, 0x1f, 0x90, 0x11, - 0x51, 0x5a, 0x98, 0xb3, 0x18, 0x7d, 0x0d, 0x9a, 0x99, 0xaf, 0xd1, 0x00, 0x77, 0xa1, 0x99, 0x6c, - 0xec, 0xde, 0x2f, 0x3b, 0xee, 0xac, 0x12, 0xee, 0xa7, 0x0d, 0x40, 0xfe, 0x39, 0x1a, 0xa0, 0xef, - 0xa4, 0x81, 0x52, 0x38, 0x51, 0xee, 0x2c, 0x4b, 0x06, 0xfc, 0xcf, 0x5c, 0x09, 0x42, 0xf7, 0xbb, - 0xa7, 0xe5, 0xb0, 0x6c, 0x58, 0x8a, 0x8d, 0xa6, 0x84, 0x4e, 0x39, 0xd6, 0x5c, 0x63, 0xfe, 0xed, - 0xf8, 0xb0, 0x61, 0xff, 0xfe, 0x9d, 0xcf, 0xf3, 0x19, 0x6e, 0x1a, 0xa0, 0x1f, 0xc3, 0x22, 0xbf, - 0x37, 0x12, 0x57, 0x9e, 0xf6, 0xba, 0x49, 0x96, 0xa1, 0x43, 0x83, 0x7f, 0x7f, 0xcb, 0xa8, 0x04, - 0xaf, 0x55, 0x0b, 0xb4, 0xb8, 0x05, 0xc0, 0x25, 0x28, 0xe1, 0x4f, 0xa1, 0xe0, 0xdf, 0x59, 0xd0, - 0x76, 0xc8, 0xd8, 0xbf, 0x24, 0x6f, 0x64, 0xfe, 0x36, 0x2c, 0x72, 0x27, 0xa0, 0x22, 0xff, 0x4e, - 0x86, 0x6f, 0xd4, 0xef, 0x76, 0xb5, 0x7e, 0xb7, 0x8b, 0xbb, 0x70, 0xb3, 0x00, 0x0d, 0xbf, 0xf8, - 0xe9, 0xa4, 0xdf, 0x27, 0x94, 0x8a, 0x8e, 0x72, 0x32, 0x8c, 0x3d, 0xf4, 0xac, 0x37, 0x1c, 0x11, - 0x57, 0xa0, 0x11, 0x23, 0xfc, 0xb5, 0x05, 0xad, 0x07, 0xae, 0xfb, 0x2e, 0x54, 0x73, 0xf3, 0xaa, - 0xb9, 0xa5, 0xaa, 0x3d, 0x86, 0x0d, 0x13, 0x94, 0x4a, 0x7a, 0x0d, 0xa1, 0x79, 0x30, 0xa4, 0xe3, - 0x21, 0xa5, 0x32, 0x46, 0xd8, 0xb0, 0xe4, 0x6b, 0x3d, 0x59, 0x3f, 0x98, 0x3a, 0x7b, 0x6f, 0xc3, - 0xe2, 0x20, 0x9b, 0xdd, 0x8a, 0x21, 0x3e, 0x84, 0xd5, 0xac, 0x28, 0xde, 0x66, 0xe8, 0x4f, 0xd3, - 0x66, 0x48, 0x99, 0xf0, 0x5f, 0x2d, 0x40, 0xdd, 0x49, 0x44, 0xb4, 0xeb, 0xe4, 0x1d, 0xa1, 0x8e, - 0x0d, 0x37, 0x51, 0x9b, 0x46, 0x62, 0x84, 0x30, 0xac, 0x8c, 0x27, 0x11, 0x71, 0x4f, 0x49, 0xdf, - 0xf7, 0x5c, 0xca, 0xaa, 0xbf, 0x86, 0x93, 0xa1, 0xe1, 0x23, 0x58, 0xcf, 0x21, 0xad, 0xa6, 0xf4, - 0x6f, 0x2c, 0x68, 0xef, 0xf7, 0xbc, 0x3e, 0x19, 0xbd, 0x7f, 0xd5, 0xf1, 0x31, 0xdc, 0x2c, 0xc0, - 0x52, 0x4d, 0xb9, 0x33, 0x58, 0x91, 0x5f, 0x7a, 0x97, 0x07, 0x70, 0x0f, 0x1a, 0x8a, 0x9c, 0x6a, - 0x58, 0x47, 0x80, 0x34, 0xdd, 0xdf, 0x25, 0xe2, 0x23, 0x58, 0xcf, 0x49, 0xab, 0x84, 0xfb, 0xee, - 0x37, 0x6b, 0xc0, 0xdf, 0x61, 0xd1, 0x0f, 0x61, 0xb9, 0x9f, 0x3e, 0xf3, 0xa1, 0x56, 0xb2, 0x2e, - 0xf3, 0xd6, 0x69, 0x6f, 0x98, 0xc8, 0x34, 0x40, 0xf7, 0xa0, 0xfe, 0xf3, 0xa4, 0x07, 0x8c, 0xd6, - 0x05, 0x93, 0xda, 0x9d, 0xb6, 0x6f, 0xe4, 0x89, 0x7c, 0xdd, 0x45, 0xd2, 0x60, 0x94, 0xeb, 0xd4, - 0xd6, 0xa6, 0x5c, 0x97, 0xed, 0x43, 0xee, 0x41, 0x63, 0xa0, 0x3e, 0xcf, 0xa1, 0xcd, 0xe4, 0xb1, - 0x55, 0x7b, 0x29, 0xb4, 0xdb, 0xe6, 0x09, 0x1a, 0xa0, 0xfb, 0xb0, 0x42, 0x95, 0x97, 0x2c, 0x94, - 0xe8, 0xa6, 0xbd, 0xb5, 0xd9, 0x9b, 0x46, 0x3a, 0x0d, 0xd0, 0xcf, 0x60, 0x73, 0x60, 0x7e, 0x46, - 0x42, 0x1f, 0x6b, 0x52, 0xf3, 0xcf, 0x38, 0x36, 0xbe, 0x8a, 0x85, 0x06, 0xe8, 0x0c, 0x6e, 0x0e, - 0x8a, 0xde, 0x64, 0xd0, 0x27, 0xe9, 0x07, 0x0a, 0x1f, 0x8b, 0xec, 0xdb, 0x57, 0x33, 0xd1, 0x00, - 0x3d, 0x03, 0x14, 0xe5, 0x1e, 0x26, 0xd0, 0x96, 0x58, 0x6b, 0x7c, 0x74, 0xb1, 0x3f, 0x2c, 0x99, - 0xa5, 0x01, 0xea, 0x43, 0x7b, 0x50, 0xd0, 0xf5, 0x46, 0x38, 0xf3, 0x32, 0x6e, 0xec, 0xf8, 0xdb, - 0x9f, 0x5c, 0xc9, 0xc3, 0x71, 0x0f, 0x72, 0x6d, 0x5b, 0x89, 0xdb, 0xd8, 0x75, 0x96, 0xb8, 0x0b, - 0xfa, 0xbd, 0xcf, 0x61, 0x7d, 0x90, 0xef, 0x63, 0x22, 0xf3, 0x2a, 0x79, 0xca, 0x6e, 0x95, 0x4d, - 0xd3, 0x00, 0x1d, 0x41, 0xf3, 0x3c, 0xdb, 0x98, 0x43, 0xc9, 0xdf, 0x03, 0xf2, 0xfd, 0x49, 0xdb, - 0x2e, 0x9a, 0x92, 0x2a, 0x6b, 0x9d, 0x2e, 0x55, 0xe5, 0x7c, 0xf3, 0x4d, 0x55, 0xd9, 0xd4, 0x22, - 0x3b, 0x86, 0xb5, 0xa1, 0xde, 0xfc, 0x41, 0x1f, 0x24, 0xfd, 0x1a, 0x43, 0x37, 0xcb, 0xde, 0x2a, - 0x9e, 0xe4, 0xdf, 0x1b, 0xe8, 0x8d, 0x15, 0xf9, 0x3d, 0x53, 0x8f, 0xc7, 0xde, 0x2a, 0x9e, 0xe4, - 0x8e, 0xaa, 0xe6, 0xff, 0xd2, 0x51, 0xb5, 0x1a, 0xc3, 0xde, 0x34, 0xd2, 0x69, 0x80, 0x3e, 0x83, - 0xa5, 0x84, 0x86, 0x90, 0xc6, 0x14, 0x2f, 0x5c, 0xcf, 0xd1, 0x78, 0x68, 0x92, 0x31, 0x03, 0xe9, - 0x1c, 0x54, 0x0d, 0x4d, 0xd9, 0x32, 0xfb, 0x99, 0x2c, 0xfe, 0x94, 0xba, 0x50, 0x6e, 0x90, 0xb1, - 0x3e, 0x95, 0x1b, 0x64, 0x2e, 0x28, 0xe3, 0xd3, 0xa3, 0xd5, 0x71, 0xf2, 0xf4, 0xe4, 0xeb, 0x4c, - 0x79, 0x7a, 0x0c, 0xa5, 0x5f, 0x1c, 0xe5, 0x95, 0x62, 0x4d, 0x46, 0xf9, 0x6c, 0x39, 0x28, 0xa3, - 0xbc, 0x56, 0xd7, 0xc5, 0xaa, 0xe5, 0xcb, 0x91, 0x02, 0x77, 0x13, 0x79, 0x70, 0x81, 0xbb, 0xc9, - 0xd4, 0xf4, 0x05, 0xb4, 0x8c, 0xf9, 0x38, 0xfa, 0x48, 0xac, 0x2b, 0xaa, 0x1d, 0xec, 0xed, 0x72, - 0x06, 0x0e, 0x37, 0x9f, 0x10, 0x4b, 0xb8, 0xc6, 0xb4, 0x5d, 0xc2, 0x2d, 0xc8, 0xa4, 0xef, 0xc3, - 0x8a, 0x9a, 0xac, 0xca, 0xa3, 0xa8, 0x25, 0xcb, 0xf2, 0x28, 0xe6, 0x32, 0xdb, 0x23, 0x68, 0x6a, - 0xe9, 0x91, 0xdc, 0xca, 0x7c, 0x0a, 0x27, 0xb7, 0xd2, 0x94, 0x51, 0xbd, 0x80, 0x96, 0x31, 0xdd, - 0x92, 0x96, 0x2b, 0x4a, 0x0c, 0xa5, 0xe5, 0x8a, 0xb3, 0xb5, 0x7b, 0x50, 0x97, 0x64, 0x79, 0xf6, - 0xd5, 0xd4, 0x46, 0x9e, 0xfd, 0x6c, 0x06, 0x72, 0x04, 0x4d, 0xed, 0xa3, 0x52, 0xbb, 0x7c, 0x7a, - 0x24, 0xb5, 0x33, 0xe4, 0x32, 0x7b, 0xcd, 0x17, 0x8d, 0x1d, 0xfe, 0x77, 0xb1, 0xcf, 0xd9, 0xef, - 0x17, 0x0b, 0xec, 0xbf, 0x60, 0x9f, 0xfd, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xa9, 0x2b, 0x24, 0xa7, - 0x4a, 0x26, 0x00, 0x00, +func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_95c16320d90511af) } + +var fileDescriptor_group_95c16320d90511af = []byte{ + // 2138 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x1a, 0x4d, 0x6f, 0x1c, 0x49, + 0x55, 0xed, 0xf1, 0xd8, 0x9e, 0x67, 0x4f, 0xc6, 0x2e, 0xef, 0xd8, 0xe3, 0x5e, 0x6f, 0xd6, 0xa9, + 0x0d, 0xab, 0x88, 0x0f, 0x5b, 0x64, 0xa5, 0x1c, 0x58, 0x44, 0x88, 0x3f, 0x12, 0x4f, 0x92, 0xb1, + 0x49, 0x3b, 0x5c, 0x22, 0xa1, 0x30, 0x3b, 0x5d, 0x1e, 0x0d, 0x9e, 0xe9, 0x6e, 0x77, 0xf5, 0x38, + 0xc0, 0x65, 0xc5, 0x65, 0xa5, 0x05, 0x0e, 0x20, 0x24, 0x4e, 0x48, 0xb0, 0x27, 0x38, 0x70, 0xe0, + 0x00, 0x67, 0xc4, 0xcf, 0xe0, 0x57, 0x70, 0xe2, 0x8e, 0xba, 0xaa, 0xba, 0xba, 0xba, 0xab, 0xba, + 0x3d, 0x99, 0x49, 0xc8, 0x65, 0xa4, 0xf7, 0xea, 0x55, 0xbf, 0x8f, 0x7a, 0xef, 0xd5, 0x7b, 0xaf, + 0x06, 0xd6, 0xfa, 0xa1, 0x3f, 0x0e, 0xf6, 0xd8, 0xef, 0x6e, 0x10, 0xfa, 0x91, 0x8f, 0xaa, 0x0c, + 0xb0, 0x6f, 0x9d, 0x06, 0xc4, 0x7b, 0xd9, 0xee, 0xec, 0x05, 0x17, 0xfd, 0x3d, 0xb6, 0xb2, 0x47, + 0xdd, 0x8b, 0x97, 0xaf, 0xe8, 0xde, 0x2b, 0xca, 0x29, 0xf1, 0xf7, 0x00, 0x0e, 0xfc, 0xd1, 0xc8, + 0xf7, 0x1c, 0x42, 0x03, 0xd4, 0x82, 0xc5, 0xa3, 0x30, 0x3c, 0xf0, 0x5d, 0xd2, 0xb2, 0x76, 0xac, + 0x3b, 0x55, 0x27, 0x01, 0xd1, 0x06, 0x2c, 0x1c, 0x85, 0x61, 0x87, 0xf6, 0x5b, 0x73, 0x3b, 0xd6, + 0x9d, 0x9a, 0x23, 0x20, 0xfc, 0x18, 0xd0, 0xa3, 0x98, 0xd7, 0x03, 0xd7, 0xed, 0x90, 0xd1, 0x67, + 0x24, 0x6c, 0x7b, 0xe7, 0x7e, 0x4c, 0xfd, 0x43, 0x4a, 0xc2, 0xf6, 0x21, 0xfb, 0x4c, 0xcd, 0x11, + 0x10, 0xda, 0x86, 0x9a, 0xe3, 0x0f, 0xc9, 0x53, 0x72, 0x45, 0x86, 0xec, 0x43, 0x55, 0x27, 0x45, + 0xe0, 0xff, 0x58, 0x70, 0xe3, 0x20, 0x24, 0xdd, 0x88, 0xb0, 0x4f, 0x3a, 0xe4, 0x12, 0x3d, 0x80, + 0x1b, 0x6d, 0x6f, 0x10, 0xf1, 0x4f, 0x3f, 0x1d, 0xd0, 0xa8, 0x65, 0xed, 0x54, 0xee, 0x2c, 0xdf, + 0xdd, 0xda, 0xe5, 0xea, 0xea, 0xbc, 0x9d, 0xdc, 0x06, 0xf4, 0x1d, 0xa8, 0x31, 0xaa, 0x78, 0x91, + 0xf1, 0x5c, 0xbe, 0xbb, 0xbd, 0x4b, 0x49, 0x78, 0x45, 0xc2, 0x97, 0xdd, 0x60, 0xf0, 0x32, 0xe8, + 0x86, 0xdd, 0x11, 0xdd, 0x95, 0x34, 0x4e, 0x4a, 0x8e, 0x76, 0x60, 0xf9, 0x34, 0x20, 0x61, 0x37, + 0x1a, 0xf8, 0x5e, 0xfb, 0xb0, 0x55, 0x61, 0xca, 0xa8, 0x28, 0x64, 0xc3, 0xd2, 0x69, 0x20, 0x74, + 0x9d, 0x67, 0xcb, 0x12, 0x66, 0xbb, 0x5f, 0x79, 0x24, 0x14, 0xcb, 0x55, 0xb1, 0x3b, 0x45, 0xe1, + 0xcf, 0xa1, 0x91, 0x51, 0x78, 0x9a, 0x23, 0xc8, 0x2a, 0x58, 0x79, 0x2d, 0x05, 0x71, 0x08, 0xab, + 0x8f, 0x48, 0xc4, 0x60, 0xca, 0xd6, 0xc8, 0x65, 0x2c, 0x36, 0x27, 0x38, 0x94, 0x06, 0xaf, 0x39, + 0x2a, 0x2a, 0x6f, 0x96, 0xb9, 0x72, 0xb3, 0x54, 0xb2, 0x66, 0xc1, 0x5f, 0x5a, 0xb0, 0x96, 0x63, + 0x3a, 0x95, 0xde, 0xfb, 0x50, 0x97, 0x8a, 0x30, 0x49, 0x2b, 0xcc, 0x35, 0xca, 0x75, 0xcf, 0x6e, + 0xc1, 0xbf, 0xb2, 0xa0, 0x71, 0x26, 0x64, 0x49, 0xf4, 0xcf, 0xd8, 0xd3, 0x7a, 0x3d, 0x87, 0x51, + 0xf5, 0x9e, 0x33, 0xb8, 0x43, 0xa9, 0x33, 0xe1, 0x23, 0x58, 0xcd, 0x0a, 0x43, 0x03, 0xf4, 0x6d, + 0x35, 0x40, 0x85, 0x38, 0x6b, 0xc2, 0xfb, 0xd3, 0x05, 0x47, 0x21, 0xc2, 0x3f, 0x07, 0x3b, 0xb1, + 0xef, 0x83, 0x20, 0x18, 0x0e, 0x7a, 0xec, 0xfb, 0xb1, 0xbe, 0xb1, 0x7a, 0xaa, 0x88, 0x56, 0xb9, + 0x88, 0x86, 0x83, 0xbd, 0x09, 0xf0, 0x30, 0xf4, 0x47, 0x99, 0xa3, 0x55, 0x30, 0xf8, 0x0f, 0x16, + 0xbc, 0x5f, 0xc8, 0x7c, 0xaa, 0x63, 0x7e, 0x02, 0xab, 0x49, 0x3a, 0x18, 0x13, 0x1a, 0x29, 0x27, + 0xfd, 0x61, 0xd1, 0xa9, 0x08, 0x52, 0x47, 0xdb, 0x88, 0x23, 0xd8, 0x7e, 0x44, 0xa2, 0x58, 0x56, + 0x87, 0x5c, 0x1a, 0x8c, 0x53, 0x94, 0xb8, 0x66, 0x3b, 0xd7, 0x3f, 0x5a, 0xf0, 0x41, 0x09, 0xdb, + 0xa9, 0x4e, 0xd9, 0x68, 0x97, 0xb9, 0x69, 0xed, 0xf2, 0x4f, 0x0b, 0x9a, 0xcf, 0xc3, 0xae, 0x47, + 0xcf, 0x49, 0xc8, 0x16, 0x59, 0x96, 0x8a, 0x2d, 0xd2, 0x82, 0x45, 0x11, 0xfa, 0xc2, 0x24, 0x09, + 0x88, 0x3e, 0x86, 0x1b, 0xa7, 0x43, 0x57, 0xcd, 0x70, 0xdc, 0x32, 0x39, 0x6c, 0x4c, 0x77, 0x42, + 0x5e, 0xa9, 0x74, 0xdc, 0x44, 0x39, 0x6c, 0xde, 0x8e, 0xf3, 0xe5, 0x59, 0xa5, 0x9a, 0xcb, 0x2a, + 0x4f, 0x60, 0xc3, 0xa4, 0xc0, 0x74, 0x11, 0xf4, 0x85, 0x05, 0x2b, 0x8f, 0xfd, 0x81, 0x27, 0xef, + 0xa1, 0x62, 0x2b, 0xdc, 0x04, 0x70, 0xc8, 0x65, 0x87, 0x50, 0xda, 0xed, 0x13, 0x61, 0x01, 0x05, + 0x53, 0x96, 0x09, 0xaf, 0xd7, 0x18, 0xef, 0x43, 0x5d, 0x91, 0x63, 0x3a, 0x65, 0xfe, 0x1d, 0x87, + 0x64, 0x2e, 0x1e, 0xe3, 0x05, 0xdf, 0xa3, 0x44, 0xe4, 0x7b, 0x55, 0x0a, 0xab, 0xdc, 0xee, 0x79, + 0xef, 0x57, 0x2c, 0x53, 0xd1, 0x2c, 0xa3, 0xa4, 0x8a, 0xf9, 0x7c, 0xaa, 0x88, 0xd7, 0x8f, 0xbb, + 0x9e, 0x3b, 0x24, 0x6e, 0x1c, 0xf4, 0xfc, 0x3c, 0x15, 0x0c, 0xc2, 0xb0, 0xc2, 0x21, 0x87, 0xd0, + 0xf1, 0x30, 0x6a, 0x2d, 0xb0, 0x7c, 0x91, 0xc1, 0xe1, 0x67, 0xb0, 0x5d, 0xac, 0xda, 0x74, 0xe6, + 0x3a, 0x87, 0x95, 0x67, 0xe3, 0x41, 0x34, 0xc1, 0xd1, 0xcf, 0x76, 0x0d, 0xee, 0x43, 0x5d, 0xe1, + 0x33, 0x9d, 0xac, 0x5f, 0x59, 0xd0, 0x4c, 0xb2, 0x6d, 0x5a, 0xf2, 0x94, 0x4b, 0x3d, 0x53, 0x2a, + 0x8b, 0x13, 0xe4, 0xc3, 0xc1, 0x30, 0x22, 0x21, 0x3b, 0xd0, 0xaa, 0x23, 0xa0, 0x98, 0xdf, 0x09, + 0xf9, 0x69, 0x74, 0x46, 0x2e, 0xd9, 0x49, 0x56, 0x9d, 0x04, 0xc4, 0x7f, 0xb5, 0x60, 0xc3, 0x24, + 0xe3, 0x54, 0x97, 0xc1, 0x43, 0x80, 0x51, 0x5a, 0x0b, 0xf2, 0x6b, 0xe0, 0xe3, 0xa2, 0x74, 0xc7, + 0xb9, 0x3d, 0x1c, 0x0f, 0x87, 0xec, 0x36, 0x55, 0x76, 0xc6, 0x9c, 0x3d, 0x21, 0x2e, 0xd7, 0x23, + 0x01, 0xf1, 0x6f, 0x34, 0x71, 0x65, 0x61, 0x54, 0x9a, 0x04, 0x14, 0xb1, 0xe6, 0x58, 0xc5, 0xa4, + 0xb2, 0x9b, 0x2d, 0x09, 0xfc, 0xce, 0x82, 0x4d, 0xa3, 0x48, 0xef, 0xd2, 0x84, 0xf8, 0x6f, 0x16, + 0xa0, 0x27, 0x83, 0xde, 0x85, 0x42, 0x57, 0x6e, 0xa4, 0xaf, 0xc3, 0x6a, 0x4c, 0x4f, 0x5c, 0xae, + 0xb8, 0x62, 0x2a, 0x0d, 0x1f, 0x0b, 0xef, 0x90, 0x2e, 0xf5, 0x3d, 0x61, 0x2e, 0x01, 0xe5, 0x8d, + 0x55, 0x2d, 0x0f, 0xb9, 0x85, 0x5c, 0xc8, 0x7d, 0x0a, 0xb5, 0xb6, 0x7b, 0x97, 0xa7, 0x8e, 0xc2, + 0xab, 0x9e, 0xb1, 0x66, 0x09, 0x87, 0x37, 0x28, 0x02, 0xc2, 0x9f, 0xc3, 0xba, 0xa6, 0xee, 0x54, + 0x07, 0x70, 0x0f, 0xea, 0x52, 0x0a, 0xe5, 0x0c, 0x56, 0x45, 0xa8, 0xcb, 0x35, 0x27, 0x4b, 0x86, + 0xc7, 0x2c, 0xd6, 0xe3, 0xeb, 0x80, 0xb8, 0x4c, 0x8a, 0x24, 0xd6, 0xb3, 0x89, 0xd6, 0xd2, 0x12, + 0xed, 0x0e, 0x2c, 0xfb, 0x7a, 0x9e, 0xf2, 0x27, 0xcc, 0x53, 0x5f, 0xf0, 0x80, 0xd0, 0xf8, 0xce, + 0xd4, 0xab, 0x4c, 0x5c, 0xaf, 0xa7, 0xe4, 0xf8, 0xef, 0x16, 0xbc, 0xd7, 0xf6, 0xae, 0x06, 0x11, + 0x89, 0x25, 0x7b, 0xee, 0xcb, 0x0c, 0x7d, 0x7d, 0x1e, 0x2e, 0xbe, 0xa4, 0x52, 0x47, 0x9b, 0xcf, + 0x38, 0xda, 0x37, 0x61, 0x8d, 0xf3, 0x52, 0xbd, 0xb5, 0xca, 0xbc, 0x55, 0x5f, 0x28, 0x75, 0xba, + 0x5f, 0x58, 0xd0, 0x34, 0x88, 0xfd, 0x7f, 0x75, 0x1d, 0x0f, 0xde, 0x93, 0x45, 0xf9, 0x70, 0x38, + 0x49, 0xb0, 0xce, 0x56, 0xf0, 0xfe, 0x56, 0xb9, 0x97, 0x14, 0x86, 0xef, 0x34, 0x5f, 0xfd, 0xde, + 0x82, 0xa5, 0x83, 0xce, 0x19, 0x23, 0x9b, 0xa9, 0xc7, 0xbb, 0x03, 0x0d, 0xce, 0xab, 0x4b, 0x23, + 0x12, 0x9e, 0x74, 0x47, 0x49, 0xd9, 0x97, 0x47, 0xa3, 0xdb, 0xa2, 0x43, 0xe5, 0xa8, 0xb6, 0x2b, + 0x4c, 0x95, 0x45, 0xc6, 0xe9, 0x7d, 0x39, 0x31, 0x56, 0x7c, 0x28, 0xdb, 0x42, 0x36, 0xf6, 0x65, + 0x7e, 0x2c, 0x29, 0x02, 0x1d, 0x02, 0xfc, 0xa0, 0xdb, 0x1f, 0x78, 0xcc, 0xd4, 0x62, 0x9e, 0x71, + 0xdb, 0x20, 0xba, 0xa8, 0xee, 0x53, 0x5a, 0x47, 0xd9, 0x37, 0xc1, 0x11, 0x7e, 0x65, 0xc1, 0x4a, + 0x2a, 0x15, 0x0d, 0xd0, 0xb7, 0xa0, 0x96, 0x98, 0x8f, 0x8a, 0x29, 0x4c, 0x23, 0xa9, 0x4e, 0x04, + 0xde, 0x49, 0x29, 0xde, 0x90, 0x9c, 0xd2, 0x16, 0xe3, 0x11, 0x65, 0x52, 0x56, 0x9d, 0x14, 0x81, + 0xaf, 0x52, 0x11, 0x69, 0x6c, 0xb9, 0x2c, 0x4f, 0xeb, 0xcd, 0xd8, 0x46, 0x4f, 0x27, 0xf8, 0x4f, + 0x16, 0xd4, 0x15, 0xc6, 0xef, 0xca, 0x38, 0x36, 0x2c, 0x25, 0xb6, 0x10, 0xb6, 0x91, 0x30, 0x3e, + 0x4d, 0x67, 0x2c, 0x86, 0x70, 0x77, 0xb3, 0xe1, 0xee, 0x4e, 0xa0, 0xf3, 0x05, 0x34, 0x39, 0xc8, + 0x67, 0x55, 0x67, 0x51, 0x37, 0x1a, 0xd3, 0xf2, 0x8f, 0x6e, 0xc0, 0x02, 0x27, 0x4b, 0x6e, 0x52, + 0x0e, 0x4d, 0xe0, 0x7c, 0x2d, 0xd8, 0x30, 0x31, 0xe3, 0x9d, 0x19, 0x12, 0x4b, 0xac, 0x9d, 0xf6, + 0x87, 0xe4, 0x5a, 0x21, 0x58, 0xda, 0x72, 0x93, 0xb4, 0xc2, 0xa1, 0xec, 0x28, 0xb2, 0x92, 0x1b, + 0x45, 0x4e, 0x50, 0x94, 0x35, 0x61, 0x5d, 0x93, 0x83, 0x06, 0xf8, 0x29, 0xdc, 0x38, 0x24, 0x43, + 0xa2, 0x8c, 0x30, 0x67, 0x31, 0xfa, 0x1a, 0x34, 0x32, 0x5f, 0xa3, 0x01, 0xee, 0x40, 0x23, 0x39, + 0xd8, 0xfd, 0x9f, 0xb5, 0xdd, 0x59, 0x39, 0xdc, 0x4f, 0x07, 0x80, 0xfc, 0x73, 0x34, 0x40, 0xdf, + 0x48, 0x13, 0xa5, 0x08, 0x22, 0xcd, 0x97, 0x25, 0x01, 0xfe, 0x87, 0xd6, 0x82, 0xd0, 0x83, 0xce, + 0x59, 0xb9, 0x58, 0x36, 0x2c, 0xc5, 0x46, 0x53, 0x52, 0xa7, 0x84, 0x73, 0xa1, 0x51, 0x79, 0x33, + 0x31, 0x6c, 0x38, 0xbf, 0x7f, 0xe9, 0x75, 0x3e, 0x93, 0x9b, 0x06, 0xe8, 0xfb, 0xb0, 0xc8, 0xef, + 0x8d, 0x24, 0x94, 0x27, 0xbd, 0x6e, 0x92, 0x6d, 0xe8, 0xc8, 0x10, 0xdf, 0x5f, 0x33, 0x2a, 0xc1, + 0x7b, 0xd5, 0x02, 0x2d, 0x6e, 0x02, 0x70, 0x0e, 0x4a, 0xfa, 0x53, 0x30, 0xf8, 0xd7, 0x16, 0xb4, + 0x1c, 0x32, 0xf2, 0xaf, 0xc8, 0x6b, 0x99, 0xbf, 0x05, 0x8b, 0x3c, 0x08, 0xa8, 0xa8, 0xbf, 0x13, + 0xf0, 0xb5, 0xe6, 0xdd, 0x6e, 0x6e, 0xde, 0xed, 0xe2, 0x0e, 0x6c, 0x15, 0x48, 0xc3, 0x2f, 0x7e, + 0x3a, 0xee, 0xf5, 0x08, 0xa5, 0x62, 0xa2, 0x9c, 0x80, 0x71, 0x84, 0x9e, 0x77, 0x07, 0x43, 0xe2, + 0x0a, 0x69, 0x04, 0x84, 0xbf, 0xb4, 0xa0, 0xf9, 0xc0, 0x75, 0xdf, 0x86, 0x6a, 0xae, 0xae, 0x9a, + 0x5b, 0xaa, 0xda, 0x63, 0xd8, 0x30, 0x89, 0x32, 0x95, 0x5e, 0x03, 0x68, 0x1c, 0x0e, 0xe8, 0x68, + 0x40, 0xa9, 0xcc, 0x11, 0x36, 0x2c, 0xf9, 0xb9, 0x99, 0xac, 0x1f, 0x4c, 0x5c, 0xbd, 0xb7, 0x60, + 0xb1, 0x9f, 0xad, 0x6e, 0x05, 0x88, 0x8f, 0x60, 0x35, 0xcb, 0x8a, 0x8f, 0x19, 0x7a, 0x93, 0x8c, + 0x19, 0x52, 0x22, 0xfc, 0x17, 0x0b, 0x50, 0x67, 0x1c, 0x91, 0xdc, 0x75, 0xf2, 0x96, 0xa4, 0x8e, + 0x0d, 0x37, 0x56, 0x87, 0x46, 0x02, 0x42, 0x18, 0x56, 0x46, 0xe3, 0x88, 0xb8, 0x67, 0xa4, 0xe7, + 0x7b, 0x2e, 0x65, 0xdd, 0x5f, 0xdd, 0xc9, 0xe0, 0xf0, 0x31, 0xac, 0x6b, 0x92, 0x4e, 0xa7, 0xf4, + 0x2f, 0x2d, 0x68, 0x1d, 0x74, 0xbd, 0x1e, 0x19, 0xbe, 0x7b, 0xd5, 0xf1, 0x09, 0x6c, 0x15, 0xc8, + 0x32, 0x9d, 0x72, 0xe7, 0xb0, 0x22, 0xbf, 0xf4, 0x36, 0x1d, 0x70, 0x1f, 0xea, 0x0a, 0x9f, 0xe9, + 0x64, 0x1d, 0x02, 0xca, 0xe9, 0xfe, 0x36, 0x25, 0x3e, 0x86, 0x75, 0x8d, 0xdb, 0x74, 0x72, 0xff, + 0xd9, 0x82, 0xad, 0xb3, 0xcc, 0x0d, 0x73, 0x32, 0xe8, 0x5d, 0x78, 0xdd, 0x51, 0x52, 0xb1, 0xf4, + 0xb3, 0xad, 0x57, 0x3f, 0x6d, 0xbd, 0x3c, 0x41, 0x98, 0xdc, 0x8e, 0x09, 0x9c, 0xd1, 0xba, 0x52, + 0xae, 0xf5, 0xbc, 0xae, 0x75, 0xea, 0x5d, 0xd5, 0x8c, 0x77, 0x9d, 0x82, 0x5d, 0x24, 0xe8, 0x54, + 0x73, 0xc9, 0xbb, 0xff, 0x5d, 0x03, 0xfe, 0x04, 0x8d, 0xbe, 0x0b, 0xcb, 0xbd, 0xf4, 0x85, 0x13, + 0x35, 0x93, 0x7d, 0x99, 0x67, 0x5e, 0x7b, 0xc3, 0x84, 0xa6, 0x01, 0xba, 0x07, 0xb5, 0x9f, 0x24, + 0xe3, 0x6f, 0xb4, 0x2e, 0x88, 0xd4, 0xc1, 0xbc, 0xfd, 0x9e, 0x8e, 0xe4, 0xfb, 0x2e, 0x93, 0xd9, + 0xaa, 0xdc, 0xa7, 0x4e, 0x75, 0xe5, 0xbe, 0xec, 0x08, 0x76, 0x1f, 0xea, 0x7d, 0xf5, 0x65, 0x12, + 0x6d, 0x26, 0xef, 0xcc, 0xb9, 0x47, 0x52, 0xbb, 0x65, 0x5e, 0xa0, 0x01, 0xba, 0x0f, 0x2b, 0x54, + 0x79, 0xc4, 0x43, 0x89, 0x6e, 0xb9, 0x67, 0x46, 0x7b, 0xd3, 0x88, 0xa7, 0x01, 0xfa, 0x31, 0x6c, + 0xf6, 0xcd, 0x2f, 0x68, 0xe8, 0x56, 0x8e, 0xab, 0xfe, 0x82, 0x65, 0xe3, 0xeb, 0x48, 0x68, 0x80, + 0xce, 0x61, 0xab, 0x5f, 0xf4, 0x1c, 0x85, 0x3e, 0x4a, 0x3f, 0x50, 0xf8, 0x4e, 0x66, 0xdf, 0xbe, + 0x9e, 0x88, 0x06, 0xe8, 0x19, 0xa0, 0x48, 0x7b, 0x93, 0x41, 0xdb, 0x62, 0xaf, 0xf1, 0xbd, 0xc9, + 0xfe, 0xa0, 0x64, 0x95, 0x06, 0xa8, 0x07, 0xad, 0x7e, 0xc1, 0xc0, 0x1f, 0xe1, 0xcc, 0x9f, 0x02, + 0x8c, 0x8f, 0x1d, 0xf6, 0x47, 0xd7, 0xd2, 0x70, 0xb9, 0xfb, 0xda, 0xc4, 0x5a, 0xca, 0x6d, 0x1c, + 0xb8, 0x4b, 0xb9, 0x0b, 0x46, 0xdd, 0xcf, 0x61, 0xbd, 0xaf, 0x8f, 0x70, 0x91, 0x79, 0x97, 0xf4, + 0xb2, 0x9b, 0x65, 0xcb, 0x34, 0x40, 0xc7, 0xd0, 0xb8, 0xc8, 0xce, 0x24, 0x51, 0xf2, 0xcf, 0x08, + 0x7d, 0x34, 0x6b, 0xdb, 0x45, 0x4b, 0x52, 0xe5, 0xdc, 0x90, 0x4f, 0x55, 0x59, 0x9f, 0x3b, 0xaa, + 0x2a, 0x9b, 0xa6, 0x83, 0x27, 0xb0, 0x36, 0xc8, 0xcf, 0xbd, 0xd0, 0xfb, 0xc9, 0xa8, 0xca, 0x30, + 0xc8, 0xb3, 0xb7, 0x8b, 0x17, 0xf9, 0xf7, 0xfa, 0xf9, 0x99, 0x92, 0xfc, 0x9e, 0x69, 0xbc, 0x65, + 0x6f, 0x17, 0x2f, 0xf2, 0x40, 0x55, 0x5b, 0x1f, 0x19, 0xa8, 0xb9, 0xf6, 0xca, 0xde, 0x34, 0xe2, + 0x69, 0x80, 0x3e, 0x81, 0xa5, 0x04, 0x87, 0x50, 0x8e, 0x28, 0xde, 0xb8, 0xae, 0xe1, 0x78, 0x6a, + 0x92, 0x39, 0x03, 0xe5, 0x29, 0xa8, 0x9a, 0x9a, 0xb2, 0x13, 0x86, 0x67, 0xb2, 0xef, 0x55, 0x5a, + 0x62, 0x79, 0x40, 0xc6, 0xd6, 0x5c, 0x1e, 0x90, 0xb9, 0x97, 0x8e, 0xbd, 0x27, 0xd7, 0xc2, 0x4a, + 0xef, 0xd1, 0x5b, 0x6c, 0xe9, 0x3d, 0x86, 0xae, 0x37, 0xce, 0xf2, 0x4a, 0x9f, 0x2a, 0xb3, 0x7c, + 0xb6, 0x13, 0x96, 0x59, 0x3e, 0xd7, 0xd2, 0xc6, 0xaa, 0xe9, 0x9d, 0x58, 0x41, 0xb8, 0x89, 0x16, + 0xa0, 0x20, 0xdc, 0x64, 0x55, 0xfe, 0x02, 0x9a, 0xc6, 0x56, 0x04, 0x7d, 0x28, 0xf6, 0x15, 0xb5, + 0x4d, 0xf6, 0x4e, 0x39, 0x01, 0x17, 0x57, 0xef, 0x05, 0xa4, 0xb8, 0xc6, 0x8e, 0x45, 0x8a, 0x5b, + 0xd0, 0x44, 0xdc, 0x87, 0x15, 0xb5, 0x4e, 0x97, 0xae, 0x98, 0xeb, 0x13, 0xa4, 0x2b, 0x6a, 0x45, + 0xfd, 0x31, 0x34, 0x72, 0x95, 0xa1, 0x3c, 0x4a, 0xbd, 0x7a, 0x95, 0x47, 0x69, 0x2a, 0x26, 0x5f, + 0x40, 0xd3, 0x58, 0x69, 0x4a, 0xcb, 0x15, 0xd5, 0xc4, 0xd2, 0x72, 0xc5, 0x85, 0xea, 0x3d, 0xa8, + 0x49, 0xb4, 0xf4, 0x7d, 0xb5, 0xaa, 0x93, 0xbe, 0x9f, 0x2d, 0xbe, 0x8e, 0xa1, 0x91, 0xfb, 0xa8, + 0xd4, 0x4e, 0xaf, 0x0c, 0xa5, 0x76, 0xa6, 0x32, 0xee, 0x47, 0xb0, 0x61, 0xae, 0x74, 0xd0, 0x4e, + 0xee, 0x3a, 0xd6, 0x2a, 0x36, 0xfb, 0xd6, 0x35, 0x14, 0x34, 0xd8, 0x6f, 0xbc, 0xa8, 0xef, 0xf2, + 0x3f, 0xe2, 0x7d, 0xca, 0x7e, 0x3f, 0x5b, 0x60, 0xff, 0xb2, 0xfb, 0xe4, 0x7f, 0x01, 0x00, 0x00, + 0xff, 0xff, 0x14, 0x45, 0xba, 0x3b, 0xa4, 0x27, 0x00, 0x00, } diff --git a/pkg/proto/group/group.proto b/pkg/proto/group/group.proto index 201bf6ef5..f0db47bad 100644 --- a/pkg/proto/group/group.proto +++ b/pkg/proto/group/group.proto @@ -380,6 +380,19 @@ message CancelMuteGroupResp{ +message SetGroupMemberNicknameReq{ + string groupID = 1; + string nickname = 2; + string opUserID = 3; + string operationID = 4; + string userID = 5; +} +message SetGroupMemberNicknameResp{ + CommonResp CommonResp = 1; +} + + + service group{ rpc createGroup(CreateGroupReq) returns(CreateGroupResp); @@ -413,6 +426,9 @@ service group{ rpc CancelMuteGroupMember(CancelMuteGroupMemberReq) returns(CancelMuteGroupMemberResp); rpc MuteGroup(MuteGroupReq) returns(MuteGroupResp); rpc CancelMuteGroup(CancelMuteGroupReq) returns(CancelMuteGroupResp); + + rpc SetGroupMemberNickname(SetGroupMemberNicknameReq) returns (SetGroupMemberNicknameResp); + } diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index bbff9427e..f0a67fd91 100644 --- a/pkg/proto/office/office.pb.go +++ b/pkg/proto/office/office.pb.go @@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} } func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (*CommonResp) ProtoMessage() {} func (*CommonResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{0} + return fileDescriptor_office_02f43b66ea327245, []int{0} } func (m *CommonResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommonResp.Unmarshal(m, b) @@ -82,7 +82,7 @@ func (m *TagUser) Reset() { *m = TagUser{} } func (m *TagUser) String() string { return proto.CompactTextString(m) } func (*TagUser) ProtoMessage() {} func (*TagUser) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{1} + return fileDescriptor_office_02f43b66ea327245, []int{1} } func (m *TagUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TagUser.Unmarshal(m, b) @@ -129,7 +129,7 @@ func (m *Tag) Reset() { *m = Tag{} } func (m *Tag) String() string { return proto.CompactTextString(m) } func (*Tag) ProtoMessage() {} func (*Tag) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{2} + return fileDescriptor_office_02f43b66ea327245, []int{2} } func (m *Tag) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Tag.Unmarshal(m, b) @@ -182,7 +182,7 @@ func (m *GetUserTagsReq) Reset() { *m = GetUserTagsReq{} } func (m *GetUserTagsReq) String() string { return proto.CompactTextString(m) } func (*GetUserTagsReq) ProtoMessage() {} func (*GetUserTagsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{3} + return fileDescriptor_office_02f43b66ea327245, []int{3} } func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b) @@ -228,7 +228,7 @@ func (m *GetUserTagsResp) Reset() { *m = GetUserTagsResp{} } func (m *GetUserTagsResp) String() string { return proto.CompactTextString(m) } func (*GetUserTagsResp) ProtoMessage() {} func (*GetUserTagsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{4} + return fileDescriptor_office_02f43b66ea327245, []int{4} } func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b) @@ -276,7 +276,7 @@ func (m *CreateTagReq) Reset() { *m = CreateTagReq{} } func (m *CreateTagReq) String() string { return proto.CompactTextString(m) } func (*CreateTagReq) ProtoMessage() {} func (*CreateTagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{5} + return fileDescriptor_office_02f43b66ea327245, []int{5} } func (m *CreateTagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateTagReq.Unmarshal(m, b) @@ -335,7 +335,7 @@ func (m *CreateTagResp) Reset() { *m = CreateTagResp{} } func (m *CreateTagResp) String() string { return proto.CompactTextString(m) } func (*CreateTagResp) ProtoMessage() {} func (*CreateTagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{6} + return fileDescriptor_office_02f43b66ea327245, []int{6} } func (m *CreateTagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateTagResp.Unmarshal(m, b) @@ -375,7 +375,7 @@ func (m *DeleteTagReq) Reset() { *m = DeleteTagReq{} } func (m *DeleteTagReq) String() string { return proto.CompactTextString(m) } func (*DeleteTagReq) ProtoMessage() {} func (*DeleteTagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{7} + return fileDescriptor_office_02f43b66ea327245, []int{7} } func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b) @@ -427,7 +427,7 @@ func (m *DeleteTagResp) Reset() { *m = DeleteTagResp{} } func (m *DeleteTagResp) String() string { return proto.CompactTextString(m) } func (*DeleteTagResp) ProtoMessage() {} func (*DeleteTagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{8} + return fileDescriptor_office_02f43b66ea327245, []int{8} } func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b) @@ -470,7 +470,7 @@ func (m *SetTagReq) Reset() { *m = SetTagReq{} } func (m *SetTagReq) String() string { return proto.CompactTextString(m) } func (*SetTagReq) ProtoMessage() {} func (*SetTagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{9} + return fileDescriptor_office_02f43b66ea327245, []int{9} } func (m *SetTagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetTagReq.Unmarshal(m, b) @@ -543,7 +543,7 @@ func (m *SetTagResp) Reset() { *m = SetTagResp{} } func (m *SetTagResp) String() string { return proto.CompactTextString(m) } func (*SetTagResp) ProtoMessage() {} func (*SetTagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{10} + return fileDescriptor_office_02f43b66ea327245, []int{10} } func (m *SetTagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetTagResp.Unmarshal(m, b) @@ -587,7 +587,7 @@ func (m *SendMsg2TagReq) Reset() { *m = SendMsg2TagReq{} } func (m *SendMsg2TagReq) String() string { return proto.CompactTextString(m) } func (*SendMsg2TagReq) ProtoMessage() {} func (*SendMsg2TagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{11} + return fileDescriptor_office_02f43b66ea327245, []int{11} } func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b) @@ -667,7 +667,7 @@ func (m *SendMsg2TagResp) Reset() { *m = SendMsg2TagResp{} } func (m *SendMsg2TagResp) String() string { return proto.CompactTextString(m) } func (*SendMsg2TagResp) ProtoMessage() {} func (*SendMsg2TagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{12} + return fileDescriptor_office_02f43b66ea327245, []int{12} } func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b) @@ -707,7 +707,7 @@ func (m *GetTagSendLogsReq) Reset() { *m = GetTagSendLogsReq{} } func (m *GetTagSendLogsReq) String() string { return proto.CompactTextString(m) } func (*GetTagSendLogsReq) ProtoMessage() {} func (*GetTagSendLogsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{13} + return fileDescriptor_office_02f43b66ea327245, []int{13} } func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b) @@ -761,7 +761,7 @@ func (m *TagSendLog) Reset() { *m = TagSendLog{} } func (m *TagSendLog) String() string { return proto.CompactTextString(m) } func (*TagSendLog) ProtoMessage() {} func (*TagSendLog) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{14} + return fileDescriptor_office_02f43b66ea327245, []int{14} } func (m *TagSendLog) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TagSendLog.Unmarshal(m, b) @@ -815,7 +815,7 @@ func (m *GetTagSendLogsResp) Reset() { *m = GetTagSendLogsResp{} } func (m *GetTagSendLogsResp) String() string { return proto.CompactTextString(m) } func (*GetTagSendLogsResp) ProtoMessage() {} func (*GetTagSendLogsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{15} + return fileDescriptor_office_02f43b66ea327245, []int{15} } func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b) @@ -869,7 +869,7 @@ func (m *GetUserTagByIDReq) Reset() { *m = GetUserTagByIDReq{} } func (m *GetUserTagByIDReq) String() string { return proto.CompactTextString(m) } func (*GetUserTagByIDReq) ProtoMessage() {} func (*GetUserTagByIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{16} + return fileDescriptor_office_02f43b66ea327245, []int{16} } func (m *GetUserTagByIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDReq.Unmarshal(m, b) @@ -922,7 +922,7 @@ func (m *GetUserTagByIDResp) Reset() { *m = GetUserTagByIDResp{} } func (m *GetUserTagByIDResp) String() string { return proto.CompactTextString(m) } func (*GetUserTagByIDResp) ProtoMessage() {} func (*GetUserTagByIDResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7f5adce6bc494f97, []int{17} + return fileDescriptor_office_02f43b66ea327245, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -956,6 +956,1388 @@ func (m *GetUserTagByIDResp) GetTag() *Tag { return nil } +type LikeUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LikeUser) Reset() { *m = LikeUser{} } +func (m *LikeUser) String() string { return proto.CompactTextString(m) } +func (*LikeUser) ProtoMessage() {} +func (*LikeUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{18} +} +func (m *LikeUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LikeUser.Unmarshal(m, b) +} +func (m *LikeUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LikeUser.Marshal(b, m, deterministic) +} +func (dst *LikeUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_LikeUser.Merge(dst, src) +} +func (m *LikeUser) XXX_Size() int { + return xxx_messageInfo_LikeUser.Size(m) +} +func (m *LikeUser) XXX_DiscardUnknown() { + xxx_messageInfo_LikeUser.DiscardUnknown(m) +} + +var xxx_messageInfo_LikeUser proto.InternalMessageInfo + +func (m *LikeUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *LikeUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type NotificationUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NotificationUser) Reset() { *m = NotificationUser{} } +func (m *NotificationUser) String() string { return proto.CompactTextString(m) } +func (*NotificationUser) ProtoMessage() {} +func (*NotificationUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{19} +} +func (m *NotificationUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NotificationUser.Unmarshal(m, b) +} +func (m *NotificationUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NotificationUser.Marshal(b, m, deterministic) +} +func (dst *NotificationUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_NotificationUser.Merge(dst, src) +} +func (m *NotificationUser) XXX_Size() int { + return xxx_messageInfo_NotificationUser.Size(m) +} +func (m *NotificationUser) XXX_DiscardUnknown() { + xxx_messageInfo_NotificationUser.DiscardUnknown(m) +} + +var xxx_messageInfo_NotificationUser proto.InternalMessageInfo + +func (m *NotificationUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *NotificationUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type Comment struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` + ReplyUserID string `protobuf:"bytes,4,opt,name=replyUserID" json:"replyUserID,omitempty"` + ReplyUserName string `protobuf:"bytes,5,opt,name=replyUserName" json:"replyUserName,omitempty"` + ContentID string `protobuf:"bytes,6,opt,name=contentID" json:"contentID,omitempty"` + Content string `protobuf:"bytes,7,opt,name=content" json:"content,omitempty"` + CreateTime int32 `protobuf:"varint,8,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Comment) Reset() { *m = Comment{} } +func (m *Comment) String() string { return proto.CompactTextString(m) } +func (*Comment) ProtoMessage() {} +func (*Comment) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{20} +} +func (m *Comment) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Comment.Unmarshal(m, b) +} +func (m *Comment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Comment.Marshal(b, m, deterministic) +} +func (dst *Comment) XXX_Merge(src proto.Message) { + xxx_messageInfo_Comment.Merge(dst, src) +} +func (m *Comment) XXX_Size() int { + return xxx_messageInfo_Comment.Size(m) +} +func (m *Comment) XXX_DiscardUnknown() { + xxx_messageInfo_Comment.DiscardUnknown(m) +} + +var xxx_messageInfo_Comment proto.InternalMessageInfo + +func (m *Comment) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *Comment) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +func (m *Comment) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *Comment) GetReplyUserID() string { + if m != nil { + return m.ReplyUserID + } + return "" +} + +func (m *Comment) GetReplyUserName() string { + if m != nil { + return m.ReplyUserName + } + return "" +} + +func (m *Comment) GetContentID() string { + if m != nil { + return m.ContentID + } + return "" +} + +func (m *Comment) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *Comment) GetCreateTime() int32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +type PermissionGroup struct { + GroupName string `protobuf:"bytes,1,opt,name=groupName" json:"groupName,omitempty"` + GroupID string `protobuf:"bytes,2,opt,name=groupID" json:"groupID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PermissionGroup) Reset() { *m = PermissionGroup{} } +func (m *PermissionGroup) String() string { return proto.CompactTextString(m) } +func (*PermissionGroup) ProtoMessage() {} +func (*PermissionGroup) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{21} +} +func (m *PermissionGroup) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PermissionGroup.Unmarshal(m, b) +} +func (m *PermissionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PermissionGroup.Marshal(b, m, deterministic) +} +func (dst *PermissionGroup) XXX_Merge(src proto.Message) { + xxx_messageInfo_PermissionGroup.Merge(dst, src) +} +func (m *PermissionGroup) XXX_Size() int { + return xxx_messageInfo_PermissionGroup.Size(m) +} +func (m *PermissionGroup) XXX_DiscardUnknown() { + xxx_messageInfo_PermissionGroup.DiscardUnknown(m) +} + +var xxx_messageInfo_PermissionGroup proto.InternalMessageInfo + +func (m *PermissionGroup) GetGroupName() string { + if m != nil { + return m.GroupName + } + return "" +} + +func (m *PermissionGroup) GetGroupID() string { + if m != nil { + return m.GroupID + } + return "" +} + +type WorkMomentUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkMomentUser) Reset() { *m = WorkMomentUser{} } +func (m *WorkMomentUser) String() string { return proto.CompactTextString(m) } +func (*WorkMomentUser) ProtoMessage() {} +func (*WorkMomentUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{22} +} +func (m *WorkMomentUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMomentUser.Unmarshal(m, b) +} +func (m *WorkMomentUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMomentUser.Marshal(b, m, deterministic) +} +func (dst *WorkMomentUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMomentUser.Merge(dst, src) +} +func (m *WorkMomentUser) XXX_Size() int { + return xxx_messageInfo_WorkMomentUser.Size(m) +} +func (m *WorkMomentUser) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMomentUser.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkMomentUser proto.InternalMessageInfo + +func (m *WorkMomentUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *WorkMomentUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type WorkMoment struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,3,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL" json:"faceURL,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content" json:"content,omitempty"` + LikeUserList []*WorkMomentUser `protobuf:"bytes,6,rep,name=likeUserList" json:"likeUserList,omitempty"` + Comments []*Comment `protobuf:"bytes,7,rep,name=comments" json:"comments,omitempty"` + Permission int32 `protobuf:"varint,8,opt,name=permission" json:"permission,omitempty"` + PermissionUserList []*WorkMomentUser `protobuf:"bytes,9,rep,name=permissionUserList" json:"permissionUserList,omitempty"` + PermissionGroupList []*PermissionGroup `protobuf:"bytes,10,rep,name=permissionGroupList" json:"permissionGroupList,omitempty"` + AtUserList []*WorkMomentUser `protobuf:"bytes,11,rep,name=atUserList" json:"atUserList,omitempty"` + CreateTime int32 `protobuf:"varint,12,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkMoment) Reset() { *m = WorkMoment{} } +func (m *WorkMoment) String() string { return proto.CompactTextString(m) } +func (*WorkMoment) ProtoMessage() {} +func (*WorkMoment) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{23} +} +func (m *WorkMoment) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMoment.Unmarshal(m, b) +} +func (m *WorkMoment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMoment.Marshal(b, m, deterministic) +} +func (dst *WorkMoment) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMoment.Merge(dst, src) +} +func (m *WorkMoment) XXX_Size() int { + return xxx_messageInfo_WorkMoment.Size(m) +} +func (m *WorkMoment) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMoment.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkMoment proto.InternalMessageInfo + +func (m *WorkMoment) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *WorkMoment) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *WorkMoment) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +func (m *WorkMoment) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *WorkMoment) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *WorkMoment) GetLikeUserList() []*WorkMomentUser { + if m != nil { + return m.LikeUserList + } + return nil +} + +func (m *WorkMoment) GetComments() []*Comment { + if m != nil { + return m.Comments + } + return nil +} + +func (m *WorkMoment) GetPermission() int32 { + if m != nil { + return m.Permission + } + return 0 +} + +func (m *WorkMoment) GetPermissionUserList() []*WorkMomentUser { + if m != nil { + return m.PermissionUserList + } + return nil +} + +func (m *WorkMoment) GetPermissionGroupList() []*PermissionGroup { + if m != nil { + return m.PermissionGroupList + } + return nil +} + +func (m *WorkMoment) GetAtUserList() []*WorkMomentUser { + if m != nil { + return m.AtUserList + } + return nil +} + +func (m *WorkMoment) GetCreateTime() int32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +type CreateOneWorkMomentReq struct { + WorkMoment *WorkMoment `protobuf:"bytes,1,opt,name=workMoment" json:"workMoment,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOneWorkMomentReq) Reset() { *m = CreateOneWorkMomentReq{} } +func (m *CreateOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*CreateOneWorkMomentReq) ProtoMessage() {} +func (*CreateOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{24} +} +func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) +} +func (m *CreateOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *CreateOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOneWorkMomentReq.Merge(dst, src) +} +func (m *CreateOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_CreateOneWorkMomentReq.Size(m) +} +func (m *CreateOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOneWorkMomentReq proto.InternalMessageInfo + +func (m *CreateOneWorkMomentReq) GetWorkMoment() *WorkMoment { + if m != nil { + return m.WorkMoment + } + return nil +} + +func (m *CreateOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type CreateOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOneWorkMomentResp) Reset() { *m = CreateOneWorkMomentResp{} } +func (m *CreateOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*CreateOneWorkMomentResp) ProtoMessage() {} +func (*CreateOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{25} +} +func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) +} +func (m *CreateOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *CreateOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOneWorkMomentResp.Merge(dst, src) +} +func (m *CreateOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_CreateOneWorkMomentResp.Size(m) +} +func (m *CreateOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOneWorkMomentResp proto.InternalMessageInfo + +func (m *CreateOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type DeleteOneWorkMomentReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOneWorkMomentReq) Reset() { *m = DeleteOneWorkMomentReq{} } +func (m *DeleteOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteOneWorkMomentReq) ProtoMessage() {} +func (*DeleteOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{26} +} +func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) +} +func (m *DeleteOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOneWorkMomentReq.Merge(dst, src) +} +func (m *DeleteOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_DeleteOneWorkMomentReq.Size(m) +} +func (m *DeleteOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOneWorkMomentReq proto.InternalMessageInfo + +func (m *DeleteOneWorkMomentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *DeleteOneWorkMomentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type DeleteOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOneWorkMomentResp) Reset() { *m = DeleteOneWorkMomentResp{} } +func (m *DeleteOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteOneWorkMomentResp) ProtoMessage() {} +func (*DeleteOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{27} +} +func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) +} +func (m *DeleteOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOneWorkMomentResp.Merge(dst, src) +} +func (m *DeleteOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_DeleteOneWorkMomentResp.Size(m) +} +func (m *DeleteOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOneWorkMomentResp proto.InternalMessageInfo + +func (m *DeleteOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type LikeOneWorkMomentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + WorkMomentID string `protobuf:"bytes,2,opt,name=WorkMomentID" json:"WorkMomentID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LikeOneWorkMomentReq) Reset() { *m = LikeOneWorkMomentReq{} } +func (m *LikeOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*LikeOneWorkMomentReq) ProtoMessage() {} +func (*LikeOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{28} +} +func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) +} +func (m *LikeOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LikeOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *LikeOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_LikeOneWorkMomentReq.Merge(dst, src) +} +func (m *LikeOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_LikeOneWorkMomentReq.Size(m) +} +func (m *LikeOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_LikeOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_LikeOneWorkMomentReq proto.InternalMessageInfo + +func (m *LikeOneWorkMomentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *LikeOneWorkMomentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *LikeOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type LikeOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LikeOneWorkMomentResp) Reset() { *m = LikeOneWorkMomentResp{} } +func (m *LikeOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*LikeOneWorkMomentResp) ProtoMessage() {} +func (*LikeOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{29} +} +func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) +} +func (m *LikeOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LikeOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *LikeOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_LikeOneWorkMomentResp.Merge(dst, src) +} +func (m *LikeOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_LikeOneWorkMomentResp.Size(m) +} +func (m *LikeOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_LikeOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_LikeOneWorkMomentResp proto.InternalMessageInfo + +func (m *LikeOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type CommentOneWorkMomentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + WorkMomentID string `protobuf:"bytes,2,opt,name=workMomentID" json:"workMomentID,omitempty"` + ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` + OperationID string `protobuf:"bytes,5,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommentOneWorkMomentReq) Reset() { *m = CommentOneWorkMomentReq{} } +func (m *CommentOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*CommentOneWorkMomentReq) ProtoMessage() {} +func (*CommentOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{30} +} +func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) +} +func (m *CommentOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommentOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *CommentOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommentOneWorkMomentReq.Merge(dst, src) +} +func (m *CommentOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_CommentOneWorkMomentReq.Size(m) +} +func (m *CommentOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_CommentOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CommentOneWorkMomentReq proto.InternalMessageInfo + +func (m *CommentOneWorkMomentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetReplyUserID() string { + if m != nil { + return m.ReplyUserID + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type CommentOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentResp{} } +func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*CommentOneWorkMomentResp) ProtoMessage() {} +func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{31} +} +func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) +} +func (m *CommentOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommentOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *CommentOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommentOneWorkMomentResp.Merge(dst, src) +} +func (m *CommentOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_CommentOneWorkMomentResp.Size(m) +} +func (m *CommentOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_CommentOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CommentOneWorkMomentResp proto.InternalMessageInfo + +func (m *CommentOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type GetWorkMomentByIDReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetWorkMomentByIDReq) Reset() { *m = GetWorkMomentByIDReq{} } +func (m *GetWorkMomentByIDReq) String() string { return proto.CompactTextString(m) } +func (*GetWorkMomentByIDReq) ProtoMessage() {} +func (*GetWorkMomentByIDReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{32} +} +func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) +} +func (m *GetWorkMomentByIDReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetWorkMomentByIDReq.Marshal(b, m, deterministic) +} +func (dst *GetWorkMomentByIDReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWorkMomentByIDReq.Merge(dst, src) +} +func (m *GetWorkMomentByIDReq) XXX_Size() int { + return xxx_messageInfo_GetWorkMomentByIDReq.Size(m) +} +func (m *GetWorkMomentByIDReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetWorkMomentByIDReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWorkMomentByIDReq proto.InternalMessageInfo + +func (m *GetWorkMomentByIDReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *GetWorkMomentByIDReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *GetWorkMomentByIDReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetWorkMomentByIDResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + WorkMoment *WorkMoment `protobuf:"bytes,2,opt,name=workMoment" json:"workMoment,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetWorkMomentByIDResp) Reset() { *m = GetWorkMomentByIDResp{} } +func (m *GetWorkMomentByIDResp) String() string { return proto.CompactTextString(m) } +func (*GetWorkMomentByIDResp) ProtoMessage() {} +func (*GetWorkMomentByIDResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{33} +} +func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) +} +func (m *GetWorkMomentByIDResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetWorkMomentByIDResp.Marshal(b, m, deterministic) +} +func (dst *GetWorkMomentByIDResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWorkMomentByIDResp.Merge(dst, src) +} +func (m *GetWorkMomentByIDResp) XXX_Size() int { + return xxx_messageInfo_GetWorkMomentByIDResp.Size(m) +} +func (m *GetWorkMomentByIDResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetWorkMomentByIDResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWorkMomentByIDResp proto.InternalMessageInfo + +func (m *GetWorkMomentByIDResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetWorkMomentByIDResp) GetWorkMoment() *WorkMoment { + if m != nil { + return m.WorkMoment + } + return nil +} + +type ChangeWorkMomentPermissionReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + Permission int32 `protobuf:"varint,3,opt,name=permission" json:"permission,omitempty"` + PermissionUserIDList []string `protobuf:"bytes,4,rep,name=permissionUserIDList" json:"permissionUserIDList,omitempty"` + OperationID string `protobuf:"bytes,5,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ChangeWorkMomentPermissionReq) Reset() { *m = ChangeWorkMomentPermissionReq{} } +func (m *ChangeWorkMomentPermissionReq) String() string { return proto.CompactTextString(m) } +func (*ChangeWorkMomentPermissionReq) ProtoMessage() {} +func (*ChangeWorkMomentPermissionReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{34} +} +func (m *ChangeWorkMomentPermissionReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChangeWorkMomentPermissionReq.Unmarshal(m, b) +} +func (m *ChangeWorkMomentPermissionReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChangeWorkMomentPermissionReq.Marshal(b, m, deterministic) +} +func (dst *ChangeWorkMomentPermissionReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChangeWorkMomentPermissionReq.Merge(dst, src) +} +func (m *ChangeWorkMomentPermissionReq) XXX_Size() int { + return xxx_messageInfo_ChangeWorkMomentPermissionReq.Size(m) +} +func (m *ChangeWorkMomentPermissionReq) XXX_DiscardUnknown() { + xxx_messageInfo_ChangeWorkMomentPermissionReq.DiscardUnknown(m) +} + +var xxx_messageInfo_ChangeWorkMomentPermissionReq proto.InternalMessageInfo + +func (m *ChangeWorkMomentPermissionReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *ChangeWorkMomentPermissionReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *ChangeWorkMomentPermissionReq) GetPermission() int32 { + if m != nil { + return m.Permission + } + return 0 +} + +func (m *ChangeWorkMomentPermissionReq) GetPermissionUserIDList() []string { + if m != nil { + return m.PermissionUserIDList + } + return nil +} + +func (m *ChangeWorkMomentPermissionReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type ChangeWorkMomentPermissionResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ChangeWorkMomentPermissionResp) Reset() { *m = ChangeWorkMomentPermissionResp{} } +func (m *ChangeWorkMomentPermissionResp) String() string { return proto.CompactTextString(m) } +func (*ChangeWorkMomentPermissionResp) ProtoMessage() {} +func (*ChangeWorkMomentPermissionResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{35} +} +func (m *ChangeWorkMomentPermissionResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChangeWorkMomentPermissionResp.Unmarshal(m, b) +} +func (m *ChangeWorkMomentPermissionResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChangeWorkMomentPermissionResp.Marshal(b, m, deterministic) +} +func (dst *ChangeWorkMomentPermissionResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChangeWorkMomentPermissionResp.Merge(dst, src) +} +func (m *ChangeWorkMomentPermissionResp) XXX_Size() int { + return xxx_messageInfo_ChangeWorkMomentPermissionResp.Size(m) +} +func (m *ChangeWorkMomentPermissionResp) XXX_DiscardUnknown() { + xxx_messageInfo_ChangeWorkMomentPermissionResp.DiscardUnknown(m) +} + +var xxx_messageInfo_ChangeWorkMomentPermissionResp proto.InternalMessageInfo + +func (m *ChangeWorkMomentPermissionResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type GetUserWorkMomentsReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserWorkMomentsReq) Reset() { *m = GetUserWorkMomentsReq{} } +func (m *GetUserWorkMomentsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserWorkMomentsReq) ProtoMessage() {} +func (*GetUserWorkMomentsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{36} +} +func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) +} +func (m *GetUserWorkMomentsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserWorkMomentsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserWorkMomentsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserWorkMomentsReq.Merge(dst, src) +} +func (m *GetUserWorkMomentsReq) XXX_Size() int { + return xxx_messageInfo_GetUserWorkMomentsReq.Size(m) +} +func (m *GetUserWorkMomentsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserWorkMomentsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserWorkMomentsReq proto.InternalMessageInfo + +func (m *GetUserWorkMomentsReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserWorkMomentsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination + } + return nil +} + +func (m *GetUserWorkMomentsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetUserWorkMomentsResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + WorkMoments []*WorkMoment `protobuf:"bytes,2,rep,name=workMoments" json:"workMoments,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserWorkMomentsResp) Reset() { *m = GetUserWorkMomentsResp{} } +func (m *GetUserWorkMomentsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserWorkMomentsResp) ProtoMessage() {} +func (*GetUserWorkMomentsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{37} +} +func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) +} +func (m *GetUserWorkMomentsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserWorkMomentsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserWorkMomentsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserWorkMomentsResp.Merge(dst, src) +} +func (m *GetUserWorkMomentsResp) XXX_Size() int { + return xxx_messageInfo_GetUserWorkMomentsResp.Size(m) +} +func (m *GetUserWorkMomentsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserWorkMomentsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserWorkMomentsResp proto.InternalMessageInfo + +func (m *GetUserWorkMomentsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserWorkMomentsResp) GetWorkMoments() []*WorkMoment { + if m != nil { + return m.WorkMoments + } + return nil +} + +func (m *GetUserWorkMomentsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination + } + return nil +} + +type GetUserFriendWorkMomentsReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMomentsReq{} } +func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} +func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{38} +} +func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) +} +func (m *GetUserFriendWorkMomentsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserFriendWorkMomentsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserFriendWorkMomentsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserFriendWorkMomentsReq.Merge(dst, src) +} +func (m *GetUserFriendWorkMomentsReq) XXX_Size() int { + return xxx_messageInfo_GetUserFriendWorkMomentsReq.Size(m) +} +func (m *GetUserFriendWorkMomentsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserFriendWorkMomentsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserFriendWorkMomentsReq proto.InternalMessageInfo + +func (m *GetUserFriendWorkMomentsReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserFriendWorkMomentsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination + } + return nil +} + +func (m *GetUserFriendWorkMomentsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetUserFriendWorkMomentsResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + WorkMoments []*WorkMoment `protobuf:"bytes,2,rep,name=workMoments" json:"workMoments,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkMomentsResp{} } +func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} +func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{39} +} +func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) +} +func (m *GetUserFriendWorkMomentsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserFriendWorkMomentsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserFriendWorkMomentsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserFriendWorkMomentsResp.Merge(dst, src) +} +func (m *GetUserFriendWorkMomentsResp) XXX_Size() int { + return xxx_messageInfo_GetUserFriendWorkMomentsResp.Size(m) +} +func (m *GetUserFriendWorkMomentsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserFriendWorkMomentsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserFriendWorkMomentsResp proto.InternalMessageInfo + +func (m *GetUserFriendWorkMomentsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserFriendWorkMomentsResp) GetWorkMoments() []*WorkMoment { + if m != nil { + return m.WorkMoments + } + return nil +} + +func (m *GetUserFriendWorkMomentsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination + } + return nil +} + +type WorkMomentNotificationMsg struct { + NotificationMsgType int32 `protobuf:"varint,1,opt,name=notificationMsgType" json:"notificationMsgType,omitempty"` + Comment *Comment `protobuf:"bytes,2,opt,name=comment" json:"comment,omitempty"` + WorkMomentID string `protobuf:"bytes,3,opt,name=workMomentID" json:"workMomentID,omitempty"` + UserID string `protobuf:"bytes,4,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,5,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,6,opt,name=faceURL" json:"faceURL,omitempty"` + WorkMomentContent string `protobuf:"bytes,7,opt,name=workMomentContent" json:"workMomentContent,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkMomentNotificationMsg) Reset() { *m = WorkMomentNotificationMsg{} } +func (m *WorkMomentNotificationMsg) String() string { return proto.CompactTextString(m) } +func (*WorkMomentNotificationMsg) ProtoMessage() {} +func (*WorkMomentNotificationMsg) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{40} +} +func (m *WorkMomentNotificationMsg) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMomentNotificationMsg.Unmarshal(m, b) +} +func (m *WorkMomentNotificationMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMomentNotificationMsg.Marshal(b, m, deterministic) +} +func (dst *WorkMomentNotificationMsg) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMomentNotificationMsg.Merge(dst, src) +} +func (m *WorkMomentNotificationMsg) XXX_Size() int { + return xxx_messageInfo_WorkMomentNotificationMsg.Size(m) +} +func (m *WorkMomentNotificationMsg) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMomentNotificationMsg.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkMomentNotificationMsg proto.InternalMessageInfo + +func (m *WorkMomentNotificationMsg) GetNotificationMsgType() int32 { + if m != nil { + return m.NotificationMsgType + } + return 0 +} + +func (m *WorkMomentNotificationMsg) GetComment() *Comment { + if m != nil { + return m.Comment + } + return nil +} + +func (m *WorkMomentNotificationMsg) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetWorkMomentContent() string { + if m != nil { + return m.WorkMomentContent + } + return "" +} + +type SetUserWorkMomentsLevelReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Level int32 `protobuf:"varint,2,opt,name=level" json:"level,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLevelReq{} } +func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } +func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} +func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{41} +} +func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) +} +func (m *SetUserWorkMomentsLevelReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetUserWorkMomentsLevelReq.Marshal(b, m, deterministic) +} +func (dst *SetUserWorkMomentsLevelReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetUserWorkMomentsLevelReq.Merge(dst, src) +} +func (m *SetUserWorkMomentsLevelReq) XXX_Size() int { + return xxx_messageInfo_SetUserWorkMomentsLevelReq.Size(m) +} +func (m *SetUserWorkMomentsLevelReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetUserWorkMomentsLevelReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetUserWorkMomentsLevelReq proto.InternalMessageInfo + +func (m *SetUserWorkMomentsLevelReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *SetUserWorkMomentsLevelReq) GetLevel() int32 { + if m != nil { + return m.Level + } + return 0 +} + +func (m *SetUserWorkMomentsLevelReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type SetUserWorkMomentsLevelResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsLevelResp{} } +func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } +func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} +func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_02f43b66ea327245, []int{42} +} +func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) +} +func (m *SetUserWorkMomentsLevelResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetUserWorkMomentsLevelResp.Marshal(b, m, deterministic) +} +func (dst *SetUserWorkMomentsLevelResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetUserWorkMomentsLevelResp.Merge(dst, src) +} +func (m *SetUserWorkMomentsLevelResp) XXX_Size() int { + return xxx_messageInfo_SetUserWorkMomentsLevelResp.Size(m) +} +func (m *SetUserWorkMomentsLevelResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetUserWorkMomentsLevelResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SetUserWorkMomentsLevelResp proto.InternalMessageInfo + +func (m *SetUserWorkMomentsLevelResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + func init() { proto.RegisterType((*CommonResp)(nil), "office.CommonResp") proto.RegisterType((*TagUser)(nil), "office.TagUser") @@ -975,6 +2357,31 @@ func init() { proto.RegisterType((*GetTagSendLogsResp)(nil), "office.GetTagSendLogsResp") proto.RegisterType((*GetUserTagByIDReq)(nil), "office.GetUserTagByIDReq") proto.RegisterType((*GetUserTagByIDResp)(nil), "office.GetUserTagByIDResp") + proto.RegisterType((*LikeUser)(nil), "office.LikeUser") + proto.RegisterType((*NotificationUser)(nil), "office.NotificationUser") + proto.RegisterType((*Comment)(nil), "office.Comment") + proto.RegisterType((*PermissionGroup)(nil), "office.PermissionGroup") + proto.RegisterType((*WorkMomentUser)(nil), "office.WorkMomentUser") + proto.RegisterType((*WorkMoment)(nil), "office.WorkMoment") + proto.RegisterType((*CreateOneWorkMomentReq)(nil), "office.CreateOneWorkMomentReq") + proto.RegisterType((*CreateOneWorkMomentResp)(nil), "office.CreateOneWorkMomentResp") + proto.RegisterType((*DeleteOneWorkMomentReq)(nil), "office.DeleteOneWorkMomentReq") + proto.RegisterType((*DeleteOneWorkMomentResp)(nil), "office.DeleteOneWorkMomentResp") + proto.RegisterType((*LikeOneWorkMomentReq)(nil), "office.LikeOneWorkMomentReq") + proto.RegisterType((*LikeOneWorkMomentResp)(nil), "office.LikeOneWorkMomentResp") + proto.RegisterType((*CommentOneWorkMomentReq)(nil), "office.CommentOneWorkMomentReq") + proto.RegisterType((*CommentOneWorkMomentResp)(nil), "office.CommentOneWorkMomentResp") + proto.RegisterType((*GetWorkMomentByIDReq)(nil), "office.GetWorkMomentByIDReq") + proto.RegisterType((*GetWorkMomentByIDResp)(nil), "office.GetWorkMomentByIDResp") + proto.RegisterType((*ChangeWorkMomentPermissionReq)(nil), "office.ChangeWorkMomentPermissionReq") + proto.RegisterType((*ChangeWorkMomentPermissionResp)(nil), "office.ChangeWorkMomentPermissionResp") + proto.RegisterType((*GetUserWorkMomentsReq)(nil), "office.GetUserWorkMomentsReq") + proto.RegisterType((*GetUserWorkMomentsResp)(nil), "office.GetUserWorkMomentsResp") + proto.RegisterType((*GetUserFriendWorkMomentsReq)(nil), "office.GetUserFriendWorkMomentsReq") + proto.RegisterType((*GetUserFriendWorkMomentsResp)(nil), "office.GetUserFriendWorkMomentsResp") + proto.RegisterType((*WorkMomentNotificationMsg)(nil), "office.WorkMomentNotificationMsg") + proto.RegisterType((*SetUserWorkMomentsLevelReq)(nil), "office.SetUserWorkMomentsLevelReq") + proto.RegisterType((*SetUserWorkMomentsLevelResp)(nil), "office.SetUserWorkMomentsLevelResp") } // Reference imports to suppress errors if they are not otherwise used. @@ -995,6 +2402,17 @@ type OfficeServiceClient interface { SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error) GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error) GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error) + CreateOneWorkMoment(ctx context.Context, in *CreateOneWorkMomentReq, opts ...grpc.CallOption) (*CreateOneWorkMomentResp, error) + DeleteOneWorkMoment(ctx context.Context, in *DeleteOneWorkMomentReq, opts ...grpc.CallOption) (*DeleteOneWorkMomentResp, error) + LikeOneWorkMoment(ctx context.Context, in *LikeOneWorkMomentReq, opts ...grpc.CallOption) (*LikeOneWorkMomentResp, error) + CommentOneWorkMoment(ctx context.Context, in *CommentOneWorkMomentReq, opts ...grpc.CallOption) (*CommentOneWorkMomentResp, error) + GetWorkMomentByID(ctx context.Context, in *GetWorkMomentByIDReq, opts ...grpc.CallOption) (*GetWorkMomentByIDResp, error) + ChangeWorkMomentPermission(ctx context.Context, in *ChangeWorkMomentPermissionReq, opts ...grpc.CallOption) (*ChangeWorkMomentPermissionResp, error) + // / user self + GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) + // / users friend + GetUserFriendWorkMoments(ctx context.Context, in *GetUserFriendWorkMomentsReq, opts ...grpc.CallOption) (*GetUserFriendWorkMomentsResp, error) + SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) } type officeServiceClient struct { @@ -1068,6 +2486,87 @@ func (c *officeServiceClient) GetUserTagByID(ctx context.Context, in *GetUserTag return out, nil } +func (c *officeServiceClient) CreateOneWorkMoment(ctx context.Context, in *CreateOneWorkMomentReq, opts ...grpc.CallOption) (*CreateOneWorkMomentResp, error) { + out := new(CreateOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/CreateOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) DeleteOneWorkMoment(ctx context.Context, in *DeleteOneWorkMomentReq, opts ...grpc.CallOption) (*DeleteOneWorkMomentResp, error) { + out := new(DeleteOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/DeleteOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) LikeOneWorkMoment(ctx context.Context, in *LikeOneWorkMomentReq, opts ...grpc.CallOption) (*LikeOneWorkMomentResp, error) { + out := new(LikeOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/LikeOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) CommentOneWorkMoment(ctx context.Context, in *CommentOneWorkMomentReq, opts ...grpc.CallOption) (*CommentOneWorkMomentResp, error) { + out := new(CommentOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/CommentOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetWorkMomentByID(ctx context.Context, in *GetWorkMomentByIDReq, opts ...grpc.CallOption) (*GetWorkMomentByIDResp, error) { + out := new(GetWorkMomentByIDResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetWorkMomentByID", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) ChangeWorkMomentPermission(ctx context.Context, in *ChangeWorkMomentPermissionReq, opts ...grpc.CallOption) (*ChangeWorkMomentPermissionResp, error) { + out := new(ChangeWorkMomentPermissionResp) + err := grpc.Invoke(ctx, "/office.OfficeService/ChangeWorkMomentPermission", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) { + out := new(GetUserWorkMomentsResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserWorkMoments", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetUserFriendWorkMoments(ctx context.Context, in *GetUserFriendWorkMomentsReq, opts ...grpc.CallOption) (*GetUserFriendWorkMomentsResp, error) { + out := new(GetUserFriendWorkMomentsResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserFriendWorkMoments", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) { + out := new(SetUserWorkMomentsLevelResp) + err := grpc.Invoke(ctx, "/office.OfficeService/SetUserWorkMomentsLevel", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for OfficeService service type OfficeServiceServer interface { @@ -1078,6 +2577,17 @@ type OfficeServiceServer interface { SendMsg2Tag(context.Context, *SendMsg2TagReq) (*SendMsg2TagResp, error) GetTagSendLogs(context.Context, *GetTagSendLogsReq) (*GetTagSendLogsResp, error) GetUserTagByID(context.Context, *GetUserTagByIDReq) (*GetUserTagByIDResp, error) + CreateOneWorkMoment(context.Context, *CreateOneWorkMomentReq) (*CreateOneWorkMomentResp, error) + DeleteOneWorkMoment(context.Context, *DeleteOneWorkMomentReq) (*DeleteOneWorkMomentResp, error) + LikeOneWorkMoment(context.Context, *LikeOneWorkMomentReq) (*LikeOneWorkMomentResp, error) + CommentOneWorkMoment(context.Context, *CommentOneWorkMomentReq) (*CommentOneWorkMomentResp, error) + GetWorkMomentByID(context.Context, *GetWorkMomentByIDReq) (*GetWorkMomentByIDResp, error) + ChangeWorkMomentPermission(context.Context, *ChangeWorkMomentPermissionReq) (*ChangeWorkMomentPermissionResp, error) + // / user self + GetUserWorkMoments(context.Context, *GetUserWorkMomentsReq) (*GetUserWorkMomentsResp, error) + // / users friend + GetUserFriendWorkMoments(context.Context, *GetUserFriendWorkMomentsReq) (*GetUserFriendWorkMomentsResp, error) + SetUserWorkMomentsLevel(context.Context, *SetUserWorkMomentsLevelReq) (*SetUserWorkMomentsLevelResp, error) } func RegisterOfficeServiceServer(s *grpc.Server, srv OfficeServiceServer) { @@ -1210,6 +2720,168 @@ func _OfficeService_GetUserTagByID_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _OfficeService_CreateOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).CreateOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/CreateOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).CreateOneWorkMoment(ctx, req.(*CreateOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_DeleteOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).DeleteOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/DeleteOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).DeleteOneWorkMoment(ctx, req.(*DeleteOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_LikeOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LikeOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).LikeOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/LikeOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).LikeOneWorkMoment(ctx, req.(*LikeOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_CommentOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CommentOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).CommentOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/CommentOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).CommentOneWorkMoment(ctx, req.(*CommentOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetWorkMomentByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetWorkMomentByIDReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetWorkMomentByID(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetWorkMomentByID", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetWorkMomentByID(ctx, req.(*GetWorkMomentByIDReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_ChangeWorkMomentPermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ChangeWorkMomentPermissionReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).ChangeWorkMomentPermission(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/ChangeWorkMomentPermission", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).ChangeWorkMomentPermission(ctx, req.(*ChangeWorkMomentPermissionReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetUserWorkMoments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserWorkMomentsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserWorkMoments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserWorkMoments", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserWorkMoments(ctx, req.(*GetUserWorkMomentsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetUserFriendWorkMoments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserFriendWorkMomentsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserFriendWorkMoments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserFriendWorkMoments", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserFriendWorkMoments(ctx, req.(*GetUserFriendWorkMomentsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_SetUserWorkMomentsLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetUserWorkMomentsLevelReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).SetUserWorkMomentsLevel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/SetUserWorkMomentsLevel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).SetUserWorkMomentsLevel(ctx, req.(*SetUserWorkMomentsLevelReq)) + } + return interceptor(ctx, in, info, handler) +} + var _OfficeService_serviceDesc = grpc.ServiceDesc{ ServiceName: "office.OfficeService", HandlerType: (*OfficeServiceServer)(nil), @@ -1242,64 +2914,150 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetUserTagByID", Handler: _OfficeService_GetUserTagByID_Handler, }, + { + MethodName: "CreateOneWorkMoment", + Handler: _OfficeService_CreateOneWorkMoment_Handler, + }, + { + MethodName: "DeleteOneWorkMoment", + Handler: _OfficeService_DeleteOneWorkMoment_Handler, + }, + { + MethodName: "LikeOneWorkMoment", + Handler: _OfficeService_LikeOneWorkMoment_Handler, + }, + { + MethodName: "CommentOneWorkMoment", + Handler: _OfficeService_CommentOneWorkMoment_Handler, + }, + { + MethodName: "GetWorkMomentByID", + Handler: _OfficeService_GetWorkMomentByID_Handler, + }, + { + MethodName: "ChangeWorkMomentPermission", + Handler: _OfficeService_ChangeWorkMomentPermission_Handler, + }, + { + MethodName: "GetUserWorkMoments", + Handler: _OfficeService_GetUserWorkMoments_Handler, + }, + { + MethodName: "GetUserFriendWorkMoments", + Handler: _OfficeService_GetUserFriendWorkMoments_Handler, + }, + { + MethodName: "SetUserWorkMomentsLevel", + Handler: _OfficeService_SetUserWorkMomentsLevel_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_7f5adce6bc494f97) } - -var fileDescriptor_office_7f5adce6bc494f97 = []byte{ - // 810 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xd1, 0x6a, 0xdb, 0x4a, - 0x10, 0x45, 0x76, 0x6c, 0xc7, 0xe3, 0x24, 0xbe, 0xd9, 0x9b, 0x9b, 0xeb, 0x2b, 0x6e, 0x5b, 0x57, - 0xb4, 0x10, 0x5a, 0xb0, 0xc1, 0xed, 0x43, 0xa1, 0x34, 0x94, 0xd8, 0xc1, 0xb8, 0x24, 0x4d, 0x50, - 0x9c, 0x97, 0x3e, 0xd4, 0x6c, 0xec, 0xb1, 0x10, 0x89, 0x25, 0x65, 0x57, 0x4e, 0xe8, 0x6b, 0x7f, - 0xa1, 0xdf, 0xd4, 0xbe, 0xf7, 0x1f, 0xfa, 0x21, 0x45, 0x2b, 0x69, 0xb5, 0x2b, 0xdb, 0x04, 0x0c, - 0x7d, 0x92, 0x66, 0x76, 0x66, 0x74, 0xe6, 0xec, 0xec, 0x59, 0xc1, 0xdf, 0xfe, 0x74, 0xea, 0x8e, - 0xb1, 0x1d, 0x3f, 0x5a, 0x01, 0xf3, 0x43, 0x9f, 0x94, 0x63, 0xcb, 0x7c, 0x7a, 0x16, 0xa0, 0x37, - 0x1a, 0x9c, 0xb6, 0x83, 0x6b, 0xa7, 0x2d, 0x96, 0xda, 0x7c, 0x72, 0x3d, 0xba, 0xe7, 0xed, 0x7b, - 0x1e, 0x87, 0x5a, 0x87, 0x00, 0x5d, 0x7f, 0x36, 0xf3, 0x3d, 0x1b, 0x79, 0x40, 0x1a, 0x50, 0x41, - 0xc6, 0xba, 0xfe, 0x04, 0x1b, 0x46, 0xd3, 0x38, 0x28, 0xd9, 0xa9, 0x49, 0xf6, 0xa1, 0x8c, 0x8c, - 0x9d, 0x72, 0xa7, 0x51, 0x68, 0x1a, 0x07, 0x55, 0x3b, 0xb1, 0xac, 0x77, 0x50, 0x19, 0x52, 0xe7, - 0x92, 0x23, 0x8b, 0x42, 0xe6, 0x1c, 0xd9, 0xa0, 0x27, 0x72, 0xab, 0x76, 0x62, 0x11, 0x13, 0x36, - 0xa3, 0xb7, 0x8f, 0x74, 0x86, 0x49, 0xb2, 0xb4, 0xad, 0x2b, 0x28, 0x0e, 0xa9, 0x43, 0xf6, 0xa0, - 0x14, 0x52, 0x47, 0x66, 0xc6, 0x46, 0x84, 0x26, 0xa4, 0x8e, 0x92, 0x97, 0x9a, 0xe4, 0x65, 0x5c, - 0xf2, 0xc4, 0xe5, 0x61, 0xa3, 0xd8, 0x2c, 0x1e, 0xd4, 0x3a, 0xf5, 0x56, 0xc2, 0x40, 0x82, 0xc6, - 0x96, 0x01, 0xd6, 0x07, 0xd8, 0xe9, 0x63, 0x18, 0x39, 0x87, 0xd4, 0xe1, 0x36, 0xde, 0xae, 0x44, - 0xda, 0x84, 0x9a, 0x1f, 0x20, 0xa3, 0xa1, 0xeb, 0x7b, 0x83, 0x5e, 0xf2, 0x51, 0xd5, 0x65, 0x4d, - 0xa1, 0xae, 0xd5, 0xe2, 0x01, 0xe9, 0x00, 0x8c, 0x25, 0x83, 0xa2, 0x60, 0xad, 0x43, 0x52, 0x34, - 0x19, 0xb7, 0xb6, 0x12, 0x45, 0x9e, 0xc0, 0x46, 0x48, 0x1d, 0xde, 0x28, 0x08, 0xec, 0x35, 0x05, - 0xbb, 0x2d, 0x16, 0xac, 0xaf, 0x06, 0x6c, 0x75, 0x19, 0xd2, 0x10, 0x23, 0x1f, 0xde, 0xaa, 0x5c, - 0x18, 0x3a, 0x17, 0x59, 0x33, 0x05, 0xad, 0x99, 0xc7, 0x00, 0xf1, 0x9b, 0x64, 0xa9, 0x6a, 0x2b, - 0x9e, 0x7c, 0xb3, 0x1b, 0x8b, 0xcd, 0x76, 0x61, 0x5b, 0xc1, 0xb0, 0x5e, 0xab, 0xd6, 0x67, 0xd8, - 0xea, 0xe1, 0x0d, 0xca, 0x46, 0x56, 0x71, 0x2f, 0x47, 0xa0, 0xa0, 0x8e, 0x40, 0x0e, 0x64, 0x71, - 0x29, 0x48, 0xa5, 0xfe, 0x9a, 0x20, 0x7f, 0x1a, 0x50, 0xbd, 0xc0, 0x70, 0x2d, 0x88, 0x0d, 0xa8, - 0x78, 0x78, 0x2f, 0x76, 0x26, 0x86, 0x97, 0x9a, 0xa4, 0x05, 0xc4, 0xf5, 0xc6, 0x0c, 0x29, 0xc7, - 0xcb, 0x6c, 0x27, 0x36, 0xc4, 0x4e, 0x2c, 0x59, 0x21, 0x2f, 0xe0, 0x2f, 0x86, 0x93, 0xf9, 0x58, - 0x8d, 0x2e, 0x89, 0xe8, 0x05, 0x7f, 0x9e, 0x98, 0xf2, 0x22, 0x31, 0xef, 0x01, 0xd2, 0x96, 0xd6, - 0x64, 0xe5, 0x97, 0x01, 0x3b, 0x17, 0xe8, 0x4d, 0x4e, 0xb9, 0xd3, 0xd1, 0xc6, 0x50, 0x20, 0x33, - 0x04, 0xb2, 0xd4, 0x8c, 0x4e, 0xf9, 0x65, 0x7a, 0x24, 0x0b, 0x62, 0x49, 0xda, 0xe4, 0x7f, 0xa8, - 0xf6, 0x99, 0x3f, 0x0f, 0x94, 0x49, 0xcc, 0x1c, 0x11, 0xdd, 0x1c, 0xbd, 0x89, 0x9c, 0xc1, 0xc4, - 0x8a, 0xe8, 0x88, 0xde, 0x90, 0x9d, 0xdf, 0xd0, 0x70, 0xea, 0xb3, 0xd9, 0xa0, 0xd7, 0x28, 0x09, - 0x55, 0x5a, 0xf0, 0x47, 0xb8, 0xc6, 0xbe, 0x17, 0xa2, 0x17, 0x26, 0x54, 0xa4, 0x66, 0x9e, 0xa8, - 0xca, 0x22, 0x51, 0xc7, 0x50, 0xd7, 0xba, 0x5c, 0x93, 0xad, 0x6f, 0x06, 0xec, 0xf6, 0x05, 0xe1, - 0x51, 0xb5, 0x13, 0x3f, 0x96, 0x9a, 0x1e, 0xc0, 0x39, 0x75, 0x5c, 0x4f, 0x7c, 0x2c, 0xa9, 0xf4, - 0xac, 0xc5, 0x91, 0xdd, 0x21, 0x1b, 0xd1, 0xc0, 0x1d, 0x05, 0x94, 0xd1, 0x19, 0x6f, 0xd9, 0x78, - 0x3b, 0x47, 0x1e, 0x66, 0xb1, 0xb6, 0x92, 0xb7, 0xf2, 0x8c, 0x3f, 0x7c, 0x3c, 0x7c, 0x80, 0x0c, - 0x91, 0xa6, 0x9b, 0xc6, 0x03, 0xba, 0xa9, 0x72, 0x5a, 0xd0, 0x39, 0x35, 0x61, 0x33, 0xda, 0x81, - 0xa1, 0x9b, 0xcc, 0x7c, 0xd1, 0x96, 0xb6, 0xf5, 0xdd, 0x00, 0x92, 0xa7, 0x61, 0x4d, 0x95, 0x3c, - 0xd6, 0xb8, 0x2b, 0x88, 0x9c, 0xe7, 0x4b, 0xb9, 0xe3, 0x81, 0xef, 0x71, 0x5c, 0x41, 0xde, 0x6b, - 0xa8, 0x85, 0x19, 0x9a, 0xe4, 0xbe, 0x20, 0x4a, 0xdf, 0xc9, 0x92, 0xad, 0x86, 0x59, 0x63, 0xb1, - 0x9b, 0x89, 0xd2, 0x1f, 0x7d, 0x19, 0xf4, 0xfe, 0x84, 0x78, 0x39, 0x82, 0x2b, 0xed, 0x23, 0x6b, - 0x72, 0xf5, 0x08, 0x8a, 0x21, 0x75, 0x12, 0x92, 0xb4, 0x0b, 0x25, 0xf2, 0x77, 0x7e, 0x14, 0x61, - 0xfb, 0x4c, 0xf8, 0x2e, 0x90, 0xdd, 0xb9, 0x63, 0x24, 0x87, 0x50, 0x53, 0x6e, 0x32, 0xb2, 0x9f, - 0xa6, 0xe8, 0x57, 0xa5, 0xf9, 0xef, 0x52, 0x3f, 0x0f, 0xc8, 0x1b, 0xa8, 0xca, 0xcb, 0x81, 0xec, - 0x49, 0x74, 0xca, 0x9d, 0x65, 0xfe, 0xb3, 0xc4, 0x1b, 0x67, 0x4a, 0xc5, 0xce, 0x32, 0xd5, 0x4b, - 0x22, 0xcb, 0xd4, 0xa5, 0xbd, 0x0d, 0xe5, 0x58, 0xd2, 0xc8, 0x6e, 0x1a, 0x20, 0x55, 0xdb, 0x24, - 0x79, 0x17, 0x0f, 0xa2, 0x26, 0x95, 0xa3, 0x9d, 0x35, 0xa9, 0xab, 0x5a, 0xd6, 0x64, 0x5e, 0x07, - 0xfa, 0xe2, 0xd7, 0x41, 0x99, 0x65, 0xf2, 0x9f, 0xc2, 0x87, 0x7e, 0xd4, 0x4d, 0x73, 0xd5, 0x92, - 0x2c, 0xa4, 0x6c, 0xb4, 0x56, 0x48, 0x9f, 0x32, 0xad, 0x50, 0x6e, 0x36, 0x8e, 0x76, 0x3f, 0xd5, - 0x5b, 0xc9, 0xcf, 0xde, 0xdb, 0xf8, 0x71, 0x55, 0x16, 0x7f, 0x72, 0xaf, 0x7e, 0x07, 0x00, 0x00, - 0xff, 0xff, 0xed, 0x02, 0x0a, 0x32, 0x0b, 0x0a, 0x00, 0x00, +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_02f43b66ea327245) } + +var fileDescriptor_office_02f43b66ea327245 = []byte{ + // 1604 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6e, 0x1c, 0xc5, + 0x13, 0xd7, 0xec, 0xa7, 0xb7, 0xd6, 0x89, 0xe3, 0xb6, 0x63, 0x6f, 0x26, 0xb1, 0xe3, 0xff, 0x24, + 0xf9, 0x2b, 0x7c, 0xc8, 0x46, 0x4b, 0x84, 0x10, 0x88, 0x08, 0xc5, 0x9b, 0x58, 0x0b, 0xde, 0xc4, + 0x8c, 0x6d, 0x22, 0x38, 0x60, 0x4d, 0xd6, 0xed, 0x61, 0xe4, 0xdd, 0x99, 0xc9, 0xf4, 0xd8, 0x26, + 0x27, 0xa4, 0x9c, 0xb9, 0x71, 0x80, 0x0b, 0x4f, 0xc1, 0x33, 0x70, 0xe0, 0x84, 0x38, 0xf0, 0x06, + 0xbc, 0x03, 0x57, 0xd4, 0x3d, 0x33, 0xfd, 0x31, 0x1f, 0xbb, 0x9b, 0x01, 0x24, 0x38, 0x79, 0xab, + 0xbb, 0xba, 0xba, 0xea, 0xd7, 0xd5, 0xbf, 0xae, 0x29, 0xc3, 0x92, 0x77, 0x72, 0xe2, 0x0c, 0xf1, + 0x56, 0xf4, 0x67, 0xd3, 0x0f, 0xbc, 0xd0, 0x43, 0x8d, 0x48, 0xd2, 0xff, 0xf7, 0xc4, 0xc7, 0xee, + 0x51, 0x7f, 0xb0, 0xe5, 0x9f, 0xda, 0x5b, 0x6c, 0x6a, 0x8b, 0x1c, 0x9f, 0x1e, 0x5d, 0x90, 0xad, + 0x0b, 0x12, 0xa9, 0x1a, 0xf7, 0x01, 0xb6, 0xbd, 0xf1, 0xd8, 0x73, 0x4d, 0x4c, 0x7c, 0xd4, 0x81, + 0x26, 0x0e, 0x82, 0x6d, 0xef, 0x18, 0x77, 0xb4, 0x0d, 0xed, 0x6e, 0xdd, 0x4c, 0x44, 0xb4, 0x02, + 0x0d, 0x1c, 0x04, 0x03, 0x62, 0x77, 0x2a, 0x1b, 0xda, 0xdd, 0x96, 0x19, 0x4b, 0xc6, 0x07, 0xd0, + 0x3c, 0xb0, 0xec, 0x43, 0x82, 0x03, 0xaa, 0x72, 0x46, 0x70, 0xd0, 0xef, 0xb1, 0xb5, 0x2d, 0x33, + 0x96, 0x90, 0x0e, 0x73, 0xf4, 0xd7, 0x63, 0x6b, 0x8c, 0xe3, 0xc5, 0x5c, 0x36, 0x9e, 0x41, 0xf5, + 0xc0, 0xb2, 0xd1, 0x32, 0xd4, 0x43, 0xcb, 0xe6, 0x2b, 0x23, 0x81, 0x7a, 0x13, 0x5a, 0xb6, 0xb4, + 0x2e, 0x11, 0xd1, 0x1b, 0x91, 0xc9, 0x5d, 0x87, 0x84, 0x9d, 0xea, 0x46, 0xf5, 0x6e, 0xbb, 0xbb, + 0xb0, 0x19, 0x23, 0x10, 0x7b, 0x63, 0x72, 0x05, 0xe3, 0x23, 0xb8, 0xbc, 0x83, 0x43, 0x3a, 0x78, + 0x60, 0xd9, 0xc4, 0xc4, 0xcf, 0x0b, 0x3d, 0xdd, 0x80, 0xb6, 0xe7, 0xe3, 0xc0, 0x0a, 0x1d, 0xcf, + 0xed, 0xf7, 0xe2, 0x4d, 0xe5, 0x21, 0xe3, 0x04, 0x16, 0x14, 0x5b, 0xc4, 0x47, 0x5d, 0x80, 0x21, + 0x47, 0x90, 0x19, 0x6c, 0x77, 0x51, 0xe2, 0x8d, 0xc0, 0xd6, 0x94, 0xb4, 0xd0, 0x4d, 0xa8, 0x85, + 0x96, 0x4d, 0x3a, 0x15, 0xe6, 0x7b, 0x5b, 0xf2, 0xdd, 0x64, 0x13, 0xc6, 0x4b, 0x0d, 0xe6, 0xb7, + 0x03, 0x6c, 0x85, 0x98, 0x8e, 0xe1, 0xe7, 0x32, 0x16, 0x9a, 0x8a, 0x85, 0x08, 0xa6, 0xa2, 0x04, + 0xb3, 0x0e, 0x10, 0xfd, 0xe2, 0x28, 0xb5, 0x4c, 0x69, 0x24, 0x1d, 0x6c, 0x2d, 0x1b, 0xec, 0x36, + 0x5c, 0x92, 0x7c, 0x28, 0x17, 0xaa, 0xf1, 0x05, 0xcc, 0xf7, 0xf0, 0x08, 0xf3, 0x40, 0x8a, 0xb0, + 0xe7, 0x29, 0x50, 0x91, 0x53, 0x20, 0xe5, 0x64, 0x35, 0xd7, 0x49, 0xc9, 0x7e, 0x49, 0x27, 0x7f, + 0xd5, 0xa0, 0xb5, 0x8f, 0xc3, 0x52, 0x2e, 0x76, 0xa0, 0xe9, 0xe2, 0x0b, 0x76, 0x32, 0x91, 0x7b, + 0x89, 0x88, 0x36, 0x01, 0x39, 0xee, 0x30, 0xc0, 0x16, 0xc1, 0x87, 0xe2, 0x24, 0x6a, 0xec, 0x24, + 0x72, 0x66, 0xd0, 0xeb, 0x70, 0x25, 0xc0, 0xc7, 0x67, 0x43, 0x59, 0xbb, 0xce, 0xb4, 0x33, 0xe3, + 0x69, 0x60, 0x1a, 0x59, 0x60, 0x3e, 0x04, 0x48, 0x42, 0x2a, 0x89, 0xca, 0xef, 0x1a, 0x5c, 0xde, + 0xc7, 0xee, 0xf1, 0x80, 0xd8, 0x5d, 0x25, 0x0d, 0x99, 0x67, 0x1a, 0xf3, 0x2c, 0x11, 0xe9, 0x2d, + 0x3f, 0x4c, 0xae, 0x64, 0x85, 0x4d, 0x71, 0x19, 0xdd, 0x80, 0xd6, 0x4e, 0xe0, 0x9d, 0xf9, 0x52, + 0x26, 0x8a, 0x01, 0x0a, 0x37, 0xc1, 0xee, 0x31, 0xcf, 0xc1, 0x58, 0xa2, 0x70, 0xd0, 0x5f, 0x38, + 0xd8, 0x1b, 0x59, 0xe1, 0x89, 0x17, 0x8c, 0xfb, 0xbd, 0x4e, 0x9d, 0xb1, 0x52, 0x66, 0x9c, 0xfa, + 0x35, 0xf4, 0xdc, 0x10, 0xbb, 0x61, 0x0c, 0x45, 0x22, 0xa6, 0x81, 0x6a, 0x66, 0x81, 0x7a, 0x08, + 0x0b, 0x4a, 0x94, 0x25, 0xd1, 0xfa, 0x56, 0x83, 0xc5, 0x1d, 0x06, 0x38, 0xb5, 0xb6, 0xeb, 0x45, + 0x54, 0xd3, 0x03, 0xd8, 0xb3, 0x6c, 0xc7, 0x65, 0x9b, 0xc5, 0x96, 0x6e, 0x6f, 0x12, 0x1c, 0x9c, + 0xe3, 0xe0, 0xc8, 0xf2, 0x9d, 0x23, 0xdf, 0x0a, 0xac, 0x31, 0xd9, 0x34, 0xf1, 0xf3, 0x33, 0x4c, + 0x42, 0xa1, 0x6b, 0x4a, 0xeb, 0x0a, 0xef, 0xf8, 0xf4, 0xeb, 0xe1, 0x01, 0x08, 0x8f, 0x14, 0xde, + 0xd4, 0xa6, 0xf0, 0xa6, 0x8c, 0x69, 0x45, 0xc5, 0x54, 0x87, 0x39, 0x7a, 0x02, 0x07, 0x4e, 0x9c, + 0xf3, 0x55, 0x93, 0xcb, 0xc6, 0x4f, 0x1a, 0xa0, 0x34, 0x0c, 0x25, 0x59, 0xf2, 0xa1, 0x82, 0x5d, + 0x85, 0xad, 0xb9, 0x93, 0x8b, 0x1d, 0xf1, 0x3d, 0x97, 0xe0, 0x02, 0xf0, 0xee, 0x41, 0x3b, 0x14, + 0xde, 0xc4, 0xef, 0x05, 0x92, 0xe2, 0x8e, 0xa7, 0x4c, 0x59, 0xcd, 0x18, 0xb2, 0xd3, 0x8c, 0x99, + 0xfe, 0xc1, 0x8b, 0x7e, 0xef, 0x9f, 0x20, 0x2f, 0x9b, 0x61, 0xa5, 0x6c, 0x52, 0x12, 0xab, 0x35, + 0xa8, 0x86, 0x96, 0x1d, 0x83, 0xa4, 0x3c, 0x28, 0x74, 0xdc, 0xb8, 0x0f, 0x73, 0xbb, 0xce, 0x29, + 0x2e, 0xfd, 0x4e, 0x3f, 0x82, 0x2b, 0x8f, 0xbd, 0xd0, 0x39, 0x71, 0x86, 0xcc, 0xf5, 0xd2, 0x76, + 0xfe, 0xd0, 0xa0, 0x49, 0x23, 0xa0, 0x59, 0x54, 0x62, 0x3d, 0xcd, 0xc9, 0x13, 0x6b, 0x88, 0x0f, + 0xcd, 0xdd, 0x84, 0x6c, 0x63, 0x91, 0x82, 0x1d, 0x60, 0x7f, 0xf4, 0x22, 0xe2, 0xc8, 0xe4, 0x39, + 0x93, 0x86, 0xd0, 0x6d, 0xb8, 0xc4, 0x45, 0x66, 0xbc, 0xce, 0x74, 0xd4, 0x41, 0xca, 0x55, 0x71, + 0x9a, 0x73, 0x5a, 0x15, 0x03, 0xf2, 0x9d, 0x68, 0xaa, 0x77, 0x62, 0x1d, 0x60, 0x18, 0x3d, 0x96, + 0xf4, 0x56, 0xcc, 0x31, 0x9e, 0x92, 0x46, 0x8c, 0x3e, 0x2c, 0xec, 0xe1, 0x60, 0xec, 0x10, 0xe2, + 0x78, 0x2e, 0x23, 0x3f, 0xba, 0x95, 0x4d, 0x7f, 0x48, 0xaf, 0xba, 0x18, 0xa0, 0x5b, 0x31, 0x81, + 0x67, 0x55, 0x22, 0x1a, 0x3d, 0xb8, 0xfc, 0xd4, 0x0b, 0x4e, 0x07, 0x1e, 0x85, 0xb1, 0xf4, 0x51, + 0x7c, 0x53, 0x03, 0x10, 0x66, 0x90, 0x01, 0xf3, 0x17, 0x5c, 0xe2, 0x86, 0x94, 0xb1, 0x42, 0x1a, + 0x92, 0xb7, 0xa9, 0x16, 0x9f, 0x58, 0x4d, 0x3d, 0x31, 0x09, 0xcb, 0xba, 0x8a, 0xe5, 0x7b, 0x30, + 0x3f, 0x8a, 0xb3, 0x95, 0x51, 0x55, 0x83, 0x5d, 0xd9, 0x95, 0x24, 0xab, 0xd5, 0xe0, 0x4d, 0x45, + 0x97, 0x52, 0xdc, 0x30, 0x4a, 0x30, 0xd2, 0x69, 0xaa, 0x14, 0x17, 0x27, 0x9e, 0xc9, 0x15, 0xe8, + 0xa1, 0xf9, 0xfc, 0x50, 0x92, 0x43, 0x13, 0x23, 0xe8, 0x11, 0x20, 0x21, 0x71, 0x77, 0x5a, 0x13, + 0xdd, 0xc9, 0x59, 0x81, 0xfa, 0xb0, 0xe4, 0xab, 0x87, 0xcf, 0x0c, 0x01, 0x33, 0xb4, 0x9a, 0x18, + 0x4a, 0xe5, 0x87, 0x99, 0xb7, 0x06, 0xbd, 0x03, 0x60, 0x85, 0xdc, 0x95, 0xf6, 0x44, 0x57, 0x24, + 0xcd, 0x54, 0x7e, 0xce, 0x67, 0xf2, 0xd3, 0x85, 0x95, 0xa8, 0xd8, 0x7b, 0xe2, 0x62, 0x61, 0x86, + 0x92, 0x5e, 0x17, 0x40, 0x64, 0x41, 0x9a, 0x8e, 0x24, 0x55, 0x49, 0x6b, 0x86, 0x4a, 0x7a, 0x00, + 0xab, 0xb9, 0xfb, 0x95, 0x7c, 0x7d, 0xcf, 0x61, 0x25, 0x2a, 0x03, 0x33, 0xee, 0xff, 0x95, 0xc4, + 0x9e, 0xce, 0xe0, 0x03, 0x58, 0xcd, 0xdd, 0xb7, 0x64, 0x18, 0x21, 0x2c, 0x53, 0x9e, 0xce, 0x04, + 0x51, 0x74, 0xc1, 0x0d, 0x98, 0x7f, 0x2a, 0x07, 0x17, 0xb9, 0xaf, 0x8c, 0xcd, 0x10, 0xc4, 0xc7, + 0x70, 0x35, 0x67, 0xd7, 0x92, 0x21, 0xfc, 0xa8, 0xc1, 0x6a, 0x7c, 0xd3, 0x5e, 0x25, 0x8c, 0x8b, + 0x9c, 0x30, 0x2e, 0x52, 0x61, 0xc8, 0x04, 0x5f, 0xcd, 0x12, 0xbc, 0x44, 0x28, 0xb5, 0x89, 0x45, + 0x60, 0x3d, 0x0b, 0xc1, 0x63, 0xe8, 0xe4, 0x3b, 0x5d, 0x12, 0x85, 0xaf, 0x60, 0x79, 0x07, 0x87, + 0xc2, 0x50, 0x52, 0x41, 0xcc, 0x92, 0x8d, 0x3a, 0xcc, 0x79, 0xfe, 0xa1, 0x9c, 0x8f, 0x5c, 0x9e, + 0xe1, 0x30, 0xbf, 0x86, 0xab, 0x39, 0x3b, 0x97, 0x2c, 0x2b, 0xd4, 0xbb, 0x5f, 0x99, 0xe5, 0xee, + 0x1b, 0xbf, 0x69, 0xb0, 0xb6, 0xfd, 0xa5, 0xe5, 0xda, 0x12, 0x8e, 0x82, 0xda, 0xfe, 0x0e, 0x10, + 0x54, 0xda, 0xae, 0x66, 0x68, 0xbb, 0x0b, 0xcb, 0x2a, 0x09, 0x2b, 0x9f, 0x5e, 0xb9, 0x73, 0x33, + 0xa4, 0xc8, 0x01, 0xac, 0x4f, 0x0a, 0xab, 0x64, 0xa2, 0x7c, 0xa7, 0xb1, 0xf3, 0xa2, 0x9e, 0x08, + 0xbb, 0x13, 0xbb, 0x14, 0xbd, 0x9c, 0xb2, 0xf8, 0xd5, 0x3f, 0x29, 0xa6, 0x27, 0xd2, 0xcf, 0x1a, + 0xac, 0xe4, 0x79, 0x56, 0x32, 0x95, 0xee, 0x41, 0x5b, 0x1c, 0x70, 0xd2, 0xfa, 0xc8, 0xcb, 0x25, + 0x59, 0x2d, 0xf5, 0x0d, 0x50, 0x2d, 0xf9, 0x0d, 0x60, 0xfc, 0xa0, 0xc1, 0xf5, 0x38, 0x96, 0x47, + 0x81, 0x83, 0xdd, 0xe3, 0x7f, 0x19, 0xd6, 0xbf, 0x68, 0x70, 0xa3, 0xd8, 0xbf, 0xff, 0x22, 0xe2, + 0xdf, 0x57, 0xe0, 0x9a, 0xd8, 0x42, 0xfe, 0x78, 0x18, 0x10, 0x1b, 0xbd, 0x05, 0x4b, 0xae, 0x3a, + 0x74, 0xf0, 0xc2, 0x4f, 0x9a, 0x8e, 0x79, 0x53, 0xe8, 0x35, 0x4a, 0xee, 0x63, 0x89, 0x86, 0x32, + 0x65, 0x5d, 0x32, 0x9f, 0xa1, 0x97, 0xea, 0xc4, 0x17, 0xbf, 0x56, 0x58, 0xca, 0xd6, 0x8b, 0x4b, + 0xd9, 0x86, 0x5a, 0xca, 0xbe, 0x09, 0x8b, 0xc2, 0xfa, 0xb6, 0xf2, 0x81, 0x90, 0x9d, 0x30, 0x46, + 0xa0, 0xef, 0x67, 0xee, 0xd5, 0x2e, 0x3e, 0xc7, 0xa3, 0x29, 0xdf, 0x98, 0x23, 0xaa, 0xc3, 0xc2, + 0xaf, 0x9b, 0x91, 0x30, 0x43, 0x6a, 0x7d, 0x02, 0xd7, 0x0b, 0x77, 0x2b, 0x97, 0x58, 0xdd, 0x97, + 0x00, 0x97, 0x9e, 0x30, 0x8d, 0x7d, 0x1c, 0x9c, 0x3b, 0x43, 0x8c, 0xee, 0x43, 0x5b, 0xea, 0x8b, + 0x22, 0x5e, 0x90, 0xaa, 0x8d, 0x57, 0x7d, 0x35, 0x77, 0x9c, 0xf8, 0xe8, 0x5d, 0x68, 0xf1, 0x56, + 0x23, 0x5a, 0xe6, 0xdb, 0x4b, 0x1d, 0x50, 0xfd, 0x6a, 0xce, 0x68, 0xb4, 0x92, 0xf7, 0xff, 0xc4, + 0x4a, 0xb9, 0xe5, 0x28, 0x56, 0xaa, 0x8d, 0xc2, 0x2d, 0x68, 0x44, 0x0d, 0x32, 0xb4, 0x98, 0x28, + 0xf0, 0x1e, 0xa0, 0x8e, 0xd2, 0x43, 0xc4, 0xa7, 0x41, 0x4a, 0x8d, 0x22, 0x11, 0xa4, 0xda, 0x23, + 0x13, 0x41, 0xa6, 0xbb, 0x4a, 0x3b, 0xac, 0x11, 0x2d, 0x75, 0x46, 0xd0, 0x35, 0x09, 0x0f, 0xb5, + 0x71, 0xa4, 0xeb, 0x45, 0x53, 0xdc, 0x90, 0xd4, 0x36, 0x50, 0x0c, 0xa9, 0x3d, 0x0b, 0xc5, 0x50, + 0xba, 0xd3, 0xf0, 0x29, 0x2c, 0xe5, 0x14, 0xe1, 0x68, 0x5d, 0x85, 0x3a, 0x5d, 0xc6, 0xe9, 0x37, + 0x27, 0xce, 0x47, 0x76, 0x73, 0xaa, 0x62, 0x61, 0x37, 0xbf, 0x54, 0x17, 0x76, 0x8b, 0x4a, 0xea, + 0x3d, 0x58, 0xcc, 0x14, 0xaa, 0xe8, 0x46, 0xb2, 0x2a, 0xaf, 0x72, 0xd6, 0xd7, 0x26, 0xcc, 0x12, + 0x1f, 0x7d, 0x06, 0xcb, 0x79, 0x75, 0x1f, 0xba, 0x99, 0x62, 0x97, 0x8c, 0xdd, 0x8d, 0xc9, 0x0a, + 0x91, 0xb3, 0x99, 0x42, 0x4c, 0x38, 0x9b, 0x57, 0x1d, 0x0a, 0x67, 0xf3, 0x2b, 0xb8, 0x53, 0xd0, + 0x8b, 0x2b, 0x10, 0x74, 0x87, 0x7b, 0x34, 0xa9, 0xf8, 0xd2, 0xff, 0x3f, 0x8b, 0x1a, 0xf1, 0xd1, + 0x3e, 0xef, 0x4d, 0x49, 0xbc, 0x81, 0xd6, 0x52, 0xd9, 0xa4, 0xbe, 0xa3, 0xfa, 0xfa, 0xa4, 0x69, + 0xe2, 0x23, 0x0c, 0x9d, 0xa2, 0x67, 0x0e, 0xdd, 0x4a, 0xad, 0xcd, 0x7b, 0xa8, 0xf5, 0xdb, 0xd3, + 0x95, 0x88, 0x8f, 0x9e, 0xc1, 0x6a, 0x01, 0xe7, 0x21, 0x43, 0xba, 0xd8, 0x05, 0x14, 0xac, 0xdf, + 0x9a, 0xaa, 0x43, 0xfc, 0x07, 0x8b, 0x9f, 0x2f, 0x6c, 0xc6, 0xff, 0x76, 0x7b, 0x3f, 0xfa, 0xf3, + 0xac, 0xc1, 0xfe, 0xa7, 0xf6, 0xf6, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x70, 0x91, 0x17, 0x98, + 0x95, 0x1b, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index edaf5307d..63d04955a 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -106,6 +106,162 @@ message GetUserTagByIDResp { Tag tag = 2; } +/// WorkMoment + +message LikeUser { + string userID = 1; + string userName = 2; +} + +message NotificationUser { + string userID = 1; + string userName = 2; +} + +message Comment { + string userID = 1; + string userName = 2; + string faceURL = 3; + string replyUserID = 4; + string replyUserName = 5; + string contentID = 6; + string content = 7; + int32 createTime = 8; +} + +message PermissionGroup { + string groupName = 1; + string groupID = 2; +} + +message WorkMomentUser { + string userID = 1; + string userName = 2; +} + +message WorkMoment { + string workMomentID = 1; + string userID = 2; + string userName = 3; + string faceURL = 4; + string content = 5; + repeated WorkMomentUser likeUserList = 6; + repeated Comment comments = 7; + int32 permission = 8; + repeated WorkMomentUser permissionUserList = 9; + repeated PermissionGroup permissionGroupList = 10; + repeated WorkMomentUser atUserList = 11; + int32 createTime = 12; +} + +message CreateOneWorkMomentReq { + WorkMoment workMoment = 1; + string operationID = 2; +} + +message CreateOneWorkMomentResp { + CommonResp commonResp = 1; +} + +message DeleteOneWorkMomentReq { + string workMomentID = 1; + string userID = 2; + string operationID = 3; +} + +message DeleteOneWorkMomentResp { + CommonResp commonResp = 1; +} + +message LikeOneWorkMomentReq { + string userID = 1; + string WorkMomentID = 2; + string operationID = 3; +} + +message LikeOneWorkMomentResp { + CommonResp commonResp = 1; +} + +message CommentOneWorkMomentReq { + string userID = 1; + string workMomentID = 2; + string replyUserID = 3; + string content = 4; + string operationID = 5; +} + +message CommentOneWorkMomentResp { + CommonResp commonResp = 1; +} + +message GetWorkMomentByIDReq { + string workMomentID = 1; + string opUserID = 2; + string operationID = 3; +} + +message GetWorkMomentByIDResp { + CommonResp commonResp = 1; + WorkMoment workMoment = 2; +} + +message ChangeWorkMomentPermissionReq { + string workMomentID = 1; + string opUserID = 2; + int32 permission = 3; + repeated string permissionUserIDList = 4; + string operationID = 5; +} + +message ChangeWorkMomentPermissionResp { + CommonResp commonResp = 1; +} + +message GetUserWorkMomentsReq { + string userID = 1; + server_api_params.RequestPagination Pagination = 2; + string operationID = 3; +} + +message GetUserWorkMomentsResp { + CommonResp commonResp = 1; + repeated WorkMoment workMoments = 2; + server_api_params.ResponsePagination Pagination = 3; +} + +message GetUserFriendWorkMomentsReq { + string userID = 1; + server_api_params.RequestPagination Pagination = 2; + string operationID = 3; +} + +message GetUserFriendWorkMomentsResp { + CommonResp commonResp = 1; + repeated WorkMoment workMoments = 2; + server_api_params.ResponsePagination Pagination = 3; +} + +message WorkMomentNotificationMsg { + int32 notificationMsgType = 1; + Comment comment = 2; + string workMomentID = 3; + string userID = 4; + string userName = 5; + string faceURL = 6; + string workMomentContent = 7; +} + +message SetUserWorkMomentsLevelReq { + string userID = 1; + int32 level = 2; + string operationID = 3; +} + +message SetUserWorkMomentsLevelResp { + CommonResp commonResp = 1; +} + service OfficeService { rpc GetUserTags(GetUserTagsReq) returns(GetUserTagsResp); rpc CreateTag(CreateTagReq) returns(CreateTagResp); @@ -114,5 +270,17 @@ service OfficeService { rpc SendMsg2Tag(SendMsg2TagReq) returns(SendMsg2TagResp); rpc GetTagSendLogs(GetTagSendLogsReq) returns(GetTagSendLogsResp); rpc GetUserTagByID(GetUserTagByIDReq) returns(GetUserTagByIDResp); + + rpc CreateOneWorkMoment(CreateOneWorkMomentReq) returns(CreateOneWorkMomentResp); + rpc DeleteOneWorkMoment(DeleteOneWorkMomentReq) returns(DeleteOneWorkMomentResp); + rpc LikeOneWorkMoment(LikeOneWorkMomentReq) returns(LikeOneWorkMomentResp); + rpc CommentOneWorkMoment(CommentOneWorkMomentReq) returns(CommentOneWorkMomentResp); + rpc GetWorkMomentByID(GetWorkMomentByIDReq) returns(GetWorkMomentByIDResp); + rpc ChangeWorkMomentPermission(ChangeWorkMomentPermissionReq) returns(ChangeWorkMomentPermissionResp); + /// user self + rpc GetUserWorkMoments(GetUserWorkMomentsReq) returns(GetUserWorkMomentsResp); + /// users friend + rpc GetUserFriendWorkMoments(GetUserFriendWorkMomentsReq) returns(GetUserFriendWorkMomentsResp); + rpc SetUserWorkMomentsLevel(SetUserWorkMomentsLevelReq) returns(SetUserWorkMomentsLevelResp); } diff --git a/pkg/proto/organization/organization.pb.go b/pkg/proto/organization/organization.pb.go new file mode 100644 index 000000000..b91b96d1f --- /dev/null +++ b/pkg/proto/organization/organization.pb.go @@ -0,0 +1,1780 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: organization/organization.proto + +package organization // import "./organization" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import sdk_ws "Open_IM/pkg/proto/sdk_ws" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type CreateDepartmentReq struct { + DepartmentInfo *sdk_ws.Department `protobuf:"bytes,1,opt,name=departmentInfo" json:"departmentInfo,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentReq) Reset() { *m = CreateDepartmentReq{} } +func (m *CreateDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentReq) ProtoMessage() {} +func (*CreateDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{0} +} +func (m *CreateDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentReq.Unmarshal(m, b) +} +func (m *CreateDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentReq.Merge(dst, src) +} +func (m *CreateDepartmentReq) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentReq.Size(m) +} +func (m *CreateDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentReq proto.InternalMessageInfo + +func (m *CreateDepartmentReq) GetDepartmentInfo() *sdk_ws.Department { + if m != nil { + return m.DepartmentInfo + } + return nil +} + +func (m *CreateDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *CreateDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type CreateDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + DepartmentInfo *sdk_ws.Department `protobuf:"bytes,3,opt,name=departmentInfo" json:"departmentInfo,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentResp) Reset() { *m = CreateDepartmentResp{} } +func (m *CreateDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentResp) ProtoMessage() {} +func (*CreateDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{1} +} +func (m *CreateDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentResp.Unmarshal(m, b) +} +func (m *CreateDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentResp.Merge(dst, src) +} +func (m *CreateDepartmentResp) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentResp.Size(m) +} +func (m *CreateDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentResp proto.InternalMessageInfo + +func (m *CreateDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CreateDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *CreateDepartmentResp) GetDepartmentInfo() *sdk_ws.Department { + if m != nil { + return m.DepartmentInfo + } + return nil +} + +type UpdateDepartmentReq struct { + DepartmentInfo *sdk_ws.Department `protobuf:"bytes,1,opt,name=departmentInfo" json:"departmentInfo,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateDepartmentReq) Reset() { *m = UpdateDepartmentReq{} } +func (m *UpdateDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*UpdateDepartmentReq) ProtoMessage() {} +func (*UpdateDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{2} +} +func (m *UpdateDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateDepartmentReq.Unmarshal(m, b) +} +func (m *UpdateDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *UpdateDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateDepartmentReq.Merge(dst, src) +} +func (m *UpdateDepartmentReq) XXX_Size() int { + return xxx_messageInfo_UpdateDepartmentReq.Size(m) +} +func (m *UpdateDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateDepartmentReq proto.InternalMessageInfo + +func (m *UpdateDepartmentReq) GetDepartmentInfo() *sdk_ws.Department { + if m != nil { + return m.DepartmentInfo + } + return nil +} + +func (m *UpdateDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *UpdateDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type UpdateDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateDepartmentResp) Reset() { *m = UpdateDepartmentResp{} } +func (m *UpdateDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*UpdateDepartmentResp) ProtoMessage() {} +func (*UpdateDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{3} +} +func (m *UpdateDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateDepartmentResp.Unmarshal(m, b) +} +func (m *UpdateDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *UpdateDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateDepartmentResp.Merge(dst, src) +} +func (m *UpdateDepartmentResp) XXX_Size() int { + return xxx_messageInfo_UpdateDepartmentResp.Size(m) +} +func (m *UpdateDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateDepartmentResp proto.InternalMessageInfo + +func (m *UpdateDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *UpdateDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetSubDepartmentReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetSubDepartmentReq) Reset() { *m = GetSubDepartmentReq{} } +func (m *GetSubDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*GetSubDepartmentReq) ProtoMessage() {} +func (*GetSubDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{4} +} +func (m *GetSubDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetSubDepartmentReq.Unmarshal(m, b) +} +func (m *GetSubDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetSubDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *GetSubDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetSubDepartmentReq.Merge(dst, src) +} +func (m *GetSubDepartmentReq) XXX_Size() int { + return xxx_messageInfo_GetSubDepartmentReq.Size(m) +} +func (m *GetSubDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetSubDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetSubDepartmentReq proto.InternalMessageInfo + +func (m *GetSubDepartmentReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *GetSubDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetSubDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type GetSubDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + DepartmentList []*sdk_ws.Department `protobuf:"bytes,3,rep,name=departmentList" json:"departmentList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetSubDepartmentResp) Reset() { *m = GetSubDepartmentResp{} } +func (m *GetSubDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*GetSubDepartmentResp) ProtoMessage() {} +func (*GetSubDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{5} +} +func (m *GetSubDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetSubDepartmentResp.Unmarshal(m, b) +} +func (m *GetSubDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetSubDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *GetSubDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetSubDepartmentResp.Merge(dst, src) +} +func (m *GetSubDepartmentResp) XXX_Size() int { + return xxx_messageInfo_GetSubDepartmentResp.Size(m) +} +func (m *GetSubDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetSubDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetSubDepartmentResp proto.InternalMessageInfo + +func (m *GetSubDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetSubDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetSubDepartmentResp) GetDepartmentList() []*sdk_ws.Department { + if m != nil { + return m.DepartmentList + } + return nil +} + +type DeleteDepartmentReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteDepartmentReq) Reset() { *m = DeleteDepartmentReq{} } +func (m *DeleteDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteDepartmentReq) ProtoMessage() {} +func (*DeleteDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{6} +} +func (m *DeleteDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteDepartmentReq.Unmarshal(m, b) +} +func (m *DeleteDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteDepartmentReq.Merge(dst, src) +} +func (m *DeleteDepartmentReq) XXX_Size() int { + return xxx_messageInfo_DeleteDepartmentReq.Size(m) +} +func (m *DeleteDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteDepartmentReq proto.InternalMessageInfo + +func (m *DeleteDepartmentReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *DeleteDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type DeleteDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteDepartmentResp) Reset() { *m = DeleteDepartmentResp{} } +func (m *DeleteDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteDepartmentResp) ProtoMessage() {} +func (*DeleteDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{7} +} +func (m *DeleteDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteDepartmentResp.Unmarshal(m, b) +} +func (m *DeleteDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteDepartmentResp.Merge(dst, src) +} +func (m *DeleteDepartmentResp) XXX_Size() int { + return xxx_messageInfo_DeleteDepartmentResp.Size(m) +} +func (m *DeleteDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteDepartmentResp proto.InternalMessageInfo + +func (m *DeleteDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type CreateOrganizationUserReq struct { + OrganizationUser *sdk_ws.OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOrganizationUserReq) Reset() { *m = CreateOrganizationUserReq{} } +func (m *CreateOrganizationUserReq) String() string { return proto.CompactTextString(m) } +func (*CreateOrganizationUserReq) ProtoMessage() {} +func (*CreateOrganizationUserReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{8} +} +func (m *CreateOrganizationUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOrganizationUserReq.Unmarshal(m, b) +} +func (m *CreateOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOrganizationUserReq.Marshal(b, m, deterministic) +} +func (dst *CreateOrganizationUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrganizationUserReq.Merge(dst, src) +} +func (m *CreateOrganizationUserReq) XXX_Size() int { + return xxx_messageInfo_CreateOrganizationUserReq.Size(m) +} +func (m *CreateOrganizationUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOrganizationUserReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOrganizationUserReq proto.InternalMessageInfo + +func (m *CreateOrganizationUserReq) GetOrganizationUser() *sdk_ws.OrganizationUser { + if m != nil { + return m.OrganizationUser + } + return nil +} + +func (m *CreateOrganizationUserReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *CreateOrganizationUserReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type CreateOrganizationUserResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOrganizationUserResp) Reset() { *m = CreateOrganizationUserResp{} } +func (m *CreateOrganizationUserResp) String() string { return proto.CompactTextString(m) } +func (*CreateOrganizationUserResp) ProtoMessage() {} +func (*CreateOrganizationUserResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{9} +} +func (m *CreateOrganizationUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOrganizationUserResp.Unmarshal(m, b) +} +func (m *CreateOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOrganizationUserResp.Marshal(b, m, deterministic) +} +func (dst *CreateOrganizationUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrganizationUserResp.Merge(dst, src) +} +func (m *CreateOrganizationUserResp) XXX_Size() int { + return xxx_messageInfo_CreateOrganizationUserResp.Size(m) +} +func (m *CreateOrganizationUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOrganizationUserResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOrganizationUserResp proto.InternalMessageInfo + +func (m *CreateOrganizationUserResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CreateOrganizationUserResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type UpdateOrganizationUserReq struct { + OrganizationUser *sdk_ws.OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateOrganizationUserReq) Reset() { *m = UpdateOrganizationUserReq{} } +func (m *UpdateOrganizationUserReq) String() string { return proto.CompactTextString(m) } +func (*UpdateOrganizationUserReq) ProtoMessage() {} +func (*UpdateOrganizationUserReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{10} +} +func (m *UpdateOrganizationUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateOrganizationUserReq.Unmarshal(m, b) +} +func (m *UpdateOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateOrganizationUserReq.Marshal(b, m, deterministic) +} +func (dst *UpdateOrganizationUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateOrganizationUserReq.Merge(dst, src) +} +func (m *UpdateOrganizationUserReq) XXX_Size() int { + return xxx_messageInfo_UpdateOrganizationUserReq.Size(m) +} +func (m *UpdateOrganizationUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateOrganizationUserReq.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateOrganizationUserReq proto.InternalMessageInfo + +func (m *UpdateOrganizationUserReq) GetOrganizationUser() *sdk_ws.OrganizationUser { + if m != nil { + return m.OrganizationUser + } + return nil +} + +func (m *UpdateOrganizationUserReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *UpdateOrganizationUserReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type UpdateOrganizationUserResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateOrganizationUserResp) Reset() { *m = UpdateOrganizationUserResp{} } +func (m *UpdateOrganizationUserResp) String() string { return proto.CompactTextString(m) } +func (*UpdateOrganizationUserResp) ProtoMessage() {} +func (*UpdateOrganizationUserResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{11} +} +func (m *UpdateOrganizationUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateOrganizationUserResp.Unmarshal(m, b) +} +func (m *UpdateOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateOrganizationUserResp.Marshal(b, m, deterministic) +} +func (dst *UpdateOrganizationUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateOrganizationUserResp.Merge(dst, src) +} +func (m *UpdateOrganizationUserResp) XXX_Size() int { + return xxx_messageInfo_UpdateOrganizationUserResp.Size(m) +} +func (m *UpdateOrganizationUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateOrganizationUserResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateOrganizationUserResp proto.InternalMessageInfo + +func (m *UpdateOrganizationUserResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *UpdateOrganizationUserResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type CreateDepartmentMemberReq struct { + DepartmentMember *sdk_ws.DepartmentMember `protobuf:"bytes,1,opt,name=departmentMember" json:"departmentMember,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentMemberReq) Reset() { *m = CreateDepartmentMemberReq{} } +func (m *CreateDepartmentMemberReq) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentMemberReq) ProtoMessage() {} +func (*CreateDepartmentMemberReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{12} +} +func (m *CreateDepartmentMemberReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentMemberReq.Unmarshal(m, b) +} +func (m *CreateDepartmentMemberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentMemberReq.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentMemberReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentMemberReq.Merge(dst, src) +} +func (m *CreateDepartmentMemberReq) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentMemberReq.Size(m) +} +func (m *CreateDepartmentMemberReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentMemberReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentMemberReq proto.InternalMessageInfo + +func (m *CreateDepartmentMemberReq) GetDepartmentMember() *sdk_ws.DepartmentMember { + if m != nil { + return m.DepartmentMember + } + return nil +} + +func (m *CreateDepartmentMemberReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *CreateDepartmentMemberReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type CreateDepartmentMemberResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentMemberResp) Reset() { *m = CreateDepartmentMemberResp{} } +func (m *CreateDepartmentMemberResp) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentMemberResp) ProtoMessage() {} +func (*CreateDepartmentMemberResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{13} +} +func (m *CreateDepartmentMemberResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentMemberResp.Unmarshal(m, b) +} +func (m *CreateDepartmentMemberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentMemberResp.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentMemberResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentMemberResp.Merge(dst, src) +} +func (m *CreateDepartmentMemberResp) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentMemberResp.Size(m) +} +func (m *CreateDepartmentMemberResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentMemberResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentMemberResp proto.InternalMessageInfo + +func (m *CreateDepartmentMemberResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CreateDepartmentMemberResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetUserInDepartmentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserInDepartmentReq) Reset() { *m = GetUserInDepartmentReq{} } +func (m *GetUserInDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*GetUserInDepartmentReq) ProtoMessage() {} +func (*GetUserInDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{14} +} +func (m *GetUserInDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserInDepartmentReq.Unmarshal(m, b) +} +func (m *GetUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserInDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *GetUserInDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserInDepartmentReq.Merge(dst, src) +} +func (m *GetUserInDepartmentReq) XXX_Size() int { + return xxx_messageInfo_GetUserInDepartmentReq.Size(m) +} +func (m *GetUserInDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserInDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserInDepartmentReq proto.InternalMessageInfo + +func (m *GetUserInDepartmentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserInDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetUserInDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type GetUserInDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + UserInDepartment *sdk_ws.UserInDepartment `protobuf:"bytes,3,opt,name=userInDepartment" json:"userInDepartment,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserInDepartmentResp) Reset() { *m = GetUserInDepartmentResp{} } +func (m *GetUserInDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*GetUserInDepartmentResp) ProtoMessage() {} +func (*GetUserInDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{15} +} +func (m *GetUserInDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserInDepartmentResp.Unmarshal(m, b) +} +func (m *GetUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserInDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *GetUserInDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserInDepartmentResp.Merge(dst, src) +} +func (m *GetUserInDepartmentResp) XXX_Size() int { + return xxx_messageInfo_GetUserInDepartmentResp.Size(m) +} +func (m *GetUserInDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserInDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserInDepartmentResp proto.InternalMessageInfo + +func (m *GetUserInDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetUserInDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetUserInDepartmentResp) GetUserInDepartment() *sdk_ws.UserInDepartment { + if m != nil { + return m.UserInDepartment + } + return nil +} + +type UpdateUserInDepartmentReq struct { + DepartmentMember *sdk_ws.DepartmentMember `protobuf:"bytes,1,opt,name=departmentMember" json:"departmentMember,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateUserInDepartmentReq) Reset() { *m = UpdateUserInDepartmentReq{} } +func (m *UpdateUserInDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*UpdateUserInDepartmentReq) ProtoMessage() {} +func (*UpdateUserInDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{16} +} +func (m *UpdateUserInDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserInDepartmentReq.Unmarshal(m, b) +} +func (m *UpdateUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserInDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *UpdateUserInDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserInDepartmentReq.Merge(dst, src) +} +func (m *UpdateUserInDepartmentReq) XXX_Size() int { + return xxx_messageInfo_UpdateUserInDepartmentReq.Size(m) +} +func (m *UpdateUserInDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserInDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserInDepartmentReq proto.InternalMessageInfo + +func (m *UpdateUserInDepartmentReq) GetDepartmentMember() *sdk_ws.DepartmentMember { + if m != nil { + return m.DepartmentMember + } + return nil +} + +func (m *UpdateUserInDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *UpdateUserInDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type UpdateUserInDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateUserInDepartmentResp) Reset() { *m = UpdateUserInDepartmentResp{} } +func (m *UpdateUserInDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*UpdateUserInDepartmentResp) ProtoMessage() {} +func (*UpdateUserInDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{17} +} +func (m *UpdateUserInDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserInDepartmentResp.Unmarshal(m, b) +} +func (m *UpdateUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserInDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *UpdateUserInDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserInDepartmentResp.Merge(dst, src) +} +func (m *UpdateUserInDepartmentResp) XXX_Size() int { + return xxx_messageInfo_UpdateUserInDepartmentResp.Size(m) +} +func (m *UpdateUserInDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserInDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserInDepartmentResp proto.InternalMessageInfo + +func (m *UpdateUserInDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *UpdateUserInDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type DeleteUserInDepartmentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + DepartmentID string `protobuf:"bytes,4,opt,name=departmentID" json:"departmentID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteUserInDepartmentReq) Reset() { *m = DeleteUserInDepartmentReq{} } +func (m *DeleteUserInDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteUserInDepartmentReq) ProtoMessage() {} +func (*DeleteUserInDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{18} +} +func (m *DeleteUserInDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteUserInDepartmentReq.Unmarshal(m, b) +} +func (m *DeleteUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteUserInDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteUserInDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteUserInDepartmentReq.Merge(dst, src) +} +func (m *DeleteUserInDepartmentReq) XXX_Size() int { + return xxx_messageInfo_DeleteUserInDepartmentReq.Size(m) +} +func (m *DeleteUserInDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteUserInDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteUserInDepartmentReq proto.InternalMessageInfo + +func (m *DeleteUserInDepartmentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteUserInDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteUserInDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *DeleteUserInDepartmentReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +type DeleteUserInDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteUserInDepartmentResp) Reset() { *m = DeleteUserInDepartmentResp{} } +func (m *DeleteUserInDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteUserInDepartmentResp) ProtoMessage() {} +func (*DeleteUserInDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{19} +} +func (m *DeleteUserInDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteUserInDepartmentResp.Unmarshal(m, b) +} +func (m *DeleteUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteUserInDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteUserInDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteUserInDepartmentResp.Merge(dst, src) +} +func (m *DeleteUserInDepartmentResp) XXX_Size() int { + return xxx_messageInfo_DeleteUserInDepartmentResp.Size(m) +} +func (m *DeleteUserInDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteUserInDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteUserInDepartmentResp proto.InternalMessageInfo + +func (m *DeleteUserInDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteUserInDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type DeleteOrganizationUserReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOrganizationUserReq) Reset() { *m = DeleteOrganizationUserReq{} } +func (m *DeleteOrganizationUserReq) String() string { return proto.CompactTextString(m) } +func (*DeleteOrganizationUserReq) ProtoMessage() {} +func (*DeleteOrganizationUserReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{20} +} +func (m *DeleteOrganizationUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOrganizationUserReq.Unmarshal(m, b) +} +func (m *DeleteOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOrganizationUserReq.Marshal(b, m, deterministic) +} +func (dst *DeleteOrganizationUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOrganizationUserReq.Merge(dst, src) +} +func (m *DeleteOrganizationUserReq) XXX_Size() int { + return xxx_messageInfo_DeleteOrganizationUserReq.Size(m) +} +func (m *DeleteOrganizationUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOrganizationUserReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOrganizationUserReq proto.InternalMessageInfo + +func (m *DeleteOrganizationUserReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteOrganizationUserReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteOrganizationUserReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type DeleteOrganizationUserResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOrganizationUserResp) Reset() { *m = DeleteOrganizationUserResp{} } +func (m *DeleteOrganizationUserResp) String() string { return proto.CompactTextString(m) } +func (*DeleteOrganizationUserResp) ProtoMessage() {} +func (*DeleteOrganizationUserResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{21} +} +func (m *DeleteOrganizationUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOrganizationUserResp.Unmarshal(m, b) +} +func (m *DeleteOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOrganizationUserResp.Marshal(b, m, deterministic) +} +func (dst *DeleteOrganizationUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOrganizationUserResp.Merge(dst, src) +} +func (m *DeleteOrganizationUserResp) XXX_Size() int { + return xxx_messageInfo_DeleteOrganizationUserResp.Size(m) +} +func (m *DeleteOrganizationUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOrganizationUserResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOrganizationUserResp proto.InternalMessageInfo + +func (m *DeleteOrganizationUserResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteOrganizationUserResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetDepartmentMemberReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentMemberReq) Reset() { *m = GetDepartmentMemberReq{} } +func (m *GetDepartmentMemberReq) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentMemberReq) ProtoMessage() {} +func (*GetDepartmentMemberReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{22} +} +func (m *GetDepartmentMemberReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentMemberReq.Unmarshal(m, b) +} +func (m *GetDepartmentMemberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentMemberReq.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentMemberReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentMemberReq.Merge(dst, src) +} +func (m *GetDepartmentMemberReq) XXX_Size() int { + return xxx_messageInfo_GetDepartmentMemberReq.Size(m) +} +func (m *GetDepartmentMemberReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentMemberReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentMemberReq proto.InternalMessageInfo + +func (m *GetDepartmentMemberReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *GetDepartmentMemberReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetDepartmentMemberReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type GetDepartmentMemberResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + UserDepartmentMemberList []*sdk_ws.UserDepartmentMember `protobuf:"bytes,3,rep,name=userDepartmentMemberList" json:"userDepartmentMemberList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentMemberResp) Reset() { *m = GetDepartmentMemberResp{} } +func (m *GetDepartmentMemberResp) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentMemberResp) ProtoMessage() {} +func (*GetDepartmentMemberResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{23} +} +func (m *GetDepartmentMemberResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentMemberResp.Unmarshal(m, b) +} +func (m *GetDepartmentMemberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentMemberResp.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentMemberResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentMemberResp.Merge(dst, src) +} +func (m *GetDepartmentMemberResp) XXX_Size() int { + return xxx_messageInfo_GetDepartmentMemberResp.Size(m) +} +func (m *GetDepartmentMemberResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentMemberResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentMemberResp proto.InternalMessageInfo + +func (m *GetDepartmentMemberResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetDepartmentMemberResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetDepartmentMemberResp) GetUserDepartmentMemberList() []*sdk_ws.UserDepartmentMember { + if m != nil { + return m.UserDepartmentMemberList + } + return nil +} + +func init() { + proto.RegisterType((*CreateDepartmentReq)(nil), "organization.CreateDepartmentReq") + proto.RegisterType((*CreateDepartmentResp)(nil), "organization.CreateDepartmentResp") + proto.RegisterType((*UpdateDepartmentReq)(nil), "organization.UpdateDepartmentReq") + proto.RegisterType((*UpdateDepartmentResp)(nil), "organization.UpdateDepartmentResp") + proto.RegisterType((*GetSubDepartmentReq)(nil), "organization.GetSubDepartmentReq") + proto.RegisterType((*GetSubDepartmentResp)(nil), "organization.GetSubDepartmentResp") + proto.RegisterType((*DeleteDepartmentReq)(nil), "organization.DeleteDepartmentReq") + proto.RegisterType((*DeleteDepartmentResp)(nil), "organization.DeleteDepartmentResp") + proto.RegisterType((*CreateOrganizationUserReq)(nil), "organization.CreateOrganizationUserReq") + proto.RegisterType((*CreateOrganizationUserResp)(nil), "organization.CreateOrganizationUserResp") + proto.RegisterType((*UpdateOrganizationUserReq)(nil), "organization.UpdateOrganizationUserReq") + proto.RegisterType((*UpdateOrganizationUserResp)(nil), "organization.UpdateOrganizationUserResp") + proto.RegisterType((*CreateDepartmentMemberReq)(nil), "organization.CreateDepartmentMemberReq") + proto.RegisterType((*CreateDepartmentMemberResp)(nil), "organization.CreateDepartmentMemberResp") + proto.RegisterType((*GetUserInDepartmentReq)(nil), "organization.GetUserInDepartmentReq") + proto.RegisterType((*GetUserInDepartmentResp)(nil), "organization.GetUserInDepartmentResp") + proto.RegisterType((*UpdateUserInDepartmentReq)(nil), "organization.UpdateUserInDepartmentReq") + proto.RegisterType((*UpdateUserInDepartmentResp)(nil), "organization.UpdateUserInDepartmentResp") + proto.RegisterType((*DeleteUserInDepartmentReq)(nil), "organization.DeleteUserInDepartmentReq") + proto.RegisterType((*DeleteUserInDepartmentResp)(nil), "organization.DeleteUserInDepartmentResp") + proto.RegisterType((*DeleteOrganizationUserReq)(nil), "organization.DeleteOrganizationUserReq") + proto.RegisterType((*DeleteOrganizationUserResp)(nil), "organization.DeleteOrganizationUserResp") + proto.RegisterType((*GetDepartmentMemberReq)(nil), "organization.GetDepartmentMemberReq") + proto.RegisterType((*GetDepartmentMemberResp)(nil), "organization.GetDepartmentMemberResp") +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// Client API for Organization service + +type OrganizationClient interface { + CreateDepartment(ctx context.Context, in *CreateDepartmentReq, opts ...grpc.CallOption) (*CreateDepartmentResp, error) + UpdateDepartment(ctx context.Context, in *UpdateDepartmentReq, opts ...grpc.CallOption) (*UpdateDepartmentResp, error) + GetSubDepartment(ctx context.Context, in *GetSubDepartmentReq, opts ...grpc.CallOption) (*GetSubDepartmentResp, error) + DeleteDepartment(ctx context.Context, in *DeleteDepartmentReq, opts ...grpc.CallOption) (*DeleteDepartmentResp, error) + CreateOrganizationUser(ctx context.Context, in *CreateOrganizationUserReq, opts ...grpc.CallOption) (*CreateOrganizationUserResp, error) + UpdateOrganizationUser(ctx context.Context, in *UpdateOrganizationUserReq, opts ...grpc.CallOption) (*UpdateOrganizationUserResp, error) + DeleteOrganizationUser(ctx context.Context, in *DeleteOrganizationUserReq, opts ...grpc.CallOption) (*DeleteOrganizationUserResp, error) + CreateDepartmentMember(ctx context.Context, in *CreateDepartmentMemberReq, opts ...grpc.CallOption) (*CreateDepartmentMemberResp, error) + GetUserInDepartment(ctx context.Context, in *GetUserInDepartmentReq, opts ...grpc.CallOption) (*GetUserInDepartmentResp, error) + DeleteUserInDepartment(ctx context.Context, in *DeleteUserInDepartmentReq, opts ...grpc.CallOption) (*DeleteUserInDepartmentResp, error) + UpdateUserInDepartment(ctx context.Context, in *UpdateUserInDepartmentReq, opts ...grpc.CallOption) (*UpdateUserInDepartmentResp, error) + GetDepartmentMember(ctx context.Context, in *GetDepartmentMemberReq, opts ...grpc.CallOption) (*GetDepartmentMemberResp, error) +} + +type organizationClient struct { + cc *grpc.ClientConn +} + +func NewOrganizationClient(cc *grpc.ClientConn) OrganizationClient { + return &organizationClient{cc} +} + +func (c *organizationClient) CreateDepartment(ctx context.Context, in *CreateDepartmentReq, opts ...grpc.CallOption) (*CreateDepartmentResp, error) { + out := new(CreateDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/CreateDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) UpdateDepartment(ctx context.Context, in *UpdateDepartmentReq, opts ...grpc.CallOption) (*UpdateDepartmentResp, error) { + out := new(UpdateDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/UpdateDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetSubDepartment(ctx context.Context, in *GetSubDepartmentReq, opts ...grpc.CallOption) (*GetSubDepartmentResp, error) { + out := new(GetSubDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/GetSubDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) DeleteDepartment(ctx context.Context, in *DeleteDepartmentReq, opts ...grpc.CallOption) (*DeleteDepartmentResp, error) { + out := new(DeleteDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/DeleteDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) CreateOrganizationUser(ctx context.Context, in *CreateOrganizationUserReq, opts ...grpc.CallOption) (*CreateOrganizationUserResp, error) { + out := new(CreateOrganizationUserResp) + err := grpc.Invoke(ctx, "/organization.organization/CreateOrganizationUser", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) UpdateOrganizationUser(ctx context.Context, in *UpdateOrganizationUserReq, opts ...grpc.CallOption) (*UpdateOrganizationUserResp, error) { + out := new(UpdateOrganizationUserResp) + err := grpc.Invoke(ctx, "/organization.organization/UpdateOrganizationUser", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) DeleteOrganizationUser(ctx context.Context, in *DeleteOrganizationUserReq, opts ...grpc.CallOption) (*DeleteOrganizationUserResp, error) { + out := new(DeleteOrganizationUserResp) + err := grpc.Invoke(ctx, "/organization.organization/DeleteOrganizationUser", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) CreateDepartmentMember(ctx context.Context, in *CreateDepartmentMemberReq, opts ...grpc.CallOption) (*CreateDepartmentMemberResp, error) { + out := new(CreateDepartmentMemberResp) + err := grpc.Invoke(ctx, "/organization.organization/CreateDepartmentMember", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetUserInDepartment(ctx context.Context, in *GetUserInDepartmentReq, opts ...grpc.CallOption) (*GetUserInDepartmentResp, error) { + out := new(GetUserInDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/GetUserInDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) DeleteUserInDepartment(ctx context.Context, in *DeleteUserInDepartmentReq, opts ...grpc.CallOption) (*DeleteUserInDepartmentResp, error) { + out := new(DeleteUserInDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/DeleteUserInDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) UpdateUserInDepartment(ctx context.Context, in *UpdateUserInDepartmentReq, opts ...grpc.CallOption) (*UpdateUserInDepartmentResp, error) { + out := new(UpdateUserInDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/UpdateUserInDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetDepartmentMember(ctx context.Context, in *GetDepartmentMemberReq, opts ...grpc.CallOption) (*GetDepartmentMemberResp, error) { + out := new(GetDepartmentMemberResp) + err := grpc.Invoke(ctx, "/organization.organization/GetDepartmentMember", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Organization service + +type OrganizationServer interface { + CreateDepartment(context.Context, *CreateDepartmentReq) (*CreateDepartmentResp, error) + UpdateDepartment(context.Context, *UpdateDepartmentReq) (*UpdateDepartmentResp, error) + GetSubDepartment(context.Context, *GetSubDepartmentReq) (*GetSubDepartmentResp, error) + DeleteDepartment(context.Context, *DeleteDepartmentReq) (*DeleteDepartmentResp, error) + CreateOrganizationUser(context.Context, *CreateOrganizationUserReq) (*CreateOrganizationUserResp, error) + UpdateOrganizationUser(context.Context, *UpdateOrganizationUserReq) (*UpdateOrganizationUserResp, error) + DeleteOrganizationUser(context.Context, *DeleteOrganizationUserReq) (*DeleteOrganizationUserResp, error) + CreateDepartmentMember(context.Context, *CreateDepartmentMemberReq) (*CreateDepartmentMemberResp, error) + GetUserInDepartment(context.Context, *GetUserInDepartmentReq) (*GetUserInDepartmentResp, error) + DeleteUserInDepartment(context.Context, *DeleteUserInDepartmentReq) (*DeleteUserInDepartmentResp, error) + UpdateUserInDepartment(context.Context, *UpdateUserInDepartmentReq) (*UpdateUserInDepartmentResp, error) + GetDepartmentMember(context.Context, *GetDepartmentMemberReq) (*GetDepartmentMemberResp, error) +} + +func RegisterOrganizationServer(s *grpc.Server, srv OrganizationServer) { + s.RegisterService(&_Organization_serviceDesc, srv) +} + +func _Organization_CreateDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).CreateDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/CreateDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).CreateDepartment(ctx, req.(*CreateDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_UpdateDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).UpdateDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/UpdateDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).UpdateDepartment(ctx, req.(*UpdateDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetSubDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSubDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetSubDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetSubDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetSubDepartment(ctx, req.(*GetSubDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_DeleteDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).DeleteDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/DeleteDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).DeleteDepartment(ctx, req.(*DeleteDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_CreateOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOrganizationUserReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).CreateOrganizationUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/CreateOrganizationUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).CreateOrganizationUser(ctx, req.(*CreateOrganizationUserReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_UpdateOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateOrganizationUserReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).UpdateOrganizationUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/UpdateOrganizationUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).UpdateOrganizationUser(ctx, req.(*UpdateOrganizationUserReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_DeleteOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteOrganizationUserReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).DeleteOrganizationUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/DeleteOrganizationUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).DeleteOrganizationUser(ctx, req.(*DeleteOrganizationUserReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_CreateDepartmentMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateDepartmentMemberReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).CreateDepartmentMember(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/CreateDepartmentMember", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).CreateDepartmentMember(ctx, req.(*CreateDepartmentMemberReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserInDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetUserInDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetUserInDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetUserInDepartment(ctx, req.(*GetUserInDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_DeleteUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteUserInDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).DeleteUserInDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/DeleteUserInDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).DeleteUserInDepartment(ctx, req.(*DeleteUserInDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_UpdateUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateUserInDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).UpdateUserInDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/UpdateUserInDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).UpdateUserInDepartment(ctx, req.(*UpdateUserInDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetDepartmentMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDepartmentMemberReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetDepartmentMember(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetDepartmentMember", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetDepartmentMember(ctx, req.(*GetDepartmentMemberReq)) + } + return interceptor(ctx, in, info, handler) +} + +var _Organization_serviceDesc = grpc.ServiceDesc{ + ServiceName: "organization.organization", + HandlerType: (*OrganizationServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateDepartment", + Handler: _Organization_CreateDepartment_Handler, + }, + { + MethodName: "UpdateDepartment", + Handler: _Organization_UpdateDepartment_Handler, + }, + { + MethodName: "GetSubDepartment", + Handler: _Organization_GetSubDepartment_Handler, + }, + { + MethodName: "DeleteDepartment", + Handler: _Organization_DeleteDepartment_Handler, + }, + { + MethodName: "CreateOrganizationUser", + Handler: _Organization_CreateOrganizationUser_Handler, + }, + { + MethodName: "UpdateOrganizationUser", + Handler: _Organization_UpdateOrganizationUser_Handler, + }, + { + MethodName: "DeleteOrganizationUser", + Handler: _Organization_DeleteOrganizationUser_Handler, + }, + { + MethodName: "CreateDepartmentMember", + Handler: _Organization_CreateDepartmentMember_Handler, + }, + { + MethodName: "GetUserInDepartment", + Handler: _Organization_GetUserInDepartment_Handler, + }, + { + MethodName: "DeleteUserInDepartment", + Handler: _Organization_DeleteUserInDepartment_Handler, + }, + { + MethodName: "UpdateUserInDepartment", + Handler: _Organization_UpdateUserInDepartment_Handler, + }, + { + MethodName: "GetDepartmentMember", + Handler: _Organization_GetDepartmentMember_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "organization/organization.proto", +} + +func init() { + proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_f9b83a1db54ed9cf) +} + +var fileDescriptor_organization_f9b83a1db54ed9cf = []byte{ + // 715 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xdf, 0x6e, 0x12, 0x4f, + 0x14, 0xce, 0xfe, 0xf8, 0x59, 0xe5, 0xb4, 0x31, 0x64, 0x4a, 0x70, 0xbb, 0xa6, 0x91, 0xa2, 0x4d, + 0xb9, 0x82, 0xa4, 0x5e, 0x7a, 0x67, 0x31, 0x2d, 0x89, 0x48, 0x82, 0xe9, 0x05, 0xde, 0x90, 0x45, + 0x46, 0x42, 0x90, 0xdd, 0xe9, 0xcc, 0x22, 0x49, 0x5f, 0xc2, 0x2b, 0x6f, 0x8c, 0x4f, 0xe0, 0x95, + 0x8f, 0xe2, 0x23, 0x99, 0xdd, 0xa5, 0x38, 0x7b, 0xe6, 0x2c, 0xc5, 0x05, 0x4c, 0xbd, 0x9c, 0x61, + 0xe6, 0x7c, 0xe7, 0x7c, 0xe7, 0xcf, 0x7c, 0x2c, 0x3c, 0xf1, 0xe5, 0xd0, 0xf5, 0x46, 0xd7, 0x6e, + 0x30, 0xf2, 0xbd, 0xba, 0xbe, 0xa8, 0x09, 0xe9, 0x07, 0x3e, 0xdb, 0xd3, 0xf7, 0x9c, 0xa3, 0xb6, + 0xe0, 0x5e, 0xaf, 0xd9, 0xaa, 0x8b, 0xf1, 0xb0, 0x1e, 0x1d, 0xa8, 0xab, 0xc1, 0xb8, 0x37, 0x53, + 0xf5, 0x99, 0x8a, 0x2f, 0x54, 0xbe, 0x5a, 0xb0, 0x7f, 0x26, 0xb9, 0x1b, 0xf0, 0x06, 0x17, 0xae, + 0x0c, 0x26, 0xdc, 0x0b, 0x3a, 0xfc, 0x8a, 0xbd, 0x82, 0x87, 0x83, 0xc5, 0x46, 0xd3, 0xfb, 0xe0, + 0xdb, 0x56, 0xd9, 0xaa, 0xee, 0x9e, 0x1e, 0xd6, 0x14, 0x97, 0x9f, 0xb8, 0xec, 0xb9, 0x62, 0xd4, + 0x13, 0xae, 0x74, 0x27, 0xaa, 0xa6, 0xdd, 0x44, 0x97, 0x58, 0x19, 0x76, 0x7d, 0xc1, 0x65, 0xe4, + 0x4e, 0xb3, 0x61, 0xff, 0x57, 0xb6, 0xaa, 0xf9, 0x8e, 0xbe, 0xc5, 0x1c, 0x78, 0xe0, 0x8b, 0x4b, + 0xc5, 0x65, 0xb3, 0x61, 0xe7, 0xa2, 0x9f, 0x17, 0xeb, 0xca, 0x67, 0x0b, 0x8a, 0xa6, 0x73, 0x4a, + 0x30, 0x1b, 0xee, 0x73, 0x29, 0xcf, 0xfc, 0x01, 0x8f, 0xdc, 0xba, 0xd7, 0xb9, 0x59, 0xb2, 0x12, + 0xec, 0x70, 0x29, 0x5b, 0x6a, 0x38, 0xc7, 0x9a, 0xaf, 0x88, 0x78, 0x72, 0x19, 0xe2, 0x89, 0xe8, + 0xba, 0x14, 0x83, 0xbb, 0x49, 0xd7, 0x05, 0x14, 0x4d, 0xdf, 0xb2, 0xb0, 0x55, 0x99, 0xc1, 0xfe, + 0x39, 0x0f, 0xde, 0x4e, 0xfb, 0xc9, 0x28, 0x2b, 0xb0, 0xa7, 0x39, 0xdc, 0x88, 0xac, 0xe5, 0x3b, + 0x89, 0xbd, 0x0d, 0x64, 0xdc, 0x44, 0x5e, 0x3f, 0xe3, 0xaf, 0x47, 0x2a, 0xb0, 0x73, 0xe5, 0xdc, + 0x1f, 0xa5, 0x24, 0xbc, 0x14, 0x52, 0xd1, 0xe0, 0x1f, 0x39, 0x4e, 0xf8, 0xf6, 0xa9, 0xb8, 0x80, + 0xa2, 0x09, 0x9c, 0x29, 0x9b, 0xdf, 0x2d, 0x38, 0x88, 0xdb, 0xa8, 0xad, 0x4d, 0x87, 0x10, 0x26, + 0x8c, 0xa4, 0x0d, 0x05, 0x1f, 0x6d, 0xcf, 0x8b, 0xf7, 0x29, 0xc1, 0x94, 0x61, 0xc1, 0xb8, 0xbc, + 0x66, 0xd8, 0x6f, 0xc0, 0x49, 0xf3, 0x35, 0x73, 0xf0, 0x71, 0x57, 0xfc, 0x1b, 0xc1, 0xa7, 0xf9, + 0xba, 0x66, 0xe6, 0x7f, 0x17, 0x51, 0x8b, 0x4f, 0xfa, 0x8b, 0xe0, 0x07, 0x68, 0x7b, 0x49, 0xf0, + 0x86, 0x05, 0xe3, 0xf2, 0xa6, 0x32, 0x6f, 0xfa, 0x9a, 0x29, 0x78, 0x0f, 0x4a, 0xe7, 0x3c, 0x88, + 0x8c, 0x7b, 0xc9, 0xe6, 0x2d, 0xc1, 0xce, 0x34, 0xf6, 0x21, 0x6e, 0xdb, 0xf9, 0x6a, 0x4d, 0xff, + 0xbf, 0x59, 0xf0, 0x88, 0x04, 0xcc, 0x34, 0xbe, 0xda, 0x50, 0x98, 0x22, 0x4b, 0xf3, 0x27, 0x8b, + 0x4a, 0x8e, 0x01, 0x6a, 0x5c, 0xd6, 0x1a, 0x81, 0xa2, 0xe4, 0xee, 0xd5, 0x42, 0x9a, 0xaf, 0x99, + 0x6a, 0xe1, 0x8b, 0x05, 0x07, 0xf1, 0x34, 0xfd, 0x6b, 0xf5, 0x60, 0x3c, 0x11, 0xff, 0x9b, 0x4f, + 0x44, 0x18, 0x67, 0x9a, 0x5b, 0x99, 0xe2, 0xbc, 0xba, 0x09, 0x93, 0x1a, 0x76, 0xdb, 0x29, 0xfb, + 0x45, 0x08, 0x1b, 0x9a, 0x59, 0xd7, 0x51, 0xdb, 0x52, 0xf3, 0x6a, 0xfb, 0x6f, 0xee, 0x8f, 0xb8, + 0x85, 0x37, 0x33, 0x80, 0xd8, 0x7b, 0xb0, 0x43, 0x86, 0xb1, 0x35, 0x4d, 0x8b, 0x9c, 0xa4, 0xb4, + 0xb2, 0xe1, 0x40, 0xaa, 0xa1, 0xd3, 0x9f, 0x79, 0x48, 0x88, 0x7e, 0xd6, 0x85, 0x02, 0x1e, 0xa3, + 0xec, 0xa8, 0x96, 0xf8, 0xaf, 0x40, 0x08, 0x7e, 0xa7, 0x72, 0xdb, 0x11, 0x25, 0x42, 0xd3, 0x58, + 0x60, 0x62, 0xd3, 0x84, 0x38, 0xc6, 0xa6, 0x49, 0x8d, 0xda, 0x85, 0x02, 0xd6, 0x7d, 0xd8, 0x34, + 0xa1, 0x48, 0xb1, 0x69, 0x52, 0x3a, 0x76, 0xa1, 0x80, 0x85, 0x14, 0x36, 0x4d, 0x28, 0x3c, 0x6c, + 0x9a, 0xd4, 0x62, 0x63, 0x28, 0xd1, 0x62, 0x85, 0x9d, 0x50, 0x74, 0x12, 0x4d, 0xe9, 0x54, 0x57, + 0x3b, 0x18, 0x83, 0xd1, 0xe2, 0x00, 0x83, 0xa5, 0xca, 0x1d, 0x0c, 0xb6, 0x44, 0x6b, 0x8c, 0xa1, + 0x44, 0x77, 0x35, 0x06, 0x4b, 0x1d, 0x37, 0x18, 0x6c, 0xc9, 0x90, 0x58, 0xd0, 0x88, 0x2b, 0x9c, + 0xa6, 0x91, 0x98, 0x0d, 0x34, 0x8d, 0x64, 0x1f, 0xf7, 0xa3, 0xff, 0x36, 0x78, 0xde, 0xb2, 0x67, + 0x46, 0x25, 0x11, 0x2f, 0x85, 0x73, 0xbc, 0xc2, 0x29, 0x9d, 0x3d, 0x03, 0x86, 0x64, 0x8f, 0x42, + 0xaa, 0xae, 0x76, 0x50, 0xaf, 0x8b, 0xdb, 0xc0, 0x52, 0x5f, 0x7f, 0xba, 0x2e, 0x48, 0xb0, 0x98, + 0x3d, 0x23, 0x4f, 0x26, 0x7b, 0x54, 0x92, 0x8e, 0x57, 0x38, 0xa5, 0xc4, 0xcb, 0xc3, 0x77, 0x8f, + 0x6b, 0x89, 0x8f, 0x1b, 0x2f, 0xf4, 0x45, 0x7f, 0x27, 0xfa, 0x72, 0xf1, 0xfc, 0x57, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x63, 0xc0, 0xb1, 0xa3, 0x0d, 0x11, 0x00, 0x00, +} diff --git a/pkg/proto/organization/organization.proto b/pkg/proto/organization/organization.proto new file mode 100644 index 000000000..6e7165723 --- /dev/null +++ b/pkg/proto/organization/organization.proto @@ -0,0 +1,172 @@ +syntax = "proto3"; +import "Open_IM/pkg/proto/sdk_ws/ws.proto"; +option go_package = "./organization;organization"; +package organization; + + +message CreateDepartmentReq{ + server_api_params.Department departmentInfo = 1; + string operationID = 2; + string opUserID = 3; +} + +message CreateDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; + server_api_params.Department departmentInfo = 3; +} + +message UpdateDepartmentReq{ + server_api_params.Department departmentInfo = 1; + string operationID = 2; + string opUserID = 3; +} + +message UpdateDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message GetSubDepartmentReq{ + string departmentID = 1; + string operationID = 2; + string opUserID = 3; +} + +message GetSubDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; + repeated server_api_params.Department departmentList = 3; +} + +message DeleteDepartmentReq{ + string departmentID = 1; + string operationID = 2; + string opUserID = 3; +} + +message DeleteDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message CreateOrganizationUserReq{ + server_api_params.OrganizationUser organizationUser = 1; + string operationID = 2; + string opUserID = 3; +} + + +message CreateOrganizationUserResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message UpdateOrganizationUserReq{ + server_api_params.OrganizationUser organizationUser = 1; + string operationID = 2; + string opUserID = 3; +} + + +message UpdateOrganizationUserResp{ + int32 errCode = 1; + string errMsg = 2; +} + + + + +message CreateDepartmentMemberReq{ + server_api_params.DepartmentMember departmentMember = 1; + string operationID = 2; + string opUserID = 3; +} +message CreateDepartmentMemberResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message GetUserInDepartmentReq{ + string userID = 1; + string operationID = 2; + string opUserID = 3; +} +message GetUserInDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; + server_api_params.UserInDepartment userInDepartment = 3; +} + + +message UpdateUserInDepartmentReq{ + server_api_params.DepartmentMember departmentMember = 1; + string operationID = 2; + string opUserID = 3; +} +message UpdateUserInDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message DeleteUserInDepartmentReq{ + string userID = 1; + string operationID = 2; + string opUserID = 3; + string departmentID = 4; +} +message DeleteUserInDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; +} + +message DeleteOrganizationUserReq{ + string userID = 1; + string operationID = 2; + string opUserID = 3; +} +message DeleteOrganizationUserResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message GetDepartmentMemberReq{ + string departmentID = 1; + string operationID = 2; + string opUserID = 3; +} + +message GetDepartmentMemberResp{ + int32 errCode = 1; + string errMsg = 2; + repeated server_api_params.UserDepartmentMember userDepartmentMemberList = 3; +} + + +service organization{ + rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); + rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp); + rpc GetSubDepartment(GetSubDepartmentReq) returns(GetSubDepartmentResp); + rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp); + + rpc CreateOrganizationUser(CreateOrganizationUserReq) returns(CreateOrganizationUserResp); + rpc UpdateOrganizationUser(UpdateOrganizationUserReq) returns(UpdateOrganizationUserResp); + rpc DeleteOrganizationUser(DeleteOrganizationUserReq) returns(DeleteOrganizationUserResp); + + + rpc CreateDepartmentMember(CreateDepartmentMemberReq) returns(CreateDepartmentMemberResp); + rpc GetUserInDepartment(GetUserInDepartmentReq) returns(GetUserInDepartmentResp); + rpc DeleteUserInDepartment(DeleteUserInDepartmentReq) returns(DeleteUserInDepartmentResp); + rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp); + rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp); +} + + + + diff --git a/pkg/proto/proto_dir.cfg b/pkg/proto/proto_dir.cfg index bc7945472..99b94de97 100644 --- a/pkg/proto/proto_dir.cfg +++ b/pkg/proto/proto_dir.cfg @@ -12,4 +12,5 @@ all_proto=( push/push.proto relay/relay.proto sdk_ws/ws.proto + conversation/conversation.proto ) diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index d0566cd04..fd5fd76a0 100644 --- a/pkg/proto/sdk_ws/ws.pb.go +++ b/pkg/proto/sdk_ws/ws.pb.go @@ -40,7 +40,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} } func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{0} + return fileDescriptor_ws_e4200fdb78b83da6, []int{0} } func (m *GroupInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfo.Unmarshal(m, b) @@ -165,7 +165,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{1} + return fileDescriptor_ws_e4200fdb78b83da6, []int{1} } func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) @@ -277,7 +277,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{2} + return fileDescriptor_ws_e4200fdb78b83da6, []int{2} } func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) @@ -352,7 +352,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} } func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (*UserInfo) ProtoMessage() {} func (*UserInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{3} + return fileDescriptor_ws_e4200fdb78b83da6, []int{3} } func (m *UserInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfo.Unmarshal(m, b) @@ -459,7 +459,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} } func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{4} + return fileDescriptor_ws_e4200fdb78b83da6, []int{4} } func (m *FriendInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfo.Unmarshal(m, b) @@ -544,7 +544,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} } func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{5} + return fileDescriptor_ws_e4200fdb78b83da6, []int{5} } func (m *BlackInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackInfo.Unmarshal(m, b) @@ -625,7 +625,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} } func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{6} + return fileDescriptor_ws_e4200fdb78b83da6, []int{6} } func (m *GroupRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupRequest.Unmarshal(m, b) @@ -733,7 +733,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} } func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{7} + return fileDescriptor_ws_e4200fdb78b83da6, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -858,6 +858,412 @@ func (m *FriendRequest) GetEx() string { return "" } +type Department struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + FaceURL string `protobuf:"bytes,2,opt,name=faceURL" json:"faceURL,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` + ParentID string `protobuf:"bytes,4,opt,name=parentID" json:"parentID,omitempty"` + Order int32 `protobuf:"varint,5,opt,name=order" json:"order,omitempty"` + DepartmentType int32 `protobuf:"varint,6,opt,name=departmentType" json:"departmentType,omitempty"` + CreateTime uint32 `protobuf:"varint,7,opt,name=createTime" json:"createTime,omitempty"` + SubDepartmentNum uint32 `protobuf:"varint,8,opt,name=subDepartmentNum" json:"subDepartmentNum,omitempty"` + MemberNum uint32 `protobuf:"varint,9,opt,name=memberNum" json:"memberNum,omitempty"` + Ex string `protobuf:"bytes,10,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Department) Reset() { *m = Department{} } +func (m *Department) String() string { return proto.CompactTextString(m) } +func (*Department) ProtoMessage() {} +func (*Department) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{8} +} +func (m *Department) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Department.Unmarshal(m, b) +} +func (m *Department) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Department.Marshal(b, m, deterministic) +} +func (dst *Department) XXX_Merge(src proto.Message) { + xxx_messageInfo_Department.Merge(dst, src) +} +func (m *Department) XXX_Size() int { + return xxx_messageInfo_Department.Size(m) +} +func (m *Department) XXX_DiscardUnknown() { + xxx_messageInfo_Department.DiscardUnknown(m) +} + +var xxx_messageInfo_Department proto.InternalMessageInfo + +func (m *Department) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *Department) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *Department) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Department) GetParentID() string { + if m != nil { + return m.ParentID + } + return "" +} + +func (m *Department) GetOrder() int32 { + if m != nil { + return m.Order + } + return 0 +} + +func (m *Department) GetDepartmentType() int32 { + if m != nil { + return m.DepartmentType + } + return 0 +} + +func (m *Department) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +func (m *Department) GetSubDepartmentNum() uint32 { + if m != nil { + return m.SubDepartmentNum + } + return 0 +} + +func (m *Department) GetMemberNum() uint32 { + if m != nil { + return m.MemberNum + } + return 0 +} + +func (m *Department) GetEx() string { + if m != nil { + return m.Ex + } + return "" +} + +type OrganizationUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname" json:"nickname,omitempty"` + EnglishName string `protobuf:"bytes,3,opt,name=englishName" json:"englishName,omitempty"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL" json:"faceURL,omitempty"` + Gender int32 `protobuf:"varint,5,opt,name=gender" json:"gender,omitempty"` + Mobile string `protobuf:"bytes,6,opt,name=mobile" json:"mobile,omitempty"` + Telephone string `protobuf:"bytes,7,opt,name=telephone" json:"telephone,omitempty"` + Birth uint32 `protobuf:"varint,8,opt,name=birth" json:"birth,omitempty"` + Email string `protobuf:"bytes,9,opt,name=email" json:"email,omitempty"` + CreateTime uint32 `protobuf:"varint,10,opt,name=createTime" json:"createTime,omitempty"` + Ex string `protobuf:"bytes,11,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OrganizationUser) Reset() { *m = OrganizationUser{} } +func (m *OrganizationUser) String() string { return proto.CompactTextString(m) } +func (*OrganizationUser) ProtoMessage() {} +func (*OrganizationUser) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{9} +} +func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) +} +func (m *OrganizationUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OrganizationUser.Marshal(b, m, deterministic) +} +func (dst *OrganizationUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_OrganizationUser.Merge(dst, src) +} +func (m *OrganizationUser) XXX_Size() int { + return xxx_messageInfo_OrganizationUser.Size(m) +} +func (m *OrganizationUser) XXX_DiscardUnknown() { + xxx_messageInfo_OrganizationUser.DiscardUnknown(m) +} + +var xxx_messageInfo_OrganizationUser proto.InternalMessageInfo + +func (m *OrganizationUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *OrganizationUser) GetNickname() string { + if m != nil { + return m.Nickname + } + return "" +} + +func (m *OrganizationUser) GetEnglishName() string { + if m != nil { + return m.EnglishName + } + return "" +} + +func (m *OrganizationUser) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *OrganizationUser) GetGender() int32 { + if m != nil { + return m.Gender + } + return 0 +} + +func (m *OrganizationUser) GetMobile() string { + if m != nil { + return m.Mobile + } + return "" +} + +func (m *OrganizationUser) GetTelephone() string { + if m != nil { + return m.Telephone + } + return "" +} + +func (m *OrganizationUser) GetBirth() uint32 { + if m != nil { + return m.Birth + } + return 0 +} + +func (m *OrganizationUser) GetEmail() string { + if m != nil { + return m.Email + } + return "" +} + +func (m *OrganizationUser) GetCreateTime() uint32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +func (m *OrganizationUser) GetEx() string { + if m != nil { + return m.Ex + } + return "" +} + +type DepartmentMember struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + DepartmentID string `protobuf:"bytes,2,opt,name=departmentID" json:"departmentID,omitempty"` + Order int32 `protobuf:"varint,3,opt,name=order" json:"order,omitempty"` + Position string `protobuf:"bytes,4,opt,name=position" json:"position,omitempty"` + Leader int32 `protobuf:"varint,5,opt,name=leader" json:"leader,omitempty"` + Status int32 `protobuf:"varint,6,opt,name=status" json:"status,omitempty"` + Ex string `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DepartmentMember) Reset() { *m = DepartmentMember{} } +func (m *DepartmentMember) String() string { return proto.CompactTextString(m) } +func (*DepartmentMember) ProtoMessage() {} +func (*DepartmentMember) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{10} +} +func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) +} +func (m *DepartmentMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DepartmentMember.Marshal(b, m, deterministic) +} +func (dst *DepartmentMember) XXX_Merge(src proto.Message) { + xxx_messageInfo_DepartmentMember.Merge(dst, src) +} +func (m *DepartmentMember) XXX_Size() int { + return xxx_messageInfo_DepartmentMember.Size(m) +} +func (m *DepartmentMember) XXX_DiscardUnknown() { + xxx_messageInfo_DepartmentMember.DiscardUnknown(m) +} + +var xxx_messageInfo_DepartmentMember proto.InternalMessageInfo + +func (m *DepartmentMember) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DepartmentMember) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *DepartmentMember) GetOrder() int32 { + if m != nil { + return m.Order + } + return 0 +} + +func (m *DepartmentMember) GetPosition() string { + if m != nil { + return m.Position + } + return "" +} + +func (m *DepartmentMember) GetLeader() int32 { + if m != nil { + return m.Leader + } + return 0 +} + +func (m *DepartmentMember) GetStatus() int32 { + if m != nil { + return m.Status + } + return 0 +} + +func (m *DepartmentMember) GetEx() string { + if m != nil { + return m.Ex + } + return "" +} + +type UserDepartmentMember struct { + OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` + DepartmentMember *DepartmentMember `protobuf:"bytes,2,opt,name=departmentMember" json:"departmentMember,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UserDepartmentMember) Reset() { *m = UserDepartmentMember{} } +func (m *UserDepartmentMember) String() string { return proto.CompactTextString(m) } +func (*UserDepartmentMember) ProtoMessage() {} +func (*UserDepartmentMember) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{11} +} +func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) +} +func (m *UserDepartmentMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserDepartmentMember.Marshal(b, m, deterministic) +} +func (dst *UserDepartmentMember) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserDepartmentMember.Merge(dst, src) +} +func (m *UserDepartmentMember) XXX_Size() int { + return xxx_messageInfo_UserDepartmentMember.Size(m) +} +func (m *UserDepartmentMember) XXX_DiscardUnknown() { + xxx_messageInfo_UserDepartmentMember.DiscardUnknown(m) +} + +var xxx_messageInfo_UserDepartmentMember proto.InternalMessageInfo + +func (m *UserDepartmentMember) GetOrganizationUser() *OrganizationUser { + if m != nil { + return m.OrganizationUser + } + return nil +} + +func (m *UserDepartmentMember) GetDepartmentMember() *DepartmentMember { + if m != nil { + return m.DepartmentMember + } + return nil +} + +type UserInDepartment struct { + OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` + DepartmentMemberList []*DepartmentMember `protobuf:"bytes,2,rep,name=departmentMemberList" json:"departmentMemberList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UserInDepartment) Reset() { *m = UserInDepartment{} } +func (m *UserInDepartment) String() string { return proto.CompactTextString(m) } +func (*UserInDepartment) ProtoMessage() {} +func (*UserInDepartment) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{12} +} +func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) +} +func (m *UserInDepartment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UserInDepartment.Marshal(b, m, deterministic) +} +func (dst *UserInDepartment) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserInDepartment.Merge(dst, src) +} +func (m *UserInDepartment) XXX_Size() int { + return xxx_messageInfo_UserInDepartment.Size(m) +} +func (m *UserInDepartment) XXX_DiscardUnknown() { + xxx_messageInfo_UserInDepartment.DiscardUnknown(m) +} + +var xxx_messageInfo_UserInDepartment proto.InternalMessageInfo + +func (m *UserInDepartment) GetOrganizationUser() *OrganizationUser { + if m != nil { + return m.OrganizationUser + } + return nil +} + +func (m *UserInDepartment) GetDepartmentMemberList() []*DepartmentMember { + if m != nil { + return m.DepartmentMemberList + } + return nil +} + type PullMessageBySeqListResp struct { ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` @@ -871,7 +1277,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{8} + return fileDescriptor_ws_e4200fdb78b83da6, []int{13} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -925,7 +1331,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{9} + return fileDescriptor_ws_e4200fdb78b83da6, []int{14} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -976,7 +1382,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{10} + return fileDescriptor_ws_e4200fdb78b83da6, []int{15} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1008,7 +1414,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{11} + return fileDescriptor_ws_e4200fdb78b83da6, []int{16} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1055,7 +1461,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{12} + return fileDescriptor_ws_e4200fdb78b83da6, []int{17} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1112,9 +1518,10 @@ type MsgData struct { Seq uint32 `protobuf:"varint,14,opt,name=seq" json:"seq,omitempty"` SendTime int64 `protobuf:"varint,15,opt,name=sendTime" json:"sendTime,omitempty"` CreateTime int64 `protobuf:"varint,16,opt,name=createTime" json:"createTime,omitempty"` - Status int32 `protobuf:"varint,17,opt,name=status" json:"status,omitempty"` - Options map[string]bool `protobuf:"bytes,18,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,19,opt,name=offlinePushInfo" json:"offlinePushInfo,omitempty"` + AtUserIDList []string `protobuf:"bytes,17,rep,name=atUserIDList" json:"atUserIDList,omitempty"` + Status int32 `protobuf:"varint,18,opt,name=status" json:"status,omitempty"` + Options map[string]bool `protobuf:"bytes,19,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + OfflinePushInfo *OfflinePushInfo `protobuf:"bytes,20,opt,name=offlinePushInfo" json:"offlinePushInfo,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1124,7 +1531,7 @@ func (m *MsgData) Reset() { *m = MsgData{} } func (m *MsgData) String() string { return proto.CompactTextString(m) } func (*MsgData) ProtoMessage() {} func (*MsgData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{13} + return fileDescriptor_ws_e4200fdb78b83da6, []int{18} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1249,6 +1656,13 @@ func (m *MsgData) GetCreateTime() int64 { return 0 } +func (m *MsgData) GetAtUserIDList() []string { + if m != nil { + return m.AtUserIDList + } + return nil +} + func (m *MsgData) GetStatus() int32 { if m != nil { return m.Status @@ -1285,7 +1699,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{14} + return fileDescriptor_ws_e4200fdb78b83da6, []int{19} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1353,7 +1767,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} } func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (*TipsComm) ProtoMessage() {} func (*TipsComm) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{15} + return fileDescriptor_ws_e4200fdb78b83da6, []int{20} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1410,7 +1824,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{16} + return fileDescriptor_ws_e4200fdb78b83da6, []int{21} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1479,7 +1893,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{17} + return fileDescriptor_ws_e4200fdb78b83da6, []int{22} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1534,7 +1948,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{18} + return fileDescriptor_ws_e4200fdb78b83da6, []int{23} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1590,7 +2004,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{19} + return fileDescriptor_ws_e4200fdb78b83da6, []int{24} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -1645,7 +2059,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{20} + return fileDescriptor_ws_e4200fdb78b83da6, []int{25} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -1700,7 +2114,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{21} + return fileDescriptor_ws_e4200fdb78b83da6, []int{26} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -1756,7 +2170,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{22} + return fileDescriptor_ws_e4200fdb78b83da6, []int{27} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -1819,7 +2233,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{23} + return fileDescriptor_ws_e4200fdb78b83da6, []int{28} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -1882,7 +2296,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{24} + return fileDescriptor_ws_e4200fdb78b83da6, []int{29} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -1944,7 +2358,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{25} + return fileDescriptor_ws_e4200fdb78b83da6, []int{30} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -1998,7 +2412,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{26} + return fileDescriptor_ws_e4200fdb78b83da6, []int{31} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2054,7 +2468,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{27} + return fileDescriptor_ws_e4200fdb78b83da6, []int{32} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2123,7 +2537,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{28} + return fileDescriptor_ws_e4200fdb78b83da6, []int{33} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2184,7 +2598,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{29} + return fileDescriptor_ws_e4200fdb78b83da6, []int{34} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2238,7 +2652,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{30} + return fileDescriptor_ws_e4200fdb78b83da6, []int{35} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2279,6 +2693,114 @@ func (m *GroupCancelMutedTips) GetOperationTime() int64 { return 0 } +type GroupMemberInfoSetTips struct { + Group *GroupInfo `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` + OpUser *GroupMemberFullInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + OperationTime int64 `protobuf:"varint,3,opt,name=operationTime" json:"operationTime,omitempty"` + ChangedUser *GroupMemberFullInfo `protobuf:"bytes,4,opt,name=changedUser" json:"changedUser,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupMemberInfoSetTips) Reset() { *m = GroupMemberInfoSetTips{} } +func (m *GroupMemberInfoSetTips) String() string { return proto.CompactTextString(m) } +func (*GroupMemberInfoSetTips) ProtoMessage() {} +func (*GroupMemberInfoSetTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{36} +} +func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) +} +func (m *GroupMemberInfoSetTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupMemberInfoSetTips.Marshal(b, m, deterministic) +} +func (dst *GroupMemberInfoSetTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupMemberInfoSetTips.Merge(dst, src) +} +func (m *GroupMemberInfoSetTips) XXX_Size() int { + return xxx_messageInfo_GroupMemberInfoSetTips.Size(m) +} +func (m *GroupMemberInfoSetTips) XXX_DiscardUnknown() { + xxx_messageInfo_GroupMemberInfoSetTips.DiscardUnknown(m) +} + +var xxx_messageInfo_GroupMemberInfoSetTips proto.InternalMessageInfo + +func (m *GroupMemberInfoSetTips) GetGroup() *GroupInfo { + if m != nil { + return m.Group + } + return nil +} + +func (m *GroupMemberInfoSetTips) GetOpUser() *GroupMemberFullInfo { + if m != nil { + return m.OpUser + } + return nil +} + +func (m *GroupMemberInfoSetTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime + } + return 0 +} + +func (m *GroupMemberInfoSetTips) GetChangedUser() *GroupMemberFullInfo { + if m != nil { + return m.ChangedUser + } + return nil +} + +type OrganizationChangedTips struct { + OpUser *UserInfo `protobuf:"bytes,2,opt,name=opUser" json:"opUser,omitempty"` + OperationTime int64 `protobuf:"varint,3,opt,name=operationTime" json:"operationTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OrganizationChangedTips) Reset() { *m = OrganizationChangedTips{} } +func (m *OrganizationChangedTips) String() string { return proto.CompactTextString(m) } +func (*OrganizationChangedTips) ProtoMessage() {} +func (*OrganizationChangedTips) Descriptor() ([]byte, []int) { + return fileDescriptor_ws_e4200fdb78b83da6, []int{37} +} +func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b) +} +func (m *OrganizationChangedTips) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_OrganizationChangedTips.Marshal(b, m, deterministic) +} +func (dst *OrganizationChangedTips) XXX_Merge(src proto.Message) { + xxx_messageInfo_OrganizationChangedTips.Merge(dst, src) +} +func (m *OrganizationChangedTips) XXX_Size() int { + return xxx_messageInfo_OrganizationChangedTips.Size(m) +} +func (m *OrganizationChangedTips) XXX_DiscardUnknown() { + xxx_messageInfo_OrganizationChangedTips.DiscardUnknown(m) +} + +var xxx_messageInfo_OrganizationChangedTips proto.InternalMessageInfo + +func (m *OrganizationChangedTips) GetOpUser() *UserInfo { + if m != nil { + return m.OpUser + } + return nil +} + +func (m *OrganizationChangedTips) GetOperationTime() int64 { + if m != nil { + return m.OperationTime + } + return 0 +} + type FriendApplication struct { AddTime int64 `protobuf:"varint,1,opt,name=addTime" json:"addTime,omitempty"` AddSource string `protobuf:"bytes,2,opt,name=addSource" json:"addSource,omitempty"` @@ -2292,7 +2814,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} } func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{31} + return fileDescriptor_ws_e4200fdb78b83da6, []int{38} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2345,7 +2867,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} } func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{32} + return fileDescriptor_ws_e4200fdb78b83da6, []int{39} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2391,7 +2913,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{33} + return fileDescriptor_ws_e4200fdb78b83da6, []int{40} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2431,7 +2953,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{34} + return fileDescriptor_ws_e4200fdb78b83da6, []int{41} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2478,7 +3000,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{35} + return fileDescriptor_ws_e4200fdb78b83da6, []int{42} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2526,7 +3048,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{36} + return fileDescriptor_ws_e4200fdb78b83da6, []int{43} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -2579,7 +3101,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{37} + return fileDescriptor_ws_e4200fdb78b83da6, []int{44} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -2617,7 +3139,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{38} + return fileDescriptor_ws_e4200fdb78b83da6, []int{45} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -2655,7 +3177,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{39} + return fileDescriptor_ws_e4200fdb78b83da6, []int{46} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -2693,7 +3215,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{40} + return fileDescriptor_ws_e4200fdb78b83da6, []int{47} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -2732,7 +3254,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{41} + return fileDescriptor_ws_e4200fdb78b83da6, []int{48} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -2771,7 +3293,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{} func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{42} + return fileDescriptor_ws_e4200fdb78b83da6, []int{49} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -2811,7 +3333,7 @@ func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPriva func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) } func (*ConversationSetPrivateTips) ProtoMessage() {} func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{43} + return fileDescriptor_ws_e4200fdb78b83da6, []int{50} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -2865,7 +3387,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} } func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{44} + return fileDescriptor_ws_e4200fdb78b83da6, []int{51} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -2911,7 +3433,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{45} + return fileDescriptor_ws_e4200fdb78b83da6, []int{52} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -2964,7 +3486,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} } func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (*SignalReq) ProtoMessage() {} func (*SignalReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{46} + return fileDescriptor_ws_e4200fdb78b83da6, []int{53} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3231,7 +3753,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} } func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (*SignalResp) ProtoMessage() {} func (*SignalResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{47} + return fileDescriptor_ws_e4200fdb78b83da6, []int{54} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3499,7 +4021,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{48} + return fileDescriptor_ws_e4200fdb78b83da6, []int{55} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -3595,7 +4117,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{49} + return fileDescriptor_ws_e4200fdb78b83da6, []int{56} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -3650,7 +4172,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{50} + return fileDescriptor_ws_e4200fdb78b83da6, []int{57} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -3711,7 +4233,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{51} + return fileDescriptor_ws_e4200fdb78b83da6, []int{58} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -3766,7 +4288,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{} func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{52} + return fileDescriptor_ws_e4200fdb78b83da6, []int{59} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -3827,7 +4349,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{53} + return fileDescriptor_ws_e4200fdb78b83da6, []int{60} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -3882,7 +4404,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{54} + return fileDescriptor_ws_e4200fdb78b83da6, []int{61} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -3940,7 +4462,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{55} + return fileDescriptor_ws_e4200fdb78b83da6, []int{62} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -3975,7 +4497,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{56} + return fileDescriptor_ws_e4200fdb78b83da6, []int{63} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4043,7 +4565,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{57} + return fileDescriptor_ws_e4200fdb78b83da6, []int{64} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4097,7 +4619,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{58} + return fileDescriptor_ws_e4200fdb78b83da6, []int{65} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4148,7 +4670,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{59} + return fileDescriptor_ws_e4200fdb78b83da6, []int{66} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4183,7 +4705,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{60} + return fileDescriptor_ws_e4200fdb78b83da6, []int{67} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4248,7 +4770,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{61} + return fileDescriptor_ws_e4200fdb78b83da6, []int{68} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4282,7 +4804,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{62} + return fileDescriptor_ws_e4200fdb78b83da6, []int{69} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4342,7 +4864,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_ws_331bd590ecfeca43, []int{63} + return fileDescriptor_ws_e4200fdb78b83da6, []int{70} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4385,6 +4907,11 @@ func init() { proto.RegisterType((*BlackInfo)(nil), "server_api_params.BlackInfo") proto.RegisterType((*GroupRequest)(nil), "server_api_params.GroupRequest") proto.RegisterType((*FriendRequest)(nil), "server_api_params.FriendRequest") + proto.RegisterType((*Department)(nil), "server_api_params.Department") + proto.RegisterType((*OrganizationUser)(nil), "server_api_params.OrganizationUser") + proto.RegisterType((*DepartmentMember)(nil), "server_api_params.DepartmentMember") + proto.RegisterType((*UserDepartmentMember)(nil), "server_api_params.UserDepartmentMember") + proto.RegisterType((*UserInDepartment)(nil), "server_api_params.UserInDepartment") proto.RegisterType((*PullMessageBySeqListResp)(nil), "server_api_params.PullMessageBySeqListResp") proto.RegisterType((*PullMessageBySeqListReq)(nil), "server_api_params.PullMessageBySeqListReq") proto.RegisterType((*GetMaxAndMinSeqReq)(nil), "server_api_params.GetMaxAndMinSeqReq") @@ -4409,6 +4936,8 @@ func init() { proto.RegisterType((*GroupMemberCancelMutedTips)(nil), "server_api_params.GroupMemberCancelMutedTips") proto.RegisterType((*GroupMutedTips)(nil), "server_api_params.GroupMutedTips") proto.RegisterType((*GroupCancelMutedTips)(nil), "server_api_params.GroupCancelMutedTips") + proto.RegisterType((*GroupMemberInfoSetTips)(nil), "server_api_params.GroupMemberInfoSetTips") + proto.RegisterType((*OrganizationChangedTips)(nil), "server_api_params.OrganizationChangedTips") proto.RegisterType((*FriendApplication)(nil), "server_api_params.FriendApplication") proto.RegisterType((*FromToUserID)(nil), "server_api_params.FromToUserID") proto.RegisterType((*FriendApplicationTips)(nil), "server_api_params.FriendApplicationTips") @@ -4444,178 +4973,199 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_331bd590ecfeca43) } - -var fileDescriptor_ws_331bd590ecfeca43 = []byte{ - // 2713 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0xe4, 0x48, - 0x15, 0xc7, 0xee, 0x74, 0x27, 0xfd, 0x3a, 0x9d, 0x0f, 0x67, 0x08, 0x4d, 0x98, 0x1d, 0x82, 0x15, - 0x2d, 0xc3, 0x02, 0x59, 0x34, 0x08, 0x09, 0x66, 0x61, 0x50, 0x3e, 0xe6, 0x6b, 0x49, 0xcf, 0x64, - 0xdd, 0x33, 0x2c, 0x02, 0xa4, 0x91, 0xd3, 0xae, 0x74, 0x3c, 0x71, 0x97, 0xdd, 0x2e, 0x3b, 0x33, - 0x91, 0x90, 0x90, 0x40, 0x42, 0xdc, 0x38, 0xc1, 0x81, 0x0b, 0x12, 0x17, 0x04, 0x42, 0xab, 0x3d, - 0xc0, 0x0d, 0x71, 0xe2, 0x1f, 0xe0, 0x88, 0xb8, 0x71, 0xe6, 0xca, 0x01, 0x09, 0x09, 0x54, 0xf5, - 0xca, 0x76, 0x95, 0xdd, 0x9d, 0xf4, 0x46, 0xd1, 0xce, 0xac, 0x86, 0x5b, 0xbf, 0xd7, 0xf5, 0x5e, - 0xbd, 0x7a, 0xbf, 0xf7, 0x5e, 0xbd, 0xaa, 0x32, 0x2c, 0x32, 0xef, 0xf8, 0xc9, 0x33, 0xf6, 0xe6, - 0x33, 0xb6, 0x19, 0xc5, 0x61, 0x12, 0x5a, 0xcb, 0x8c, 0xc4, 0x27, 0x24, 0x7e, 0xe2, 0x46, 0xfe, - 0x93, 0xc8, 0x8d, 0xdd, 0x21, 0xb3, 0xff, 0x65, 0x42, 0xf3, 0x6e, 0x1c, 0xa6, 0xd1, 0x7d, 0x7a, - 0x18, 0x5a, 0x1d, 0x98, 0x1d, 0x08, 0x62, 0xb7, 0x63, 0xac, 0x1b, 0xd7, 0x9b, 0x4e, 0x46, 0x5a, - 0x57, 0xa1, 0x29, 0x7e, 0x3e, 0x70, 0x87, 0xa4, 0x63, 0x8a, 0xff, 0x0a, 0x86, 0x65, 0xc3, 0x3c, - 0x0d, 0x13, 0xff, 0xd0, 0xef, 0xbb, 0x89, 0x1f, 0xd2, 0x4e, 0x4d, 0x0c, 0xd0, 0x78, 0x7c, 0x8c, - 0x4f, 0x93, 0x38, 0xf4, 0xd2, 0xbe, 0x18, 0x33, 0x83, 0x63, 0x54, 0x1e, 0x9f, 0xff, 0xd0, 0xed, - 0x93, 0xc7, 0xce, 0x5e, 0xa7, 0x8e, 0xf3, 0x4b, 0xd2, 0x5a, 0x87, 0x56, 0xf8, 0x8c, 0x92, 0xf8, - 0x31, 0x23, 0xf1, 0xfd, 0xdd, 0x4e, 0x43, 0xfc, 0xab, 0xb2, 0xac, 0x6b, 0x00, 0xfd, 0x98, 0xb8, - 0x09, 0x79, 0xe4, 0x0f, 0x49, 0x67, 0x76, 0xdd, 0xb8, 0xde, 0x76, 0x14, 0x0e, 0xd7, 0x30, 0x24, - 0xc3, 0x03, 0x12, 0xef, 0x84, 0x29, 0x4d, 0x3a, 0x73, 0x62, 0x80, 0xca, 0xb2, 0x16, 0xc0, 0x24, - 0xcf, 0x3b, 0x4d, 0xa1, 0xda, 0x24, 0xcf, 0xad, 0x55, 0x68, 0xb0, 0xc4, 0x4d, 0x52, 0xd6, 0x81, - 0x75, 0xe3, 0x7a, 0xdd, 0x91, 0x94, 0xb5, 0x01, 0x6d, 0xa1, 0x37, 0xcc, 0xac, 0x69, 0x09, 0x11, - 0x9d, 0x99, 0x7b, 0xec, 0xd1, 0x69, 0x44, 0x3a, 0xf3, 0x42, 0x41, 0xc1, 0xb0, 0xff, 0x66, 0xc2, - 0x8a, 0xf0, 0x7b, 0x57, 0x18, 0x70, 0x27, 0x0d, 0x82, 0x73, 0x10, 0x58, 0x85, 0x46, 0x8a, 0xd3, - 0xa1, 0xfb, 0x25, 0xc5, 0xe7, 0x89, 0xc3, 0x80, 0xec, 0x91, 0x13, 0x12, 0x08, 0xc7, 0xd7, 0x9d, - 0x82, 0x61, 0xad, 0xc1, 0xdc, 0xd3, 0xd0, 0xa7, 0xc2, 0x27, 0x33, 0xe2, 0xcf, 0x9c, 0xe6, 0xff, - 0x51, 0xbf, 0x7f, 0x4c, 0x39, 0xa4, 0xe8, 0xee, 0x9c, 0x56, 0x91, 0x68, 0xe8, 0x48, 0xbc, 0x0e, - 0x0b, 0x6e, 0x14, 0x75, 0x5d, 0x3a, 0x20, 0x31, 0x4e, 0x3a, 0x2b, 0xf4, 0x96, 0xb8, 0x1c, 0x0f, - 0x3e, 0x53, 0x2f, 0x4c, 0xe3, 0x3e, 0x11, 0xee, 0xae, 0x3b, 0x0a, 0x87, 0xeb, 0x09, 0x23, 0x12, - 0x2b, 0x6e, 0x44, 0xcf, 0x97, 0xb8, 0x12, 0x15, 0xc8, 0x51, 0xe1, 0x38, 0xa6, 0x09, 0xb9, 0x4d, - 0x3d, 0xb1, 0xa8, 0x96, 0xc4, 0xb1, 0x60, 0xd9, 0x3f, 0x31, 0x60, 0x61, 0x3f, 0x3d, 0x08, 0xfc, - 0xbe, 0x50, 0xc1, 0xdd, 0x5a, 0x38, 0xcf, 0xd0, 0x9c, 0xa7, 0xba, 0xc0, 0x9c, 0xec, 0x82, 0x9a, - 0xee, 0x82, 0x55, 0x68, 0x0c, 0x08, 0xf5, 0x48, 0x2c, 0x5d, 0x2a, 0x29, 0x69, 0x6a, 0x3d, 0x33, - 0xd5, 0xfe, 0x85, 0x09, 0x73, 0x1f, 0xb2, 0x09, 0xeb, 0xd0, 0x8a, 0x8e, 0x42, 0x4a, 0x1e, 0xa4, - 0x3c, 0xac, 0xa4, 0x2d, 0x2a, 0xcb, 0xba, 0x02, 0xf5, 0x03, 0x3f, 0x4e, 0x8e, 0x04, 0xae, 0x6d, - 0x07, 0x09, 0xce, 0x25, 0x43, 0xd7, 0x47, 0x30, 0x9b, 0x0e, 0x12, 0x72, 0x41, 0x73, 0xb9, 0xef, - 0xf5, 0x1c, 0x6b, 0x56, 0x72, 0xac, 0x1a, 0x1b, 0x30, 0x2e, 0x36, 0xec, 0x7f, 0x1b, 0x00, 0x77, - 0x62, 0x9f, 0x50, 0x4f, 0xb8, 0xa6, 0x94, 0xdc, 0x46, 0x35, 0xb9, 0x57, 0xa1, 0x11, 0x93, 0xa1, - 0x1b, 0x1f, 0x67, 0xc1, 0x8f, 0x54, 0xc9, 0xa0, 0x5a, 0xc5, 0xa0, 0xb7, 0x00, 0x0e, 0xc5, 0x3c, - 0x5c, 0x8f, 0x70, 0x55, 0xeb, 0xc6, 0xa7, 0x36, 0x2b, 0x65, 0x70, 0x33, 0x43, 0xc9, 0x51, 0x86, - 0xf3, 0xcc, 0x72, 0x3d, 0x4f, 0x06, 0x70, 0x1d, 0x33, 0x2b, 0x67, 0x8c, 0x89, 0xdf, 0xc6, 0x19, - 0xf1, 0x3b, 0x9b, 0x07, 0xc5, 0x3f, 0x0d, 0x68, 0x6e, 0x07, 0x6e, 0xff, 0x78, 0xca, 0xa5, 0xeb, - 0x4b, 0x34, 0x2b, 0x4b, 0xbc, 0x0b, 0xed, 0x03, 0xae, 0x2e, 0x5b, 0x82, 0xf0, 0x42, 0xeb, 0xc6, - 0x67, 0xc6, 0xac, 0x52, 0x4f, 0x0a, 0x47, 0x97, 0xd3, 0x97, 0x3b, 0x73, 0xfe, 0x72, 0xeb, 0x67, - 0x2c, 0xb7, 0x91, 0x2f, 0xf7, 0xaf, 0x26, 0xcc, 0x8b, 0x42, 0xe7, 0x90, 0x51, 0x4a, 0x58, 0x62, - 0x7d, 0x03, 0xe6, 0xd2, 0xcc, 0x54, 0x63, 0x5a, 0x53, 0x73, 0x11, 0xeb, 0xa6, 0x2c, 0xab, 0x42, - 0xde, 0x14, 0xf2, 0x57, 0xc7, 0xc8, 0xe7, 0x7b, 0x9a, 0x53, 0x0c, 0xe7, 0x5b, 0xd0, 0x91, 0x4b, - 0xbd, 0x80, 0x38, 0x84, 0xa5, 0x41, 0x22, 0xab, 0xa5, 0xc6, 0xc3, 0x48, 0x1b, 0x75, 0xd9, 0x40, - 0x6e, 0x50, 0x92, 0xe2, 0xde, 0xc1, 0x71, 0xfc, 0x2f, 0x5c, 0x7a, 0xc1, 0xe0, 0x89, 0x1a, 0x93, - 0x91, 0x40, 0x08, 0xd3, 0x2a, 0x23, 0x8b, 0x39, 0xa5, 0xd7, 0x30, 0x10, 0x34, 0x1e, 0x87, 0x18, - 0x69, 0xa1, 0x00, 0x77, 0x26, 0x85, 0x53, 0xde, 0x98, 0xec, 0xbf, 0xd7, 0xa0, 0x8d, 0xe9, 0x93, - 0x39, 0xf5, 0x1a, 0x8f, 0xf3, 0x70, 0xa8, 0x45, 0x91, 0xc2, 0xe1, 0x56, 0x70, 0xea, 0x81, 0x5e, - 0x68, 0x34, 0x1e, 0x0f, 0x45, 0x4e, 0xdf, 0xd1, 0x0a, 0x8e, 0xca, 0xca, 0x66, 0xb9, 0xab, 0x16, - 0x1e, 0x85, 0xc3, 0x4b, 0x59, 0x12, 0x6a, 0xd1, 0x91, 0xd3, 0x5c, 0x36, 0x09, 0xf3, 0xf9, 0x31, - 0x3e, 0x14, 0x0e, 0xf7, 0x6f, 0x12, 0x66, 0x73, 0xa3, 0x93, 0x0a, 0x06, 0x6a, 0x96, 0xf3, 0xe2, - 0x56, 0x92, 0xd3, 0x15, 0x54, 0x9b, 0x67, 0xa2, 0x0a, 0x1a, 0xaa, 0x7a, 0x72, 0xb5, 0x2a, 0xc9, - 0xb5, 0x01, 0x6d, 0xd4, 0x93, 0x05, 0xfd, 0x3c, 0x6e, 0xf5, 0x1a, 0x53, 0x8f, 0x8d, 0x76, 0x39, - 0x36, 0x74, 0x74, 0x17, 0x26, 0xa0, 0xbb, 0x98, 0xa3, 0xfb, 0x03, 0xe8, 0xec, 0xa7, 0x41, 0xd0, - 0x25, 0x8c, 0xb9, 0x03, 0xb2, 0x7d, 0xda, 0x23, 0xa3, 0x3d, 0x9f, 0x25, 0x0e, 0x61, 0x11, 0x8f, - 0x33, 0x12, 0xc7, 0x3b, 0xa1, 0x47, 0x04, 0xc8, 0x75, 0x27, 0x23, 0xf9, 0x0a, 0x49, 0x1c, 0x73, - 0x03, 0x64, 0x85, 0x44, 0xca, 0xda, 0x84, 0x99, 0xc0, 0x67, 0x3c, 0xd6, 0x6b, 0xd7, 0x5b, 0x37, - 0xd6, 0xc6, 0xa4, 0x4a, 0x97, 0x0d, 0x76, 0xdd, 0xc4, 0x75, 0xc4, 0x38, 0x7b, 0x08, 0x9f, 0x18, - 0x3f, 0xfb, 0x68, 0xe2, 0x0e, 0xc6, 0x6b, 0x98, 0x28, 0x02, 0x7e, 0x48, 0xf3, 0xf6, 0x44, 0x65, - 0x71, 0xb3, 0x19, 0xea, 0x11, 0x76, 0xb4, 0x9d, 0x8c, 0xb4, 0xaf, 0x80, 0x75, 0x97, 0x24, 0x5d, - 0xf7, 0xf9, 0x16, 0xf5, 0xba, 0x3e, 0xed, 0x91, 0x91, 0x43, 0x46, 0xf6, 0x6d, 0x58, 0xa9, 0x70, - 0x59, 0xc4, 0x0d, 0x18, 0xba, 0xcf, 0x7b, 0x64, 0x24, 0x0c, 0x68, 0x3b, 0x92, 0x12, 0x7c, 0x31, - 0x4a, 0x96, 0x47, 0x49, 0xd9, 0x23, 0x58, 0xe4, 0x08, 0xf5, 0x08, 0xf5, 0xba, 0x6c, 0x20, 0x54, - 0xac, 0x43, 0x0b, 0x3d, 0xd0, 0x65, 0x83, 0xa2, 0xde, 0x2a, 0x2c, 0x3e, 0xa2, 0x1f, 0xf8, 0x84, - 0x26, 0x38, 0x42, 0xae, 0x46, 0x61, 0xf1, 0x60, 0x64, 0x44, 0xb6, 0x1f, 0x3c, 0x4b, 0x6a, 0x4e, - 0x4e, 0xdb, 0x7f, 0xaa, 0xc3, 0xac, 0x74, 0xa8, 0xe8, 0x1f, 0xf9, 0x16, 0x97, 0xfb, 0x0b, 0x29, - 0x0c, 0xc6, 0xfe, 0x49, 0xd1, 0xc9, 0x21, 0xa5, 0xf6, 0x7e, 0x35, 0xbd, 0xf7, 0x2b, 0xd9, 0x34, - 0x53, 0xb5, 0xa9, 0xb4, 0xae, 0x7a, 0x75, 0x5d, 0x6f, 0xc0, 0x12, 0x13, 0x09, 0xb3, 0x1f, 0xb8, - 0xc9, 0x61, 0x18, 0x0f, 0xe5, 0x8e, 0x55, 0x77, 0x2a, 0x7c, 0x5e, 0xec, 0x91, 0x97, 0x27, 0x2c, - 0x66, 0x64, 0x89, 0xcb, 0xd3, 0x03, 0x39, 0x59, 0xe2, 0x62, 0xab, 0xa0, 0x33, 0xd1, 0x36, 0xc6, - 0xfc, 0x90, 0x8a, 0x5e, 0x18, 0xf3, 0x53, 0x65, 0xf1, 0x95, 0x0f, 0xd9, 0xe0, 0x4e, 0x1c, 0x0e, - 0x65, 0xc3, 0x90, 0x91, 0x62, 0xe5, 0x21, 0x4d, 0x08, 0x4d, 0x84, 0x6c, 0x0b, 0x65, 0x15, 0x16, - 0x97, 0x95, 0xa4, 0x48, 0xce, 0x79, 0x27, 0x23, 0xad, 0x25, 0xa8, 0x31, 0x32, 0x92, 0x19, 0xc7, - 0x7f, 0x6a, 0xc8, 0x2d, 0xea, 0xc8, 0x95, 0x4a, 0xc1, 0x92, 0xf8, 0x57, 0x2d, 0x05, 0xc5, 0x69, - 0x60, 0x59, 0x3b, 0x0d, 0x6c, 0xc1, 0x6c, 0x18, 0xf1, 0x38, 0x67, 0x1d, 0x4b, 0xe4, 0xd8, 0x67, - 0x27, 0xe7, 0xd8, 0xe6, 0x43, 0x1c, 0x79, 0x9b, 0x26, 0xf1, 0xa9, 0x93, 0xc9, 0x59, 0x7b, 0xb0, - 0x18, 0x1e, 0x1e, 0x06, 0x3e, 0x25, 0xfb, 0x29, 0x3b, 0x12, 0x3b, 0xdb, 0x8a, 0xd8, 0xd9, 0xec, - 0x31, 0xaa, 0x1e, 0xea, 0x23, 0x9d, 0xb2, 0xe8, 0xda, 0x4d, 0x98, 0x57, 0xa7, 0xe1, 0x6e, 0x38, - 0x26, 0xa7, 0x32, 0x06, 0xf9, 0x4f, 0xde, 0xec, 0x9d, 0xb8, 0x41, 0x8a, 0xdb, 0xc0, 0x9c, 0x83, - 0xc4, 0x4d, 0xf3, 0xab, 0x86, 0xfd, 0x73, 0x03, 0x16, 0x4b, 0x13, 0xf0, 0xd1, 0x89, 0x9f, 0x04, - 0x44, 0x6a, 0x40, 0xc2, 0xb2, 0x60, 0xc6, 0x23, 0xac, 0x2f, 0x43, 0x58, 0xfc, 0x96, 0x95, 0xac, - 0x96, 0xb7, 0x8b, 0xfc, 0xc8, 0xf7, 0xb0, 0xc7, 0x15, 0xf5, 0xc2, 0x94, 0x7a, 0xf9, 0x91, 0x4f, - 0xe1, 0xf1, 0x10, 0xf2, 0x1f, 0xf6, 0xb6, 0x5d, 0x6f, 0x40, 0xf0, 0x60, 0x56, 0x17, 0x36, 0xe9, - 0x4c, 0xdb, 0x83, 0xb9, 0x47, 0x7e, 0xc4, 0x76, 0xc2, 0xe1, 0x90, 0x03, 0xe1, 0x91, 0x84, 0xf7, - 0xaa, 0x86, 0xc0, 0x5b, 0x52, 0x3c, 0x54, 0x3c, 0x72, 0xe8, 0xa6, 0x41, 0xc2, 0x87, 0x66, 0x89, - 0xab, 0xb0, 0xc4, 0x91, 0x84, 0x85, 0x74, 0x17, 0xa5, 0xd1, 0x4e, 0x85, 0x63, 0xff, 0xc5, 0x84, - 0x25, 0xd1, 0x38, 0xec, 0x08, 0xd8, 0x3d, 0x21, 0x74, 0x03, 0xea, 0x22, 0x0d, 0x65, 0xb3, 0x72, - 0x76, 0xb3, 0x81, 0x43, 0xad, 0x5b, 0xd0, 0x08, 0x23, 0xd1, 0x72, 0x62, 0x87, 0xf2, 0xfa, 0x24, - 0x21, 0xfd, 0xf4, 0xe7, 0x48, 0x29, 0xeb, 0x0e, 0x00, 0x1e, 0x4c, 0xf7, 0x8a, 0xd2, 0x3d, 0xad, - 0x0e, 0x45, 0x92, 0x3b, 0x37, 0x2f, 0xc3, 0xf9, 0x11, 0xb0, 0xe6, 0xe8, 0x4c, 0xeb, 0x01, 0x2c, - 0x08, 0xb3, 0x1f, 0x66, 0x5d, 0xa7, 0xc0, 0x60, 0xfa, 0x19, 0x4b, 0xd2, 0xf6, 0xaf, 0x0d, 0xe9, - 0x46, 0xfe, 0x6f, 0x8f, 0xa0, 0xef, 0x0b, 0x97, 0x18, 0x17, 0x72, 0xc9, 0x1a, 0xcc, 0xf1, 0x33, - 0x5e, 0xde, 0x04, 0xd7, 0x9c, 0x9c, 0x2e, 0x20, 0xaa, 0x4d, 0x0d, 0x91, 0xfd, 0x1b, 0x03, 0x3a, - 0x6f, 0x87, 0x3e, 0x15, 0x7f, 0x6c, 0x45, 0x51, 0x20, 0xef, 0x29, 0x2e, 0x8c, 0xf9, 0x37, 0xa1, - 0xe9, 0xa2, 0x1a, 0x9a, 0x48, 0xd8, 0xa7, 0x68, 0x6c, 0x0b, 0x19, 0xa5, 0x47, 0xa9, 0xa9, 0x3d, - 0x8a, 0xfd, 0x9e, 0x01, 0x0b, 0xe8, 0x94, 0x77, 0x52, 0x3f, 0xb9, 0xb0, 0x7d, 0xdb, 0x30, 0x37, - 0x4a, 0xfd, 0xe4, 0x02, 0x51, 0x99, 0xcb, 0x55, 0xe3, 0xa9, 0x36, 0x26, 0x9e, 0xec, 0xf7, 0x0d, - 0xb8, 0x5a, 0x76, 0xeb, 0x56, 0xbf, 0x4f, 0xa2, 0x17, 0x99, 0x52, 0x5a, 0x8f, 0x36, 0x53, 0xea, - 0xd1, 0xc6, 0x9a, 0xec, 0x90, 0xa7, 0xa4, 0xff, 0xf2, 0x9a, 0xfc, 0x63, 0x13, 0x3e, 0x79, 0x37, - 0x4f, 0xbc, 0x47, 0xb1, 0x4b, 0xd9, 0x21, 0x89, 0xe3, 0x17, 0x68, 0xef, 0x1e, 0xb4, 0x29, 0x79, - 0x56, 0xd8, 0x24, 0xd3, 0x71, 0x5a, 0x35, 0xba, 0xf0, 0x74, 0xb5, 0xcb, 0xfe, 0x8f, 0x01, 0x4b, - 0xa8, 0xe7, 0x5b, 0x7e, 0xff, 0xf8, 0x05, 0x2e, 0xfe, 0x01, 0x2c, 0x1c, 0x0b, 0x0b, 0x38, 0x75, - 0x81, 0xb2, 0x5d, 0x92, 0x9e, 0x72, 0xf9, 0xff, 0x35, 0x60, 0x19, 0x15, 0xdd, 0xa7, 0x27, 0xfe, - 0x8b, 0x0c, 0xd6, 0x7d, 0x58, 0xf4, 0xd1, 0x84, 0x0b, 0x3a, 0xa0, 0x2c, 0x3e, 0xa5, 0x07, 0xfe, - 0x68, 0xc0, 0x22, 0x6a, 0xba, 0x4d, 0x13, 0x12, 0x5f, 0x78, 0xfd, 0xf7, 0xa0, 0x45, 0x68, 0x12, - 0xbb, 0xf4, 0x22, 0x15, 0x52, 0x15, 0x9d, 0xb2, 0x48, 0xbe, 0x67, 0x80, 0x25, 0x54, 0xed, 0xfa, - 0x6c, 0xe8, 0x33, 0xf6, 0x02, 0xa1, 0x9b, 0xce, 0xe0, 0x5f, 0x9a, 0x70, 0x45, 0xd1, 0xd2, 0x4d, - 0x93, 0x97, 0xdd, 0x64, 0x6b, 0x17, 0x9a, 0xbc, 0x47, 0x50, 0x2f, 0xff, 0xa6, 0x9d, 0xa8, 0x10, - 0xe4, 0x5d, 0xac, 0x20, 0x7a, 0xa4, 0x1f, 0x52, 0x8f, 0x89, 0xe6, 0xa8, 0xed, 0x68, 0x3c, 0x5e, - 0x86, 0xd6, 0x14, 0x35, 0x3b, 0x2e, 0xed, 0x93, 0xe0, 0x95, 0x71, 0x91, 0xfd, 0x3b, 0x03, 0x16, - 0x70, 0xc8, 0xcb, 0xbf, 0x64, 0xbe, 0xd7, 0x63, 0x20, 0x7f, 0x64, 0x50, 0xb2, 0x8f, 0x61, 0x19, - 0xef, 0xfb, 0x94, 0xf6, 0x84, 0x1f, 0x7c, 0x5d, 0x0f, 0xcf, 0xb2, 0x86, 0x10, 0xca, 0x48, 0xfd, - 0x26, 0x57, 0x3e, 0xd6, 0x15, 0x37, 0xb9, 0xd7, 0x00, 0x5c, 0xcf, 0x7b, 0x37, 0x8c, 0x3d, 0x9f, - 0x66, 0xbd, 0xa6, 0xc2, 0xb1, 0xdf, 0x86, 0x79, 0x7e, 0xf4, 0x7e, 0xa4, 0xdc, 0xdc, 0x9d, 0x79, - 0xb7, 0xa8, 0xde, 0xfa, 0x99, 0xfa, 0xad, 0x9f, 0xfd, 0x7d, 0xf8, 0x78, 0xc5, 0x70, 0xe1, 0xeb, - 0x1d, 0xbc, 0x90, 0xcc, 0x26, 0x91, 0x2e, 0xff, 0xf4, 0x18, 0xef, 0xa9, 0xb6, 0x38, 0x9a, 0x90, - 0xfd, 0x23, 0x03, 0x5e, 0xab, 0xa8, 0xdf, 0x8a, 0xa2, 0x38, 0x3c, 0x91, 0x90, 0x5e, 0xc6, 0x34, - 0x7a, 0x1f, 0x66, 0x96, 0xfb, 0xb0, 0xb1, 0x46, 0x68, 0xbd, 0xe3, 0x87, 0x60, 0xc4, 0x6f, 0x0d, - 0x58, 0x94, 0x46, 0x78, 0x9e, 0x9c, 0xf6, 0x2b, 0xd0, 0xc0, 0xc7, 0x0c, 0x39, 0xe1, 0x6b, 0x63, - 0x27, 0xcc, 0x1e, 0x61, 0x1c, 0x39, 0xb8, 0x1a, 0x91, 0xe6, 0xb8, 0xba, 0xf1, 0xb5, 0x3c, 0xee, - 0xa7, 0x7e, 0x6e, 0x90, 0x02, 0xf6, 0x77, 0xb2, 0x60, 0xde, 0x25, 0x01, 0xb9, 0x4c, 0x1f, 0xd9, - 0x8f, 0x61, 0x41, 0xbc, 0xac, 0x14, 0x3e, 0xb8, 0x14, 0xb5, 0xef, 0xc2, 0x92, 0x50, 0x7b, 0xe9, - 0xf6, 0xe6, 0xd9, 0xc1, 0xfd, 0xb3, 0x73, 0xe4, 0xd2, 0xc1, 0x65, 0x6a, 0xff, 0x22, 0xac, 0x64, - 0xbe, 0x7f, 0x1c, 0x79, 0xf9, 0x7d, 0xc6, 0x84, 0x5b, 0x5c, 0xfb, 0x4b, 0xb0, 0xba, 0x13, 0xd2, - 0x13, 0x12, 0x33, 0x81, 0x32, 0x8a, 0x64, 0x12, 0x5a, 0xf2, 0x4b, 0xca, 0x7e, 0x0a, 0x6b, 0xaa, - 0x44, 0x8f, 0x24, 0xfb, 0xb1, 0x7f, 0xa2, 0x48, 0xc9, 0x5b, 0x4e, 0x43, 0xbb, 0xe5, 0x2c, 0x6e, - 0x45, 0x4d, 0xed, 0x56, 0xf4, 0x2a, 0x34, 0x7d, 0x26, 0x15, 0x88, 0xa0, 0x9a, 0x73, 0x0a, 0x86, - 0xdd, 0x83, 0x65, 0xf9, 0xd6, 0xb1, 0xef, 0x0e, 0x7c, 0x8a, 0x15, 0xf0, 0x1a, 0x40, 0xe4, 0x0e, - 0xb2, 0xb7, 0x4e, 0xbc, 0x10, 0x57, 0x38, 0xfc, 0x7f, 0x76, 0x14, 0x3e, 0x93, 0xff, 0x9b, 0xf8, - 0x7f, 0xc1, 0xb1, 0xbf, 0x0d, 0x96, 0x43, 0x58, 0x14, 0x52, 0x46, 0x14, 0xad, 0xeb, 0xd0, 0xda, - 0x49, 0xe3, 0x98, 0x50, 0x3e, 0x55, 0xf6, 0xf0, 0xa7, 0xb2, 0xb8, 0xde, 0x5e, 0xa1, 0x17, 0x2f, - 0x51, 0x15, 0x8e, 0xfd, 0xab, 0x1a, 0x34, 0x7b, 0xfe, 0x80, 0xba, 0x81, 0x43, 0x46, 0xd6, 0xd7, - 0xa1, 0x81, 0xad, 0xad, 0x84, 0x71, 0xdc, 0xa5, 0x1e, 0x8e, 0xc6, 0x1e, 0xde, 0x21, 0xa3, 0x7b, - 0x1f, 0x73, 0xa4, 0x8c, 0xf5, 0x0e, 0xb4, 0xf1, 0xd7, 0x7d, 0xbc, 0xaa, 0x90, 0xfb, 0xcc, 0xe7, - 0xce, 0x51, 0x22, 0x47, 0xa3, 0x2e, 0x5d, 0x03, 0x37, 0xa8, 0x2f, 0xb6, 0x3e, 0x99, 0xbb, 0x93, - 0x0d, 0xc2, 0x1d, 0x52, 0x1a, 0x84, 0x32, 0x5c, 0xda, 0x15, 0x87, 0x79, 0xd9, 0x2e, 0x4c, 0x96, - 0xc6, 0x33, 0xbf, 0x94, 0x46, 0x19, 0x2e, 0x7d, 0x94, 0xd2, 0xc1, 0xe3, 0x48, 0xde, 0x31, 0x4d, - 0x96, 0xbe, 0x27, 0x86, 0x49, 0x69, 0x94, 0xe1, 0xd2, 0xb1, 0xa8, 0xac, 0xc2, 0xe9, 0x67, 0x49, - 0x63, 0x01, 0x96, 0xd2, 0x28, 0xb3, 0xdd, 0x84, 0xd9, 0xc8, 0x3d, 0x0d, 0x42, 0xd7, 0xb3, 0x7f, - 0x5f, 0x03, 0xc8, 0x06, 0x32, 0xb1, 0x8b, 0x6b, 0x10, 0x6d, 0x9c, 0x0b, 0x51, 0x14, 0x9c, 0x2a, - 0x20, 0xf5, 0xc6, 0x83, 0xf4, 0xf9, 0x69, 0x41, 0x42, 0x6d, 0x25, 0x98, 0x6e, 0x95, 0x60, 0xda, - 0x38, 0x17, 0x26, 0x69, 0x94, 0x04, 0xea, 0x56, 0x09, 0xa8, 0x8d, 0x73, 0x81, 0x92, 0xf2, 0x12, - 0xaa, 0x5b, 0x25, 0xa8, 0x36, 0xce, 0x85, 0x4a, 0xca, 0x4b, 0xb0, 0x6e, 0x95, 0xc0, 0xda, 0x38, - 0x17, 0x2c, 0x29, 0x5f, 0x85, 0xeb, 0x7d, 0x13, 0x16, 0x84, 0xcb, 0xf0, 0x41, 0x89, 0x1e, 0x86, - 0xe2, 0xde, 0x58, 0xb8, 0x4b, 0x7f, 0x3a, 0xd7, 0x99, 0xd6, 0x17, 0x60, 0x19, 0x19, 0xf2, 0xa9, - 0x55, 0x9c, 0x4b, 0xcd, 0xf5, 0xda, 0xf5, 0xa6, 0x53, 0xfd, 0x43, 0x3c, 0x01, 0xa4, 0x2c, 0x09, - 0x87, 0xbb, 0x6e, 0xe2, 0x66, 0x9d, 0x51, 0xc1, 0x51, 0x1f, 0x68, 0x66, 0x2a, 0x1f, 0xe7, 0xc4, - 0x61, 0x38, 0xcc, 0x5f, 0x5e, 0x24, 0xc5, 0x25, 0x12, 0x7f, 0x48, 0xc2, 0x34, 0x91, 0x65, 0x22, - 0x23, 0x79, 0xb9, 0x1b, 0x12, 0xcf, 0x77, 0xc5, 0xb3, 0x86, 0x7c, 0xef, 0xcc, 0x19, 0xa2, 0xb2, - 0x15, 0xcf, 0x34, 0xf2, 0xe3, 0x99, 0x82, 0x73, 0xfe, 0x93, 0x8a, 0xfd, 0x0f, 0x03, 0x56, 0xf6, - 0xdd, 0x38, 0xf1, 0xfb, 0x7e, 0xe4, 0xd2, 0xa4, 0x4b, 0x12, 0x57, 0xac, 0x41, 0x7b, 0x3f, 0x37, - 0x3e, 0xd8, 0xfb, 0xf9, 0x3e, 0x2c, 0x0e, 0x8a, 0x5e, 0x56, 0x79, 0x81, 0x9f, 0xfa, 0x8c, 0x5f, - 0x12, 0xd7, 0x3e, 0x06, 0xa8, 0x7d, 0xe0, 0x8f, 0x01, 0xec, 0x9f, 0x9a, 0xb0, 0x58, 0x2a, 0x9d, - 0xbc, 0x1d, 0xc5, 0x46, 0x23, 0x8f, 0x89, 0x9c, 0xb6, 0xb6, 0x00, 0xfc, 0x3c, 0x8c, 0xce, 0xb8, - 0xa4, 0xd5, 0x63, 0xcd, 0x51, 0x84, 0xc6, 0xbd, 0xd5, 0xd4, 0x2e, 0xfc, 0x56, 0x63, 0xdd, 0x83, - 0x56, 0x54, 0x80, 0x74, 0xc6, 0x01, 0x6c, 0x0c, 0x94, 0x8e, 0x2a, 0x6a, 0x7f, 0x0f, 0x96, 0x2b, - 0x15, 0x4a, 0x3c, 0xdd, 0x84, 0xc7, 0x84, 0xe6, 0x4f, 0x37, 0x9c, 0x50, 0x82, 0xd5, 0x2c, 0x07, - 0x6b, 0xe0, 0x9f, 0xa8, 0x5f, 0x1b, 0x49, 0xd2, 0xfe, 0x99, 0x09, 0xab, 0xe3, 0x77, 0x97, 0x57, - 0xd5, 0xdd, 0x07, 0xd0, 0x99, 0x54, 0xc9, 0x2f, 0xcd, 0xeb, 0x45, 0x74, 0xe7, 0xfb, 0xf0, 0xab, - 0xea, 0xee, 0x95, 0x2c, 0xba, 0x95, 0xad, 0xce, 0xfe, 0x43, 0xee, 0x9f, 0xbc, 0xd3, 0x78, 0x45, - 0xfd, 0x63, 0xbd, 0x01, 0x4b, 0xb8, 0x4c, 0xe5, 0x71, 0x1f, 0x1b, 0xd7, 0x0a, 0xbf, 0xa8, 0x14, - 0xca, 0xb6, 0x7f, 0x69, 0x31, 0xfb, 0x67, 0x23, 0xc3, 0x24, 0xef, 0xdf, 0x3e, 0x52, 0x98, 0x14, - 0x91, 0xa6, 0x34, 0x35, 0x4a, 0xa4, 0xe5, 0x7d, 0xe5, 0xff, 0x23, 0xed, 0xfc, 0x48, 0xcb, 0x7d, - 0xa9, 0x34, 0x78, 0xf6, 0x0f, 0xa1, 0xbd, 0x4b, 0x82, 0x2e, 0x1b, 0x64, 0x9f, 0x15, 0x9d, 0xe5, - 0xc8, 0x49, 0x1f, 0x3d, 0x4f, 0xfc, 0xa0, 0xa8, 0xfc, 0x31, 0xd2, 0x4c, 0xe5, 0x63, 0x24, 0x7b, - 0x1b, 0x16, 0x54, 0x03, 0x2e, 0xf2, 0x55, 0xd5, 0xf6, 0xd5, 0xef, 0xae, 0x6d, 0xbe, 0x89, 0x9f, - 0xd7, 0xbf, 0x55, 0x71, 0xe2, 0x41, 0x43, 0x7c, 0x6e, 0xff, 0xe5, 0xff, 0x05, 0x00, 0x00, 0xff, - 0xff, 0x59, 0xb0, 0xc2, 0xf4, 0x81, 0x2f, 0x00, 0x00, +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_e4200fdb78b83da6) } + +var fileDescriptor_ws_e4200fdb78b83da6 = []byte{ + // 3049 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x6f, 0x24, 0x49, + 0xd1, 0xff, 0xaa, 0xda, 0xdd, 0x76, 0x47, 0xbb, 0xfd, 0xa8, 0x99, 0xcf, 0xdb, 0x98, 0xd9, 0xc1, + 0x14, 0xd6, 0xb2, 0x2c, 0x30, 0x8b, 0x76, 0x85, 0x04, 0xbb, 0x30, 0x68, 0x6c, 0xcf, 0x6b, 0x19, + 0x7b, 0xbc, 0xd5, 0x33, 0x2c, 0x02, 0xa4, 0x55, 0xb9, 0x2b, 0xdd, 0xae, 0x75, 0x55, 0x66, 0x75, + 0x3d, 0x3c, 0x33, 0x08, 0x09, 0x09, 0x24, 0xc4, 0x8d, 0x13, 0x1c, 0xb8, 0x20, 0x71, 0x41, 0xa0, + 0xd5, 0x6a, 0x85, 0x40, 0xe2, 0x80, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x0b, 0xe2, 0xcc, 0x95, + 0x03, 0x12, 0x12, 0x28, 0x33, 0xb2, 0xaa, 0x32, 0xab, 0xba, 0xed, 0x9e, 0x96, 0xb5, 0x33, 0xab, + 0xe1, 0xd6, 0x11, 0x95, 0x11, 0x19, 0xf9, 0x8b, 0xc8, 0x8c, 0xc8, 0x47, 0xc3, 0x72, 0xe2, 0x1d, + 0xbf, 0xfd, 0x20, 0x79, 0xf9, 0x41, 0x72, 0x25, 0x8a, 0x59, 0xca, 0xac, 0xd5, 0x84, 0xc4, 0x27, + 0x24, 0x7e, 0xdb, 0x8d, 0xfc, 0xb7, 0x23, 0x37, 0x76, 0xc3, 0xc4, 0xfe, 0xa7, 0x09, 0xed, 0x9b, + 0x31, 0xcb, 0xa2, 0xdb, 0xf4, 0x90, 0x59, 0x3d, 0x98, 0x1f, 0x0a, 0x62, 0xa7, 0x67, 0x6c, 0x18, + 0x2f, 0xb6, 0x9d, 0x9c, 0xb4, 0x2e, 0x41, 0x5b, 0xfc, 0xdc, 0x73, 0x43, 0xd2, 0x33, 0xc5, 0xb7, + 0x92, 0x61, 0xd9, 0xb0, 0x48, 0x59, 0xea, 0x1f, 0xfa, 0x03, 0x37, 0xf5, 0x19, 0xed, 0x35, 0x44, + 0x03, 0x8d, 0xc7, 0xdb, 0xf8, 0x34, 0x8d, 0x99, 0x97, 0x0d, 0x44, 0x9b, 0x39, 0x6c, 0xa3, 0xf2, + 0x78, 0xff, 0x87, 0xee, 0x80, 0xdc, 0x77, 0xee, 0xf4, 0x9a, 0xd8, 0xbf, 0x24, 0xad, 0x0d, 0xe8, + 0xb0, 0x07, 0x94, 0xc4, 0xf7, 0x13, 0x12, 0xdf, 0xde, 0xe9, 0xb5, 0xc4, 0x57, 0x95, 0x65, 0x5d, + 0x06, 0x18, 0xc4, 0xc4, 0x4d, 0xc9, 0x3d, 0x3f, 0x24, 0xbd, 0xf9, 0x0d, 0xe3, 0xc5, 0xae, 0xa3, + 0x70, 0xb8, 0x86, 0x90, 0x84, 0x07, 0x24, 0xde, 0x66, 0x19, 0x4d, 0x7b, 0x0b, 0xa2, 0x81, 0xca, + 0xb2, 0x96, 0xc0, 0x24, 0x0f, 0x7b, 0x6d, 0xa1, 0xda, 0x24, 0x0f, 0xad, 0x35, 0x68, 0x25, 0xa9, + 0x9b, 0x66, 0x49, 0x0f, 0x36, 0x8c, 0x17, 0x9b, 0x8e, 0xa4, 0xac, 0x4d, 0xe8, 0x0a, 0xbd, 0x2c, + 0xb7, 0xa6, 0x23, 0x44, 0x74, 0x66, 0x81, 0xd8, 0xbd, 0x47, 0x11, 0xe9, 0x2d, 0x0a, 0x05, 0x25, + 0xc3, 0xfe, 0x8b, 0x09, 0x17, 0x04, 0xee, 0xbb, 0xc2, 0x80, 0x1b, 0x59, 0x10, 0x9c, 0xe1, 0x81, + 0x35, 0x68, 0x65, 0xd8, 0x1d, 0xc2, 0x2f, 0x29, 0xde, 0x4f, 0xcc, 0x02, 0x72, 0x87, 0x9c, 0x90, + 0x40, 0x00, 0xdf, 0x74, 0x4a, 0x86, 0xb5, 0x0e, 0x0b, 0xef, 0x30, 0x9f, 0x0a, 0x4c, 0xe6, 0xc4, + 0xc7, 0x82, 0xe6, 0xdf, 0xa8, 0x3f, 0x38, 0xa6, 0xdc, 0xa5, 0x08, 0x77, 0x41, 0xab, 0x9e, 0x68, + 0xe9, 0x9e, 0x78, 0x01, 0x96, 0xdc, 0x28, 0xda, 0x75, 0xe9, 0x90, 0xc4, 0xd8, 0xe9, 0xbc, 0xd0, + 0x5b, 0xe1, 0x72, 0x7f, 0xf0, 0x9e, 0xfa, 0x2c, 0x8b, 0x07, 0x44, 0xc0, 0xdd, 0x74, 0x14, 0x0e, + 0xd7, 0xc3, 0x22, 0x12, 0x2b, 0x30, 0x22, 0xf2, 0x15, 0xae, 0xf4, 0x0a, 0x14, 0x5e, 0xe1, 0x7e, + 0xcc, 0x52, 0x72, 0x9d, 0x7a, 0x62, 0x50, 0x1d, 0xe9, 0xc7, 0x92, 0x65, 0xff, 0xc0, 0x80, 0xa5, + 0xfd, 0xec, 0x20, 0xf0, 0x07, 0x42, 0x05, 0x87, 0xb5, 0x04, 0xcf, 0xd0, 0xc0, 0x53, 0x21, 0x30, + 0x27, 0x43, 0xd0, 0xd0, 0x21, 0x58, 0x83, 0xd6, 0x90, 0x50, 0x8f, 0xc4, 0x12, 0x52, 0x49, 0x49, + 0x53, 0x9b, 0xb9, 0xa9, 0xf6, 0x4f, 0x4c, 0x58, 0xf8, 0x80, 0x4d, 0xd8, 0x80, 0x4e, 0x74, 0xc4, + 0x28, 0xd9, 0xcb, 0x78, 0x58, 0x49, 0x5b, 0x54, 0x96, 0x75, 0x11, 0x9a, 0x07, 0x7e, 0x9c, 0x1e, + 0x09, 0xbf, 0x76, 0x1d, 0x24, 0x38, 0x97, 0x84, 0xae, 0x8f, 0xce, 0x6c, 0x3b, 0x48, 0xc8, 0x01, + 0x2d, 0x14, 0xd8, 0xeb, 0x73, 0xac, 0x5d, 0x9b, 0x63, 0xf5, 0xd8, 0x80, 0x71, 0xb1, 0x61, 0xff, + 0xcb, 0x00, 0xb8, 0x11, 0xfb, 0x84, 0x7a, 0x02, 0x9a, 0xca, 0xe4, 0x36, 0xea, 0x93, 0x7b, 0x0d, + 0x5a, 0x31, 0x09, 0xdd, 0xf8, 0x38, 0x0f, 0x7e, 0xa4, 0x2a, 0x06, 0x35, 0x6a, 0x06, 0xbd, 0x0e, + 0x70, 0x28, 0xfa, 0xe1, 0x7a, 0x04, 0x54, 0x9d, 0x57, 0x3e, 0x7a, 0xa5, 0xb6, 0x0c, 0x5e, 0xc9, + 0xbd, 0xe4, 0x28, 0xcd, 0xf9, 0xcc, 0x72, 0x3d, 0x4f, 0x06, 0x70, 0x13, 0x67, 0x56, 0xc1, 0x18, + 0x13, 0xbf, 0xad, 0x53, 0xe2, 0x77, 0xbe, 0x08, 0x8a, 0x7f, 0x18, 0xd0, 0xde, 0x0a, 0xdc, 0xc1, + 0xf1, 0x94, 0x43, 0xd7, 0x87, 0x68, 0xd6, 0x86, 0x78, 0x13, 0xba, 0x07, 0x5c, 0x5d, 0x3e, 0x04, + 0x81, 0x42, 0xe7, 0x95, 0x8f, 0x8f, 0x19, 0xa5, 0x3e, 0x29, 0x1c, 0x5d, 0x4e, 0x1f, 0xee, 0xdc, + 0xd9, 0xc3, 0x6d, 0x9e, 0x32, 0xdc, 0x56, 0x31, 0xdc, 0x3f, 0x9b, 0xb0, 0x28, 0x16, 0x3a, 0x87, + 0x8c, 0x32, 0x92, 0xa4, 0xd6, 0x97, 0x61, 0x21, 0xcb, 0x4d, 0x35, 0xa6, 0x35, 0xb5, 0x10, 0xb1, + 0x5e, 0x93, 0xcb, 0xaa, 0x90, 0x37, 0x85, 0xfc, 0xa5, 0x31, 0xf2, 0x45, 0x4e, 0x73, 0xca, 0xe6, + 0x3c, 0x05, 0x1d, 0xb9, 0xd4, 0x0b, 0x88, 0x43, 0x92, 0x2c, 0x48, 0xe5, 0x6a, 0xa9, 0xf1, 0x30, + 0xd2, 0x46, 0xbb, 0xc9, 0x50, 0x26, 0x28, 0x49, 0x71, 0x74, 0xb0, 0x1d, 0xff, 0x84, 0x43, 0x2f, + 0x19, 0x7c, 0xa2, 0xc6, 0x64, 0x24, 0x3c, 0x84, 0xd3, 0x2a, 0x27, 0xcb, 0x3e, 0x25, 0x6a, 0x18, + 0x08, 0x1a, 0x8f, 0xbb, 0x18, 0x69, 0xa1, 0x00, 0x33, 0x93, 0xc2, 0xa9, 0x26, 0x26, 0xfb, 0xaf, + 0x0d, 0xe8, 0xe2, 0xf4, 0xc9, 0x41, 0xbd, 0xcc, 0xe3, 0x9c, 0x85, 0x5a, 0x14, 0x29, 0x1c, 0x6e, + 0x05, 0xa7, 0xf6, 0xf4, 0x85, 0x46, 0xe3, 0xf1, 0x50, 0xe4, 0xf4, 0x0d, 0x6d, 0xc1, 0x51, 0x59, + 0x79, 0x2f, 0x37, 0xd5, 0x85, 0x47, 0xe1, 0xf0, 0xa5, 0x2c, 0x65, 0x5a, 0x74, 0x14, 0x34, 0x97, + 0x4d, 0x59, 0xd1, 0x3f, 0xc6, 0x87, 0xc2, 0xe1, 0xf8, 0xa6, 0x2c, 0xef, 0x1b, 0x41, 0x2a, 0x19, + 0xa8, 0x59, 0xf6, 0x8b, 0xa9, 0xa4, 0xa0, 0x6b, 0x5e, 0x6d, 0x9f, 0xea, 0x55, 0xd0, 0xbc, 0xaa, + 0x4f, 0xae, 0x4e, 0x6d, 0x72, 0x6d, 0x42, 0x17, 0xf5, 0xe4, 0x41, 0xbf, 0x88, 0xa9, 0x5e, 0x63, + 0xea, 0xb1, 0xd1, 0xad, 0xc6, 0x86, 0xee, 0xdd, 0xa5, 0x09, 0xde, 0x5d, 0x2e, 0xbc, 0xfb, 0x6b, + 0x13, 0x60, 0x87, 0x44, 0x6e, 0x9c, 0x86, 0x84, 0xa6, 0x7c, 0x78, 0x5e, 0x41, 0x15, 0xce, 0xd5, + 0x78, 0x6a, 0x9e, 0x30, 0xf5, 0x3c, 0x61, 0xc1, 0x9c, 0x00, 0x1c, 0xbd, 0x29, 0x7e, 0x73, 0x30, + 0x23, 0x37, 0x46, 0x6d, 0x18, 0xe4, 0x05, 0xcd, 0xf3, 0x00, 0x8b, 0x3d, 0x99, 0x39, 0x9a, 0x0e, + 0x12, 0x7c, 0xf2, 0x97, 0xfd, 0x89, 0x82, 0xa6, 0x85, 0xeb, 0xba, 0xce, 0x3d, 0xb3, 0x06, 0x7b, + 0x09, 0x56, 0x92, 0xec, 0xa0, 0x1c, 0xdc, 0x5e, 0x16, 0xca, 0x70, 0xaf, 0xf1, 0x39, 0xa8, 0x58, + 0x9c, 0xf1, 0x46, 0x98, 0x6a, 0x4a, 0x46, 0xb5, 0x2a, 0xb0, 0xdf, 0x35, 0x61, 0xe5, 0x6e, 0x3c, + 0x74, 0xa9, 0xff, 0x6d, 0x51, 0x6e, 0x8a, 0x05, 0x7c, 0x96, 0x94, 0xbb, 0x01, 0x1d, 0x42, 0x87, + 0x81, 0x9f, 0x1c, 0xed, 0x95, 0xb8, 0xa9, 0x2c, 0x15, 0xec, 0xb9, 0x49, 0x49, 0xb9, 0xa9, 0x25, + 0xe5, 0x35, 0x68, 0x85, 0xec, 0xc0, 0x0f, 0xf2, 0xb8, 0x97, 0x94, 0x88, 0x79, 0x12, 0x10, 0x91, + 0x9d, 0x8b, 0x98, 0xcf, 0x19, 0x65, 0xa2, 0x5e, 0x18, 0x9b, 0xa8, 0xdb, 0x6a, 0xa2, 0xd6, 0x81, + 0x87, 0x1a, 0xf0, 0x08, 0x57, 0xa7, 0x80, 0xeb, 0x8f, 0x06, 0xac, 0x94, 0x70, 0x63, 0x0d, 0x3a, + 0x11, 0xae, 0x6a, 0x04, 0x9a, 0x63, 0x22, 0xb0, 0x88, 0x9b, 0x86, 0x1a, 0x37, 0x3c, 0xd2, 0x58, + 0xe2, 0x2b, 0xf5, 0x7e, 0x41, 0xf3, 0xde, 0x02, 0xe2, 0x2a, 0x60, 0x21, 0xa5, 0x54, 0xdd, 0x2d, + 0xad, 0xea, 0xae, 0xe6, 0xd1, 0xdf, 0x19, 0x70, 0x91, 0x7b, 0xb9, 0x36, 0x8c, 0xbb, 0xb0, 0xc2, + 0x2a, 0x91, 0x20, 0x13, 0xcd, 0x27, 0xc6, 0x24, 0x8a, 0x6a, 0xd0, 0x38, 0x35, 0x61, 0xae, 0xd0, + 0xab, 0x74, 0x22, 0x33, 0xcf, 0x38, 0x85, 0x55, 0x7b, 0x9c, 0x9a, 0xb0, 0xfd, 0x7b, 0x03, 0x56, + 0x30, 0xb5, 0x29, 0xf3, 0xfc, 0xdc, 0xcd, 0x7e, 0x0b, 0x2e, 0x56, 0x7b, 0xbe, 0xe3, 0x27, 0x69, + 0xcf, 0xdc, 0x68, 0x4c, 0x6b, 0xfa, 0x58, 0x05, 0xf6, 0x77, 0xa0, 0xb7, 0x9f, 0x05, 0xc1, 0x2e, + 0x49, 0x12, 0x77, 0x48, 0xb6, 0x1e, 0xf5, 0xc9, 0x88, 0xf3, 0x1d, 0x92, 0x44, 0x7c, 0x72, 0x90, + 0x38, 0xde, 0x66, 0x1e, 0x11, 0xc6, 0x37, 0x9d, 0x9c, 0xe4, 0x7e, 0x25, 0x71, 0xcc, 0x57, 0x48, + 0x59, 0xc2, 0x21, 0x65, 0x5d, 0x81, 0xb9, 0x80, 0x9b, 0xd5, 0x10, 0x66, 0xad, 0x8f, 0x31, 0x6b, + 0x37, 0x19, 0xee, 0xb8, 0xa9, 0xeb, 0x88, 0x76, 0x76, 0x08, 0xcf, 0x8d, 0xef, 0x7d, 0x34, 0x31, + 0x80, 0x79, 0x91, 0x25, 0xaa, 0x14, 0x9f, 0xd1, 0x22, 0x7e, 0x55, 0x16, 0x37, 0x3b, 0x41, 0x3d, + 0xc2, 0x8e, 0xae, 0x93, 0x93, 0xf6, 0x45, 0xb0, 0x6e, 0x92, 0x74, 0xd7, 0x7d, 0x78, 0x8d, 0x7a, + 0xbb, 0x3e, 0xed, 0x93, 0x91, 0x43, 0x46, 0xf6, 0x75, 0xb8, 0x50, 0xe3, 0x26, 0x91, 0x98, 0xe8, + 0xee, 0xc3, 0x3e, 0x19, 0x09, 0x03, 0xba, 0x8e, 0xa4, 0x04, 0x5f, 0xb4, 0x92, 0xf5, 0x9b, 0xa4, + 0xec, 0x11, 0x2c, 0x73, 0x57, 0xf5, 0x09, 0xf5, 0x76, 0x93, 0xa1, 0x50, 0xb1, 0x01, 0x1d, 0x44, + 0x60, 0x37, 0x19, 0x96, 0x05, 0xa1, 0xc2, 0xe2, 0x2d, 0x06, 0x81, 0xcf, 0x5d, 0x22, 0x5a, 0xc8, + 0xd1, 0x28, 0x2c, 0x3e, 0xed, 0x12, 0x22, 0xf7, 0x47, 0x7c, 0x3e, 0x36, 0x9c, 0x82, 0xb6, 0xff, + 0xd6, 0x84, 0x79, 0x09, 0xa8, 0x98, 0x6a, 0xbc, 0x06, 0x2f, 0xf0, 0x42, 0x0a, 0xb3, 0xe5, 0xe0, + 0xa4, 0xdc, 0x6a, 0x22, 0xa5, 0x6e, 0x4e, 0x1b, 0xfa, 0xe6, 0xb4, 0x62, 0xd3, 0x5c, 0xdd, 0xa6, + 0xca, 0xb8, 0x9a, 0xf5, 0x71, 0xf1, 0xe4, 0x20, 0xd6, 0xcb, 0xfd, 0xc0, 0x4d, 0x0f, 0x59, 0x1c, + 0xca, 0x92, 0xba, 0xe9, 0xd4, 0xf8, 0x3c, 0x21, 0x21, 0xaf, 0xa8, 0x28, 0x70, 0x61, 0xa8, 0x70, + 0x79, 0xfe, 0x46, 0x4e, 0x5e, 0x59, 0xe0, 0x5e, 0x46, 0x67, 0xa2, 0x6d, 0x49, 0xe2, 0x33, 0x2a, + 0x72, 0x1b, 0x16, 0x10, 0x2a, 0x8b, 0x8f, 0x3c, 0x4c, 0x86, 0x37, 0x62, 0x16, 0xca, 0x1d, 0x4d, + 0x4e, 0x8a, 0x91, 0x33, 0x9a, 0xe6, 0x79, 0xb1, 0x83, 0xb2, 0x0a, 0x8b, 0xcb, 0x4a, 0x52, 0x54, + 0x0f, 0x8b, 0x4e, 0x4e, 0x5a, 0x2b, 0xd0, 0x48, 0xc8, 0x48, 0x96, 0x04, 0xfc, 0xa7, 0xe6, 0xb9, + 0x65, 0xdd, 0x73, 0x95, 0x35, 0x7e, 0x45, 0x7c, 0x55, 0xd7, 0x78, 0x1b, 0x16, 0xdd, 0x14, 0x2b, + 0x12, 0x11, 0xc8, 0xab, 0x1b, 0x0d, 0xbe, 0x4c, 0xab, 0x3c, 0x65, 0x71, 0xb5, 0xb4, 0xc5, 0xf5, + 0x1a, 0xcc, 0xb3, 0x88, 0xcf, 0x85, 0xa4, 0x77, 0x41, 0xcc, 0xc3, 0x4f, 0x4e, 0x9e, 0x87, 0x57, + 0xee, 0x62, 0xcb, 0xeb, 0x34, 0x8d, 0x1f, 0x39, 0xb9, 0x9c, 0x75, 0x07, 0x96, 0xd9, 0xe1, 0x61, + 0xe0, 0x53, 0xb2, 0x9f, 0x25, 0x47, 0xa2, 0x3c, 0xbf, 0x28, 0x96, 0x2f, 0x7b, 0xdc, 0xf2, 0xa5, + 0xb7, 0x74, 0xaa, 0xa2, 0xeb, 0xaf, 0xc1, 0xa2, 0xda, 0x0d, 0x87, 0xea, 0x98, 0x3c, 0x92, 0x71, + 0xca, 0x7f, 0xf2, 0x8c, 0x73, 0xe2, 0x06, 0x19, 0x66, 0xf0, 0x05, 0x07, 0x89, 0xd7, 0xcc, 0x2f, + 0x18, 0xf6, 0x8f, 0x0d, 0x58, 0xae, 0x74, 0xc0, 0x5b, 0xa7, 0x7e, 0x1a, 0x10, 0xa9, 0x01, 0x09, + 0x5e, 0x1d, 0x79, 0x24, 0x19, 0xc8, 0x30, 0x17, 0xbf, 0x65, 0x9e, 0x69, 0x14, 0x7b, 0x5e, 0x1b, + 0x16, 0xfd, 0xbb, 0x7d, 0xae, 0xa8, 0xcf, 0x32, 0xea, 0x15, 0xe7, 0x56, 0x0a, 0x8f, 0x87, 0x99, + 0x7f, 0xb7, 0xbf, 0xe5, 0x7a, 0x43, 0x82, 0xa7, 0x4b, 0x4d, 0x61, 0x93, 0xce, 0xb4, 0x3d, 0x58, + 0xb8, 0xe7, 0x47, 0xc9, 0x36, 0x0b, 0x43, 0xee, 0x08, 0x8f, 0xa4, 0x3c, 0x8f, 0x1b, 0x22, 0x26, + 0x24, 0xc5, 0xc3, 0xc9, 0x23, 0x87, 0x6e, 0x16, 0xa4, 0xbc, 0x69, 0x3e, 0xb9, 0x15, 0x96, 0x38, + 0x57, 0x49, 0x18, 0xdd, 0x41, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x32, 0x61, 0x45, 0xec, 0x7e, + 0xb6, 0x45, 0x68, 0x78, 0x42, 0xe8, 0x15, 0x68, 0x8a, 0xa9, 0x2a, 0x33, 0xca, 0xe9, 0x3b, 0x26, + 0x6c, 0x6a, 0x5d, 0x85, 0x16, 0x8b, 0x44, 0x1a, 0xc2, 0x64, 0xf7, 0xc2, 0x24, 0x21, 0xfd, 0x08, + 0xcb, 0x91, 0x52, 0xd6, 0x0d, 0x80, 0xb0, 0xcc, 0x3a, 0xb8, 0xbc, 0x4f, 0xab, 0x43, 0x91, 0xe4, + 0xe0, 0x16, 0x4b, 0x75, 0x71, 0x8e, 0xd5, 0x70, 0x74, 0xa6, 0xb5, 0x07, 0x4b, 0xc2, 0xec, 0xbb, + 0xf9, 0xd6, 0x59, 0xf8, 0x60, 0xfa, 0x1e, 0x2b, 0xd2, 0xf6, 0xcf, 0x0d, 0x09, 0x23, 0xff, 0xda, + 0x27, 0x88, 0x7d, 0x09, 0x89, 0x31, 0x13, 0x24, 0xeb, 0xb0, 0x10, 0x66, 0xca, 0x4e, 0xbe, 0xe1, + 0x14, 0x74, 0xe9, 0xa2, 0xc6, 0xd4, 0x2e, 0xb2, 0x7f, 0x61, 0x40, 0xef, 0x0d, 0xe6, 0x53, 0xf1, + 0xe1, 0x5a, 0x14, 0x05, 0xf2, 0xb0, 0x75, 0x66, 0x9f, 0x7f, 0x05, 0xda, 0x2e, 0xaa, 0xa1, 0xa9, + 0x74, 0xfb, 0x14, 0xbb, 0xf3, 0x52, 0x46, 0xd9, 0x68, 0x35, 0xd4, 0x8d, 0x96, 0xfd, 0x9e, 0x01, + 0x4b, 0x08, 0xca, 0x9b, 0x99, 0x9f, 0xce, 0x6c, 0xdf, 0x16, 0x2c, 0x8c, 0x32, 0x3f, 0x9d, 0x21, + 0x2a, 0x0b, 0xb9, 0x7a, 0x3c, 0x35, 0xc6, 0xc4, 0x93, 0xfd, 0xbe, 0x01, 0x97, 0xaa, 0xb0, 0x5e, + 0x1b, 0x0c, 0x48, 0xf4, 0x24, 0xa7, 0x94, 0xb6, 0xd1, 0x9c, 0xab, 0x6c, 0x34, 0xc7, 0x9a, 0xec, + 0x90, 0x77, 0xc8, 0xe0, 0xe9, 0x35, 0xf9, 0xfb, 0x26, 0x7c, 0xe4, 0x66, 0x31, 0xf1, 0xee, 0xc5, + 0x2e, 0x4d, 0x0e, 0x49, 0x1c, 0x3f, 0x41, 0x7b, 0xef, 0x40, 0x97, 0x92, 0x07, 0xa5, 0x4d, 0x72, + 0x3a, 0x4e, 0xab, 0x46, 0x17, 0x9e, 0x6e, 0xed, 0xb2, 0xff, 0x6d, 0xc0, 0x0a, 0xea, 0xf9, 0xaa, + 0x3f, 0x38, 0x7e, 0x82, 0x83, 0xdf, 0x83, 0xa5, 0x63, 0x61, 0x01, 0xa7, 0x66, 0x58, 0xb6, 0x2b, + 0xd2, 0x53, 0x0e, 0xff, 0x3f, 0x06, 0xac, 0xa2, 0xa2, 0xdb, 0xf4, 0xc4, 0x7f, 0x92, 0xc1, 0xba, + 0x0f, 0xcb, 0x3e, 0x9a, 0x30, 0x23, 0x00, 0x55, 0xf1, 0x29, 0x11, 0xf8, 0xad, 0x01, 0xcb, 0xa8, + 0xe9, 0x3a, 0x4d, 0x49, 0x3c, 0xf3, 0xf8, 0x6f, 0x41, 0x87, 0xd0, 0x34, 0x76, 0xe9, 0x2c, 0x2b, + 0xa4, 0x2a, 0x3a, 0xe5, 0x22, 0xf9, 0x9e, 0x01, 0x96, 0x50, 0xb5, 0xe3, 0x27, 0xa1, 0x9f, 0x24, + 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x53, 0x13, 0x2e, 0x2a, 0x5a, 0x76, 0xb3, 0xf4, 0x69, 0x37, + 0xd9, 0xda, 0x81, 0x36, 0xaf, 0x11, 0xd4, 0x1b, 0x8c, 0x69, 0x3b, 0x2a, 0x05, 0x79, 0x15, 0x2b, + 0x88, 0x3e, 0x19, 0x30, 0xea, 0x25, 0xa2, 0x38, 0xea, 0x3a, 0x1a, 0x8f, 0x2f, 0x43, 0xeb, 0x8a, + 0x9a, 0x6d, 0x97, 0x0e, 0x48, 0xf0, 0xcc, 0x40, 0x64, 0xff, 0xca, 0x80, 0x25, 0x6c, 0xf2, 0xf4, + 0x0f, 0x99, 0xe7, 0x7a, 0x0c, 0xe4, 0x0f, 0x8d, 0x97, 0x78, 0x78, 0xad, 0x29, 0x5a, 0xd4, 0xba, + 0xfa, 0xe9, 0x0d, 0xad, 0x5b, 0xd0, 0x19, 0x1c, 0xb9, 0x74, 0x38, 0x53, 0x70, 0xa9, 0xa2, 0x76, + 0x0a, 0xcf, 0xa9, 0x87, 0x76, 0xdb, 0xf8, 0x49, 0x0c, 0xff, 0xd5, 0xca, 0x50, 0x4e, 0xbd, 0xa1, + 0x7c, 0x3c, 0xd0, 0x8f, 0x61, 0x15, 0x6f, 0x8a, 0x94, 0x9a, 0xd0, 0xea, 0xc1, 0xbc, 0xeb, 0xe1, + 0x21, 0x83, 0x21, 0x84, 0x72, 0x52, 0xbf, 0x03, 0x94, 0xcf, 0x3c, 0xca, 0x3b, 0xc0, 0xcb, 0x00, + 0xae, 0xe7, 0xbd, 0xc5, 0x62, 0xcf, 0xa7, 0x79, 0x81, 0xaf, 0x70, 0xec, 0x37, 0x60, 0xf1, 0x46, + 0xcc, 0xc2, 0x7b, 0xca, 0x9d, 0xcf, 0xa9, 0xb7, 0x52, 0xea, 0x7d, 0x91, 0xa9, 0xdf, 0x17, 0xd9, + 0xdf, 0x82, 0xff, 0xaf, 0x19, 0x2e, 0xc0, 0xda, 0xc6, 0xab, 0xac, 0xbc, 0x13, 0x19, 0x32, 0x1f, + 0x1b, 0x03, 0x99, 0x6a, 0x8b, 0xa3, 0x09, 0xd9, 0xdf, 0x33, 0xe0, 0xf9, 0x9a, 0xfa, 0x6b, 0x51, + 0x14, 0xb3, 0x13, 0xe9, 0x93, 0xf3, 0xe8, 0x46, 0x2f, 0x7e, 0xcd, 0x6a, 0xf1, 0x3b, 0xd6, 0x08, + 0xad, 0x60, 0xff, 0x00, 0x8c, 0xf8, 0xa5, 0x01, 0xcb, 0xd2, 0x08, 0xcf, 0x93, 0xdd, 0x7e, 0x1e, + 0x5a, 0x78, 0x0d, 0x2e, 0x3b, 0x7c, 0x7e, 0x6c, 0x87, 0xf9, 0xf5, 0xbd, 0x23, 0x1b, 0xd7, 0x23, + 0xd2, 0x1c, 0x37, 0xa3, 0xbe, 0x58, 0x04, 0xfb, 0xd4, 0x17, 0xd5, 0x52, 0xc0, 0xfe, 0x7a, 0x1e, + 0xcc, 0x3b, 0x24, 0x20, 0xe7, 0x89, 0x91, 0x7d, 0x1f, 0x96, 0xc4, 0x9d, 0x7c, 0x89, 0xc1, 0xb9, + 0xa8, 0x7d, 0x0b, 0x56, 0x84, 0xda, 0x73, 0xb7, 0xb7, 0x98, 0x1d, 0x1c, 0x1f, 0x75, 0x29, 0x39, + 0x17, 0xed, 0x9f, 0x85, 0x0b, 0x39, 0xf6, 0xf7, 0x23, 0xaf, 0x38, 0x44, 0x9a, 0x70, 0xbc, 0x6e, + 0x7f, 0x0e, 0xd6, 0xb6, 0x19, 0x3d, 0x21, 0x71, 0x82, 0x97, 0x0f, 0x42, 0x24, 0x97, 0xd0, 0x26, + 0xbf, 0xa4, 0xec, 0x77, 0x60, 0x5d, 0x95, 0xe8, 0x93, 0x74, 0x3f, 0xf6, 0x4f, 0x14, 0x29, 0x79, + 0xfc, 0x6c, 0x68, 0xc7, 0xcf, 0xe5, 0x71, 0xb5, 0xa9, 0x1d, 0x57, 0x5f, 0x82, 0xb6, 0x9f, 0x48, + 0x05, 0x22, 0xa8, 0x16, 0x9c, 0x92, 0x61, 0xf7, 0x61, 0x55, 0xde, 0x92, 0xef, 0xbb, 0x43, 0x9f, + 0xe2, 0x0a, 0x78, 0x19, 0x20, 0x72, 0x87, 0xf9, 0x2b, 0x19, 0xbc, 0xa9, 0x50, 0x38, 0xfc, 0x7b, + 0x72, 0xc4, 0x1e, 0xc8, 0xef, 0x26, 0x7e, 0x2f, 0x39, 0xf6, 0xd7, 0xc0, 0x72, 0x48, 0x12, 0x31, + 0x9a, 0x10, 0x45, 0xeb, 0x06, 0x74, 0xb6, 0xb3, 0x38, 0x26, 0x94, 0x77, 0x95, 0x3f, 0x19, 0x51, + 0x59, 0x5c, 0x6f, 0xbf, 0xd4, 0x8b, 0xa7, 0xdb, 0x0a, 0xc7, 0xfe, 0x59, 0x03, 0xda, 0x7d, 0x7f, + 0x48, 0xdd, 0xc0, 0x21, 0x23, 0xeb, 0x4b, 0xd0, 0xc2, 0xfd, 0x84, 0x74, 0xe3, 0xb8, 0x93, 0x54, + 0x6c, 0x8d, 0x1b, 0x27, 0x87, 0x8c, 0x6e, 0xfd, 0x9f, 0x23, 0x65, 0xac, 0x37, 0xa1, 0x8b, 0xbf, + 0x6e, 0xe3, 0xf9, 0x90, 0x4c, 0x2e, 0x9f, 0x3a, 0x43, 0x89, 0x6c, 0x8d, 0xba, 0x74, 0x0d, 0xdc, + 0xa0, 0x81, 0xa8, 0x37, 0xe4, 0xdc, 0x9d, 0x6c, 0x10, 0x96, 0x25, 0xd2, 0x20, 0x94, 0xe1, 0xd2, + 0xae, 0x38, 0x41, 0x91, 0x69, 0x74, 0xb2, 0x34, 0x1e, 0xb4, 0x48, 0x69, 0x94, 0xe1, 0xd2, 0x47, + 0x19, 0x1d, 0xde, 0x8f, 0xe4, 0xc1, 0xde, 0x64, 0xe9, 0x5b, 0xa2, 0x99, 0x94, 0x46, 0x19, 0x2e, + 0x1d, 0x8b, 0x95, 0x55, 0x80, 0x7e, 0x9a, 0x34, 0x2e, 0xc0, 0x52, 0x1a, 0x65, 0xb6, 0xda, 0x30, + 0x1f, 0xb9, 0x8f, 0x02, 0xe6, 0x7a, 0xf6, 0xbb, 0x0d, 0x80, 0xbc, 0x61, 0x22, 0xaa, 0x10, 0xcd, + 0x45, 0x9b, 0x67, 0xba, 0x28, 0x0a, 0x1e, 0x29, 0x4e, 0xea, 0x8f, 0x77, 0xd2, 0xa7, 0xa7, 0x75, + 0x12, 0x6a, 0xab, 0xb8, 0xe9, 0x6a, 0xc5, 0x4d, 0x9b, 0x67, 0xba, 0x49, 0x1a, 0x25, 0x1d, 0x75, + 0xb5, 0xe2, 0xa8, 0xcd, 0x33, 0x1d, 0x25, 0xe5, 0xa5, 0xab, 0xae, 0x56, 0x5c, 0xb5, 0x79, 0xa6, + 0xab, 0xa4, 0xbc, 0x74, 0xd6, 0xd5, 0x8a, 0xb3, 0x36, 0xcf, 0x74, 0x96, 0x94, 0xaf, 0xbb, 0xeb, + 0x7d, 0x13, 0x96, 0x04, 0x64, 0x78, 0xd3, 0x47, 0x0f, 0x99, 0x38, 0xac, 0x17, 0x70, 0xe9, 0x8f, + 0xae, 0x74, 0xa6, 0xf5, 0x19, 0x58, 0x45, 0x06, 0x51, 0xae, 0x54, 0x4c, 0x71, 0xa5, 0x52, 0xff, + 0x20, 0xee, 0x66, 0xb2, 0x24, 0x65, 0xe1, 0x8e, 0x9b, 0xba, 0x79, 0x65, 0x54, 0x72, 0xd4, 0x9b, + 0xb3, 0xb9, 0xda, 0xb3, 0xce, 0x98, 0xb1, 0xb0, 0xb8, 0x12, 0x93, 0x14, 0x97, 0x48, 0xfd, 0x90, + 0xb0, 0x2c, 0x95, 0xcb, 0x44, 0x4e, 0xe2, 0xc3, 0x08, 0xcf, 0x77, 0xc5, 0x7d, 0x93, 0x7c, 0x35, + 0x50, 0x30, 0xc4, 0xca, 0x56, 0xde, 0x9f, 0xc9, 0x67, 0x97, 0x25, 0xe7, 0xec, 0xbb, 0x2e, 0xfb, + 0xef, 0x06, 0x5c, 0xd8, 0x77, 0xe3, 0xd4, 0x1f, 0xf8, 0x91, 0x4b, 0xd3, 0x5d, 0x92, 0xba, 0x62, + 0x0c, 0xda, 0xcb, 0x2b, 0xe3, 0xf1, 0x5e, 0x5e, 0xed, 0xc3, 0xf2, 0x50, 0x2f, 0xfd, 0x1f, 0xb3, + 0x6a, 0xaf, 0x8a, 0x6b, 0xcf, 0xc8, 0x1a, 0x8f, 0xfd, 0x8c, 0xcc, 0xfe, 0xa1, 0x09, 0xcb, 0x95, + 0xa5, 0x93, 0x97, 0xa3, 0x58, 0x68, 0x14, 0x31, 0x51, 0xd0, 0xd6, 0x35, 0x00, 0xbf, 0x08, 0xa3, + 0x53, 0x4e, 0xc6, 0xf5, 0x58, 0x73, 0x14, 0xa1, 0x71, 0x17, 0x64, 0x8d, 0x99, 0x2f, 0xc8, 0xf8, + 0xc6, 0x24, 0x2a, 0x9d, 0x74, 0xca, 0xc6, 0x64, 0x8c, 0x2b, 0x1d, 0x55, 0xd4, 0xfe, 0x26, 0xac, + 0xd6, 0x56, 0x28, 0x71, 0x5f, 0xc6, 0x8e, 0x09, 0x2d, 0xee, 0xcb, 0x38, 0xa1, 0x04, 0xab, 0x59, + 0x0d, 0xd6, 0xc0, 0x3f, 0x51, 0xdf, 0xa9, 0x4a, 0xd2, 0xfe, 0x91, 0x09, 0x6b, 0xe3, 0xb3, 0xcb, + 0xb3, 0x0a, 0xf7, 0x01, 0xf4, 0x26, 0xad, 0xe4, 0xe7, 0x86, 0x7a, 0x19, 0xdd, 0x45, 0x1e, 0x7e, + 0x56, 0xe1, 0xbe, 0x90, 0x47, 0xb7, 0x92, 0xea, 0xec, 0xdf, 0x14, 0xf8, 0x14, 0x95, 0xc6, 0x33, + 0x8a, 0x8f, 0xf5, 0x12, 0xac, 0xe0, 0x30, 0x95, 0x57, 0x17, 0x58, 0xb8, 0xd6, 0xf8, 0xe5, 0x4a, + 0xa1, 0xa4, 0xfd, 0x73, 0x8b, 0xd9, 0x3f, 0x18, 0xb9, 0x4f, 0x8a, 0xfa, 0xed, 0x43, 0xe5, 0x93, + 0x32, 0xd2, 0x94, 0xa2, 0x46, 0x89, 0xb4, 0xa2, 0xae, 0xfc, 0x5f, 0xa4, 0x9d, 0x1d, 0x69, 0x05, + 0x96, 0x4a, 0x81, 0x67, 0x7f, 0x17, 0xba, 0x3b, 0x24, 0xd8, 0x4d, 0x86, 0xf9, 0x7b, 0xaf, 0xd3, + 0x80, 0x9c, 0xf4, 0x77, 0x99, 0x89, 0x2f, 0xbd, 0xaa, 0xaf, 0xc4, 0xe6, 0x6a, 0xaf, 0xc4, 0xec, + 0x2d, 0x58, 0x52, 0x0d, 0x98, 0xe5, 0xb9, 0xdb, 0xd6, 0xa5, 0x6f, 0xac, 0x5f, 0x79, 0x19, 0xff, + 0x98, 0xf5, 0x7a, 0x0d, 0xc4, 0x83, 0x96, 0xf8, 0xa3, 0xd6, 0xab, 0xff, 0x0d, 0x00, 0x00, 0xff, + 0xff, 0x6d, 0x01, 0x85, 0x88, 0xbb, 0x35, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 12ff7b15d..7e1322e50 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -105,9 +105,72 @@ message FriendRequest{ string ex = 15; } -///////////////////////////////////base end///////////////////////////////////// +///////////////////////////////////organization///////////////////////////////////// + +message Department { + string departmentID = 1; + string faceURL = 2; + string name = 3; + string parentID = 4; + int32 order = 5; + int32 departmentType = 6; + uint32 createTime = 7; + uint32 subDepartmentNum = 8; + uint32 memberNum = 9; + string ex = 10; +} + + + +message OrganizationUser { + string userID = 1; + string nickname = 2; + string englishName = 3; + string faceURL = 4; + int32 gender = 5; + string mobile = 6; + string telephone = 7; + uint32 birth = 8; + string email = 9; + uint32 createTime = 10; + string ex = 11; +} + +message DepartmentMember { + string userID = 1; + string departmentID = 2; + int32 order = 3; + string position = 4; + int32 leader = 5; + int32 status = 6; + string ex = 7; +} + + +message UserDepartmentMember { + OrganizationUser organizationUser = 1; + DepartmentMember departmentMember = 2; +} + + +message UserInDepartment { + OrganizationUser organizationUser = 1; + repeated DepartmentMember departmentMemberList = 2; +} + + + +///////////////////////////////////organization end////////////////////////////////// + + + + + + +///////////////////////////////////base end///////////////////////////////////// + message PullMessageBySeqListResp { int32 errCode = 1; string errMsg = 2; @@ -147,9 +210,10 @@ message MsgData { uint32 seq = 14; int64 sendTime = 15; int64 createTime = 16; - int32 status = 17; - map options = 18; - OfflinePushInfo offlinePushInfo = 19; + repeated string atUserIDList = 17; + int32 status = 18; + map options = 19; + OfflinePushInfo offlinePushInfo = 20; } message OfflinePushInfo{ @@ -288,6 +352,19 @@ message GroupCancelMutedTips{ int64 operationTime = 3; } +message GroupMemberInfoSetTips{ + GroupInfo group = 1; + GroupMemberFullInfo opUser = 2; + int64 operationTime = 3; + GroupMemberFullInfo changedUser = 4; +} + + +message OrganizationChangedTips{ + UserInfo opUser = 2; + int64 operationTime = 3; +} + //////////////////////friend///////////////////// //message FriendInfo{ diff --git a/pkg/proto/user/user.pb.go b/pkg/proto/user/user.pb.go index 1c8b88653..eeb501ebb 100644 --- a/pkg/proto/user/user.pb.go +++ b/pkg/proto/user/user.pb.go @@ -36,7 +36,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} } func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (*CommonResp) ProtoMessage() {} func (*CommonResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{0} + return fileDescriptor_user_e11c6a5241e13fcd, []int{0} } func (m *CommonResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommonResp.Unmarshal(m, b) @@ -83,7 +83,7 @@ func (m *DeleteUsersReq) Reset() { *m = DeleteUsersReq{} } func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) } func (*DeleteUsersReq) ProtoMessage() {} func (*DeleteUsersReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{1} + return fileDescriptor_user_e11c6a5241e13fcd, []int{1} } func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b) @@ -136,7 +136,7 @@ func (m *DeleteUsersResp) Reset() { *m = DeleteUsersResp{} } func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) } func (*DeleteUsersResp) ProtoMessage() {} func (*DeleteUsersResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{2} + return fileDescriptor_user_e11c6a5241e13fcd, []int{2} } func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b) @@ -182,7 +182,7 @@ func (m *GetAllUserIDReq) Reset() { *m = GetAllUserIDReq{} } func (m *GetAllUserIDReq) String() string { return proto.CompactTextString(m) } func (*GetAllUserIDReq) ProtoMessage() {} func (*GetAllUserIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{3} + return fileDescriptor_user_e11c6a5241e13fcd, []int{3} } func (m *GetAllUserIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetAllUserIDReq.Unmarshal(m, b) @@ -228,7 +228,7 @@ func (m *GetAllUserIDResp) Reset() { *m = GetAllUserIDResp{} } func (m *GetAllUserIDResp) String() string { return proto.CompactTextString(m) } func (*GetAllUserIDResp) ProtoMessage() {} func (*GetAllUserIDResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{4} + return fileDescriptor_user_e11c6a5241e13fcd, []int{4} } func (m *GetAllUserIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetAllUserIDResp.Unmarshal(m, b) @@ -275,7 +275,7 @@ func (m *AccountCheckReq) Reset() { *m = AccountCheckReq{} } func (m *AccountCheckReq) String() string { return proto.CompactTextString(m) } func (*AccountCheckReq) ProtoMessage() {} func (*AccountCheckReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{5} + return fileDescriptor_user_e11c6a5241e13fcd, []int{5} } func (m *AccountCheckReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AccountCheckReq.Unmarshal(m, b) @@ -328,7 +328,7 @@ func (m *AccountCheckResp) Reset() { *m = AccountCheckResp{} } func (m *AccountCheckResp) String() string { return proto.CompactTextString(m) } func (*AccountCheckResp) ProtoMessage() {} func (*AccountCheckResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{6} + return fileDescriptor_user_e11c6a5241e13fcd, []int{6} } func (m *AccountCheckResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AccountCheckResp.Unmarshal(m, b) @@ -374,7 +374,7 @@ func (m *AccountCheckResp_SingleUserStatus) Reset() { *m = AccountCheckR func (m *AccountCheckResp_SingleUserStatus) String() string { return proto.CompactTextString(m) } func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {} func (*AccountCheckResp_SingleUserStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{6, 0} + return fileDescriptor_user_e11c6a5241e13fcd, []int{6, 0} } func (m *AccountCheckResp_SingleUserStatus) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Unmarshal(m, b) @@ -421,7 +421,7 @@ func (m *GetUserInfoReq) Reset() { *m = GetUserInfoReq{} } func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) } func (*GetUserInfoReq) ProtoMessage() {} func (*GetUserInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{7} + return fileDescriptor_user_e11c6a5241e13fcd, []int{7} } func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b) @@ -474,7 +474,7 @@ func (m *GetUserInfoResp) Reset() { *m = GetUserInfoResp{} } func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) } func (*GetUserInfoResp) ProtoMessage() {} func (*GetUserInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{8} + return fileDescriptor_user_e11c6a5241e13fcd, []int{8} } func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b) @@ -521,7 +521,7 @@ func (m *UpdateUserInfoReq) Reset() { *m = UpdateUserInfoReq{} } func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) } func (*UpdateUserInfoReq) ProtoMessage() {} func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{9} + return fileDescriptor_user_e11c6a5241e13fcd, []int{9} } func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b) @@ -573,7 +573,7 @@ func (m *UpdateUserInfoResp) Reset() { *m = UpdateUserInfoResp{} } func (m *UpdateUserInfoResp) String() string { return proto.CompactTextString(m) } func (*UpdateUserInfoResp) ProtoMessage() {} func (*UpdateUserInfoResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{10} + return fileDescriptor_user_e11c6a5241e13fcd, []int{10} } func (m *UpdateUserInfoResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateUserInfoResp.Unmarshal(m, b) @@ -612,7 +612,9 @@ type Conversation struct { IsPinned bool `protobuf:"varint,9,opt,name=IsPinned" json:"IsPinned,omitempty"` AttachedInfo string `protobuf:"bytes,10,opt,name=AttachedInfo" json:"AttachedInfo,omitempty"` IsPrivateChat bool `protobuf:"varint,11,opt,name=IsPrivateChat" json:"IsPrivateChat,omitempty"` - Ex string `protobuf:"bytes,12,opt,name=Ex" json:"Ex,omitempty"` + GroupAtType int32 `protobuf:"varint,12,opt,name=GroupAtType" json:"GroupAtType,omitempty"` + IsNotInGroup bool `protobuf:"varint,13,opt,name=IsNotInGroup" json:"IsNotInGroup,omitempty"` + Ex string `protobuf:"bytes,14,opt,name=Ex" json:"Ex,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -622,7 +624,7 @@ func (m *Conversation) Reset() { *m = Conversation{} } func (m *Conversation) String() string { return proto.CompactTextString(m) } func (*Conversation) ProtoMessage() {} func (*Conversation) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{11} + return fileDescriptor_user_e11c6a5241e13fcd, []int{11} } func (m *Conversation) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Conversation.Unmarshal(m, b) @@ -719,6 +721,20 @@ func (m *Conversation) GetIsPrivateChat() bool { return false } +func (m *Conversation) GetGroupAtType() int32 { + if m != nil { + return m.GroupAtType + } + return 0 +} + +func (m *Conversation) GetIsNotInGroup() bool { + if m != nil { + return m.IsNotInGroup + } + return false +} + func (m *Conversation) GetEx() string { if m != nil { return m.Ex @@ -739,7 +755,7 @@ func (m *SetConversationReq) Reset() { *m = SetConversationReq{} } func (m *SetConversationReq) String() string { return proto.CompactTextString(m) } func (*SetConversationReq) ProtoMessage() {} func (*SetConversationReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{12} + return fileDescriptor_user_e11c6a5241e13fcd, []int{12} } func (m *SetConversationReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetConversationReq.Unmarshal(m, b) @@ -791,7 +807,7 @@ func (m *SetConversationResp) Reset() { *m = SetConversationResp{} } func (m *SetConversationResp) String() string { return proto.CompactTextString(m) } func (*SetConversationResp) ProtoMessage() {} func (*SetConversationResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{13} + return fileDescriptor_user_e11c6a5241e13fcd, []int{13} } func (m *SetConversationResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetConversationResp.Unmarshal(m, b) @@ -833,7 +849,7 @@ func (m *SetRecvMsgOptReq) Reset() { *m = SetRecvMsgOptReq{} } func (m *SetRecvMsgOptReq) String() string { return proto.CompactTextString(m) } func (*SetRecvMsgOptReq) ProtoMessage() {} func (*SetRecvMsgOptReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{14} + return fileDescriptor_user_e11c6a5241e13fcd, []int{14} } func (m *SetRecvMsgOptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetRecvMsgOptReq.Unmarshal(m, b) @@ -899,7 +915,7 @@ func (m *SetRecvMsgOptResp) Reset() { *m = SetRecvMsgOptResp{} } func (m *SetRecvMsgOptResp) String() string { return proto.CompactTextString(m) } func (*SetRecvMsgOptResp) ProtoMessage() {} func (*SetRecvMsgOptResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{15} + return fileDescriptor_user_e11c6a5241e13fcd, []int{15} } func (m *SetRecvMsgOptResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetRecvMsgOptResp.Unmarshal(m, b) @@ -939,7 +955,7 @@ func (m *GetConversationReq) Reset() { *m = GetConversationReq{} } func (m *GetConversationReq) String() string { return proto.CompactTextString(m) } func (*GetConversationReq) ProtoMessage() {} func (*GetConversationReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{16} + return fileDescriptor_user_e11c6a5241e13fcd, []int{16} } func (m *GetConversationReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetConversationReq.Unmarshal(m, b) @@ -992,7 +1008,7 @@ func (m *GetConversationResp) Reset() { *m = GetConversationResp{} } func (m *GetConversationResp) String() string { return proto.CompactTextString(m) } func (*GetConversationResp) ProtoMessage() {} func (*GetConversationResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{17} + return fileDescriptor_user_e11c6a5241e13fcd, []int{17} } func (m *GetConversationResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetConversationResp.Unmarshal(m, b) @@ -1039,7 +1055,7 @@ func (m *GetConversationsReq) Reset() { *m = GetConversationsReq{} } func (m *GetConversationsReq) String() string { return proto.CompactTextString(m) } func (*GetConversationsReq) ProtoMessage() {} func (*GetConversationsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{18} + return fileDescriptor_user_e11c6a5241e13fcd, []int{18} } func (m *GetConversationsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetConversationsReq.Unmarshal(m, b) @@ -1092,7 +1108,7 @@ func (m *GetConversationsResp) Reset() { *m = GetConversationsResp{} } func (m *GetConversationsResp) String() string { return proto.CompactTextString(m) } func (*GetConversationsResp) ProtoMessage() {} func (*GetConversationsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{19} + return fileDescriptor_user_e11c6a5241e13fcd, []int{19} } func (m *GetConversationsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetConversationsResp.Unmarshal(m, b) @@ -1138,7 +1154,7 @@ func (m *GetAllConversationsReq) Reset() { *m = GetAllConversationsReq{} func (m *GetAllConversationsReq) String() string { return proto.CompactTextString(m) } func (*GetAllConversationsReq) ProtoMessage() {} func (*GetAllConversationsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{20} + return fileDescriptor_user_e11c6a5241e13fcd, []int{20} } func (m *GetAllConversationsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetAllConversationsReq.Unmarshal(m, b) @@ -1184,7 +1200,7 @@ func (m *GetAllConversationsResp) Reset() { *m = GetAllConversationsResp func (m *GetAllConversationsResp) String() string { return proto.CompactTextString(m) } func (*GetAllConversationsResp) ProtoMessage() {} func (*GetAllConversationsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{21} + return fileDescriptor_user_e11c6a5241e13fcd, []int{21} } func (m *GetAllConversationsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetAllConversationsResp.Unmarshal(m, b) @@ -1232,7 +1248,7 @@ func (m *BatchSetConversationsReq) Reset() { *m = BatchSetConversationsR func (m *BatchSetConversationsReq) String() string { return proto.CompactTextString(m) } func (*BatchSetConversationsReq) ProtoMessage() {} func (*BatchSetConversationsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{22} + return fileDescriptor_user_e11c6a5241e13fcd, []int{22} } func (m *BatchSetConversationsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BatchSetConversationsReq.Unmarshal(m, b) @@ -1293,7 +1309,7 @@ func (m *BatchSetConversationsResp) Reset() { *m = BatchSetConversations func (m *BatchSetConversationsResp) String() string { return proto.CompactTextString(m) } func (*BatchSetConversationsResp) ProtoMessage() {} func (*BatchSetConversationsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{23} + return fileDescriptor_user_e11c6a5241e13fcd, []int{23} } func (m *BatchSetConversationsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BatchSetConversationsResp.Unmarshal(m, b) @@ -1346,7 +1362,7 @@ func (m *ResignUserReq) Reset() { *m = ResignUserReq{} } func (m *ResignUserReq) String() string { return proto.CompactTextString(m) } func (*ResignUserReq) ProtoMessage() {} func (*ResignUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{24} + return fileDescriptor_user_e11c6a5241e13fcd, []int{24} } func (m *ResignUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResignUserReq.Unmarshal(m, b) @@ -1391,7 +1407,7 @@ func (m *ResignUserResp) Reset() { *m = ResignUserResp{} } func (m *ResignUserResp) String() string { return proto.CompactTextString(m) } func (*ResignUserResp) ProtoMessage() {} func (*ResignUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{25} + return fileDescriptor_user_e11c6a5241e13fcd, []int{25} } func (m *ResignUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResignUserResp.Unmarshal(m, b) @@ -1430,7 +1446,7 @@ func (m *GetUserByIdReq) Reset() { *m = GetUserByIdReq{} } func (m *GetUserByIdReq) String() string { return proto.CompactTextString(m) } func (*GetUserByIdReq) ProtoMessage() {} func (*GetUserByIdReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{26} + return fileDescriptor_user_e11c6a5241e13fcd, []int{26} } func (m *GetUserByIdReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserByIdReq.Unmarshal(m, b) @@ -1479,7 +1495,7 @@ func (m *User) Reset() { *m = User{} } func (m *User) String() string { return proto.CompactTextString(m) } func (*User) ProtoMessage() {} func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{27} + return fileDescriptor_user_e11c6a5241e13fcd, []int{27} } func (m *User) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_User.Unmarshal(m, b) @@ -1546,7 +1562,7 @@ func (m *GetUserByIdResp) Reset() { *m = GetUserByIdResp{} } func (m *GetUserByIdResp) String() string { return proto.CompactTextString(m) } func (*GetUserByIdResp) ProtoMessage() {} func (*GetUserByIdResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{28} + return fileDescriptor_user_e11c6a5241e13fcd, []int{28} } func (m *GetUserByIdResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserByIdResp.Unmarshal(m, b) @@ -1593,7 +1609,7 @@ func (m *GetUsersByNameReq) Reset() { *m = GetUsersByNameReq{} } func (m *GetUsersByNameReq) String() string { return proto.CompactTextString(m) } func (*GetUsersByNameReq) ProtoMessage() {} func (*GetUsersByNameReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{29} + return fileDescriptor_user_e11c6a5241e13fcd, []int{29} } func (m *GetUsersByNameReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUsersByNameReq.Unmarshal(m, b) @@ -1647,7 +1663,7 @@ func (m *GetUsersByNameResp) Reset() { *m = GetUsersByNameResp{} } func (m *GetUsersByNameResp) String() string { return proto.CompactTextString(m) } func (*GetUsersByNameResp) ProtoMessage() {} func (*GetUsersByNameResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{30} + return fileDescriptor_user_e11c6a5241e13fcd, []int{30} } func (m *GetUsersByNameResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUsersByNameResp.Unmarshal(m, b) @@ -1704,7 +1720,7 @@ func (m *AlterUserReq) Reset() { *m = AlterUserReq{} } func (m *AlterUserReq) String() string { return proto.CompactTextString(m) } func (*AlterUserReq) ProtoMessage() {} func (*AlterUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{31} + return fileDescriptor_user_e11c6a5241e13fcd, []int{31} } func (m *AlterUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AlterUserReq.Unmarshal(m, b) @@ -1777,7 +1793,7 @@ func (m *AlterUserResp) Reset() { *m = AlterUserResp{} } func (m *AlterUserResp) String() string { return proto.CompactTextString(m) } func (*AlterUserResp) ProtoMessage() {} func (*AlterUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{32} + return fileDescriptor_user_e11c6a5241e13fcd, []int{32} } func (m *AlterUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AlterUserResp.Unmarshal(m, b) @@ -1817,7 +1833,7 @@ func (m *GetUsersReq) Reset() { *m = GetUsersReq{} } func (m *GetUsersReq) String() string { return proto.CompactTextString(m) } func (*GetUsersReq) ProtoMessage() {} func (*GetUsersReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{33} + return fileDescriptor_user_e11c6a5241e13fcd, []int{33} } func (m *GetUsersReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUsersReq.Unmarshal(m, b) @@ -1872,7 +1888,7 @@ func (m *GetUsersResp) Reset() { *m = GetUsersResp{} } func (m *GetUsersResp) String() string { return proto.CompactTextString(m) } func (*GetUsersResp) ProtoMessage() {} func (*GetUsersResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{34} + return fileDescriptor_user_e11c6a5241e13fcd, []int{34} } func (m *GetUsersResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUsersResp.Unmarshal(m, b) @@ -1935,7 +1951,7 @@ func (m *AddUserReq) Reset() { *m = AddUserReq{} } func (m *AddUserReq) String() string { return proto.CompactTextString(m) } func (*AddUserReq) ProtoMessage() {} func (*AddUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{35} + return fileDescriptor_user_e11c6a5241e13fcd, []int{35} } func (m *AddUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AddUserReq.Unmarshal(m, b) @@ -2001,7 +2017,7 @@ func (m *AddUserResp) Reset() { *m = AddUserResp{} } func (m *AddUserResp) String() string { return proto.CompactTextString(m) } func (*AddUserResp) ProtoMessage() {} func (*AddUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{36} + return fileDescriptor_user_e11c6a5241e13fcd, []int{36} } func (m *AddUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_AddUserResp.Unmarshal(m, b) @@ -2042,7 +2058,7 @@ func (m *BlockUserReq) Reset() { *m = BlockUserReq{} } func (m *BlockUserReq) String() string { return proto.CompactTextString(m) } func (*BlockUserReq) ProtoMessage() {} func (*BlockUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{37} + return fileDescriptor_user_e11c6a5241e13fcd, []int{37} } func (m *BlockUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockUserReq.Unmarshal(m, b) @@ -2101,7 +2117,7 @@ func (m *BlockUserResp) Reset() { *m = BlockUserResp{} } func (m *BlockUserResp) String() string { return proto.CompactTextString(m) } func (*BlockUserResp) ProtoMessage() {} func (*BlockUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{38} + return fileDescriptor_user_e11c6a5241e13fcd, []int{38} } func (m *BlockUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockUserResp.Unmarshal(m, b) @@ -2141,7 +2157,7 @@ func (m *UnBlockUserReq) Reset() { *m = UnBlockUserReq{} } func (m *UnBlockUserReq) String() string { return proto.CompactTextString(m) } func (*UnBlockUserReq) ProtoMessage() {} func (*UnBlockUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{39} + return fileDescriptor_user_e11c6a5241e13fcd, []int{39} } func (m *UnBlockUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UnBlockUserReq.Unmarshal(m, b) @@ -2193,7 +2209,7 @@ func (m *UnBlockUserResp) Reset() { *m = UnBlockUserResp{} } func (m *UnBlockUserResp) String() string { return proto.CompactTextString(m) } func (*UnBlockUserResp) ProtoMessage() {} func (*UnBlockUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{40} + return fileDescriptor_user_e11c6a5241e13fcd, []int{40} } func (m *UnBlockUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UnBlockUserResp.Unmarshal(m, b) @@ -2233,7 +2249,7 @@ func (m *GetBlockUsersReq) Reset() { *m = GetBlockUsersReq{} } func (m *GetBlockUsersReq) String() string { return proto.CompactTextString(m) } func (*GetBlockUsersReq) ProtoMessage() {} func (*GetBlockUsersReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{41} + return fileDescriptor_user_e11c6a5241e13fcd, []int{41} } func (m *GetBlockUsersReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetBlockUsersReq.Unmarshal(m, b) @@ -2287,7 +2303,7 @@ func (m *BlockUser) Reset() { *m = BlockUser{} } func (m *BlockUser) String() string { return proto.CompactTextString(m) } func (*BlockUser) ProtoMessage() {} func (*BlockUser) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{42} + return fileDescriptor_user_e11c6a5241e13fcd, []int{42} } func (m *BlockUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockUser.Unmarshal(m, b) @@ -2342,7 +2358,7 @@ func (m *GetBlockUsersResp) Reset() { *m = GetBlockUsersResp{} } func (m *GetBlockUsersResp) String() string { return proto.CompactTextString(m) } func (*GetBlockUsersResp) ProtoMessage() {} func (*GetBlockUsersResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{43} + return fileDescriptor_user_e11c6a5241e13fcd, []int{43} } func (m *GetBlockUsersResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetBlockUsersResp.Unmarshal(m, b) @@ -2402,7 +2418,7 @@ func (m *GetBlockUserByIdReq) Reset() { *m = GetBlockUserByIdReq{} } func (m *GetBlockUserByIdReq) String() string { return proto.CompactTextString(m) } func (*GetBlockUserByIdReq) ProtoMessage() {} func (*GetBlockUserByIdReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{44} + return fileDescriptor_user_e11c6a5241e13fcd, []int{44} } func (m *GetBlockUserByIdReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetBlockUserByIdReq.Unmarshal(m, b) @@ -2447,7 +2463,7 @@ func (m *GetBlockUserByIdResp) Reset() { *m = GetBlockUserByIdResp{} } func (m *GetBlockUserByIdResp) String() string { return proto.CompactTextString(m) } func (*GetBlockUserByIdResp) ProtoMessage() {} func (*GetBlockUserByIdResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{45} + return fileDescriptor_user_e11c6a5241e13fcd, []int{45} } func (m *GetBlockUserByIdResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetBlockUserByIdResp.Unmarshal(m, b) @@ -2487,7 +2503,7 @@ func (m *DeleteUserReq) Reset() { *m = DeleteUserReq{} } func (m *DeleteUserReq) String() string { return proto.CompactTextString(m) } func (*DeleteUserReq) ProtoMessage() {} func (*DeleteUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{46} + return fileDescriptor_user_e11c6a5241e13fcd, []int{46} } func (m *DeleteUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUserReq.Unmarshal(m, b) @@ -2539,7 +2555,7 @@ func (m *DeleteUserResp) Reset() { *m = DeleteUserResp{} } func (m *DeleteUserResp) String() string { return proto.CompactTextString(m) } func (*DeleteUserResp) ProtoMessage() {} func (*DeleteUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_user_6133bd34462fbb1a, []int{47} + return fileDescriptor_user_e11c6a5241e13fcd, []int{47} } func (m *DeleteUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUserResp.Unmarshal(m, b) @@ -3383,123 +3399,125 @@ var _User_serviceDesc = grpc.ServiceDesc{ Metadata: "user/user.proto", } -func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_6133bd34462fbb1a) } - -var fileDescriptor_user_6133bd34462fbb1a = []byte{ - // 1835 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x5f, 0x6f, 0xdc, 0xc6, - 0x11, 0x07, 0xef, 0x8f, 0x25, 0xcd, 0xe9, 0x4e, 0xa7, 0x95, 0x2c, 0xd1, 0x6c, 0xab, 0xaa, 0x84, - 0xeb, 0x0a, 0x02, 0x2a, 0xb5, 0x6e, 0x51, 0x17, 0x2e, 0x5a, 0x5b, 0x77, 0x92, 0x85, 0x2b, 0x62, - 0xe9, 0xc0, 0xb3, 0x80, 0x20, 0x08, 0x20, 0xd0, 0x77, 0x2b, 0x89, 0xd0, 0x1d, 0x49, 0x73, 0x79, - 0xb2, 0x95, 0x17, 0x07, 0xf9, 0xf3, 0x12, 0xe4, 0x25, 0x40, 0x00, 0x3b, 0x79, 0xc8, 0xe7, 0xc8, - 0x7b, 0xf2, 0x94, 0x6f, 0x90, 0xa7, 0x7c, 0x95, 0x60, 0x97, 0x4b, 0x72, 0x77, 0x49, 0x49, 0x17, - 0x4a, 0xf0, 0x8b, 0xad, 0x9d, 0xdd, 0x1d, 0xfe, 0x66, 0xe6, 0x37, 0xb3, 0xb3, 0x7b, 0x30, 0x37, - 0x26, 0x38, 0xd8, 0xa4, 0xff, 0x6c, 0xf8, 0x81, 0x17, 0x7a, 0xa8, 0x42, 0xff, 0x36, 0xfe, 0xb4, - 0xef, 0x63, 0xf7, 0xb0, 0xf3, 0x74, 0xd3, 0x3f, 0x3d, 0xde, 0x64, 0x13, 0x9b, 0x64, 0x70, 0x7a, - 0xf8, 0x92, 0x6c, 0xbe, 0x24, 0xd1, 0x42, 0xf3, 0x7f, 0x00, 0x6d, 0x6f, 0x34, 0xf2, 0x5c, 0x0b, - 0x13, 0x1f, 0xe9, 0x30, 0x85, 0x83, 0xa0, 0xed, 0x0d, 0xb0, 0xae, 0xad, 0x6a, 0x6b, 0x55, 0x2b, - 0x1e, 0xa2, 0x25, 0xb8, 0x85, 0x83, 0xe0, 0x29, 0x39, 0xd6, 0x4b, 0xab, 0xda, 0xda, 0x8c, 0xc5, - 0x47, 0xe6, 0x47, 0xd0, 0xd8, 0xc6, 0x43, 0x1c, 0xe2, 0x03, 0x82, 0x03, 0x62, 0xe1, 0x17, 0x68, - 0x1d, 0x9a, 0xa9, 0xa4, 0xb3, 0xfd, 0x9e, 0x43, 0x42, 0xbd, 0xb4, 0x5a, 0x5e, 0x9b, 0xb1, 0x32, - 0x72, 0x64, 0xc0, 0xf4, 0xbe, 0x1f, 0x8d, 0xf5, 0x32, 0xd3, 0x9b, 0x8c, 0xd1, 0x2a, 0xd4, 0xf6, - 0x7d, 0x1c, 0xd8, 0xa1, 0xe3, 0xb9, 0x9d, 0x6d, 0xbd, 0xc2, 0xa6, 0x45, 0x91, 0xe9, 0xc1, 0x9c, - 0xf4, 0x6d, 0xe2, 0xa3, 0xbf, 0x89, 0xe6, 0x30, 0x1b, 0x6a, 0xf7, 0x9b, 0x1b, 0xcc, 0x31, 0xa9, - 0xdc, 0x12, 0x4d, 0x5e, 0x87, 0xe6, 0x13, 0xdb, 0x19, 0xe2, 0x41, 0x16, 0xae, 0x2a, 0x37, 0xf7, - 0x61, 0x6e, 0x17, 0x87, 0x5b, 0xc3, 0x61, 0x24, 0xa3, 0xd6, 0x1a, 0x30, 0xed, 0xc5, 0x16, 0x68, - 0x91, 0x05, 0x9e, 0x60, 0x81, 0x27, 0x58, 0x10, 0x39, 0x4e, 0x14, 0x99, 0x03, 0x68, 0xca, 0x0a, - 0x0b, 0x99, 0xb0, 0x02, 0x90, 0x01, 0x2f, 0x48, 0xcc, 0x73, 0x98, 0xdb, 0xea, 0xf7, 0xbd, 0xb1, - 0x1b, 0xb6, 0x4f, 0x70, 0xff, 0x94, 0xc2, 0x5e, 0x83, 0x39, 0xf6, 0xb7, 0xb0, 0x4f, 0x63, 0xfb, - 0x54, 0xb1, 0x14, 0xa2, 0xd2, 0xe5, 0x21, 0x2a, 0x67, 0x43, 0xf4, 0x8b, 0x06, 0x4d, 0xf9, 0xdb, - 0x91, 0x85, 0xfd, 0x09, 0x2c, 0x4c, 0xd7, 0xa0, 0x5d, 0x00, 0x0b, 0x93, 0xf1, 0x30, 0x4c, 0x2c, - 0xac, 0xdd, 0xff, 0x4b, 0xb4, 0x43, 0xd5, 0xbe, 0xd1, 0x73, 0xdc, 0xe3, 0x21, 0xa3, 0x44, 0x2f, - 0xb4, 0xc3, 0x31, 0xb1, 0x84, 0xad, 0x46, 0x17, 0x9a, 0xea, 0x3c, 0xa5, 0xf6, 0x58, 0x0c, 0x20, - 0x1f, 0xa1, 0xbb, 0x50, 0xb7, 0x23, 0xe5, 0xd1, 0x42, 0x6e, 0xbe, 0x2c, 0x34, 0x5d, 0x68, 0xec, - 0xe2, 0x90, 0x39, 0xc4, 0x3d, 0xf2, 0xa8, 0x6f, 0x57, 0x00, 0xc6, 0xaa, 0x5b, 0x05, 0xc9, 0x35, - 0x3d, 0xfa, 0x99, 0xc6, 0x48, 0x98, 0x7e, 0xb0, 0x90, 0x43, 0x1f, 0xc1, 0x6c, 0xac, 0x81, 0xa1, - 0x2c, 0x33, 0x97, 0xfe, 0x6e, 0x83, 0xe0, 0xe0, 0x0c, 0x07, 0x87, 0xb6, 0xef, 0x1c, 0xfa, 0x76, - 0x60, 0x8f, 0xc8, 0x46, 0xf2, 0x21, 0x69, 0x83, 0xf9, 0x85, 0x06, 0xf3, 0x07, 0xfe, 0xc0, 0xe6, - 0xe9, 0xcc, 0x4d, 0x7f, 0x00, 0xd3, 0xf1, 0x90, 0xc3, 0xb8, 0x54, 0x65, 0xb2, 0xf8, 0x2a, 0x9f, - 0x78, 0x59, 0x9f, 0x88, 0x69, 0xf4, 0x04, 0x90, 0x8a, 0xa5, 0x88, 0x57, 0xcc, 0xaf, 0xcb, 0x30, - 0xdb, 0xf6, 0xdc, 0x33, 0x1c, 0x10, 0xa6, 0x9a, 0x85, 0xe3, 0xa5, 0x8b, 0x03, 0x29, 0xc1, 0x45, - 0x11, 0xba, 0x07, 0x0d, 0x71, 0x47, 0x02, 0x5f, 0x91, 0x52, 0x52, 0x58, 0xb8, 0x7f, 0xf6, 0x94, - 0x1c, 0xef, 0xfb, 0x21, 0xb3, 0xa1, 0x6a, 0x09, 0x12, 0x5a, 0x86, 0xc4, 0x1d, 0xcf, 0xce, 0x7d, - 0xcc, 0x4a, 0x5e, 0xd5, 0xca, 0xc8, 0x29, 0x61, 0x39, 0xa0, 0x6a, 0x44, 0x58, 0x8e, 0x45, 0x87, - 0xa9, 0xdd, 0xc0, 0x1b, 0xfb, 0x9d, 0x6d, 0xfd, 0x16, 0x9b, 0x88, 0x87, 0xd4, 0x8e, 0x03, 0x37, - 0xc0, 0xf6, 0xa0, 0x4d, 0x99, 0xab, 0x4f, 0x31, 0xc5, 0xa2, 0x88, 0x92, 0x7d, 0x3b, 0xb0, 0x8f, - 0xc2, 0x67, 0xf8, 0x55, 0xf8, 0xcc, 0x19, 0x61, 0x7d, 0x7a, 0x55, 0x5b, 0x2b, 0x5b, 0xb2, 0x90, - 0x86, 0xa9, 0x43, 0xba, 0x8e, 0xeb, 0xe2, 0x81, 0x3e, 0xb3, 0xaa, 0xad, 0x4d, 0x5b, 0xc9, 0x18, - 0x99, 0x30, 0xbb, 0x15, 0x86, 0x76, 0xff, 0x04, 0x0f, 0x58, 0xfc, 0x81, 0x41, 0x90, 0x64, 0xf4, - 0x2b, 0x1d, 0xd2, 0x0d, 0x9c, 0x33, 0x3b, 0xc4, 0xed, 0x13, 0x3b, 0xd4, 0x6b, 0x4c, 0x89, 0x2c, - 0x44, 0x0d, 0x28, 0xed, 0xbc, 0xd2, 0x67, 0xd9, 0xfe, 0xd2, 0xce, 0x2b, 0xf3, 0x5b, 0x0d, 0x50, - 0x0f, 0x87, 0xa2, 0x1f, 0x28, 0xd9, 0xfe, 0x25, 0x07, 0x8b, 0x47, 0x18, 0xc5, 0x11, 0x16, 0x16, - 0xcb, 0x41, 0x5d, 0x87, 0xa6, 0xeb, 0x85, 0xce, 0x91, 0xd3, 0x4f, 0x5d, 0x5d, 0x8a, 0x5c, 0xad, - 0xca, 0x27, 0xc8, 0xc7, 0x5d, 0x58, 0xc8, 0x60, 0x2b, 0x44, 0xbe, 0x9f, 0x34, 0x68, 0xf6, 0x70, - 0x98, 0x72, 0x82, 0xda, 0xf8, 0x4e, 0x09, 0x98, 0xf1, 0x4a, 0x65, 0x32, 0xaf, 0x54, 0xb3, 0x5e, - 0xd9, 0x81, 0x79, 0xc5, 0x96, 0x42, 0x3e, 0xf9, 0x58, 0x03, 0xb4, 0x9b, 0x8d, 0x7c, 0xd6, 0x66, - 0x2d, 0xd7, 0x66, 0xc5, 0x7b, 0xa5, 0xac, 0xf7, 0xae, 0x8e, 0xef, 0x6b, 0x58, 0xd8, 0xbd, 0x89, - 0xf8, 0x66, 0xe8, 0x5a, 0x9a, 0x8c, 0xae, 0xe6, 0xa7, 0x5a, 0x06, 0x01, 0x99, 0x8c, 0x1a, 0xf4, - 0x90, 0x97, 0x1c, 0x42, 0x78, 0x73, 0xa0, 0x8a, 0x27, 0x70, 0xc3, 0x27, 0x1a, 0x2c, 0x66, 0x51, - 0x14, 0x72, 0xc4, 0xbf, 0xa1, 0x2e, 0xa9, 0xe1, 0xe7, 0x79, 0x9e, 0x27, 0xe4, 0x85, 0xe6, 0x87, - 0xb0, 0x14, 0xb5, 0x4b, 0x05, 0x9c, 0xa1, 0x98, 0x58, 0xca, 0x9a, 0xf8, 0xb9, 0x06, 0xcb, 0xb9, - 0xea, 0xdf, 0xb1, 0x95, 0x3f, 0x6a, 0xa0, 0xb7, 0xec, 0xb0, 0x7f, 0xd2, 0xcb, 0x89, 0x7a, 0x46, - 0xad, 0x36, 0xa1, 0xda, 0x09, 0x92, 0x21, 0xaf, 0x04, 0x94, 0x27, 0x2b, 0x01, 0x95, 0xbc, 0xc4, - 0xb9, 0x73, 0x81, 0x15, 0x85, 0xfc, 0xa9, 0xc3, 0x54, 0x6f, 0xdc, 0xef, 0x63, 0x12, 0x93, 0x38, - 0x1e, 0xd2, 0xe3, 0x30, 0xea, 0xd4, 0x59, 0x17, 0x33, 0x63, 0xf1, 0x91, 0xd9, 0x81, 0xba, 0x85, - 0x89, 0x73, 0xec, 0x52, 0xf3, 0xa8, 0xef, 0xe2, 0x73, 0x73, 0x10, 0x37, 0x7a, 0xd1, 0x68, 0x02, - 0x6a, 0xb4, 0xa0, 0x21, 0xaa, 0x2a, 0x54, 0xcb, 0xfe, 0x9f, 0x34, 0x8a, 0xad, 0xf3, 0xce, 0xe0, - 0x7a, 0x78, 0xde, 0x6a, 0x50, 0xa1, 0x8b, 0xe9, 0xa1, 0xdb, 0x0d, 0xbc, 0x23, 0x67, 0x88, 0xbb, - 0x27, 0x5e, 0xe8, 0x71, 0x45, 0x92, 0x8c, 0x1e, 0xda, 0x7b, 0x4e, 0xff, 0xd4, 0xb5, 0x47, 0x38, - 0xee, 0xad, 0xe2, 0xb1, 0x00, 0xa1, 0x2c, 0x41, 0x58, 0x01, 0x68, 0x07, 0xd8, 0x0e, 0x31, 0xeb, - 0x05, 0xa2, 0xe8, 0x0a, 0x12, 0x1a, 0x8d, 0x0e, 0x69, 0x0d, 0xbd, 0xfe, 0x29, 0xab, 0xfe, 0xd3, - 0x56, 0x3c, 0x34, 0xfb, 0x49, 0x7b, 0x1a, 0x99, 0x59, 0xf0, 0x46, 0xc3, 0x2e, 0xb0, 0xbc, 0x46, - 0x42, 0xb4, 0x96, 0xf9, 0x9e, 0xc9, 0xcd, 0x37, 0x1a, 0xcc, 0xf3, 0xaf, 0x90, 0xd6, 0xf9, 0x9e, - 0x3d, 0xc2, 0xfc, 0x2e, 0x46, 0x25, 0x74, 0x18, 0xdf, 0xc5, 0xe2, 0x31, 0xda, 0x06, 0xe8, 0xda, - 0xc7, 0x8e, 0x2b, 0xd6, 0xde, 0xbb, 0x39, 0xbd, 0xa9, 0x85, 0x5f, 0x8c, 0x31, 0x09, 0xd3, 0xb5, - 0x96, 0xb0, 0x6f, 0x82, 0x3a, 0xf9, 0x4d, 0x74, 0x62, 0x49, 0xc8, 0x88, 0x8f, 0x56, 0xa1, 0x4a, - 0x81, 0xc7, 0xe9, 0x2a, 0x5a, 0x14, 0x4d, 0xa0, 0x9d, 0x1c, 0x80, 0x7f, 0xce, 0x05, 0x48, 0x7c, - 0xcf, 0x25, 0xf8, 0x02, 0x84, 0xb1, 0x0f, 0xc6, 0x23, 0xc2, 0x73, 0x37, 0x19, 0x9b, 0xdf, 0x6b, - 0x30, 0xbb, 0x35, 0x0c, 0xa3, 0x7c, 0xbf, 0x16, 0x01, 0xe9, 0x8a, 0xee, 0x89, 0xe7, 0xe2, 0xbd, - 0xf1, 0xe8, 0x39, 0x0e, 0xd8, 0x97, 0xca, 0x96, 0x28, 0x92, 0x58, 0x57, 0x51, 0x58, 0xb7, 0x08, - 0xd5, 0x9d, 0x91, 0xed, 0x0c, 0x79, 0xe7, 0x10, 0x0d, 0x84, 0x3b, 0xc0, 0x80, 0xf7, 0xaf, 0xc9, - 0xd8, 0xdc, 0x82, 0xba, 0x80, 0xbc, 0x08, 0xa7, 0xcc, 0xaf, 0x34, 0xa8, 0xc5, 0x91, 0x89, 0x8f, - 0x0c, 0xc1, 0x48, 0x2d, 0x6b, 0xe4, 0xcd, 0x70, 0x46, 0x64, 0x65, 0x59, 0x66, 0xa5, 0xf9, 0x83, - 0x06, 0xb3, 0x29, 0xa6, 0x6b, 0xa6, 0x4a, 0x39, 0x2f, 0x55, 0x14, 0x5e, 0x95, 0x6f, 0x82, 0x57, - 0x15, 0x85, 0x57, 0x6f, 0x35, 0x80, 0xad, 0xc1, 0x20, 0x66, 0xd5, 0xd5, 0x8e, 0x55, 0xd8, 0xc3, - 0xf9, 0x25, 0xb2, 0xe7, 0xa2, 0xba, 0x84, 0xa0, 0x22, 0x30, 0x8a, 0xfd, 0x2d, 0xf1, 0xa6, 0xaa, - 0xf0, 0xe6, 0x11, 0xd4, 0x12, 0x64, 0x85, 0x58, 0xf3, 0xa5, 0x06, 0xb3, 0xac, 0xb0, 0x5d, 0x95, - 0x33, 0xf7, 0xa0, 0xb1, 0xe3, 0x0e, 0xb6, 0x1d, 0x62, 0x3f, 0x1f, 0x46, 0x55, 0x93, 0xf7, 0xe1, - 0xb2, 0xf4, 0xea, 0x12, 0x22, 0xd9, 0x53, 0xc9, 0xe6, 0x81, 0x80, 0xa6, 0x90, 0x45, 0x47, 0xd0, - 0x38, 0x70, 0x27, 0x32, 0xe9, 0xea, 0x32, 0x20, 0x42, 0x2d, 0x2b, 0x50, 0xdb, 0x30, 0x27, 0x7d, - 0xa7, 0x10, 0xd8, 0xef, 0x34, 0xf6, 0x42, 0x96, 0xa8, 0x61, 0x99, 0x2b, 0xe7, 0xa5, 0x76, 0x33, - 0xb5, 0x3c, 0xc7, 0x3a, 0x53, 0x08, 0xfd, 0xde, 0x78, 0xc4, 0xeb, 0xa9, 0x24, 0x33, 0x5f, 0xc3, - 0x4c, 0x32, 0xa6, 0xb9, 0x48, 0xff, 0xe7, 0x90, 0xa4, 0x5c, 0x64, 0xf3, 0xeb, 0xd0, 0x6c, 0xe1, - 0x63, 0xc7, 0xcd, 0xb2, 0x24, 0x23, 0xcf, 0xe1, 0x53, 0x39, 0x8f, 0x4f, 0xe6, 0xcf, 0xd1, 0x51, - 0x28, 0x7a, 0xa8, 0x50, 0x1d, 0xd9, 0x04, 0x48, 0x75, 0xf0, 0x6a, 0x32, 0x17, 0xed, 0x48, 0x83, - 0x28, 0x2c, 0x79, 0x17, 0x85, 0xa5, 0xcb, 0x6e, 0x3e, 0xc9, 0x37, 0xe3, 0xbe, 0x69, 0x19, 0xa6, - 0xe8, 0xf0, 0xd0, 0xf9, 0xed, 0x8d, 0xd3, 0x0e, 0xbb, 0xc5, 0x28, 0x1a, 0x89, 0x8f, 0xfe, 0x2a, - 0x84, 0x91, 0x57, 0xfa, 0x8c, 0xf1, 0xe9, 0x0a, 0xf3, 0x08, 0xea, 0xe9, 0xcb, 0xf3, 0xf5, 0x20, - 0x5d, 0x9a, 0x43, 0x2d, 0xf1, 0x75, 0xbd, 0x58, 0x60, 0xef, 0xbf, 0xa9, 0x45, 0x27, 0x04, 0x7a, - 0x98, 0x9c, 0x7f, 0xec, 0x2d, 0x66, 0x31, 0xda, 0x25, 0x3f, 0x5e, 0x1a, 0xb7, 0x73, 0xa4, 0xc4, - 0x47, 0x6d, 0x68, 0xc8, 0x2f, 0x6c, 0x68, 0x99, 0xb3, 0x5b, 0x7d, 0x03, 0x34, 0xf4, 0xfc, 0x09, - 0xe2, 0x53, 0x00, 0xc2, 0x7b, 0x7d, 0x0c, 0x40, 0xfe, 0xf9, 0x20, 0x06, 0xa0, 0x3e, 0xec, 0xff, - 0x97, 0x1d, 0x94, 0xc9, 0x4b, 0x39, 0x4a, 0x71, 0x8a, 0xcf, 0xf1, 0xc6, 0x52, 0x9e, 0x38, 0xda, - 0x2e, 0x3e, 0x14, 0xc7, 0xdb, 0x95, 0x67, 0xf1, 0x78, 0x7b, 0xe6, 0xc5, 0xfa, 0x09, 0x6b, 0x6a, - 0xa5, 0x57, 0x24, 0x3d, 0xf9, 0x92, 0xf2, 0x3a, 0x61, 0xdc, 0xb9, 0x60, 0x86, 0xf8, 0xc8, 0x62, - 0x84, 0x56, 0x6f, 0x98, 0xe8, 0xf7, 0x22, 0x6a, 0xf5, 0xca, 0x67, 0xfc, 0xe1, 0x92, 0x59, 0xe2, - 0xa3, 0x0e, 0xab, 0x90, 0xb2, 0xc2, 0x7c, 0x08, 0x4c, 0x9b, 0x71, 0xd1, 0x14, 0xf1, 0xd1, 0xfb, - 0x70, 0x3b, 0xf7, 0xca, 0x86, 0x56, 0x78, 0x2e, 0x5c, 0x70, 0x2b, 0x35, 0xfe, 0x78, 0xe9, 0x7c, - 0xe4, 0xc0, 0x5e, 0xbe, 0x03, 0x7b, 0x17, 0x3a, 0x30, 0xef, 0x59, 0xed, 0x31, 0xd4, 0xa5, 0x77, - 0x25, 0xb4, 0x94, 0xac, 0x95, 0x1e, 0xce, 0x8c, 0xe5, 0x5c, 0x79, 0x44, 0x42, 0xe1, 0x7e, 0xa2, - 0x64, 0x01, 0xaf, 0x30, 0x4a, 0x16, 0x24, 0x55, 0xa2, 0x9d, 0x5c, 0xe1, 0x78, 0x6f, 0x1f, 0x67, - 0x41, 0xe6, 0x2e, 0x62, 0xe8, 0xf9, 0x13, 0xc4, 0x47, 0x0f, 0xd8, 0x6f, 0x19, 0xfc, 0x2e, 0x89, - 0x16, 0xa2, 0x75, 0xd2, 0x45, 0xd5, 0x58, 0xcc, 0x0a, 0x89, 0x8f, 0xfe, 0x09, 0x33, 0x49, 0x0f, - 0x8c, 0xf8, 0x85, 0x5f, 0x6c, 0xe7, 0x8d, 0x85, 0x8c, 0x8c, 0xf8, 0xe8, 0xef, 0x30, 0x1d, 0x83, - 0x40, 0xf3, 0x32, 0x28, 0xba, 0x07, 0xa9, 0x22, 0xe2, 0xa3, 0x0d, 0x98, 0xe2, 0x4d, 0x13, 0xe2, - 0xa5, 0x25, 0xed, 0xee, 0x8c, 0x79, 0x45, 0x12, 0x01, 0x4b, 0xcf, 0x40, 0xa4, 0x96, 0xcd, 0x14, - 0x98, 0xdc, 0x0c, 0x3c, 0x84, 0x9a, 0xd0, 0x1f, 0xc4, 0x81, 0x90, 0x5b, 0x93, 0x38, 0x10, 0x6a, - 0x23, 0xf1, 0x18, 0xea, 0xd2, 0x99, 0x87, 0xd2, 0xbc, 0x97, 0x5a, 0x05, 0x63, 0x39, 0x57, 0x9e, - 0x64, 0x8d, 0x74, 0x10, 0x08, 0x59, 0xa3, 0x1e, 0x39, 0x42, 0xd6, 0x64, 0xcf, 0x8e, 0x07, 0x00, - 0x69, 0xb5, 0x8a, 0x03, 0x2a, 0x1d, 0x0f, 0xc6, 0x62, 0x56, 0x48, 0xfc, 0x56, 0xfd, 0x83, 0xda, - 0x06, 0xfb, 0xd1, 0xf6, 0x3f, 0xf4, 0x9f, 0xe7, 0xb7, 0xd8, 0x2f, 0xb2, 0xff, 0xf8, 0x35, 0x00, - 0x00, 0xff, 0xff, 0x10, 0x04, 0x45, 0x5d, 0xcd, 0x1d, 0x00, 0x00, +func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_e11c6a5241e13fcd) } + +var fileDescriptor_user_e11c6a5241e13fcd = []byte{ + // 1857 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xdd, 0x4f, 0x24, 0x4b, + 0x15, 0x4f, 0xcf, 0xc7, 0x02, 0x67, 0x98, 0x61, 0x28, 0xb8, 0xd0, 0xb7, 0x55, 0xc4, 0xce, 0xf5, + 0x4a, 0x48, 0x04, 0x5d, 0x8d, 0x6b, 0xd6, 0xe8, 0x2e, 0x33, 0xb0, 0x64, 0x8c, 0x0b, 0x93, 0x9e, + 0x25, 0x31, 0xc6, 0x84, 0xf4, 0xce, 0x14, 0xd0, 0x61, 0xa6, 0xbb, 0xb7, 0xab, 0x87, 0x5d, 0x7c, + 0x59, 0xe3, 0xc7, 0x8b, 0xf1, 0xc5, 0xa7, 0x5d, 0x7d, 0xf0, 0xef, 0xf0, 0x5d, 0x9f, 0xfc, 0x0f, + 0xf4, 0xc5, 0x7f, 0xc5, 0xd4, 0x47, 0x77, 0x57, 0x55, 0x37, 0x30, 0xb7, 0x21, 0xfb, 0x02, 0x53, + 0xa7, 0xbe, 0x7e, 0xe7, 0x9c, 0xdf, 0x39, 0x75, 0xaa, 0x1a, 0x96, 0xa6, 0x04, 0x47, 0xbb, 0xf4, + 0xcf, 0x4e, 0x18, 0x05, 0x71, 0x80, 0x6a, 0xf4, 0xb7, 0xf5, 0xad, 0xe3, 0x10, 0xfb, 0xa7, 0xbd, + 0x97, 0xbb, 0xe1, 0xe5, 0xf9, 0x2e, 0xeb, 0xd8, 0x25, 0xa3, 0xcb, 0xd3, 0xb7, 0x64, 0xf7, 0x2d, + 0xe1, 0x03, 0xed, 0x9f, 0x01, 0x74, 0x83, 0xc9, 0x24, 0xf0, 0x1d, 0x4c, 0x42, 0x64, 0xc2, 0x1c, + 0x8e, 0xa2, 0x6e, 0x30, 0xc2, 0xa6, 0xb1, 0x69, 0x6c, 0xd5, 0x9d, 0xa4, 0x89, 0xd6, 0xe0, 0x11, + 0x8e, 0xa2, 0x97, 0xe4, 0xdc, 0xac, 0x6c, 0x1a, 0x5b, 0x0b, 0x8e, 0x68, 0xd9, 0xbf, 0x81, 0xd6, + 0x3e, 0x1e, 0xe3, 0x18, 0x9f, 0x10, 0x1c, 0x11, 0x07, 0xbf, 0x41, 0xdb, 0xd0, 0xce, 0x24, 0xbd, + 0xfd, 0x5f, 0x78, 0x24, 0x36, 0x2b, 0x9b, 0xd5, 0xad, 0x05, 0x27, 0x27, 0x47, 0x16, 0xcc, 0x1f, + 0x87, 0xbc, 0x6d, 0x56, 0xd9, 0xba, 0x69, 0x1b, 0x6d, 0x42, 0xe3, 0x38, 0xc4, 0x91, 0x1b, 0x7b, + 0x81, 0xdf, 0xdb, 0x37, 0x6b, 0xac, 0x5b, 0x16, 0xd9, 0x01, 0x2c, 0x29, 0x7b, 0x93, 0x10, 0x7d, + 0x4f, 0x56, 0x87, 0xe9, 0xd0, 0x78, 0xdc, 0xde, 0x61, 0x86, 0xc9, 0xe4, 0x8e, 0xac, 0xf2, 0x36, + 0xb4, 0x5f, 0xb8, 0xde, 0x18, 0x8f, 0xf2, 0x70, 0x75, 0xb9, 0x7d, 0x0c, 0x4b, 0x87, 0x38, 0xde, + 0x1b, 0x8f, 0xb9, 0x8c, 0x6a, 0x6b, 0xc1, 0x7c, 0x90, 0x68, 0x60, 0x70, 0x0d, 0x02, 0x49, 0x83, + 0x40, 0xd2, 0x80, 0x1b, 0x4e, 0x16, 0xd9, 0x23, 0x68, 0xab, 0x0b, 0x96, 0x52, 0x61, 0x03, 0x20, + 0x07, 0x5e, 0x92, 0xd8, 0xd7, 0xb0, 0xb4, 0x37, 0x1c, 0x06, 0x53, 0x3f, 0xee, 0x5e, 0xe0, 0xe1, + 0x25, 0x85, 0xbd, 0x05, 0x4b, 0xec, 0xb7, 0x34, 0xcf, 0x60, 0xf3, 0x74, 0xb1, 0xe2, 0xa2, 0xca, + 0xed, 0x2e, 0xaa, 0xe6, 0x5d, 0xf4, 0x3f, 0x03, 0xda, 0xea, 0xde, 0x5c, 0xc3, 0xe1, 0x0c, 0x1a, + 0x66, 0x63, 0xd0, 0x21, 0x80, 0x83, 0xc9, 0x74, 0x1c, 0xa7, 0x1a, 0x36, 0x1e, 0x7f, 0x87, 0xcf, + 0xd0, 0x57, 0xdf, 0x19, 0x78, 0xfe, 0xf9, 0x98, 0x51, 0x62, 0x10, 0xbb, 0xf1, 0x94, 0x38, 0xd2, + 0x54, 0xab, 0x0f, 0x6d, 0xbd, 0x9f, 0x52, 0x7b, 0x2a, 0x3b, 0x50, 0xb4, 0xd0, 0x17, 0xd0, 0x74, + 0xf9, 0xe2, 0x7c, 0xa0, 0x50, 0x5f, 0x15, 0xda, 0x3e, 0xb4, 0x0e, 0x71, 0xcc, 0x0c, 0xe2, 0x9f, + 0x05, 0xd4, 0xb6, 0x1b, 0x00, 0x53, 0xdd, 0xac, 0x92, 0xe4, 0x9e, 0x16, 0xfd, 0x83, 0xc1, 0x48, + 0x98, 0x6d, 0x58, 0xca, 0xa0, 0xcf, 0x60, 0x31, 0x59, 0x81, 0xa1, 0xac, 0x32, 0x93, 0x7e, 0x6d, + 0x87, 0xe0, 0xe8, 0x0a, 0x47, 0xa7, 0x6e, 0xe8, 0x9d, 0x86, 0x6e, 0xe4, 0x4e, 0xc8, 0x4e, 0xba, + 0x91, 0x32, 0xc1, 0xfe, 0x93, 0x01, 0xcb, 0x27, 0xe1, 0xc8, 0x15, 0xe1, 0x2c, 0x54, 0x7f, 0x02, + 0xf3, 0x49, 0x53, 0xc0, 0xb8, 0x75, 0xc9, 0x74, 0xf0, 0x5d, 0x36, 0x09, 0xf2, 0x36, 0x91, 0xc3, + 0xe8, 0x05, 0x20, 0x1d, 0x4b, 0x19, 0xab, 0xd8, 0xff, 0xad, 0xc2, 0x62, 0x37, 0xf0, 0xaf, 0x70, + 0x44, 0xd8, 0xd2, 0xcc, 0x1d, 0x6f, 0x7d, 0x1c, 0x29, 0x01, 0x2e, 0x8b, 0xd0, 0x97, 0xd0, 0x92, + 0x67, 0xa4, 0xf0, 0x35, 0x29, 0x25, 0x85, 0x83, 0x87, 0x57, 0x2f, 0xc9, 0xf9, 0x71, 0x18, 0x33, + 0x1d, 0xea, 0x8e, 0x24, 0xa1, 0x69, 0x48, 0x9e, 0xf1, 0xea, 0x3a, 0xc4, 0x2c, 0xe5, 0xd5, 0x9d, + 0x9c, 0x9c, 0x12, 0x56, 0x00, 0xaa, 0x73, 0xc2, 0x0a, 0x2c, 0x26, 0xcc, 0x1d, 0x46, 0xc1, 0x34, + 0xec, 0xed, 0x9b, 0x8f, 0x58, 0x47, 0xd2, 0xa4, 0x7a, 0x9c, 0xf8, 0x11, 0x76, 0x47, 0x5d, 0xca, + 0x5c, 0x73, 0x8e, 0x2d, 0x2c, 0x8b, 0x28, 0xd9, 0xf7, 0x23, 0xf7, 0x2c, 0x7e, 0x85, 0xdf, 0xc5, + 0xaf, 0xbc, 0x09, 0x36, 0xe7, 0x37, 0x8d, 0xad, 0xaa, 0xa3, 0x0a, 0xa9, 0x9b, 0x7a, 0xa4, 0xef, + 0xf9, 0x3e, 0x1e, 0x99, 0x0b, 0x9b, 0xc6, 0xd6, 0xbc, 0x93, 0xb6, 0x91, 0x0d, 0x8b, 0x7b, 0x71, + 0xec, 0x0e, 0x2f, 0xf0, 0x88, 0xf9, 0x1f, 0x18, 0x04, 0x45, 0x46, 0x77, 0xe9, 0x91, 0x7e, 0xe4, + 0x5d, 0xb9, 0x31, 0xee, 0x5e, 0xb8, 0xb1, 0xd9, 0x60, 0x8b, 0xa8, 0x42, 0x8a, 0x96, 0x01, 0xdf, + 0x8b, 0x99, 0x19, 0x16, 0x39, 0x5a, 0x49, 0x44, 0xf7, 0xea, 0x91, 0xa3, 0x20, 0xee, 0xf9, 0x4c, + 0x6a, 0x36, 0xd9, 0x32, 0x8a, 0x0c, 0xb5, 0xa0, 0x72, 0xf0, 0xce, 0x6c, 0x31, 0x14, 0x95, 0x83, + 0x77, 0xf6, 0xdf, 0x0c, 0x40, 0x03, 0x1c, 0xcb, 0xd6, 0xa4, 0x94, 0xfd, 0x91, 0xea, 0x72, 0xc1, + 0x13, 0x94, 0xf0, 0x44, 0x1a, 0xac, 0x52, 0x63, 0x1b, 0xda, 0x7e, 0x10, 0x7b, 0x67, 0xde, 0x30, + 0x73, 0x58, 0x85, 0x3b, 0x4c, 0x97, 0xcf, 0x10, 0xd5, 0x87, 0xb0, 0x92, 0xc3, 0x56, 0x8a, 0xc2, + 0xff, 0x36, 0xa0, 0x3d, 0xc0, 0x71, 0xc6, 0x2c, 0xaa, 0xe3, 0x27, 0xa5, 0x71, 0xce, 0x2a, 0xb5, + 0xd9, 0xac, 0x52, 0xcf, 0x5b, 0xe5, 0x00, 0x96, 0x35, 0x5d, 0x4a, 0xd9, 0xe4, 0xb7, 0x06, 0xa0, + 0xc3, 0xbc, 0xe7, 0xf3, 0x3a, 0x1b, 0x85, 0x3a, 0x6b, 0xd6, 0xab, 0xe4, 0xad, 0x77, 0xb7, 0x7f, + 0xdf, 0xc3, 0xca, 0xe1, 0x43, 0xf8, 0x37, 0x47, 0xd7, 0xca, 0x6c, 0x74, 0xb5, 0x7f, 0x6f, 0xe4, + 0x10, 0x90, 0xd9, 0xa8, 0x41, 0x4b, 0x05, 0xc5, 0x20, 0x44, 0x94, 0x18, 0xba, 0x78, 0x06, 0x33, + 0xfc, 0xce, 0x80, 0xd5, 0x3c, 0x8a, 0x52, 0x86, 0xf8, 0x31, 0x34, 0x95, 0x65, 0x44, 0x55, 0x50, + 0x64, 0x09, 0x75, 0xa0, 0xfd, 0x6b, 0x58, 0xe3, 0x45, 0x57, 0x09, 0x63, 0x68, 0x2a, 0x56, 0xf2, + 0x2a, 0xfe, 0xd1, 0x80, 0xf5, 0xc2, 0xe5, 0x3f, 0xb1, 0x96, 0xff, 0x32, 0xc0, 0xec, 0xb8, 0xf1, + 0xf0, 0x62, 0x50, 0xe0, 0xf5, 0xdc, 0xb2, 0xc6, 0x8c, 0xcb, 0xce, 0x10, 0x0c, 0x45, 0x29, 0xa0, + 0x3a, 0x5b, 0x0a, 0xa8, 0x15, 0x05, 0xce, 0xe7, 0x37, 0x68, 0x51, 0xca, 0x9e, 0x26, 0xcc, 0x0d, + 0xa6, 0xc3, 0x21, 0x26, 0x09, 0x89, 0x93, 0x26, 0x3d, 0x54, 0x79, 0xbd, 0xcf, 0x6a, 0xa1, 0x05, + 0x47, 0xb4, 0xec, 0x1e, 0x34, 0x1d, 0x4c, 0xbc, 0x73, 0x9f, 0xaa, 0x47, 0x6d, 0x97, 0x9c, 0xbe, + 0xa3, 0xa4, 0x5c, 0xe4, 0xad, 0x19, 0xa8, 0xd1, 0x81, 0x96, 0xbc, 0x54, 0xa9, 0x5c, 0xf6, 0xf3, + 0xb4, 0xdc, 0xec, 0x5c, 0xf7, 0x46, 0xf7, 0xc3, 0xf3, 0xd1, 0x80, 0x1a, 0x1d, 0x4c, 0x8f, 0xd3, + 0x7e, 0x14, 0x9c, 0x79, 0x63, 0xdc, 0xbf, 0x08, 0xe2, 0x40, 0x2c, 0xa4, 0xc8, 0xe8, 0xd1, 0x7f, + 0xe4, 0x0d, 0x2f, 0x7d, 0x77, 0x82, 0x93, 0x0a, 0x2d, 0x69, 0x4b, 0x10, 0xaa, 0x0a, 0x84, 0x0d, + 0x80, 0x6e, 0x84, 0xdd, 0x18, 0xb3, 0x8a, 0x82, 0x7b, 0x57, 0x92, 0x50, 0x6f, 0xf4, 0x48, 0x67, + 0x1c, 0x0c, 0x2f, 0x59, 0xf6, 0x9f, 0x77, 0x92, 0xa6, 0x3d, 0x4c, 0x8b, 0x5c, 0xae, 0x66, 0xc9, + 0x7b, 0x11, 0xbb, 0x06, 0x8b, 0x1c, 0x09, 0x7c, 0x2c, 0xb3, 0x3d, 0x93, 0xdb, 0x1f, 0x0c, 0x58, + 0x16, 0xbb, 0x90, 0xce, 0xf5, 0x91, 0x3b, 0xc1, 0xe2, 0x46, 0x47, 0x25, 0xb4, 0x99, 0xdc, 0xe8, + 0x92, 0x36, 0xda, 0x07, 0xe8, 0xbb, 0xe7, 0x9e, 0x2f, 0xe7, 0xde, 0x2f, 0x0a, 0x2a, 0x5c, 0x07, + 0xbf, 0x99, 0x62, 0x12, 0x67, 0x63, 0x1d, 0x69, 0xde, 0x0c, 0x79, 0xf2, 0xaf, 0xfc, 0xc4, 0x52, + 0x90, 0x91, 0x10, 0x6d, 0x42, 0x9d, 0x02, 0x4f, 0xc2, 0x55, 0xd6, 0x88, 0x77, 0xa0, 0x83, 0x02, + 0x80, 0xdf, 0x2e, 0x04, 0x48, 0xc2, 0xc0, 0x27, 0xf8, 0x06, 0x84, 0x89, 0x0d, 0xa6, 0x13, 0x22, + 0x62, 0x37, 0x6d, 0xdb, 0xff, 0x30, 0x60, 0x71, 0x6f, 0x1c, 0xf3, 0x78, 0xbf, 0x17, 0x01, 0xe9, + 0x88, 0xfe, 0x45, 0xe0, 0xe3, 0xa3, 0xe9, 0xe4, 0x35, 0x8e, 0xd8, 0x4e, 0x55, 0x47, 0x16, 0x29, + 0xac, 0xab, 0x69, 0xac, 0x5b, 0x85, 0xfa, 0xc1, 0xc4, 0xf5, 0xc6, 0xa2, 0x72, 0xe0, 0x0d, 0xe9, + 0x26, 0x31, 0x12, 0x55, 0x70, 0xda, 0xb6, 0xf7, 0xa0, 0x29, 0x21, 0x2f, 0xc3, 0x29, 0xfb, 0x2f, + 0x06, 0x34, 0x12, 0xcf, 0x24, 0x47, 0x86, 0xa4, 0xa4, 0x91, 0x57, 0xf2, 0x61, 0x38, 0x23, 0xb3, + 0xb2, 0xaa, 0xb2, 0xd2, 0xfe, 0xa7, 0x01, 0x8b, 0x19, 0xa6, 0x7b, 0x86, 0x4a, 0xb5, 0x28, 0x54, + 0x34, 0x5e, 0x55, 0x1f, 0x82, 0x57, 0x35, 0x8d, 0x57, 0x1f, 0x0d, 0x80, 0xbd, 0xd1, 0x28, 0x61, + 0xd5, 0xdd, 0x86, 0xd5, 0xd8, 0x23, 0xf8, 0x25, 0xb3, 0xe7, 0xa6, 0xbc, 0x84, 0xa0, 0x26, 0x31, + 0x8a, 0xfd, 0x56, 0x78, 0x53, 0xd7, 0x78, 0xf3, 0x0c, 0x1a, 0x29, 0xb2, 0x52, 0xac, 0xf9, 0xb3, + 0x01, 0x8b, 0x2c, 0xb1, 0xdd, 0x15, 0x33, 0x5f, 0x42, 0xeb, 0xc0, 0x1f, 0xed, 0x7b, 0xc4, 0x7d, + 0x3d, 0xe6, 0x59, 0x53, 0xd4, 0xe1, 0xaa, 0xf4, 0xee, 0x14, 0xa2, 0xe8, 0x53, 0xcb, 0xc7, 0x81, + 0x84, 0xa6, 0x94, 0x46, 0x67, 0xd0, 0x3a, 0xf1, 0x67, 0x52, 0xe9, 0xee, 0x34, 0x20, 0x43, 0xad, + 0x6a, 0x50, 0xbb, 0xb0, 0xa4, 0xec, 0x53, 0x0a, 0xec, 0xdf, 0x0d, 0xf6, 0xce, 0x96, 0x2e, 0xc3, + 0x22, 0x57, 0x8d, 0x4b, 0xe3, 0x61, 0x72, 0x79, 0x81, 0x76, 0xb6, 0xe4, 0xfa, 0xa3, 0xe9, 0x44, + 0xe4, 0x53, 0x45, 0x66, 0xbf, 0x87, 0x85, 0xb4, 0x4d, 0x63, 0x91, 0xfe, 0x17, 0x90, 0x94, 0x58, + 0x64, 0xfd, 0xdb, 0xd0, 0xee, 0xe0, 0x73, 0xcf, 0xcf, 0xb3, 0x24, 0x27, 0x2f, 0xe0, 0x53, 0xb5, + 0x88, 0x4f, 0xf6, 0x7f, 0xf8, 0x51, 0x28, 0x5b, 0xa8, 0x54, 0x1e, 0xd9, 0x05, 0xc8, 0xd6, 0x10, + 0xd9, 0x64, 0x89, 0xcf, 0xc8, 0x9c, 0x28, 0x0d, 0xf9, 0x14, 0x89, 0xa5, 0xcf, 0x6e, 0x3e, 0xe9, + 0x9e, 0x49, 0xdd, 0xb4, 0x0e, 0x73, 0xb4, 0x79, 0xea, 0x7d, 0xf5, 0xc2, 0xe9, 0x80, 0xdd, 0x62, + 0xb4, 0x15, 0x49, 0x88, 0xbe, 0x2b, 0xb9, 0x51, 0x64, 0xfa, 0x9c, 0xf2, 0xd9, 0x08, 0xfb, 0x0c, + 0x9a, 0xd9, 0xfb, 0xf5, 0xfd, 0x20, 0xdd, 0x1a, 0x43, 0x1d, 0xf9, 0x8d, 0xbe, 0x9c, 0x63, 0x1f, + 0x7f, 0x68, 0xf0, 0x13, 0x02, 0x3d, 0x4d, 0xcf, 0x3f, 0xf6, 0xa2, 0xb3, 0xca, 0x67, 0xa9, 0x4f, + 0xa0, 0xd6, 0x67, 0x05, 0x52, 0x12, 0xa2, 0x2e, 0xb4, 0xd4, 0x77, 0x3a, 0xb4, 0x2e, 0xd8, 0xad, + 0xbf, 0x24, 0x5a, 0x66, 0x71, 0x07, 0x09, 0x29, 0x00, 0xe9, 0xd5, 0x3f, 0x01, 0xa0, 0x7e, 0x84, + 0x48, 0x00, 0xe8, 0x9f, 0x07, 0x7e, 0xca, 0x0e, 0xca, 0xf4, 0xbd, 0x1d, 0x65, 0x38, 0xe5, 0x47, + 0x7d, 0x6b, 0xad, 0x48, 0xcc, 0xa7, 0xcb, 0xcf, 0xcd, 0xc9, 0x74, 0xed, 0x71, 0x3d, 0x99, 0x9e, + 0x7b, 0xf7, 0x7e, 0xc1, 0x8a, 0x5a, 0xe5, 0x15, 0xc9, 0x4c, 0x77, 0xd2, 0x5e, 0x27, 0xac, 0xcf, + 0x6f, 0xe8, 0x21, 0x21, 0x72, 0x18, 0xa1, 0xf5, 0x1b, 0x26, 0xfa, 0xba, 0x8c, 0x5a, 0xbf, 0xf2, + 0x59, 0xdf, 0xb8, 0xa5, 0x97, 0x84, 0xa8, 0xc7, 0x32, 0xa4, 0xba, 0x60, 0x31, 0x04, 0xb6, 0x9a, + 0x75, 0x53, 0x17, 0x09, 0xd1, 0x2f, 0xe1, 0xb3, 0xc2, 0x2b, 0x1b, 0xda, 0x10, 0xb1, 0x70, 0xc3, + 0xad, 0xd4, 0xfa, 0xe6, 0xad, 0xfd, 0xdc, 0x80, 0x83, 0x62, 0x03, 0x0e, 0x6e, 0x34, 0x60, 0xd1, + 0xb3, 0xda, 0x73, 0x68, 0x2a, 0xef, 0x4a, 0x68, 0x2d, 0x1d, 0xab, 0x3c, 0x9c, 0x59, 0xeb, 0x85, + 0x72, 0x4e, 0x42, 0xe9, 0x7e, 0xa2, 0x45, 0x81, 0xc8, 0x30, 0x5a, 0x14, 0xa4, 0x59, 0xa2, 0x9b, + 0x5e, 0xe1, 0x44, 0x6d, 0x9f, 0x44, 0x41, 0xee, 0x2e, 0x62, 0x99, 0xc5, 0x1d, 0x24, 0x44, 0x4f, + 0xd8, 0x17, 0x11, 0x71, 0x97, 0x44, 0x2b, 0x7c, 0x9c, 0x72, 0x51, 0xb5, 0x56, 0xf3, 0x42, 0x12, + 0xa2, 0x1f, 0xc2, 0x42, 0x5a, 0x03, 0x23, 0x71, 0xe1, 0x97, 0xcb, 0x79, 0x6b, 0x25, 0x27, 0x23, + 0x21, 0xfa, 0x3e, 0xcc, 0x27, 0x20, 0xd0, 0xb2, 0x0a, 0x8a, 0xce, 0x41, 0xba, 0x88, 0x84, 0x68, + 0x07, 0xe6, 0x44, 0xd1, 0x84, 0x44, 0x6a, 0xc9, 0xaa, 0x3b, 0x6b, 0x59, 0x93, 0x70, 0x60, 0xd9, + 0x19, 0x88, 0xf4, 0xb4, 0x99, 0x01, 0x53, 0x8b, 0x81, 0xa7, 0xd0, 0x90, 0xea, 0x83, 0xc4, 0x11, + 0x6a, 0x69, 0x92, 0x38, 0x42, 0x2f, 0x24, 0x9e, 0x43, 0x53, 0x39, 0xf3, 0x50, 0x16, 0xf7, 0x4a, + 0xa9, 0x60, 0xad, 0x17, 0xca, 0xd3, 0xa8, 0x51, 0x0e, 0x02, 0x29, 0x6a, 0xf4, 0x23, 0x47, 0x8a, + 0x9a, 0xfc, 0xd9, 0xf1, 0x04, 0x20, 0xcb, 0x56, 0x89, 0x43, 0x95, 0xe3, 0xc1, 0x5a, 0xcd, 0x0b, + 0x49, 0xd8, 0x69, 0xfe, 0xaa, 0xb1, 0xc3, 0x3e, 0xfd, 0xfe, 0x84, 0xfe, 0x79, 0xfd, 0x88, 0x7d, + 0xd7, 0xfd, 0xc1, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x34, 0x9a, 0x78, 0xde, 0x13, 0x1e, 0x00, + 0x00, } diff --git a/pkg/proto/user/user.proto b/pkg/proto/user/user.proto index c6dad658c..d5914db41 100644 --- a/pkg/proto/user/user.proto +++ b/pkg/proto/user/user.proto @@ -79,7 +79,9 @@ message Conversation{ bool IsPinned = 9; string AttachedInfo = 10; bool IsPrivateChat = 11; - string Ex = 12; + int32 GroupAtType = 12; + bool IsNotInGroup = 13; + string Ex = 14; } message SetConversationReq{ @@ -144,9 +146,9 @@ message BatchSetConversationsReq{ } message BatchSetConversationsResp{ - CommonResp commonResp = 1; - repeated string Success = 2; - repeated string Failed = 3; + CommonResp commonResp = 1; + repeated string Success = 2; + repeated string Failed = 3; } message ResignUserReq{ @@ -177,9 +179,9 @@ message GetUserByIdResp{ } message GetUsersByNameReq { - string UserName = 1; - server_api_params.RequestPagination Pagination =2; - string OperationID = 3; + string UserName = 1; + server_api_params.RequestPagination Pagination = 2; + string OperationID = 3; } message GetUsersByNameResp { @@ -223,7 +225,7 @@ message AddUserReq{ } message AddUserResp{ - CommonResp CommonResp = 1; + CommonResp CommonResp = 1; } @@ -235,7 +237,7 @@ message BlockUserReq{ } message BlockUserResp{ - CommonResp CommonResp = 1; + CommonResp CommonResp = 1; } message UnBlockUserReq{ @@ -245,19 +247,19 @@ message UnBlockUserReq{ } message UnBlockUserResp{ - CommonResp CommonResp = 1; + CommonResp CommonResp = 1; } message GetBlockUsersReq{ - server_api_params.RequestPagination Pagination =1; + server_api_params.RequestPagination Pagination = 1; string OperationID = 2; int32 BlockUserNum = 3; } message BlockUser { - User User = 1; - string BeginDisableTime = 2; - string EndDisableTime = 3; + User User = 1; + string BeginDisableTime = 2; + string EndDisableTime = 3; } message GetBlockUsersResp{ @@ -268,22 +270,22 @@ message GetBlockUsersResp{ } message GetBlockUserByIdReq { - string User_id = 1; - string OperationID = 2; + string User_id = 1; + string OperationID = 2; } message GetBlockUserByIdResp { - BlockUser BlockUser = 2; + BlockUser BlockUser = 2; } message DeleteUserReq { - string User_id = 1; - string OperationID = 2; - string OpUserId = 3; + string User_id = 1; + string OperationID = 2; + string OpUserId = 3; } message DeleteUserResp { - CommonResp CommonResp = 1; + CommonResp CommonResp = 1; } diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go index 38262a95c..a05ba927a 100644 --- a/pkg/utils/strings.go +++ b/pkg/utils/strings.go @@ -43,6 +43,14 @@ func IsContain(target string, List []string) bool { } return false } +func IsContainInt32(target int32, List []int32) bool { + for _, element := range List { + if target == element { + return true + } + } + return false +} func InterfaceArrayToStringArray(data []interface{}) (i []string) { for _, param := range data { @@ -77,6 +85,8 @@ func GetConversationIDBySessionType(sourceID string, sessionType int) string { return "single_" + sourceID case constant.GroupChatType: return "group_" + sourceID + case constant.NotificationChatType: + return "notification_" + sourceID } return "" } diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 8f0b52d72..52cb1bf2e 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -77,6 +77,44 @@ func Difference(slice1, slice2 []uint32) []uint32 { } return n } + +//Get the intersection of two slices +func IntersectString(slice1, slice2 []string) []string { + m := make(map[string]bool) + n := make([]string, 0) + for _, v := range slice1 { + m[v] = true + } + for _, v := range slice2 { + flag, _ := m[v] + if flag { + n = append(n, v) + } + } + return n +} + +//Get the diff of two slices +func DifferenceString(slice1, slice2 []string) []string { + m := make(map[string]bool) + n := make([]string, 0) + inter := IntersectString(slice1, slice2) + for _, v := range inter { + m[v] = true + } + for _, v := range slice1 { + if !m[v] { + n = append(n, v) + } + } + + for _, v := range slice2 { + if !m[v] { + n = append(n, v) + } + } + return n +} func OperationIDGenerator() string { return strconv.FormatInt(time.Now().UnixNano()+int64(rand.Uint32()), 10) } diff --git a/script/check_all.sh b/script/check_all.sh index 1d55dff65..c434c65d2 100644 --- a/script/check_all.sh +++ b/script/check_all.sh @@ -20,6 +20,7 @@ service_port_name=( openImMessageCmsPort openImStatisticsPort openImOfficePort + openImOrganizationPort ) switch=$(cat $config_path | grep demoswitch |awk -F '[:]' '{print $NF}') for i in ${service_port_name[*]}; do diff --git a/script/path_info.cfg b/script/path_info.cfg index 84e81adfd..b50fc18fb 100644 --- a/script/path_info.cfg +++ b/script/path_info.cfg @@ -48,7 +48,8 @@ service_source_root=( ../cmd/rpc/open_im_admin_cms/ ../cmd/rpc/open_im_message_cms/ ../cmd/rpc/open_im_statistics/ - ../cmd/rpc/open_im_office/ + ../cmd/rpc/open_im_office/ + ../cmd/rpc/open_im_organization/ ${msg_gateway_source_root} ${msg_transfer_source_root} ${msg_source_root} @@ -70,6 +71,7 @@ service_names=( open_im_message_cms open_im_statistics open_im_office + open_im_organization ${msg_gateway_name} ${msg_transfer_name} ${msg_name} diff --git a/script/start_rpc_service.sh b/script/start_rpc_service.sh index e15307f45..20e7991b4 100644 --- a/script/start_rpc_service.sh +++ b/script/start_rpc_service.sh @@ -19,6 +19,7 @@ service_filename=( open_im_statistics ${msg_name} open_im_office + open_im_organization ) #service config port name @@ -36,6 +37,7 @@ service_port_name=( openImStatisticsPort openImOfflineMessagePort openImOfficePort + openImOrganizationPort ) for ((i = 0; i < ${#service_filename[*]}; i++)); do @@ -64,4 +66,4 @@ for ((i = 0; i < ${#service_filename[*]}; i++)); do pid="netstat -ntlp|grep $j |awk '{printf \$7}'|cut -d/ -f1" echo -e "${GREEN_PREFIX}${service_filename[$i]} start success,port number:$j pid:$(eval $pid)$COLOR_SUFFIX" done -done \ No newline at end of file +done