From 4a8d37bde1f4b317ab2e8b2800b3749b90666148 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 11 Apr 2022 16:18:36 +0800 Subject: [PATCH 001/128] getui --- config/config.yaml | 2 ++ internal/api/third/minio_init.go | 9 ++++++++- pkg/common/config/config.go | 12 +++++++----- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index da30523d0..c78611634 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -93,6 +93,8 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 bucket: openim location: us-east-1 endpoint: http://127.0.0.1:9000 + endpointInner: http://127.0.0.1:9000 #minio内网地址 + endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化,IM server连接minio走内网地址访问 accessKeyID: user12345 secretAccessKey: key12345 ali: # ali oss 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/pkg/common/config/config.go b/pkg/common/config/config.go index b497ee268..4cc5fed27 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"` } From caf4ab60cdf271f5c02a1cc8410919dac400a998 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 11 Apr 2022 17:08:54 +0800 Subject: [PATCH 002/128] minio add inner ip --- internal/api/third/minio_storage_credential.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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()}) From 2c308af615083924f842103dd1f971459dccfec8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 11 Apr 2022 17:58:23 +0800 Subject: [PATCH 003/128] getui --- internal/push/getui/push.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index d95aca887..215ed474b 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -51,7 +51,7 @@ 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"` @@ -91,8 +91,8 @@ 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, From 4d01aa3006f3844282a94a849b97d50ba6236ad6 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 11 Apr 2022 18:12:00 +0800 Subject: [PATCH 004/128] getui --- internal/push/getui/push.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index 215ed474b..79a67f98f 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -21,7 +21,7 @@ var ( ) const ( - PushURL = "/push/single/cid" + PushURL = "/push/single/alias" AuthURL = "/auth" ) From 46aa26a444659e95446476264233617608db639b Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 12 Apr 2022 09:51:25 +0800 Subject: [PATCH 005/128] version code --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 9d67999ce..2257ac8ee 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 9d67999cec3e4a9792c33a95e5514a945df54052 +Subproject commit 2257ac8ee528fb1e0038f85e34c8770fbe4758e3 From 9e4a2168c014ce0e5de17ce578133aeadd7f776d Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 12 Apr 2022 11:12:36 +0800 Subject: [PATCH 006/128] getui --- internal/push/getui/push.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index 79a67f98f..18197558a 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,6 +20,8 @@ import ( var ( GetuiClient *Getui + + TokenExpireError = errors.New("token expire") ) const ( @@ -68,7 +72,6 @@ type Notification struct { } type PushResp struct { - GetuiCommonResp } func newGetuiClient() *Getui { @@ -101,13 +104,16 @@ func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operat } pushResp := PushResp{} err = g.request(PushURL, pushReq, token, &pushResp, operationID) + switch err { + case TokenExpireError: + _, err = g.getTokenAndSave2Redis(operationID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "getTokenAndSave2Redis failed, ", err.Error()) + } + } 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 +170,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 } From bc06ba54b948da6f0c3bab84830acb698f72e76e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 12 Apr 2022 22:02:43 +0800 Subject: [PATCH 007/128] organization && department --- cmd/Open-IM-SDK-Core | 2 +- internal/rpc/organization/organization.go | 68 ++ pkg/common/db/model_struct.go | 12 +- pkg/proto/organization/organization.proto | 157 ++++ pkg/proto/sdk_ws/ws.pb.go | 855 ++++++++++++++++------ pkg/proto/sdk_ws/ws.proto | 60 +- 6 files changed, 909 insertions(+), 245 deletions(-) create mode 100644 internal/rpc/organization/organization.go create mode 100644 pkg/proto/organization/organization.proto diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 2257ac8ee..7030e5dba 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 2257ac8ee528fb1e0038f85e34c8770fbe4758e3 +Subproject commit 7030e5dba7c9ec4c0afca7d8c1dabf26f0ca90d0 diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go new file mode 100644 index 000000000..0eddd72e6 --- /dev/null +++ b/internal/rpc/organization/organization.go @@ -0,0 +1,68 @@ +package organization + +import ( + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + rpc "Open_IM/pkg/proto/organization" + "Open_IM/pkg/utils" + + "context" + "google.golang.org/grpc" + "net" + "strconv" + "strings" +) + +type organizationServer struct { + rpcPort int + rpcRegisterName string + etcdSchema string + etcdAddr []string +} + +func NewGroupServer(port int) *organizationServer { + log.NewPrivateLog(constant.LogFileName) + return &organizationServer{ + rpcPort: port, + rpcRegisterName: config.Config.RpcRegisterName.OpenImGroupName, + 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) { + return nil, nil +} diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 41053b1c3..8f3d97ad0 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -238,26 +238,26 @@ 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"` + 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"` + 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"` diff --git a/pkg/proto/organization/organization.proto b/pkg/proto/organization/organization.proto new file mode 100644 index 000000000..498d625aa --- /dev/null +++ b/pkg/proto/organization/organization.proto @@ -0,0 +1,157 @@ +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 GetDepartmentReq{ + string departmentID = 1; + string operationID = 2; + string opUserID = 3; +} + +message GetDepartmentResp{ + 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.UserInDepartment userInDepartment = 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.UserInDepartment userInDepartment = 1; + string operationID = 2; + string opUserID = 3; +} +message UpdateUserInDepartmentResp{ + int32 errCode = 1; + string errMsg = 2; +} + + +message DeleteOrganizationReq{ + string userID = 1; + string operationID = 2; + string opUserID = 3; +} +message DeleteOrganizationResp{ + 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.UserInDepartment userInDepartmentList = 3; +} + + +service organization{ + rpc createDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); + rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp); + rpc GetDepartment(GetDepartmentReq) returns(GetDepartmentResp); + rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp); + rpc CreateOrganizationUser(CreateOrganizationUserReq) returns(CreateOrganizationUserResp); + rpc UpdateOrganizationUser(UpdateOrganizationUserReq) returns(UpdateOrganizationUserResp); + rpc CreateDepartmentMember(CreateDepartmentMemberReq) returns(CreateDepartmentMemberResp); + rpc GetUserInDepartment(GetUserInDepartmentReq) returns(GetUserInDepartmentResp); + rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp); + rpc DeleteOrganization(DeleteOrganizationReq) returns(DeleteOrganizationResp); + rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp); +} + + + + diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index d0566cd04..6e29ab2d8 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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -858,6 +858,366 @@ 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_966fa482a95c53be, []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_966fa482a95c53be, []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_966fa482a95c53be, []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 UserInDepartment struct { + DepartmentUser *OrganizationUser `protobuf:"bytes,1,opt,name=departmentUser" json:"departmentUser,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_966fa482a95c53be, []int{11} +} +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) GetDepartmentUser() *OrganizationUser { + if m != nil { + return m.DepartmentUser + } + 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 +1231,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_966fa482a95c53be, []int{12} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -925,7 +1285,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_966fa482a95c53be, []int{13} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -976,7 +1336,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_966fa482a95c53be, []int{14} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1008,7 +1368,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_966fa482a95c53be, []int{15} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1055,7 +1415,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_966fa482a95c53be, []int{16} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1124,7 +1484,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_966fa482a95c53be, []int{17} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1285,7 +1645,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_966fa482a95c53be, []int{18} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1353,7 +1713,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_966fa482a95c53be, []int{19} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1410,7 +1770,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_966fa482a95c53be, []int{20} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1479,7 +1839,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_966fa482a95c53be, []int{21} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1534,7 +1894,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_966fa482a95c53be, []int{22} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1590,7 +1950,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_966fa482a95c53be, []int{23} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -1645,7 +2005,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_966fa482a95c53be, []int{24} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -1700,7 +2060,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_966fa482a95c53be, []int{25} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -1756,7 +2116,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_966fa482a95c53be, []int{26} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -1819,7 +2179,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_966fa482a95c53be, []int{27} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -1882,7 +2242,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_966fa482a95c53be, []int{28} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -1944,7 +2304,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_966fa482a95c53be, []int{29} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -1998,7 +2358,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_966fa482a95c53be, []int{30} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2054,7 +2414,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_966fa482a95c53be, []int{31} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2123,7 +2483,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_966fa482a95c53be, []int{32} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2184,7 +2544,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_966fa482a95c53be, []int{33} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2238,7 +2598,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_966fa482a95c53be, []int{34} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2292,7 +2652,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_966fa482a95c53be, []int{35} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2345,7 +2705,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_966fa482a95c53be, []int{36} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2391,7 +2751,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_966fa482a95c53be, []int{37} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2431,7 +2791,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_966fa482a95c53be, []int{38} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2478,7 +2838,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_966fa482a95c53be, []int{39} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2526,7 +2886,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_966fa482a95c53be, []int{40} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -2579,7 +2939,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_966fa482a95c53be, []int{41} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -2617,7 +2977,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_966fa482a95c53be, []int{42} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -2655,7 +3015,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_966fa482a95c53be, []int{43} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -2693,7 +3053,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_966fa482a95c53be, []int{44} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -2732,7 +3092,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_966fa482a95c53be, []int{45} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -2771,7 +3131,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_966fa482a95c53be, []int{46} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -2811,7 +3171,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_966fa482a95c53be, []int{47} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -2865,7 +3225,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_966fa482a95c53be, []int{48} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -2911,7 +3271,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_966fa482a95c53be, []int{49} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -2964,7 +3324,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_966fa482a95c53be, []int{50} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3231,7 +3591,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_966fa482a95c53be, []int{51} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3499,7 +3859,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_966fa482a95c53be, []int{52} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -3595,7 +3955,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_966fa482a95c53be, []int{53} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -3650,7 +4010,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_966fa482a95c53be, []int{54} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -3711,7 +4071,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_966fa482a95c53be, []int{55} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -3766,7 +4126,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_966fa482a95c53be, []int{56} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -3827,7 +4187,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_966fa482a95c53be, []int{57} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -3882,7 +4242,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_966fa482a95c53be, []int{58} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -3940,7 +4300,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_966fa482a95c53be, []int{59} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -3975,7 +4335,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_966fa482a95c53be, []int{60} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4043,7 +4403,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_966fa482a95c53be, []int{61} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4097,7 +4457,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_966fa482a95c53be, []int{62} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4148,7 +4508,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_966fa482a95c53be, []int{63} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4183,7 +4543,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_966fa482a95c53be, []int{64} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4248,7 +4608,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_966fa482a95c53be, []int{65} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4282,7 +4642,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_966fa482a95c53be, []int{66} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4342,7 +4702,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_966fa482a95c53be, []int{67} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4385,6 +4745,10 @@ 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((*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") @@ -4444,178 +4808,195 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_331bd590ecfeca43) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_966fa482a95c53be) } -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, +var fileDescriptor_ws_966fa482a95c53be = []byte{ + // 2988 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, 0x34, 0x66, 0x76, 0x30, + 0x85, 0xb5, 0x2c, 0x0b, 0xcc, 0xa2, 0x45, 0x48, 0xb0, 0x0b, 0x83, 0xfc, 0x9a, 0xc7, 0xae, 0xdb, + 0xf6, 0x56, 0xcf, 0xb0, 0x08, 0x90, 0x56, 0xe5, 0xae, 0x74, 0xbb, 0xd6, 0xd5, 0x55, 0xd5, 0xf5, + 0xf0, 0x8c, 0x11, 0x12, 0x12, 0x48, 0x88, 0x1b, 0x27, 0x38, 0x70, 0x41, 0xe2, 0x82, 0x40, 0xab, + 0xd5, 0x0a, 0x81, 0xc4, 0x01, 0x21, 0x0e, 0xfc, 0x03, 0x1c, 0x11, 0x37, 0xce, 0x5c, 0x39, 0x20, + 0x21, 0x81, 0x32, 0x22, 0xab, 0x2a, 0xb3, 0xaa, 0xdb, 0xee, 0xb5, 0xac, 0x9d, 0x59, 0x0d, 0x37, + 0x47, 0x74, 0x46, 0x64, 0xe4, 0x2f, 0x22, 0x23, 0x22, 0x33, 0xcb, 0xb0, 0x18, 0x3b, 0x27, 0x6f, + 0x3d, 0x8a, 0x5f, 0x7a, 0x14, 0xdf, 0x0a, 0xa3, 0x20, 0x09, 0x8c, 0xe5, 0x98, 0x45, 0xa7, 0x2c, + 0x7a, 0xcb, 0x0e, 0xdd, 0xb7, 0x42, 0x3b, 0xb2, 0x87, 0xb1, 0xf9, 0x4f, 0x1d, 0x9a, 0x77, 0xa3, + 0x20, 0x0d, 0xef, 0xfb, 0x47, 0x81, 0xd1, 0x81, 0xd9, 0x01, 0x12, 0xdb, 0x1d, 0x6d, 0x4d, 0x7b, + 0xa1, 0x69, 0x65, 0xa4, 0x71, 0x03, 0x9a, 0xf8, 0xe7, 0x9e, 0x3d, 0x64, 0x1d, 0x1d, 0x7f, 0x2b, + 0x18, 0x86, 0x09, 0xf3, 0x7e, 0x90, 0xb8, 0x47, 0x6e, 0xdf, 0x4e, 0xdc, 0xc0, 0xef, 0xd4, 0x70, + 0x80, 0xc2, 0xe3, 0x63, 0x5c, 0x3f, 0x89, 0x02, 0x27, 0xed, 0xe3, 0x98, 0x19, 0x1a, 0x23, 0xf3, + 0xf8, 0xfc, 0x47, 0x76, 0x9f, 0x3d, 0xb4, 0x76, 0x3b, 0x75, 0x9a, 0x5f, 0x90, 0xc6, 0x1a, 0xb4, + 0x82, 0x47, 0x3e, 0x8b, 0x1e, 0xc6, 0x2c, 0xba, 0xbf, 0xdd, 0x69, 0xe0, 0xaf, 0x32, 0xcb, 0xb8, + 0x09, 0xd0, 0x8f, 0x98, 0x9d, 0xb0, 0x07, 0xee, 0x90, 0x75, 0x66, 0xd7, 0xb4, 0x17, 0xda, 0x96, + 0xc4, 0xe1, 0x1a, 0x86, 0x6c, 0x78, 0xc8, 0xa2, 0xad, 0x20, 0xf5, 0x93, 0xce, 0x1c, 0x0e, 0x90, + 0x59, 0xc6, 0x02, 0xe8, 0xec, 0x71, 0xa7, 0x89, 0xaa, 0x75, 0xf6, 0xd8, 0x58, 0x81, 0x46, 0x9c, + 0xd8, 0x49, 0x1a, 0x77, 0x60, 0x4d, 0x7b, 0xa1, 0x6e, 0x09, 0xca, 0x58, 0x87, 0x36, 0xea, 0x0d, + 0x32, 0x6b, 0x5a, 0x28, 0xa2, 0x32, 0x73, 0xc4, 0x1e, 0x9c, 0x85, 0xac, 0x33, 0x8f, 0x0a, 0x0a, + 0x86, 0xf9, 0x57, 0x1d, 0xae, 0x21, 0xee, 0x5d, 0x34, 0xe0, 0x4e, 0xea, 0x79, 0x17, 0x78, 0x60, + 0x05, 0x1a, 0x29, 0x4d, 0x47, 0xf0, 0x0b, 0x8a, 0xcf, 0x13, 0x05, 0x1e, 0xdb, 0x65, 0xa7, 0xcc, + 0x43, 0xe0, 0xeb, 0x56, 0xc1, 0x30, 0x56, 0x61, 0xee, 0xed, 0xc0, 0xf5, 0x11, 0x93, 0x19, 0xfc, + 0x31, 0xa7, 0xf9, 0x6f, 0xbe, 0xdb, 0x3f, 0xf1, 0xb9, 0x4b, 0x09, 0xee, 0x9c, 0x96, 0x3d, 0xd1, + 0x50, 0x3d, 0xf1, 0x3c, 0x2c, 0xd8, 0x61, 0xd8, 0xb5, 0xfd, 0x01, 0x8b, 0x68, 0xd2, 0x59, 0xd4, + 0x5b, 0xe2, 0x72, 0x7f, 0xf0, 0x99, 0x7a, 0x41, 0x1a, 0xf5, 0x19, 0xc2, 0x5d, 0xb7, 0x24, 0x0e, + 0xd7, 0x13, 0x84, 0x2c, 0x92, 0x60, 0x24, 0xe4, 0x4b, 0x5c, 0xe1, 0x15, 0xc8, 0xbd, 0xc2, 0xfd, + 0x98, 0x26, 0x6c, 0xc7, 0x77, 0x70, 0x51, 0x2d, 0xe1, 0xc7, 0x82, 0x65, 0xfe, 0x50, 0x83, 0x85, + 0x83, 0xf4, 0xd0, 0x73, 0xfb, 0xa8, 0x82, 0xc3, 0x5a, 0x80, 0xa7, 0x29, 0xe0, 0xc9, 0x10, 0xe8, + 0x93, 0x21, 0xa8, 0xa9, 0x10, 0xac, 0x40, 0x63, 0xc0, 0x7c, 0x87, 0x45, 0x02, 0x52, 0x41, 0x09, + 0x53, 0xeb, 0x99, 0xa9, 0xe6, 0x4f, 0x75, 0x98, 0xfb, 0x80, 0x4d, 0x58, 0x83, 0x56, 0x78, 0x1c, + 0xf8, 0x6c, 0x2f, 0xe5, 0x61, 0x25, 0x6c, 0x91, 0x59, 0xc6, 0x75, 0xa8, 0x1f, 0xba, 0x51, 0x72, + 0x8c, 0x7e, 0x6d, 0x5b, 0x44, 0x70, 0x2e, 0x1b, 0xda, 0x2e, 0x39, 0xb3, 0x69, 0x11, 0x21, 0x16, + 0x34, 0x97, 0x63, 0xaf, 0xee, 0xb1, 0x66, 0x65, 0x8f, 0x55, 0x63, 0x03, 0xc6, 0xc5, 0x86, 0xf9, + 0x2f, 0x0d, 0xe0, 0x4e, 0xe4, 0x32, 0xdf, 0x41, 0x68, 0x4a, 0x9b, 0x5b, 0xab, 0x6e, 0xee, 0x15, + 0x68, 0x44, 0x6c, 0x68, 0x47, 0x27, 0x59, 0xf0, 0x13, 0x55, 0x32, 0xa8, 0x56, 0x31, 0xe8, 0x55, + 0x80, 0x23, 0x9c, 0x87, 0xeb, 0x41, 0xa8, 0x5a, 0x2f, 0x7f, 0xec, 0x56, 0x25, 0x0d, 0xde, 0xca, + 0xbc, 0x64, 0x49, 0xc3, 0xf9, 0xce, 0xb2, 0x1d, 0x47, 0x04, 0x70, 0x9d, 0x76, 0x56, 0xce, 0x18, + 0x13, 0xbf, 0x8d, 0x73, 0xe2, 0x77, 0x36, 0x0f, 0x8a, 0x7f, 0x68, 0xd0, 0xdc, 0xf4, 0xec, 0xfe, + 0xc9, 0x94, 0x4b, 0x57, 0x97, 0xa8, 0x57, 0x96, 0x78, 0x17, 0xda, 0x87, 0x5c, 0x5d, 0xb6, 0x04, + 0x44, 0xa1, 0xf5, 0xf2, 0x27, 0xc6, 0xac, 0x52, 0xdd, 0x14, 0x96, 0x2a, 0xa7, 0x2e, 0x77, 0xe6, + 0xe2, 0xe5, 0xd6, 0xcf, 0x59, 0x6e, 0x23, 0x5f, 0xee, 0x5f, 0x74, 0x98, 0xc7, 0x44, 0x67, 0xb1, + 0x51, 0xca, 0xe2, 0xc4, 0xf8, 0x2a, 0xcc, 0xa5, 0x99, 0xa9, 0xda, 0xb4, 0xa6, 0xe6, 0x22, 0xc6, + 0x2b, 0x22, 0xad, 0xa2, 0xbc, 0x8e, 0xf2, 0x37, 0xc6, 0xc8, 0xe7, 0x35, 0xcd, 0x2a, 0x86, 0xf3, + 0x12, 0x74, 0x6c, 0xfb, 0x8e, 0xc7, 0x2c, 0x16, 0xa7, 0x5e, 0x22, 0xb2, 0xa5, 0xc2, 0xa3, 0x48, + 0x1b, 0x75, 0xe3, 0x81, 0x28, 0x50, 0x82, 0xe2, 0xe8, 0xd0, 0x38, 0xfe, 0x13, 0x2d, 0xbd, 0x60, + 0xf0, 0x8d, 0x1a, 0xb1, 0x11, 0x7a, 0x88, 0xb6, 0x55, 0x46, 0x16, 0x73, 0x0a, 0xd4, 0x28, 0x10, + 0x14, 0x1e, 0x77, 0x31, 0xd1, 0xa8, 0x80, 0x2a, 0x93, 0xc4, 0x29, 0x17, 0x26, 0xf3, 0x6f, 0x35, + 0x68, 0xd3, 0xf6, 0xc9, 0x40, 0xbd, 0xc9, 0xe3, 0x3c, 0x18, 0x2a, 0x51, 0x24, 0x71, 0xb8, 0x15, + 0x9c, 0xda, 0x53, 0x13, 0x8d, 0xc2, 0xe3, 0xa1, 0xc8, 0xe9, 0x3b, 0x4a, 0xc2, 0x91, 0x59, 0xd9, + 0x2c, 0x77, 0xe5, 0xc4, 0x23, 0x71, 0x78, 0x2a, 0x4b, 0x02, 0x25, 0x3a, 0x72, 0x9a, 0xcb, 0x26, + 0x41, 0x3e, 0x3f, 0xc5, 0x87, 0xc4, 0xe1, 0xf8, 0x26, 0x41, 0x36, 0x37, 0x81, 0x54, 0x30, 0x48, + 0xb3, 0x98, 0x97, 0x4a, 0x49, 0x4e, 0x57, 0xbc, 0xda, 0x3c, 0xd7, 0xab, 0xa0, 0x78, 0x55, 0xdd, + 0x5c, 0xad, 0xca, 0xe6, 0x5a, 0x87, 0x36, 0xe9, 0xc9, 0x82, 0x7e, 0x9e, 0x4a, 0xbd, 0xc2, 0x54, + 0x63, 0xa3, 0x5d, 0x8e, 0x0d, 0xd5, 0xbb, 0x0b, 0x13, 0xbc, 0xbb, 0x98, 0x7b, 0xf7, 0x37, 0x3a, + 0xc0, 0x36, 0x0b, 0xed, 0x28, 0x19, 0x32, 0x3f, 0xe1, 0xcb, 0x73, 0x72, 0x2a, 0x77, 0xae, 0xc2, + 0x93, 0xeb, 0x84, 0xae, 0xd6, 0x09, 0x03, 0x66, 0x10, 0x70, 0xf2, 0x26, 0xfe, 0xcd, 0xc1, 0x0c, + 0xed, 0x88, 0xb4, 0x51, 0x90, 0xe7, 0x34, 0xaf, 0x03, 0x41, 0xe4, 0x88, 0xca, 0x51, 0xb7, 0x88, + 0xe0, 0x9b, 0xbf, 0x98, 0x0f, 0x1b, 0x9a, 0x06, 0xe5, 0x75, 0x95, 0x7b, 0x61, 0x0f, 0xf6, 0x22, + 0x2c, 0xc5, 0xe9, 0x61, 0xb1, 0xb8, 0xbd, 0x74, 0x28, 0xc2, 0xbd, 0xc2, 0xe7, 0xa0, 0x52, 0x73, + 0xc6, 0x07, 0x51, 0xa9, 0x29, 0x18, 0xe5, 0xae, 0xc0, 0x7c, 0x47, 0x87, 0xa5, 0xfd, 0x68, 0x60, + 0xfb, 0xee, 0x77, 0xb0, 0xdd, 0xc4, 0x04, 0x7e, 0x99, 0x92, 0xbb, 0x06, 0x2d, 0xe6, 0x0f, 0x3c, + 0x37, 0x3e, 0xde, 0x2b, 0x70, 0x93, 0x59, 0x32, 0xd8, 0x33, 0x93, 0x8a, 0x72, 0x5d, 0x29, 0xca, + 0x2b, 0xd0, 0x18, 0x06, 0x87, 0xae, 0x97, 0xc5, 0xbd, 0xa0, 0x30, 0xe6, 0x99, 0xc7, 0xb0, 0x3a, + 0xe7, 0x31, 0x9f, 0x31, 0x8a, 0x42, 0x3d, 0x37, 0xb6, 0x50, 0x37, 0xe5, 0x42, 0xad, 0x02, 0x0f, + 0x15, 0xe0, 0x09, 0xae, 0x56, 0x0e, 0xd7, 0x9f, 0x34, 0x58, 0x2a, 0xe0, 0xa6, 0x1e, 0x74, 0x22, + 0x5c, 0x26, 0xcc, 0x6f, 0xcb, 0x11, 0x28, 0x92, 0x87, 0xcc, 0xe3, 0x66, 0xed, 0x63, 0xdc, 0x50, + 0x4e, 0x25, 0x82, 0x03, 0x7d, 0x10, 0xc4, 0xae, 0xd4, 0xef, 0xe7, 0x34, 0x9f, 0x6d, 0x97, 0xd9, + 0x12, 0x58, 0x44, 0x71, 0x7e, 0x8f, 0xba, 0x6e, 0x8a, 0x31, 0x41, 0xf1, 0x25, 0xec, 0xe4, 0x75, + 0x74, 0xe7, 0xb1, 0xf9, 0x7b, 0x0d, 0x96, 0xa8, 0x3e, 0x48, 0x9b, 0xe5, 0x75, 0x39, 0x50, 0xb1, + 0xe6, 0x53, 0x89, 0xf9, 0xe4, 0x98, 0x12, 0x51, 0x0e, 0x17, 0xab, 0x24, 0x6a, 0xbc, 0x09, 0xd7, + 0x9d, 0x12, 0x46, 0xbb, 0x6e, 0x9c, 0x74, 0xf4, 0xb5, 0xda, 0x04, 0x95, 0x65, 0x48, 0xad, 0xb1, + 0x0a, 0xcc, 0xef, 0x42, 0xe7, 0x20, 0xf5, 0xbc, 0x2e, 0x8b, 0x63, 0x7b, 0xc0, 0x36, 0xcf, 0x7a, + 0x6c, 0xc4, 0xf9, 0x16, 0x8b, 0x43, 0x1e, 0x5d, 0x2c, 0x8a, 0xb6, 0x02, 0x87, 0xa1, 0xe9, 0x75, + 0x2b, 0x23, 0x39, 0x30, 0x2c, 0x8a, 0x78, 0x8a, 0x11, 0x3d, 0x10, 0x51, 0xc6, 0x2d, 0x98, 0xf1, + 0xb8, 0x59, 0x35, 0x34, 0x6b, 0x75, 0x8c, 0x59, 0xdd, 0x78, 0xb0, 0x6d, 0x27, 0xb6, 0x85, 0xe3, + 0xcc, 0x21, 0x7c, 0x64, 0xfc, 0xec, 0xa3, 0x89, 0x11, 0xc0, 0xbb, 0x14, 0x2c, 0xf3, 0x6e, 0xe0, + 0xe7, 0x01, 0x20, 0xb3, 0xb8, 0xd9, 0x31, 0xe9, 0x41, 0x3b, 0xda, 0x56, 0x46, 0x9a, 0xd7, 0xc1, + 0xb8, 0xcb, 0x92, 0xae, 0xfd, 0x78, 0xc3, 0x77, 0xba, 0xae, 0xdf, 0x63, 0x23, 0x8b, 0x8d, 0xcc, + 0x1d, 0xb8, 0x56, 0xe1, 0xc6, 0x21, 0xee, 0x14, 0xfb, 0x71, 0x8f, 0x8d, 0xd0, 0x80, 0xb6, 0x25, + 0x28, 0xe4, 0xe3, 0x28, 0xd1, 0x00, 0x09, 0xca, 0x1c, 0xc1, 0x22, 0x77, 0x55, 0x8f, 0xf9, 0x4e, + 0x37, 0x1e, 0xa0, 0x8a, 0x35, 0x68, 0x11, 0x02, 0xdd, 0x78, 0x50, 0x74, 0x54, 0x12, 0x8b, 0x8f, + 0xe8, 0x7b, 0x2e, 0x77, 0x09, 0x8e, 0x10, 0xab, 0x91, 0x58, 0x3c, 0x6e, 0x63, 0x26, 0x0e, 0x18, + 0x3c, 0xa0, 0x6b, 0x56, 0x4e, 0x9b, 0x7f, 0xa8, 0xc3, 0xac, 0x00, 0x14, 0x4f, 0x88, 0xbc, 0x89, + 0xcd, 0xf1, 0x22, 0x8a, 0xca, 0x4d, 0xff, 0xb4, 0x38, 0xab, 0x11, 0x25, 0x9f, 0xee, 0x6a, 0xea, + 0xe9, 0xae, 0x64, 0xd3, 0x4c, 0xd5, 0xa6, 0xd2, 0xba, 0xea, 0xd5, 0x75, 0xf1, 0xec, 0x8a, 0x09, + 0xe7, 0xc0, 0xb3, 0x93, 0xa3, 0x20, 0x1a, 0x8a, 0x9e, 0xb4, 0x6e, 0x55, 0xf8, 0x3c, 0xa3, 0x13, + 0x2f, 0x2f, 0xc9, 0xb4, 0xb3, 0x4a, 0x5c, 0x5e, 0x00, 0x89, 0x93, 0x95, 0x66, 0x3a, 0x0c, 0xa8, + 0x4c, 0xb2, 0x2d, 0x8e, 0xdd, 0xc0, 0xc7, 0xe2, 0x40, 0x15, 0x58, 0x66, 0xf1, 0x95, 0x0f, 0xe3, + 0xc1, 0x9d, 0x28, 0x18, 0x8a, 0x23, 0x41, 0x46, 0xe2, 0xca, 0x03, 0x3f, 0xc9, 0x0a, 0x4b, 0x8b, + 0x64, 0x25, 0x16, 0x97, 0x15, 0x24, 0x96, 0xdf, 0x79, 0x2b, 0x23, 0x8d, 0x25, 0xa8, 0xc5, 0x6c, + 0x24, 0x6a, 0x2a, 0xff, 0x53, 0xf1, 0xdc, 0xa2, 0xea, 0xb9, 0x52, 0x92, 0x5c, 0xc2, 0x5f, 0xe5, + 0x24, 0x59, 0x9c, 0xf7, 0x97, 0x95, 0xf3, 0xfe, 0x06, 0xcc, 0x06, 0x21, 0x8f, 0xf3, 0xb8, 0x63, + 0xe0, 0x1e, 0xfb, 0xd4, 0xe4, 0x3d, 0x76, 0x6b, 0x9f, 0x46, 0xee, 0xf8, 0x49, 0x74, 0x66, 0x65, + 0x72, 0xc6, 0x2e, 0x2c, 0x06, 0x47, 0x47, 0x9e, 0xeb, 0xb3, 0x83, 0x34, 0x3e, 0xc6, 0xde, 0xf5, + 0x1a, 0x26, 0x26, 0x73, 0x5c, 0x62, 0x52, 0x47, 0x5a, 0x65, 0xd1, 0xd5, 0x57, 0x60, 0x5e, 0x9e, + 0x86, 0xc3, 0x70, 0xc2, 0xce, 0x44, 0x0c, 0xf2, 0x3f, 0x79, 0x3a, 0x3e, 0xb5, 0xbd, 0x94, 0xca, + 0xdb, 0x9c, 0x45, 0xc4, 0x2b, 0xfa, 0x97, 0x34, 0xf3, 0x27, 0x1a, 0x2c, 0x96, 0x26, 0xe0, 0xa3, + 0x13, 0x37, 0xf1, 0x98, 0xd0, 0x40, 0x04, 0x6f, 0x1d, 0x1c, 0x16, 0xf7, 0x45, 0x08, 0xe3, 0xdf, + 0xa2, 0x8e, 0xd4, 0xf2, 0x03, 0xa1, 0x09, 0xf3, 0xee, 0x7e, 0x8f, 0x2b, 0xea, 0x05, 0xa9, 0xef, + 0xe4, 0x97, 0x3a, 0x12, 0x8f, 0x87, 0x90, 0xbb, 0xdf, 0xdb, 0xb4, 0x9d, 0x01, 0xa3, 0xab, 0x97, + 0x3a, 0xda, 0xa4, 0x32, 0x4d, 0x07, 0xe6, 0x1e, 0xb8, 0x61, 0xbc, 0x15, 0x0c, 0x87, 0xdc, 0x11, + 0x0e, 0x4b, 0x78, 0x91, 0xd3, 0xd0, 0xdf, 0x82, 0xe2, 0xa1, 0xe2, 0xb0, 0x23, 0x3b, 0xf5, 0x12, + 0x3e, 0x34, 0xdb, 0xb8, 0x12, 0x0b, 0x2f, 0x1d, 0xe2, 0xc0, 0xdf, 0x26, 0x69, 0xb2, 0x53, 0xe2, + 0x98, 0x7f, 0xd6, 0x61, 0x09, 0x8f, 0x06, 0x5b, 0xe8, 0x76, 0x07, 0x85, 0x5e, 0x86, 0x3a, 0x6e, + 0x43, 0x51, 0x2b, 0xce, 0x3f, 0x4e, 0xd0, 0x50, 0xe3, 0x36, 0x34, 0x82, 0x10, 0x0b, 0x0c, 0x9d, + 0x41, 0x9e, 0x9f, 0x24, 0xa4, 0xde, 0xef, 0x58, 0x42, 0xca, 0xb8, 0x03, 0x30, 0x2c, 0x2a, 0x0a, + 0xa5, 0xee, 0x69, 0x75, 0x48, 0x92, 0x1c, 0xdc, 0x3c, 0x0d, 0xe7, 0x97, 0x3c, 0x35, 0x4b, 0x65, + 0x1a, 0x7b, 0xb0, 0x80, 0x66, 0xef, 0x67, 0xe7, 0x4a, 0xf4, 0xc1, 0xf4, 0x33, 0x96, 0xa4, 0xcd, + 0x5f, 0x68, 0x02, 0x46, 0xfe, 0x6b, 0x8f, 0x11, 0xf6, 0x05, 0x24, 0xda, 0xa5, 0x20, 0x59, 0x85, + 0xb9, 0x61, 0x2a, 0x1d, 0x73, 0x6b, 0x56, 0x4e, 0x17, 0x2e, 0xaa, 0x4d, 0xed, 0x22, 0xf3, 0x97, + 0x1a, 0x74, 0x5e, 0x0b, 0x5c, 0x1f, 0x7f, 0xd8, 0x08, 0x43, 0x4f, 0xdc, 0x44, 0x5e, 0xda, 0xe7, + 0x5f, 0x83, 0xa6, 0x4d, 0x6a, 0xfc, 0x44, 0xb8, 0x7d, 0x8a, 0xa3, 0x6b, 0x21, 0x23, 0x9d, 0x42, + 0x6a, 0xf2, 0x29, 0xc4, 0x7c, 0x57, 0x83, 0x05, 0x02, 0xe5, 0x8d, 0xd4, 0x4d, 0x2e, 0x6d, 0xdf, + 0x26, 0xcc, 0x8d, 0x52, 0x37, 0xb9, 0x44, 0x54, 0xe6, 0x72, 0xd5, 0x78, 0xaa, 0x8d, 0x89, 0x27, + 0xf3, 0x3d, 0x0d, 0x6e, 0x94, 0x61, 0xdd, 0xe8, 0xf7, 0x59, 0xf8, 0x24, 0xb7, 0x94, 0x72, 0x0a, + 0x9b, 0x29, 0x9d, 0xc2, 0xc6, 0x9a, 0x6c, 0xb1, 0xb7, 0x59, 0xff, 0xe9, 0x35, 0xf9, 0x07, 0x3a, + 0x7c, 0xf4, 0x6e, 0xbe, 0xf1, 0x1e, 0x44, 0xb6, 0x1f, 0x1f, 0xb1, 0x28, 0x7a, 0x82, 0xf6, 0xee, + 0x42, 0xdb, 0x67, 0x8f, 0x0a, 0x9b, 0xc4, 0x76, 0x9c, 0x56, 0x8d, 0x2a, 0x3c, 0x5d, 0xee, 0x32, + 0xff, 0xad, 0xc1, 0x12, 0xe9, 0x79, 0xdd, 0xed, 0x9f, 0x3c, 0xc1, 0xc5, 0xef, 0xc1, 0xc2, 0x09, + 0x5a, 0xc0, 0xa9, 0x4b, 0xa4, 0xed, 0x92, 0xf4, 0x94, 0xcb, 0xff, 0x8f, 0x06, 0xcb, 0xa4, 0xe8, + 0xbe, 0x7f, 0xea, 0x3e, 0xc9, 0x60, 0x3d, 0x80, 0x45, 0x97, 0x4c, 0xb8, 0x24, 0x00, 0x65, 0xf1, + 0x29, 0x11, 0xf8, 0x9d, 0x06, 0x8b, 0xa4, 0x69, 0xc7, 0x4f, 0x58, 0x74, 0xe9, 0xf5, 0xdf, 0xe3, + 0x27, 0xfb, 0x24, 0xb2, 0xfd, 0xcb, 0x64, 0x48, 0x59, 0x74, 0xca, 0x24, 0xf9, 0xae, 0x06, 0x06, + 0xaa, 0xda, 0x76, 0xe3, 0xa1, 0x1b, 0xc7, 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x33, 0x1d, 0xae, + 0x4b, 0x5a, 0xba, 0x69, 0xf2, 0xb4, 0x9b, 0x6c, 0x6c, 0x43, 0x93, 0xf7, 0x08, 0xf2, 0xf5, 0xfe, + 0xb4, 0x13, 0x15, 0x82, 0xbc, 0x8b, 0x45, 0xa2, 0xc7, 0xfa, 0x81, 0xef, 0xc4, 0xd8, 0x1c, 0xb5, + 0x2d, 0x85, 0xc7, 0xd3, 0xd0, 0xaa, 0xa4, 0x66, 0xcb, 0xf6, 0xfb, 0xcc, 0x7b, 0x66, 0x20, 0x32, + 0x7f, 0xad, 0xc1, 0x02, 0x0d, 0x79, 0xfa, 0x97, 0xcc, 0x6b, 0x3d, 0x05, 0xf2, 0x87, 0xc6, 0x4b, + 0xe6, 0x09, 0x2c, 0xd3, 0x8d, 0xbe, 0xd4, 0x9e, 0xf0, 0x83, 0xaf, 0xed, 0xd0, 0x59, 0x56, 0x43, + 0xa1, 0x8c, 0x54, 0xdf, 0x6a, 0xc4, 0x73, 0x7c, 0xf1, 0x56, 0x73, 0x13, 0xc0, 0x76, 0x9c, 0x37, + 0x83, 0xc8, 0x71, 0xfd, 0xac, 0xd7, 0x94, 0x38, 0xe6, 0x6b, 0x30, 0xcf, 0x8f, 0xde, 0x0f, 0xa4, + 0xbb, 0xf9, 0x73, 0x5f, 0x0f, 0xe4, 0x7b, 0x7d, 0x5d, 0xbd, 0xd7, 0x37, 0xbf, 0x0d, 0xff, 0x5f, + 0x31, 0x1c, 0xb1, 0xde, 0xa2, 0x27, 0x87, 0x6c, 0x12, 0x01, 0xf9, 0xc7, 0xc7, 0xa0, 0x27, 0xdb, + 0x62, 0x29, 0x42, 0xe6, 0xf7, 0x35, 0x78, 0xae, 0xa2, 0x7e, 0x23, 0x0c, 0xa3, 0xe0, 0x54, 0xb8, + 0xf4, 0x2a, 0xa6, 0x51, 0xfb, 0x30, 0xbd, 0xdc, 0x87, 0x8d, 0x35, 0x42, 0xe9, 0x1d, 0x3f, 0x00, + 0x23, 0x7e, 0xa5, 0xc1, 0xa2, 0x30, 0xc2, 0x71, 0xc4, 0xb4, 0x5f, 0x84, 0x06, 0x3d, 0x57, 0x8a, + 0x09, 0x9f, 0x1b, 0x3b, 0x61, 0xf6, 0xcc, 0x6a, 0x89, 0xc1, 0xd5, 0x88, 0xd4, 0xc7, 0xe5, 0x8d, + 0x2f, 0xe7, 0x71, 0x3f, 0xf5, 0x83, 0xa2, 0x10, 0x30, 0xbf, 0x91, 0x05, 0xf3, 0x36, 0xf3, 0xd8, + 0x55, 0x62, 0x64, 0x3e, 0x84, 0x05, 0x7c, 0x3b, 0x2d, 0x30, 0xb8, 0x12, 0xb5, 0x6f, 0xc2, 0x12, + 0xaa, 0xbd, 0x72, 0x7b, 0xf3, 0xdd, 0xc1, 0xf1, 0xd9, 0x3a, 0xb6, 0xfd, 0xc1, 0x55, 0x6a, 0xff, + 0x1c, 0x5c, 0xcb, 0xb0, 0x7f, 0x18, 0x3a, 0xf9, 0x7d, 0xc6, 0x84, 0x5b, 0x5c, 0xf3, 0xf3, 0xb0, + 0xb2, 0x15, 0xf8, 0xa7, 0x2c, 0x8a, 0xe9, 0xce, 0x1b, 0x45, 0x32, 0x09, 0x65, 0xf3, 0x0b, 0xca, + 0x7c, 0x1b, 0x56, 0x65, 0x89, 0x1e, 0x4b, 0x0e, 0x22, 0xf7, 0x54, 0x92, 0x12, 0xb7, 0x9c, 0x9a, + 0x72, 0xcb, 0x59, 0xdc, 0x8a, 0xea, 0xca, 0xad, 0xe8, 0x0d, 0x68, 0xba, 0xb1, 0x50, 0x80, 0x41, + 0x35, 0x67, 0x15, 0x0c, 0xb3, 0x07, 0xcb, 0xe2, 0x35, 0xf3, 0xc0, 0x1e, 0xb8, 0x3e, 0x65, 0xc0, + 0x9b, 0x00, 0xa1, 0x3d, 0xc8, 0xbe, 0x66, 0xa0, 0x0b, 0x71, 0x89, 0xc3, 0x7f, 0x8f, 0x8f, 0x83, + 0x47, 0xe2, 0x77, 0x9d, 0x7e, 0x2f, 0x38, 0xe6, 0xd7, 0xc1, 0xb0, 0x58, 0x1c, 0x06, 0x7e, 0xcc, + 0x24, 0xad, 0x6b, 0xd0, 0xda, 0x4a, 0xa3, 0x88, 0xf9, 0x7c, 0xaa, 0xec, 0x69, 0x5f, 0x66, 0x71, + 0xbd, 0xbd, 0x42, 0x2f, 0x5d, 0xa2, 0x4a, 0x1c, 0xf3, 0xe7, 0x35, 0x68, 0xf6, 0xdc, 0x81, 0x6f, + 0x7b, 0x16, 0x1b, 0x19, 0x5f, 0x81, 0x06, 0xb5, 0xb6, 0xc2, 0x8d, 0xe3, 0x2e, 0xf5, 0x68, 0x34, + 0xf5, 0xf0, 0x16, 0x1b, 0xdd, 0xfb, 0x3f, 0x4b, 0xc8, 0x18, 0x6f, 0x40, 0x9b, 0xfe, 0xba, 0x4f, + 0x57, 0x15, 0xa2, 0xce, 0x7c, 0xfa, 0x02, 0x25, 0x62, 0x34, 0xe9, 0x52, 0x35, 0x70, 0x83, 0xfa, + 0x58, 0xfa, 0xc4, 0xde, 0x9d, 0x6c, 0x10, 0x55, 0x48, 0x61, 0x10, 0xc9, 0x70, 0x69, 0x1b, 0x0f, + 0xf3, 0xa2, 0x5d, 0x98, 0x2c, 0x4d, 0x67, 0x7e, 0x21, 0x4d, 0x32, 0x5c, 0xfa, 0x38, 0xf5, 0x07, + 0x0f, 0x43, 0x71, 0xc7, 0x34, 0x59, 0xfa, 0x1e, 0x0e, 0x13, 0xd2, 0x24, 0xc3, 0xa5, 0x23, 0xcc, + 0xac, 0x08, 0xfa, 0x79, 0xd2, 0x94, 0x80, 0x85, 0x34, 0xc9, 0x6c, 0x36, 0x61, 0x36, 0xb4, 0xcf, + 0xbc, 0xc0, 0x76, 0xcc, 0x77, 0x6a, 0x00, 0xd9, 0xc0, 0x18, 0xab, 0xb8, 0xe2, 0xa2, 0xf5, 0x0b, + 0x5d, 0x14, 0x7a, 0x67, 0x92, 0x93, 0x7a, 0xe3, 0x9d, 0xf4, 0x99, 0x69, 0x9d, 0x44, 0xda, 0x4a, + 0x6e, 0xba, 0x5d, 0x72, 0xd3, 0xfa, 0x85, 0x6e, 0x12, 0x46, 0x09, 0x47, 0xdd, 0x2e, 0x39, 0x6a, + 0xfd, 0x42, 0x47, 0x09, 0x79, 0xe1, 0xaa, 0xdb, 0x25, 0x57, 0xad, 0x5f, 0xe8, 0x2a, 0x21, 0x2f, + 0x9c, 0x75, 0xbb, 0xe4, 0xac, 0xf5, 0x0b, 0x9d, 0x25, 0xe4, 0xab, 0xee, 0x7a, 0x4f, 0x87, 0x05, + 0x84, 0x8c, 0x1e, 0x94, 0xfc, 0xa3, 0x00, 0xef, 0x8d, 0x11, 0x2e, 0xf5, 0xe3, 0x18, 0x95, 0x69, + 0x7c, 0x16, 0x96, 0x89, 0x21, 0x3e, 0xa6, 0xc8, 0x5f, 0xe8, 0x9a, 0x56, 0xf5, 0x07, 0x7c, 0x02, + 0x48, 0xe3, 0x24, 0x18, 0x6e, 0xdb, 0x89, 0x9d, 0x75, 0x46, 0x05, 0x47, 0x7e, 0xa0, 0x99, 0xa9, + 0x7c, 0x7e, 0x17, 0x05, 0xc1, 0x30, 0x7f, 0x79, 0x11, 0x14, 0x97, 0x48, 0xdc, 0x21, 0x0b, 0xd2, + 0x44, 0xa4, 0x89, 0x8c, 0xa4, 0x07, 0x6c, 0xc7, 0xb5, 0xf1, 0x59, 0x43, 0xbc, 0xee, 0xe6, 0x0c, + 0xcc, 0x6c, 0xc5, 0x33, 0x8d, 0xf8, 0x3c, 0xae, 0xe0, 0x5c, 0xfc, 0xa4, 0x62, 0xfe, 0x5d, 0x83, + 0x6b, 0x07, 0x76, 0x94, 0xb8, 0x7d, 0x37, 0xb4, 0xfd, 0xa4, 0xcb, 0x12, 0x1b, 0xd7, 0xa0, 0x7c, + 0x21, 0xa3, 0xbd, 0xbf, 0x2f, 0x64, 0x0e, 0x60, 0x71, 0x50, 0xf4, 0xb2, 0xd2, 0x37, 0x36, 0x53, + 0x9f, 0xf1, 0x4b, 0xe2, 0xca, 0xe7, 0x3e, 0xb5, 0xf7, 0xfd, 0xb9, 0x8f, 0xf9, 0x23, 0x1d, 0x16, + 0x4b, 0xa9, 0x93, 0xb7, 0xa3, 0xd4, 0x68, 0xe4, 0x31, 0x91, 0xd3, 0xc6, 0x06, 0x80, 0x9b, 0x87, + 0xd1, 0x39, 0x97, 0xb4, 0x6a, 0xac, 0x59, 0x92, 0xd0, 0xb8, 0xb7, 0x9a, 0xda, 0xa5, 0xdf, 0x6a, + 0x8c, 0x7b, 0xd0, 0x0a, 0x0b, 0x27, 0x9d, 0x73, 0x00, 0x1b, 0xe3, 0x4a, 0x4b, 0x16, 0x35, 0xbf, + 0x05, 0xcb, 0x95, 0x0c, 0x85, 0x4f, 0x37, 0xc1, 0x09, 0xf3, 0xf3, 0xa7, 0x1b, 0x4e, 0x48, 0xc1, + 0xaa, 0x97, 0x83, 0xd5, 0x73, 0x4f, 0xe5, 0xef, 0x09, 0x05, 0x69, 0xfe, 0x58, 0x87, 0x95, 0xf1, + 0xd5, 0xe5, 0x59, 0x85, 0xfb, 0x10, 0x3a, 0x93, 0x32, 0xf9, 0x95, 0xa1, 0x5e, 0x44, 0x77, 0x5e, + 0x87, 0x9f, 0x55, 0xb8, 0xaf, 0x65, 0xd1, 0x2d, 0x95, 0x3a, 0xf3, 0xb7, 0x39, 0x3e, 0x79, 0xa7, + 0xf1, 0x8c, 0xe2, 0x63, 0xbc, 0x08, 0x4b, 0xb4, 0x4c, 0xe9, 0x71, 0x9f, 0x1a, 0xd7, 0x0a, 0xbf, + 0xc8, 0x14, 0x52, 0xd9, 0xbf, 0xb2, 0x98, 0xfd, 0xa3, 0x96, 0xf9, 0x24, 0xef, 0xdf, 0x3e, 0x54, + 0x3e, 0x29, 0x22, 0x4d, 0x6a, 0x6a, 0xa4, 0x48, 0xcb, 0xfb, 0xca, 0xff, 0x45, 0xda, 0xc5, 0x91, + 0x96, 0x63, 0x29, 0x35, 0x78, 0xe6, 0xf7, 0xa0, 0xbd, 0xcd, 0xbc, 0x6e, 0x3c, 0xc8, 0x3e, 0x2b, + 0x3a, 0x0f, 0xc8, 0x49, 0xff, 0xd6, 0x30, 0xf1, 0x83, 0xa2, 0xf2, 0xc7, 0x48, 0x33, 0x95, 0x8f, + 0x91, 0xcc, 0x4d, 0x58, 0x90, 0x0d, 0xb8, 0xcc, 0x57, 0x55, 0x9b, 0x37, 0xbe, 0xb9, 0x7a, 0xeb, + 0x25, 0xfa, 0x07, 0x9a, 0x57, 0x2b, 0x20, 0x1e, 0x36, 0xf0, 0x1f, 0x6a, 0xbe, 0xf0, 0xdf, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x3b, 0x39, 0xf9, 0x52, 0x63, 0x33, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 12ff7b15d..9f8c51917 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -105,8 +105,66 @@ 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 UserInDepartment { + OrganizationUser departmentUser = 1; + repeated DepartmentMember departmentMemberList = 2; +} + + + + + +///////////////////////////////////organization end////////////////////////////////// + + + + + + +///////////////////////////////////base end///////////////////////////////////// message PullMessageBySeqListResp { int32 errCode = 1; From f5684f2c455cea09c2a7feca8bb7d00fa5efe156 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 13 Apr 2022 08:58:16 +0800 Subject: [PATCH 008/128] add department db --- cmd/Open-IM-SDK-Core | 2 +- pkg/common/db/mysql.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 7030e5dba..a4b710de8 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 7030e5dba7c9ec4c0afca7d8c1dabf26f0ca90d0 +Subproject commit a4b710de8df31fe570fd90895887edef30f3a64c diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index 92ad6d309..7560af652 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -110,9 +110,9 @@ func initMysqlDB() { 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{}) { fmt.Println("CreateTable DepartmentMember") From 659c3bc1cf611e2b708818cf5938e273936d346b Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 13 Apr 2022 08:58:52 +0800 Subject: [PATCH 009/128] add department db --- pkg/common/db/mysql.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index 7560af652..982ad378f 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{}) { - fmt.Println("CreateTable Department") - db.CreateTable(&Department{}) - } - if db.HasTable(&OrganizationUser{}) { - fmt.Println("CreateTable OrganizationUser") - db.CreateTable(&OrganizationUser{}) - } - if db.HasTable(&DepartmentMember{}) { - fmt.Println("CreateTable DepartmentMember") - db.CreateTable(&DepartmentMember{}) - } + /* + if db.HasTable(&Department{}) { + fmt.Println("CreateTable Department") + db.CreateTable(&Department{}) + } + if db.HasTable(&OrganizationUser{}) { + fmt.Println("CreateTable OrganizationUser") + db.CreateTable(&OrganizationUser{}) + } + if db.HasTable(&DepartmentMember{}) { + fmt.Println("CreateTable DepartmentMember") + db.CreateTable(&DepartmentMember{}) + } + */ return } From 42dc5c1f0f28e8c6a1b8efbb48c8567377081e16 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 13 Apr 2022 15:21:53 +0800 Subject: [PATCH 010/128] getui --- internal/push/getui/push.go | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index 18197558a..e6db6c273 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -61,14 +61,34 @@ type PushReq 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 { @@ -102,6 +122,16 @@ func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operat 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 { From d670356388aa51a42e05f48f8365d778744530ef Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 13 Apr 2022 15:29:35 +0800 Subject: [PATCH 011/128] getui --- pkg/common/token_verify/jwt_token.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 69b112bf7..496d6cc13 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 From 6449c4a53d9b60b1aa55c494e669dcc8fa03f352 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 13 Apr 2022 16:20:30 +0800 Subject: [PATCH 012/128] push update --- internal/push/getui/push.go | 2 +- internal/push/jpush/push.go | 6 +- .../push/jpush/requestBody/notification.go | 19 ++- internal/push/logic/init.go | 12 +- internal/push/logic/push_to_client.go | 109 +++++++++--------- internal/push/push_interface.go | 2 +- 6 files changed, 69 insertions(+), 81 deletions(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index e6db6c273..f46b0d0ee 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -98,7 +98,7 @@ 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 { 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/init.go b/internal/push/logic/init.go index d2d127091..79eb460dc 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -8,25 +8,23 @@ package logic import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" "Open_IM/pkg/statistics" "fmt" ) var ( - rpcServer RPCServer - pushCh PushConsumerHandler - pushTerminal []int32 - producer *kafka.Producer - count uint64 + rpcServer RPCServer + pushCh PushConsumerHandler + producer *kafka.Producer + count uint64 ) func Init(rpcPort int) { rpcServer.Init(rpcPort) pushCh.Init() - pushTerminal = []int32{constant.IOSPlatformID, constant.AndroidPlatformID} + } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index c6e512ccb..5a5317b81 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -59,68 +59,63 @@ 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 + //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 { - 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] - } + content = constant.ContentType2PushContent[constant.GroupMsg] } - 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)) - } - + 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, 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) + } + } } 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) } From 16c40aa51c096aa1709020d51cd08ae9b28d67bb Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 13 Apr 2022 16:25:33 +0800 Subject: [PATCH 013/128] getui --- internal/push/getui/push.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index f46b0d0ee..b91b51fc2 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -136,9 +136,11 @@ func (g *Getui) Push(userIDList []string, alert, detailContent, operationID stri err = g.request(PushURL, pushReq, token, &pushResp, operationID) switch err { case TokenExpireError: - _, err = g.getTokenAndSave2Redis(operationID) + 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 { From 4f8fcd2d3dbdd7f75a8f17d3dc2e88a8e32ce8fd Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 13 Apr 2022 18:33:22 +0800 Subject: [PATCH 014/128] push update --- internal/push/logic/init.go | 12 +-- internal/push/logic/push_to_client.go | 110 +++++++++++++------------- pkg/utils/strings.go | 8 ++ 3 files changed, 71 insertions(+), 59 deletions(-) diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index 79eb460dc..d2d127091 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -8,23 +8,25 @@ package logic import ( "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" "Open_IM/pkg/statistics" "fmt" ) var ( - rpcServer RPCServer - pushCh PushConsumerHandler - producer *kafka.Producer - count uint64 + rpcServer RPCServer + pushCh PushConsumerHandler + pushTerminal []int32 + producer *kafka.Producer + count uint64 ) func Init(rpcPort int) { rpcServer.Init(rpcPort) pushCh.Init() - + pushTerminal = []int32{constant.IOSPlatformID, constant.AndroidPlatformID} } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 5a5317b81..0784676d0 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -59,61 +59,63 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { if v.ResultCode == 0 { continue } - //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] + 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] + } + } + 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) } - } - 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) } } diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go index 38262a95c..49d883f7c 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 { From 426ef5cb8829c5fba3ead57bd295c7dc774b2898 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 13 Apr 2022 18:34:36 +0800 Subject: [PATCH 015/128] push update --- internal/push/logic/push_to_client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 0784676d0..607d36db0 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -116,6 +116,7 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { } else { log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData) } + break } } From 4a7cfab5436782752127fe460d46843162620e30 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 11:56:36 +0800 Subject: [PATCH 016/128] getui --- config/config.yaml | 2 +- pkg/common/db/model.go | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index c78611634..f0e25250c 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -167,7 +167,7 @@ longconnsvr: websocketMaxMsgLen: 4096 websocketTimeOut: 10 -## 推送只能开启一个 +## 推送只能开启一个 enable=true代表开启 push: tpns: #腾讯推送,暂未测试 暂不要使用 ios: diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index f9550e7b3..08b6412d7 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -46,11 +46,14 @@ 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 { + 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) + } 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) From 1bb634bc6f7055759554911978a5b5b2fbec99a4 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 12:03:23 +0800 Subject: [PATCH 017/128] merge code --- cmd/open_im_api/main.go | 10 + internal/api/office/work_moments.go | 371 ++++++ internal/rpc/office/office.go | 64 + pkg/base_info/work_moments_struct.go | 97 ++ pkg/common/db/mongoModel.go | 8 + pkg/proto/office/office.pb.go | 1682 ++++++++++++++++++++++++-- pkg/proto/office/office.proto | 144 +++ 7 files changed, 2304 insertions(+), 72 deletions(-) create mode 100644 internal/api/office/work_moments.go create mode 100644 pkg/base_info/work_moments_struct.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 6bbb43dbc..18e31d9e3 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -135,6 +135,16 @@ 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_user_work_moments", office.GetUserWorkMoments) + officeGroup.POST("/get_user_friend_work_moments", office.GetUserFriendWorkMoments) + officeGroup.POST("/get_user_work_moments_comments_msg", office.GetUserWorkMomentsCommentsMsg) + officeGroup.POST("/clear_user_work_moments_comments_msg", office.ClearUserWorkMomentsCommentsMsg) + officeGroup.POST("/set_user_work_moments_level", office.SetUserWorkMomentsLevel) } go apiThird.MinioInit() ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go new file mode 100644 index 000000000..085b10eb4 --- /dev/null +++ b/internal/api/office/work_moments.go @@ -0,0 +1,371 @@ +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.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 + } + 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 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 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()) + } + resp.Data.WorkMoments = respPb.WorkMoments + 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()) + } + resp.Data.WorkMoments = respPb.WorkMoments + 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 GetUserWorkMomentsCommentsMsg(c *gin.Context) { + var ( + req apiStruct.GetUserWorkMomentsCommentsMsgReq + resp apiStruct.GetUserWorkMomentsCommentsMsgResp + reqPb pbOffice.GetUserWorkMomentsCommentsMsgReq + respPb *pbOffice.GetUserWorkMomentsCommentsMsgResp + ) + 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.GetUserWorkMomentsCommentsMsg(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMomentsCommentsMsg 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.CurrentPage = respPb.Pagination.CurrentPage + resp.Data.ShowNumber = respPb.Pagination.ShowNumber + resp.Data.CommentsMsg = respPb.CommentsMsg + 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) +} + +func ClearUserWorkMomentsCommentsMsg(c *gin.Context) { + var ( + req apiStruct.ClearUserWorkMomentsCommentsMsgReq + resp apiStruct.ClearUserWorkMomentsCommentsMsgResp + reqPb pbOffice.ClearUserWorkMomentsCommentsMsgReq + respPb *pbOffice.ClearUserWorkMomentsCommentsMsgResp + ) + 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.UserID = userID + reqPb.OperationID = req.OperationID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.ClearUserWorkMomentsCommentsMsg(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "ClearUserWorkMomentsCommentsMsg rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "ClearUserWorkMomentsCommentsMsg 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/rpc/office/office.go b/internal/rpc/office/office.go index 43e757497..16e5e8fa5 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -266,3 +266,67 @@ 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{} + err = db.DB.CreateOneWorkMoment() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName()) + 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) DeleteOneWorkMoment(_ context.Context, req *pbOffice.DeleteOneWorkMomentReq) (resp *pbOffice.DeleteOneWorkMomentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + + resp = &pbOffice.DeleteOneWorkMomentResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOneWorkMomentReq) (resp *pbOffice.LikeOneWorkMomentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + 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()) + 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()) + 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()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + 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()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) ClearUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.ClearUserWorkMomentsCommentsMsgReq) (resp *pbOffice.ClearUserWorkMomentsCommentsMsgResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} \ No newline at end of file diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go new file mode 100644 index 000000000..8c37b1534 --- /dev/null +++ b/pkg/base_info/work_moments_struct.go @@ -0,0 +1,97 @@ +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"` + UserID string `json:"UserID" binding:"required"` +} + +type GetUserWorkMomentsReq struct { + WorkMomentsUserCommonReq +} + +type GetUserWorkMomentsResp struct { + CommResp + Data struct { + WorkMoments []*office.WorkMoment `json:"workMoments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` + } `json:"data"` +} + +type GetUserFriendWorkMomentsReq struct { + WorkMomentsUserCommonReq +} + +type GetUserFriendWorkMomentsResp struct { + CommResp + Data struct { + WorkMoments []*office.WorkMoment `json:"workMoments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` + } `json:"data"` +} + +type GetUserWorkMomentsCommentsMsgReq struct { + WorkMomentsUserCommonReq +} + +type GetUserWorkMomentsCommentsMsgResp struct { + CommResp + Data struct { + CommentsMsg []*office.CommentsMsg `json:"comments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` + } `json:"data"` +} + +type SetUserWorkMomentsLevelReq struct { + office.SetUserWorkMomentsLevelReq +} + +type SetUserWorkMomentsLevelResp struct { + CommResp +} + +type ClearUserWorkMomentsCommentsMsgReq struct { + office.ClearUserWorkMomentsCommentsMsgReq +} + +type ClearUserWorkMomentsCommentsMsgResp struct { + CommResp +} \ No newline at end of file diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 59ec1a0f2..229332475 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -563,6 +563,14 @@ func (d *DataBases) GetTagSendLogs(userID string, showNumber, pageNumber int32) return tagSendLogs, nil } +type WorkMoment struct { + +} + +func (d *DataBases) CreateOneWorkMoment(workMoment WorkMoment) error { + +} + func generateTagID(tagName, userID string) string { return utils.Md5(tagName + userID + strconv.Itoa(rand.Int()) + time.Now().String()) } diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index bbff9427e..41389a523 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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []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_cc8e5928e4910f0f, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -956,6 +956,1178 @@ 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_cc8e5928e4910f0f, []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 Comment struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` + ReplyUserName string `protobuf:"bytes,4,opt,name=replyUserName" json:"replyUserName,omitempty"` + ContentID string `protobuf:"bytes,5,opt,name=contentID" json:"contentID,omitempty"` + Content string `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"` + CreateTime string `protobuf:"bytes,7,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_cc8e5928e4910f0f, []int{19} +} +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) 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() string { + if m != nil { + return m.CreateTime + } + 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"` + Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` + LikeUsers []*LikeUser `protobuf:"bytes,4,rep,name=likeUsers" json:"likeUsers,omitempty"` + Comments []*Comment `protobuf:"bytes,5,rep,name=comments" json:"comments,omitempty"` + WhoCanSeeUserIDList []string `protobuf:"bytes,6,rep,name=whoCanSeeUserIDList" json:"whoCanSeeUserIDList,omitempty"` + WhoCantSeeUserIDList []string `protobuf:"bytes,7,rep,name=whoCantSeeUserIDList" json:"whoCantSeeUserIDList,omitempty"` + IsPrivate bool `protobuf:"varint,8,opt,name=isPrivate" json:"isPrivate,omitempty"` + IsPublic bool `protobuf:"varint,9,opt,name=isPublic" json:"isPublic,omitempty"` + CreateTime int32 `protobuf:"varint,10,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_cc8e5928e4910f0f, []int{20} +} +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) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *WorkMoment) GetLikeUsers() []*LikeUser { + if m != nil { + return m.LikeUsers + } + return nil +} + +func (m *WorkMoment) GetComments() []*Comment { + if m != nil { + return m.Comments + } + return nil +} + +func (m *WorkMoment) GetWhoCanSeeUserIDList() []string { + if m != nil { + return m.WhoCanSeeUserIDList + } + return nil +} + +func (m *WorkMoment) GetWhoCantSeeUserIDList() []string { + if m != nil { + return m.WhoCantSeeUserIDList + } + return nil +} + +func (m *WorkMoment) GetIsPrivate() bool { + if m != nil { + return m.IsPrivate + } + return false +} + +func (m *WorkMoment) GetIsPublic() bool { + if m != nil { + return m.IsPublic + } + return false +} + +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"` + 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 *CreateOneWorkMomentReq) Reset() { *m = CreateOneWorkMomentReq{} } +func (m *CreateOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*CreateOneWorkMomentReq) ProtoMessage() {} +func (*CreateOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_cc8e5928e4910f0f, []int{21} +} +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) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +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_cc8e5928e4910f0f, []int{22} +} +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_cc8e5928e4910f0f, []int{23} +} +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_cc8e5928e4910f0f, []int{24} +} +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_cc8e5928e4910f0f, []int{25} +} +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_cc8e5928e4910f0f, []int{26} +} +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"` + Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` + OperationID string `protobuf:"bytes,4,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_cc8e5928e4910f0f, []int{27} +} +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) 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_cc8e5928e4910f0f, []int{28} +} +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 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_cc8e5928e4910f0f, []int{29} +} +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_cc8e5928e4910f0f, []int{30} +} +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_cc8e5928e4910f0f, []int{31} +} +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_cc8e5928e4910f0f, []int{32} +} +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 CommentsMsg struct { + Comment *Comment `protobuf:"bytes,1,opt,name=comment" json:"comment,omitempty"` + WorkMomentsID string `protobuf:"bytes,2,opt,name=workMomentsID" json:"workMomentsID,omitempty"` + Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommentsMsg) Reset() { *m = CommentsMsg{} } +func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } +func (*CommentsMsg) ProtoMessage() {} +func (*CommentsMsg) Descriptor() ([]byte, []int) { + return fileDescriptor_office_cc8e5928e4910f0f, []int{33} +} +func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) +} +func (m *CommentsMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommentsMsg.Marshal(b, m, deterministic) +} +func (dst *CommentsMsg) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommentsMsg.Merge(dst, src) +} +func (m *CommentsMsg) XXX_Size() int { + return xxx_messageInfo_CommentsMsg.Size(m) +} +func (m *CommentsMsg) XXX_DiscardUnknown() { + xxx_messageInfo_CommentsMsg.DiscardUnknown(m) +} + +var xxx_messageInfo_CommentsMsg proto.InternalMessageInfo + +func (m *CommentsMsg) GetComment() *Comment { + if m != nil { + return m.Comment + } + return nil +} + +func (m *CommentsMsg) GetWorkMomentsID() string { + if m != nil { + return m.WorkMomentsID + } + return "" +} + +func (m *CommentsMsg) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +type GetUserWorkMomentsCommentsMsgReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMomentsCommentsMsgReq{} } +func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } +func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} +func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_cc8e5928e4910f0f, []int{34} +} +func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) +} +func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Marshal(b, m, deterministic) +} +func (dst *GetUserWorkMomentsCommentsMsgReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Merge(dst, src) +} +func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Size() int { + return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Size(m) +} +func (m *GetUserWorkMomentsCommentsMsgReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq proto.InternalMessageInfo + +func (m *GetUserWorkMomentsCommentsMsgReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserWorkMomentsCommentsMsgReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetUserWorkMomentsCommentsMsgReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination + } + return nil +} + +type GetUserWorkMomentsCommentsMsgResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + CommentsMsg []*CommentsMsg `protobuf:"bytes,2,rep,name=commentsMsg" json:"commentsMsg,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 *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMomentsCommentsMsgResp{} } +func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } +func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} +func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_cc8e5928e4910f0f, []int{35} +} +func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) +} +func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Marshal(b, m, deterministic) +} +func (dst *GetUserWorkMomentsCommentsMsgResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Merge(dst, src) +} +func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Size() int { + return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Size(m) +} +func (m *GetUserWorkMomentsCommentsMsgResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp proto.InternalMessageInfo + +func (m *GetUserWorkMomentsCommentsMsgResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserWorkMomentsCommentsMsgResp) GetCommentsMsg() []*CommentsMsg { + if m != nil { + return m.CommentsMsg + } + return nil +} + +func (m *GetUserWorkMomentsCommentsMsgResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination + } + return nil +} + +type ClearUserWorkMomentsCommentsMsgReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,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 *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWorkMomentsCommentsMsgReq{} } +func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } +func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} +func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_cc8e5928e4910f0f, []int{36} +} +func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) +} +func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Marshal(b, m, deterministic) +} +func (dst *ClearUserWorkMomentsCommentsMsgReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Merge(dst, src) +} +func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Size() int { + return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Size(m) +} +func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_DiscardUnknown() { + xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.DiscardUnknown(m) +} + +var xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq proto.InternalMessageInfo + +func (m *ClearUserWorkMomentsCommentsMsgReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *ClearUserWorkMomentsCommentsMsgReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type ClearUserWorkMomentsCommentsMsgResp 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 *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWorkMomentsCommentsMsgResp{} } +func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } +func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} +func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_cc8e5928e4910f0f, []int{37} +} +func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) +} +func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Marshal(b, m, deterministic) +} +func (dst *ClearUserWorkMomentsCommentsMsgResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Merge(dst, src) +} +func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Size() int { + return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Size(m) +} +func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_DiscardUnknown() { + xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.DiscardUnknown(m) +} + +var xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp proto.InternalMessageInfo + +func (m *ClearUserWorkMomentsCommentsMsgResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +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_cc8e5928e4910f0f, []int{38} +} +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_cc8e5928e4910f0f, []int{39} +} +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 +2147,28 @@ 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((*Comment)(nil), "office.Comment") + 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((*GetUserWorkMomentsReq)(nil), "office.GetUserWorkMomentsReq") + proto.RegisterType((*GetUserWorkMomentsResp)(nil), "office.GetUserWorkMomentsResp") + proto.RegisterType((*GetUserFriendWorkMomentsReq)(nil), "office.GetUserFriendWorkMomentsReq") + proto.RegisterType((*GetUserFriendWorkMomentsResp)(nil), "office.GetUserFriendWorkMomentsResp") + proto.RegisterType((*CommentsMsg)(nil), "office.CommentsMsg") + proto.RegisterType((*GetUserWorkMomentsCommentsMsgReq)(nil), "office.GetUserWorkMomentsCommentsMsgReq") + proto.RegisterType((*GetUserWorkMomentsCommentsMsgResp)(nil), "office.GetUserWorkMomentsCommentsMsgResp") + proto.RegisterType((*ClearUserWorkMomentsCommentsMsgReq)(nil), "office.ClearUserWorkMomentsCommentsMsgReq") + proto.RegisterType((*ClearUserWorkMomentsCommentsMsgResp)(nil), "office.ClearUserWorkMomentsCommentsMsgResp") + 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 +2189,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) + // / 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) + GetUserWorkMomentsCommentsMsg(ctx context.Context, in *GetUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*GetUserWorkMomentsCommentsMsgResp, error) + ClearUserWorkMomentsCommentsMsg(ctx context.Context, in *ClearUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*ClearUserWorkMomentsCommentsMsgResp, error) + SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) } type officeServiceClient struct { @@ -1068,6 +2273,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) 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) GetUserWorkMomentsCommentsMsg(ctx context.Context, in *GetUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*GetUserWorkMomentsCommentsMsgResp, error) { + out := new(GetUserWorkMomentsCommentsMsgResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserWorkMomentsCommentsMsg", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) ClearUserWorkMomentsCommentsMsg(ctx context.Context, in *ClearUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*ClearUserWorkMomentsCommentsMsgResp, error) { + out := new(ClearUserWorkMomentsCommentsMsgResp) + err := grpc.Invoke(ctx, "/office.OfficeService/ClearUserWorkMomentsCommentsMsg", 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 +2364,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) + // / user self + GetUserWorkMoments(context.Context, *GetUserWorkMomentsReq) (*GetUserWorkMomentsResp, error) + // / users friend + GetUserFriendWorkMoments(context.Context, *GetUserFriendWorkMomentsReq) (*GetUserFriendWorkMomentsResp, error) + GetUserWorkMomentsCommentsMsg(context.Context, *GetUserWorkMomentsCommentsMsgReq) (*GetUserWorkMomentsCommentsMsgResp, error) + ClearUserWorkMomentsCommentsMsg(context.Context, *ClearUserWorkMomentsCommentsMsgReq) (*ClearUserWorkMomentsCommentsMsgResp, error) + SetUserWorkMomentsLevel(context.Context, *SetUserWorkMomentsLevelReq) (*SetUserWorkMomentsLevelResp, error) } func RegisterOfficeServiceServer(s *grpc.Server, srv OfficeServiceServer) { @@ -1210,6 +2507,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_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_GetUserWorkMomentsCommentsMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserWorkMomentsCommentsMsgReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserWorkMomentsCommentsMsg(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserWorkMomentsCommentsMsg", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserWorkMomentsCommentsMsg(ctx, req.(*GetUserWorkMomentsCommentsMsgReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_ClearUserWorkMomentsCommentsMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClearUserWorkMomentsCommentsMsgReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).ClearUserWorkMomentsCommentsMsg(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/ClearUserWorkMomentsCommentsMsg", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).ClearUserWorkMomentsCommentsMsg(ctx, req.(*ClearUserWorkMomentsCommentsMsgReq)) + } + 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 +2701,143 @@ 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: "GetUserWorkMoments", + Handler: _OfficeService_GetUserWorkMoments_Handler, + }, + { + MethodName: "GetUserFriendWorkMoments", + Handler: _OfficeService_GetUserFriendWorkMoments_Handler, + }, + { + MethodName: "GetUserWorkMomentsCommentsMsg", + Handler: _OfficeService_GetUserWorkMomentsCommentsMsg_Handler, + }, + { + MethodName: "ClearUserWorkMomentsCommentsMsg", + Handler: _OfficeService_ClearUserWorkMomentsCommentsMsg_Handler, + }, + { + MethodName: "SetUserWorkMomentsLevel", + Handler: _OfficeService_SetUserWorkMomentsLevel_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_7f5adce6bc494f97) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_cc8e5928e4910f0f) } -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, +var fileDescriptor_office_cc8e5928e4910f0f = []byte{ + // 1490 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xd7, 0xda, 0x4d, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0xb3, 0x6d, 0x12, 0x77, 0x5b, + 0xa4, 0xb4, 0x95, 0x6c, 0x64, 0x8a, 0x84, 0x84, 0xa8, 0x50, 0xed, 0x12, 0x05, 0xe2, 0x36, 0xac, + 0x53, 0xaa, 0x72, 0x68, 0xb4, 0xb1, 0x27, 0xcb, 0x2a, 0xf6, 0xee, 0x76, 0x67, 0x13, 0x53, 0x8e, + 0x1c, 0xb8, 0x23, 0x0e, 0x9c, 0xb8, 0xf0, 0x1d, 0xf8, 0x08, 0x1c, 0x38, 0x21, 0x0e, 0x1c, 0xb9, + 0xf1, 0x3d, 0x40, 0x33, 0x3b, 0xbb, 0x3b, 0xb3, 0x7f, 0xec, 0x74, 0x43, 0x25, 0x38, 0x79, 0xdf, + 0x9b, 0x37, 0x6f, 0xde, 0xfb, 0xbd, 0x79, 0x6f, 0x66, 0x9e, 0x61, 0xc5, 0x39, 0x3e, 0xb6, 0x06, + 0xb8, 0x15, 0xfc, 0x34, 0x5d, 0xcf, 0xf1, 0x1d, 0x34, 0x1f, 0x50, 0xea, 0xcd, 0x27, 0x2e, 0xb6, + 0x0f, 0x77, 0x7b, 0x2d, 0xf7, 0xc4, 0x6c, 0xb1, 0xa1, 0x16, 0x19, 0x9e, 0x1c, 0x4e, 0x48, 0x6b, + 0x42, 0x02, 0x51, 0xed, 0x01, 0x40, 0xc7, 0x19, 0x8f, 0x1d, 0x5b, 0xc7, 0xc4, 0x45, 0x75, 0xa8, + 0x60, 0xcf, 0xeb, 0x38, 0x43, 0x5c, 0x57, 0x1a, 0xca, 0xf6, 0x9c, 0x1e, 0x92, 0x68, 0x0d, 0xe6, + 0xb1, 0xe7, 0xf5, 0x88, 0x59, 0x2f, 0x35, 0x94, 0xed, 0xaa, 0xce, 0x29, 0xed, 0x43, 0xa8, 0x1c, + 0x18, 0xe6, 0x53, 0x82, 0x3d, 0x2a, 0x72, 0x4a, 0xb0, 0xb7, 0xdb, 0x65, 0x73, 0xab, 0x3a, 0xa7, + 0x90, 0x0a, 0x0b, 0xf4, 0xeb, 0xb1, 0x31, 0xc6, 0x7c, 0x72, 0x44, 0x6b, 0x47, 0x50, 0x3e, 0x30, + 0x4c, 0xb4, 0x0a, 0x73, 0xbe, 0x61, 0x46, 0x33, 0x03, 0x82, 0x5a, 0xe3, 0x1b, 0xa6, 0x30, 0x2f, + 0x24, 0xd1, 0xbd, 0x40, 0xe5, 0x9e, 0x45, 0xfc, 0x7a, 0xb9, 0x51, 0xde, 0xae, 0xb5, 0x97, 0x9a, + 0x1c, 0x01, 0x6e, 0x8d, 0x1e, 0x09, 0x68, 0x9f, 0xc0, 0x95, 0x1d, 0xec, 0x53, 0xe6, 0x81, 0x61, + 0x12, 0x1d, 0xbf, 0xcc, 0xb5, 0xb4, 0x01, 0x35, 0xc7, 0xc5, 0x9e, 0xe1, 0x5b, 0x8e, 0xbd, 0xdb, + 0xe5, 0x8b, 0x8a, 0x2c, 0xed, 0x18, 0x96, 0x24, 0x5d, 0xc4, 0x45, 0x6d, 0x80, 0x41, 0x84, 0x20, + 0x53, 0x58, 0x6b, 0xa3, 0xd0, 0x9a, 0x18, 0x5b, 0x5d, 0x90, 0x42, 0x5b, 0x70, 0xc9, 0x37, 0x4c, + 0x52, 0x2f, 0x31, 0xdb, 0x6b, 0x82, 0xed, 0x3a, 0x1b, 0xd0, 0xbe, 0x51, 0x60, 0xb1, 0xe3, 0x61, + 0xc3, 0xc7, 0x94, 0x87, 0x5f, 0x8a, 0x58, 0x28, 0x32, 0x16, 0xb1, 0x33, 0x25, 0xc9, 0x99, 0x4d, + 0x80, 0xe0, 0x2b, 0x42, 0xa9, 0xaa, 0x0b, 0x9c, 0xa4, 0xb3, 0x97, 0xd2, 0xce, 0x76, 0xe0, 0xb2, + 0x60, 0x43, 0x31, 0x57, 0xb5, 0x17, 0xb0, 0xd8, 0xc5, 0x23, 0x1c, 0x39, 0x92, 0x87, 0x7d, 0xb4, + 0x05, 0x4a, 0xe2, 0x16, 0x48, 0x18, 0x59, 0xce, 0x34, 0x52, 0xd0, 0x5f, 0xd0, 0xc8, 0xdf, 0x15, + 0xa8, 0xf6, 0xb1, 0x5f, 0xc8, 0xc4, 0x3a, 0x54, 0x6c, 0x3c, 0x61, 0x91, 0x09, 0xcc, 0x0b, 0x49, + 0xd4, 0x04, 0x64, 0xd9, 0x03, 0x0f, 0x1b, 0x04, 0x3f, 0x8d, 0x23, 0x71, 0x89, 0x45, 0x22, 0x63, + 0x04, 0xdd, 0x85, 0xab, 0x1e, 0x1e, 0x9e, 0x0e, 0x44, 0xe9, 0x39, 0x26, 0x9d, 0xe2, 0x27, 0x81, + 0x99, 0x4f, 0x03, 0xf3, 0x11, 0x40, 0xe8, 0x52, 0x41, 0x54, 0xfe, 0x52, 0xe0, 0x4a, 0x1f, 0xdb, + 0xc3, 0x1e, 0x31, 0xdb, 0xd2, 0x36, 0x64, 0x96, 0x29, 0xcc, 0xb2, 0x90, 0xa4, 0x59, 0xfe, 0x34, + 0x4c, 0xc9, 0x12, 0x1b, 0x8a, 0x68, 0x74, 0x03, 0xaa, 0x3b, 0x9e, 0x73, 0xea, 0x0a, 0x3b, 0x31, + 0x66, 0x50, 0xb8, 0x09, 0xb6, 0x87, 0xd1, 0x1e, 0xe4, 0x14, 0x85, 0x83, 0x7e, 0x61, 0x6f, 0x7f, + 0x64, 0xf8, 0xc7, 0x8e, 0x37, 0xde, 0xed, 0xd6, 0xe7, 0x58, 0x55, 0x4a, 0xf1, 0xa9, 0x5d, 0x03, + 0xc7, 0xf6, 0xb1, 0xed, 0x73, 0x28, 0x42, 0x32, 0x09, 0x54, 0x25, 0x0d, 0xd4, 0x23, 0x58, 0x92, + 0xbc, 0x2c, 0x88, 0xd6, 0xf7, 0x0a, 0x2c, 0xef, 0x30, 0xc0, 0xa9, 0xb6, 0x3d, 0x27, 0x28, 0x35, + 0x5d, 0x80, 0x7d, 0xc3, 0xb4, 0x6c, 0xb6, 0x18, 0xd7, 0x74, 0xbb, 0x49, 0xb0, 0x77, 0x86, 0xbd, + 0x43, 0xc3, 0xb5, 0x0e, 0x5d, 0xc3, 0x33, 0xc6, 0xa4, 0xa9, 0xe3, 0x97, 0xa7, 0x98, 0xf8, 0xb1, + 0xac, 0x2e, 0xcc, 0xcb, 0xcd, 0xf1, 0xd9, 0xe9, 0xe1, 0x00, 0xc4, 0x16, 0x49, 0x75, 0x53, 0x99, + 0x51, 0x37, 0x45, 0x4c, 0x4b, 0x32, 0xa6, 0x2a, 0x2c, 0xd0, 0x08, 0x1c, 0x58, 0x7c, 0xcf, 0x97, + 0xf5, 0x88, 0xd6, 0x7e, 0x51, 0x00, 0x25, 0x61, 0x28, 0x58, 0x25, 0x1f, 0x49, 0xd8, 0x95, 0xd8, + 0x9c, 0xb7, 0x33, 0xb1, 0x23, 0xae, 0x63, 0x13, 0x9c, 0x03, 0xde, 0x7d, 0xa8, 0xf9, 0xb1, 0x35, + 0xfc, 0xbc, 0x40, 0x82, 0xdf, 0x7c, 0x48, 0x17, 0xc5, 0xb4, 0x01, 0x8b, 0x26, 0xaf, 0xf4, 0x0f, + 0x5f, 0xed, 0x76, 0xdf, 0x44, 0xf1, 0x32, 0x19, 0x56, 0xd2, 0x22, 0x05, 0xb1, 0xda, 0x80, 0xb2, + 0x6f, 0x98, 0x1c, 0x24, 0xe9, 0x40, 0xa1, 0x7c, 0xed, 0x01, 0x2c, 0xec, 0x59, 0x27, 0xb8, 0xf0, + 0x39, 0xfd, 0xa7, 0x02, 0x15, 0xba, 0x32, 0x8d, 0x7e, 0x81, 0xf9, 0x14, 0x0a, 0x0f, 0xbb, 0xa3, + 0x57, 0x41, 0x05, 0x0b, 0xa1, 0x10, 0x58, 0xe8, 0x36, 0x5c, 0x8e, 0x48, 0xa6, 0x22, 0x28, 0x06, + 0x32, 0x93, 0x56, 0x12, 0xbe, 0x09, 0x79, 0x31, 0xa8, 0xea, 0x31, 0x63, 0x4a, 0x15, 0xd8, 0x04, + 0x18, 0x04, 0x47, 0x19, 0xdd, 0xb3, 0x41, 0x11, 0x10, 0x38, 0xda, 0xdf, 0x25, 0x80, 0x67, 0x8e, + 0x77, 0xd2, 0x73, 0x98, 0x8b, 0x1a, 0x2c, 0x4e, 0x22, 0x2a, 0x72, 0x54, 0xe2, 0xe5, 0xe6, 0xa4, + 0x60, 0x44, 0x59, 0x36, 0xa2, 0x09, 0xd5, 0x11, 0x0f, 0x02, 0x61, 0xc7, 0x40, 0xad, 0x7d, 0x35, + 0x8c, 0x54, 0x18, 0x1d, 0x3d, 0x16, 0xa1, 0xd9, 0x3a, 0x08, 0x30, 0x27, 0xec, 0x1c, 0x10, 0xb2, + 0x95, 0xc7, 0x42, 0x8f, 0x04, 0xd0, 0x3b, 0xb0, 0x32, 0xf9, 0xd2, 0xe9, 0x18, 0x76, 0x1f, 0x8b, + 0xe7, 0xc7, 0x3c, 0xab, 0xb6, 0x59, 0x43, 0xa8, 0x0d, 0xab, 0x01, 0xdb, 0x97, 0xa7, 0x54, 0xd8, + 0x94, 0xcc, 0x31, 0x8a, 0xbf, 0x45, 0xf6, 0x3d, 0xeb, 0xcc, 0xf0, 0x71, 0x7d, 0xa1, 0xa1, 0x6c, + 0x2f, 0xe8, 0x31, 0x83, 0xee, 0x00, 0x8b, 0xec, 0x9f, 0x1e, 0x8d, 0xac, 0x41, 0xbd, 0xca, 0x06, + 0x23, 0x9a, 0x46, 0xa0, 0x13, 0x47, 0x00, 0x58, 0x1d, 0x17, 0x38, 0xda, 0xb7, 0x0a, 0xac, 0x05, + 0xe4, 0x13, 0x1b, 0xc7, 0xa1, 0xa0, 0x59, 0xd7, 0x06, 0x88, 0x91, 0x4f, 0xe6, 0x83, 0x20, 0x2a, + 0x48, 0x5d, 0xa0, 0x62, 0xf6, 0x60, 0x3d, 0xd3, 0x8e, 0x82, 0xc7, 0xc2, 0x19, 0xac, 0x05, 0xf7, + 0x93, 0x94, 0x5b, 0x17, 0xd9, 0x64, 0xe7, 0x72, 0x23, 0x73, 0xdd, 0x82, 0x6e, 0xf8, 0xb0, 0x4a, + 0xb7, 0x68, 0xca, 0x89, 0xbc, 0x62, 0xa0, 0xc1, 0xe2, 0x33, 0xd1, 0xb9, 0xc0, 0x7c, 0x89, 0x77, + 0x0e, 0x27, 0x3e, 0x85, 0x6b, 0x19, 0xab, 0x16, 0x74, 0xe1, 0x3b, 0x05, 0xd6, 0x79, 0xde, 0xbc, + 0x8e, 0x1b, 0x93, 0x0c, 0x37, 0xa4, 0x18, 0xe5, 0x27, 0xfc, 0xec, 0x2b, 0xf6, 0x63, 0xa8, 0x67, + 0x9b, 0x54, 0xd0, 0xc7, 0x1f, 0x14, 0xb8, 0xc6, 0x4f, 0x94, 0x58, 0xdb, 0xd4, 0x37, 0x4f, 0x37, + 0xe3, 0x90, 0x7d, 0xfd, 0x0b, 0xca, 0xec, 0x50, 0xfe, 0xaa, 0xc0, 0x5a, 0x96, 0x65, 0x05, 0xcf, + 0xbb, 0xfb, 0x50, 0x8b, 0x83, 0x10, 0x3e, 0xa4, 0xb2, 0x8a, 0x82, 0x28, 0x96, 0xb8, 0x51, 0x94, + 0x0b, 0xde, 0x28, 0xb4, 0x1f, 0x15, 0xb8, 0xce, 0x7d, 0xf9, 0xd8, 0xb3, 0xb0, 0x3d, 0xfc, 0x8f, + 0x61, 0xfd, 0x9b, 0x02, 0x37, 0xf2, 0xed, 0xfb, 0x3f, 0x22, 0xfe, 0x15, 0xd4, 0x78, 0x9e, 0x90, + 0x1e, 0x31, 0xd1, 0x1d, 0x9a, 0x72, 0x63, 0xe1, 0x38, 0x48, 0x1d, 0x8c, 0xe1, 0x38, 0xbd, 0x57, + 0x08, 0xf6, 0x44, 0x29, 0x2c, 0x33, 0xf3, 0x73, 0x58, 0xfb, 0x49, 0x81, 0x46, 0x7a, 0xdf, 0x0a, + 0xc6, 0x5c, 0xa8, 0xa1, 0x90, 0xd8, 0x12, 0xe5, 0x62, 0x5b, 0x42, 0xfb, 0x43, 0x81, 0x9b, 0x33, + 0x8c, 0x2c, 0x18, 0xf5, 0xf7, 0xa0, 0x36, 0x88, 0xd5, 0xf0, 0xa8, 0xaf, 0x24, 0xd0, 0x66, 0x2b, + 0x88, 0x72, 0xff, 0x56, 0xd8, 0x5f, 0x80, 0xd6, 0x19, 0x61, 0xc3, 0x7b, 0x43, 0xe8, 0x6b, 0xcf, + 0xe1, 0xd6, 0x4c, 0xfd, 0x05, 0x2b, 0xf1, 0x08, 0xd4, 0x7e, 0x2a, 0x22, 0x7b, 0xf8, 0x0c, 0x8f, + 0x66, 0x3c, 0x24, 0x46, 0x54, 0x86, 0x19, 0x3b, 0xa7, 0x07, 0xc4, 0x39, 0x32, 0xfe, 0x33, 0xb8, + 0x9e, 0xbb, 0x5a, 0x31, 0x07, 0xda, 0x3f, 0x03, 0x5c, 0x7e, 0xc2, 0x24, 0xfa, 0xd8, 0x3b, 0xb3, + 0x06, 0x18, 0x3d, 0x80, 0x9a, 0xd0, 0xfc, 0x42, 0x6b, 0xa1, 0x02, 0xb9, 0xbb, 0xa6, 0xae, 0x67, + 0xf2, 0x89, 0x8b, 0xde, 0x87, 0x6a, 0xd4, 0x4f, 0x42, 0xab, 0xd1, 0xf2, 0x42, 0x9b, 0x4b, 0xbd, + 0x96, 0xc1, 0x0d, 0x66, 0x46, 0x4d, 0x9e, 0x78, 0xa6, 0xd8, 0x57, 0x8a, 0x67, 0xca, 0xdd, 0xa0, + 0x16, 0xcc, 0x07, 0x5d, 0x10, 0xb4, 0x1c, 0x0a, 0x44, 0x8d, 0x1e, 0x15, 0x25, 0x59, 0xc4, 0xa5, + 0x4e, 0x0a, 0xdd, 0x80, 0xd8, 0x49, 0xb9, 0x11, 0x12, 0x3b, 0x99, 0x6c, 0x1d, 0xec, 0xb0, 0x6e, + 0xa3, 0xf0, 0xfc, 0x45, 0x6f, 0x09, 0x78, 0xc8, 0xdd, 0x01, 0x55, 0xcd, 0x1b, 0x8a, 0x14, 0x09, + 0x6f, 0x43, 0x49, 0x91, 0xfc, 0x30, 0x95, 0x14, 0x25, 0x9f, 0x93, 0x9f, 0xc3, 0x4a, 0xc6, 0x85, + 0x16, 0x6d, 0xca, 0x50, 0x27, 0xaf, 0x44, 0xea, 0xd6, 0xd4, 0xf1, 0x40, 0x6f, 0xc6, 0x0d, 0x33, + 0xd6, 0x9b, 0x7d, 0xed, 0x8d, 0xf5, 0xe6, 0x5d, 0x4f, 0xf7, 0x61, 0x39, 0x75, 0xe9, 0x43, 0x37, + 0xc4, 0x87, 0x52, 0x4a, 0xe7, 0xc6, 0x94, 0x51, 0xe2, 0xa2, 0xe7, 0xb0, 0x9a, 0x75, 0xcb, 0x42, + 0x5b, 0x89, 0x3a, 0x96, 0xd2, 0xdb, 0x98, 0x2e, 0x40, 0x5c, 0xd4, 0x8f, 0x5e, 0xf0, 0x42, 0xe2, + 0xa1, 0x8d, 0x44, 0x38, 0xe4, 0xfb, 0x81, 0xba, 0x39, 0x6d, 0x98, 0xb8, 0x08, 0x43, 0x3d, 0xef, + 0xf8, 0x46, 0xb7, 0x12, 0x73, 0xb3, 0x2e, 0x20, 0xea, 0xed, 0xd9, 0x42, 0xc4, 0x45, 0x3e, 0x6c, + 0x4c, 0x3d, 0x34, 0xd0, 0x76, 0xbe, 0x9d, 0x72, 0x09, 0x56, 0xef, 0x9c, 0x53, 0x92, 0xb8, 0xe8, + 0x6b, 0xd8, 0x9a, 0x51, 0x73, 0xd1, 0xdd, 0x08, 0xf6, 0x99, 0xc5, 0x5f, 0xbd, 0x77, 0x6e, 0x59, + 0xe2, 0xa2, 0x23, 0x58, 0xcf, 0x29, 0x93, 0x48, 0x13, 0x6a, 0x41, 0x4e, 0xd5, 0x56, 0x6f, 0xcd, + 0x94, 0x21, 0xee, 0xc3, 0xe5, 0x2f, 0x96, 0x9a, 0xfc, 0xef, 0x98, 0x0f, 0x82, 0x9f, 0xa3, 0x79, + 0xf6, 0x5f, 0xcb, 0xbb, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x50, 0x31, 0x47, 0xbd, 0xad, 0x19, + 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index edaf5307d..7297633b3 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -106,6 +106,138 @@ message GetUserTagByIDResp { Tag tag = 2; } +/// WorkMoment + +message LikeUser { + string userID = 1; + string userName = 2; +} + +message Comment { + string userID = 1; + string userName = 2; + string replyUserID = 3; + string replyUserName = 4; + string contentID = 5; + string content = 6; + string createTime = 7; +} + +message WorkMoment { + string workMomentID = 1; + string userID = 2; + string content = 3; + repeated LikeUser likeUsers = 4; + repeated Comment comments = 5; + repeated string whoCanSeeUserIDList = 6; + repeated string whoCantSeeUserIDList = 7; + bool isPrivate = 8; + bool isPublic = 9; + int32 CreateTime = 10; +} + +message CreateOneWorkMomentReq { + WorkMoment workMoment = 1; + string userID = 2; + string operationID = 3; +} + +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 content = 3; + string operationID = 4; +} + +message CommentOneWorkMomentResp { + 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 CommentsMsg { + Comment comment = 1; + string workMomentsID = 2; + string content = 3; +} + +message GetUserWorkMomentsCommentsMsgReq { + string userID = 1; + string operationID = 2; + server_api_params.RequestPagination Pagination = 3; +} + +message GetUserWorkMomentsCommentsMsgResp { + CommonResp commonResp = 1; + repeated CommentsMsg commentsMsg = 2; + server_api_params.ResponsePagination Pagination = 3; +} + +message ClearUserWorkMomentsCommentsMsgReq { + string userID = 1; + string operationID = 2; +} + +message ClearUserWorkMomentsCommentsMsgResp { + CommonResp commonResp = 1; +} + +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 +246,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); + /// user self + rpc GetUserWorkMoments(GetUserWorkMomentsReq) returns(GetUserWorkMomentsResp); + /// users friend + rpc GetUserFriendWorkMoments(GetUserFriendWorkMomentsReq) returns(GetUserFriendWorkMomentsResp); + rpc GetUserWorkMomentsCommentsMsg(GetUserWorkMomentsCommentsMsgReq) returns(GetUserWorkMomentsCommentsMsgResp); + rpc ClearUserWorkMomentsCommentsMsg(ClearUserWorkMomentsCommentsMsgReq) returns(ClearUserWorkMomentsCommentsMsgResp); + rpc SetUserWorkMomentsLevel(SetUserWorkMomentsLevelReq) returns(SetUserWorkMomentsLevelResp); } From 9489ab862b0c2ef181fef98648dd394b7cd2803d Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 12:10:33 +0800 Subject: [PATCH 018/128] getui --- internal/rpc/office/office.go | 15 +++++++++------ pkg/common/db/mongoModel.go | 5 ++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 16e5e8fa5..16d6c832d 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -270,10 +270,14 @@ func (s *officeServer) GetUserTagByID(_ context.Context, req *pbOffice.GetUserTa 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{} - err = db.DB.CreateOneWorkMoment() + workMoment := db.WorkMoment{} + if err := utils.CopyStructFields(&workMoment, req.WorkMoment); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + err = db.DB.CreateOneWorkMoment(&workMoment) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName()) - resp.CommonResp = &pbOffice.CommonResp{ErrCode:constant.ErrDB.ErrCode, ErrMsg:constant.ErrDB.ErrMsg} + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CreateOneWorkMoment", 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()) @@ -282,8 +286,8 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea 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{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -291,7 +295,6 @@ func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.Dele func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOneWorkMomentReq) (resp *pbOffice.LikeOneWorkMomentResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) - return resp, nil } @@ -329,4 +332,4 @@ func (s *officeServer) ClearUserWorkMomentsCommentsMsg(_ context.Context, req *p log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil -} \ No newline at end of file +} diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 229332475..f922355a2 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -564,11 +564,10 @@ func (d *DataBases) GetTagSendLogs(userID string, showNumber, pageNumber int32) } type WorkMoment struct { - } -func (d *DataBases) CreateOneWorkMoment(workMoment WorkMoment) error { - +func (d *DataBases) CreateOneWorkMoment(workMoment *WorkMoment) error { + return nil } func generateTagID(tagName, userID string) string { From dbc5bd96f3974315add4b718f92c029b37ac53e5 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 17:43:04 +0800 Subject: [PATCH 019/128] getui --- internal/rpc/office/office.go | 112 ++++++- pkg/common/db/model.go | 9 +- pkg/common/db/mongoModel.go | 71 ++++ .../im_mysql_model/friend_model.go | 13 + pkg/proto/office/office.pb.go | 304 +++++++++--------- pkg/proto/office/office.proto | 11 +- 6 files changed, 362 insertions(+), 158 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 16d6c832d..53e58f223 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -287,49 +287,159 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea 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{} - + 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 (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{} + 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 + } + if workMoment.UserID != req.WorkMomentID { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoment.UserID != req.WorkMomentID ", workMoment, req.WorkMomentID) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg} + return resp, nil + } + if err = db.DB.LikeOneWorkMoment(req.UserID, req.WorkMomentID); 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 + } 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{} + commentUserName, err := imdb.GetUserNameByUserID(req.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID commentUserName failed", req.UserID, err.Error()) + } + 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: commentUserName, + ReplyUserID: req.ReplyUserID, + ReplyUserName: replyUserName, + ContentID: "", + Content: req.Content, + CreateTime: int32(time.Now().Unix()), + } + if err = db.DB.CommentOneWorkMoment(comment, req.WorkMomentID); 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 + } 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{} + 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{} + 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) + 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) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommentsMsgs: []*pbOffice.CommentsMsg{}} + workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + for _, commentMsg := range workMomentsCommentMsgs { + comment := pbOffice.Comment{} + if err := utils.CopyStructFields(&comment, commentMsg); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), err.Error()) + } + resp.CommentsMsgs = append(resp.CommentsMsgs, &pbOffice.CommentsMsg{ + Comment: &comment, + WorkMomentID: commentMsg.WorkMomentID, + Content: commentMsg.Content, + }) + } + 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{} + 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) ClearUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.ClearUserWorkMomentsCommentsMsgReq) (resp *pbOffice.ClearUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.ClearUserWorkMomentsCommentsMsgResp{} + if err := db.DB.ClearUserWorkMomentsCommentsMsg(req.UserID); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "ClearUserWorkMomentsCommentsMsg", 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 } diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 08b6412d7..fc6ae3faa 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -49,10 +49,11 @@ func init() { 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) } - 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 { @@ -64,7 +65,7 @@ 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) DB.mongoClient = mongoClient diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index f922355a2..6d7ff3f7c 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -564,16 +564,87 @@ func (d *DataBases) GetTagSendLogs(userID string, showNumber, pageNumber int32) } type WorkMoment struct { + WorkMomentID string `bson:"work_moment_id"` + UserID string `bson:"user_id"` + Content string `bson:"content"` + LikeUsers []*LikeUser `bson:"like_users"` + Comments []*Comment `bson:"comments"` + WhoCanSeeUserIDList []string `bson:"who_can_see_user_id_list"` + WhoCantSeeUserIDList []string `bson:"who_cant_see_user_id_list"` + IsPrivate bool + IsPublic bool + CreateTime int32 +} + +type LikeUser struct { + UserID string + UserName string +} + +type Comment struct { + UserID string + UserName string + ReplyUserID string + ReplyUserName string + ContentID string + Content string + CreateTime int32 } func (d *DataBases) CreateOneWorkMoment(workMoment *WorkMoment) error { return nil } +func (d *DataBases) DeleteOneWorkMoment(workMomentID string) error { + return nil +} + +func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) { + return nil, nil +} + +func (d *DataBases) LikeOneWorkMoment(likeUserID, workMomentID string) error { + return nil +} + +func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { + return nil +} + +func (d *DataBases) ClearUserWorkMomentsCommentsMsg(userID string) error { + return nil +} + +type CommentMsg struct { + WorkMomentID string `bson:"workMoment"` + CommentContent string `bson:"content"` + Comment +} + +func (d *DataBases) GetUserWorkMomentsCommentsMsg(userID string, showNumber, pageNumber int32) ([]CommentMsg, error) { + return nil, nil +} + +func (d *DataBases) CommentOneWorkMoment(comment Comment, workMomentID string) error { + return nil +} + +func (d *DataBases) GetUserWorkMoments(userID string, showNumber, pageNumber int32) ([]WorkMoment, error) { + return nil, nil +} + +func (d *DataBases) GetUserFriendWorkMoments(friendIDList []string, showNumber, pageNumber int32) ([]WorkMoment, error) { + return nil, nil +} + 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 getCurrentTimestampByMill() int64 { return time.Now().UnixNano() / 1e6 } 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..a7b14f198 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/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index 41389a523..32a6a004d 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_cc8e5928e4910f0f, []int{0} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{1} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{2} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{3} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{4} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{5} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{6} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{7} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{8} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{9} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{10} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{11} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{12} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{13} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{14} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{15} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{16} + return fileDescriptor_office_8a5f7d4f1783db20, []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_cc8e5928e4910f0f, []int{17} + return fileDescriptor_office_8a5f7d4f1783db20, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_cc8e5928e4910f0f, []int{18} + return fileDescriptor_office_8a5f7d4f1783db20, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1009,7 +1009,7 @@ type Comment struct { ReplyUserName string `protobuf:"bytes,4,opt,name=replyUserName" json:"replyUserName,omitempty"` ContentID string `protobuf:"bytes,5,opt,name=contentID" json:"contentID,omitempty"` Content string `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"` - CreateTime string `protobuf:"bytes,7,opt,name=createTime" json:"createTime,omitempty"` + CreateTime int32 `protobuf:"varint,7,opt,name=createTime" json:"createTime,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1019,7 +1019,7 @@ 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_cc8e5928e4910f0f, []int{19} + return fileDescriptor_office_8a5f7d4f1783db20, []int{19} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1081,11 +1081,11 @@ func (m *Comment) GetContent() string { return "" } -func (m *Comment) GetCreateTime() string { +func (m *Comment) GetCreateTime() int32 { if m != nil { return m.CreateTime } - return "" + return 0 } type WorkMoment struct { @@ -1108,7 +1108,7 @@ 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_cc8e5928e4910f0f, []int{20} + return fileDescriptor_office_8a5f7d4f1783db20, []int{20} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1211,7 +1211,7 @@ 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_cc8e5928e4910f0f, []int{21} + return fileDescriptor_office_8a5f7d4f1783db20, []int{21} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1263,7 +1263,7 @@ 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_cc8e5928e4910f0f, []int{22} + return fileDescriptor_office_8a5f7d4f1783db20, []int{22} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1303,7 +1303,7 @@ 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_cc8e5928e4910f0f, []int{23} + return fileDescriptor_office_8a5f7d4f1783db20, []int{23} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1355,7 +1355,7 @@ 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_cc8e5928e4910f0f, []int{24} + return fileDescriptor_office_8a5f7d4f1783db20, []int{24} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1395,7 +1395,7 @@ 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_cc8e5928e4910f0f, []int{25} + return fileDescriptor_office_8a5f7d4f1783db20, []int{25} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1447,7 +1447,7 @@ 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_cc8e5928e4910f0f, []int{26} + return fileDescriptor_office_8a5f7d4f1783db20, []int{26} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1477,8 +1477,9 @@ func (m *LikeOneWorkMomentResp) GetCommonResp() *CommonResp { 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"` - Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` - OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,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:"-"` @@ -1488,7 +1489,7 @@ 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_cc8e5928e4910f0f, []int{27} + return fileDescriptor_office_8a5f7d4f1783db20, []int{27} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1522,6 +1523,13 @@ func (m *CommentOneWorkMomentReq) GetWorkMomentID() string { return "" } +func (m *CommentOneWorkMomentReq) GetReplyUserID() string { + if m != nil { + return m.ReplyUserID + } + return "" +} + func (m *CommentOneWorkMomentReq) GetContent() string { if m != nil { return m.Content @@ -1547,7 +1555,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{28} + return fileDescriptor_office_8a5f7d4f1783db20, []int{28} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1587,7 +1595,7 @@ 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_cc8e5928e4910f0f, []int{29} + return fileDescriptor_office_8a5f7d4f1783db20, []int{29} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1641,7 +1649,7 @@ 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_cc8e5928e4910f0f, []int{30} + return fileDescriptor_office_8a5f7d4f1783db20, []int{30} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1695,7 +1703,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{31} + return fileDescriptor_office_8a5f7d4f1783db20, []int{31} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -1749,7 +1757,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{32} + return fileDescriptor_office_8a5f7d4f1783db20, []int{32} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -1792,7 +1800,7 @@ func (m *GetUserFriendWorkMomentsResp) GetPagination() *sdk_ws.ResponsePaginatio type CommentsMsg struct { Comment *Comment `protobuf:"bytes,1,opt,name=comment" json:"comment,omitempty"` - WorkMomentsID string `protobuf:"bytes,2,opt,name=workMomentsID" json:"workMomentsID,omitempty"` + WorkMomentID string `protobuf:"bytes,2,opt,name=workMomentID" json:"workMomentID,omitempty"` Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1803,7 +1811,7 @@ func (m *CommentsMsg) Reset() { *m = CommentsMsg{} } func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } func (*CommentsMsg) ProtoMessage() {} func (*CommentsMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{33} + return fileDescriptor_office_8a5f7d4f1783db20, []int{33} } func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) @@ -1830,9 +1838,9 @@ func (m *CommentsMsg) GetComment() *Comment { return nil } -func (m *CommentsMsg) GetWorkMomentsID() string { +func (m *CommentsMsg) GetWorkMomentID() string { if m != nil { - return m.WorkMomentsID + return m.WorkMomentID } return "" } @@ -1857,7 +1865,7 @@ func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMom func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{34} + return fileDescriptor_office_8a5f7d4f1783db20, []int{34} } func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -1900,7 +1908,7 @@ func (m *GetUserWorkMomentsCommentsMsgReq) GetPagination() *sdk_ws.RequestPagina type GetUserWorkMomentsCommentsMsgResp struct { CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - CommentsMsg []*CommentsMsg `protobuf:"bytes,2,rep,name=commentsMsg" json:"commentsMsg,omitempty"` + CommentsMsgs []*CommentsMsg `protobuf:"bytes,2,rep,name=commentsMsgs" json:"commentsMsgs,omitempty"` Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1911,7 +1919,7 @@ func (m *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMo func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{35} + return fileDescriptor_office_8a5f7d4f1783db20, []int{35} } func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -1938,9 +1946,9 @@ func (m *GetUserWorkMomentsCommentsMsgResp) GetCommonResp() *CommonResp { return nil } -func (m *GetUserWorkMomentsCommentsMsgResp) GetCommentsMsg() []*CommentsMsg { +func (m *GetUserWorkMomentsCommentsMsgResp) GetCommentsMsgs() []*CommentsMsg { if m != nil { - return m.CommentsMsg + return m.CommentsMsgs } return nil } @@ -1964,7 +1972,7 @@ func (m *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWor func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{36} + return fileDescriptor_office_8a5f7d4f1783db20, []int{36} } func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2009,7 +2017,7 @@ func (m *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWo func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{37} + return fileDescriptor_office_8a5f7d4f1783db20, []int{37} } func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2049,7 +2057,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{38} + return fileDescriptor_office_8a5f7d4f1783db20, []int{38} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2101,7 +2109,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_cc8e5928e4910f0f, []int{39} + return fileDescriptor_office_8a5f7d4f1783db20, []int{39} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2742,102 +2750,102 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_cc8e5928e4910f0f) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_8a5f7d4f1783db20) } -var fileDescriptor_office_cc8e5928e4910f0f = []byte{ - // 1490 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xd7, 0xda, 0x4d, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0xb3, 0x6d, 0x12, 0x77, 0x5b, - 0xa4, 0xb4, 0x95, 0x6c, 0x64, 0x8a, 0x84, 0x84, 0xa8, 0x50, 0xed, 0x12, 0x05, 0xe2, 0x36, 0xac, - 0x53, 0xaa, 0x72, 0x68, 0xb4, 0xb1, 0x27, 0xcb, 0x2a, 0xf6, 0xee, 0x76, 0x67, 0x13, 0x53, 0x8e, - 0x1c, 0xb8, 0x23, 0x0e, 0x9c, 0xb8, 0xf0, 0x1d, 0xf8, 0x08, 0x1c, 0x38, 0x21, 0x0e, 0x1c, 0xb9, - 0xf1, 0x3d, 0x40, 0x33, 0x3b, 0xbb, 0x3b, 0xb3, 0x7f, 0xec, 0x74, 0x43, 0x25, 0x38, 0x79, 0xdf, - 0x9b, 0x37, 0x6f, 0xde, 0xfb, 0xbd, 0x79, 0x6f, 0x66, 0x9e, 0x61, 0xc5, 0x39, 0x3e, 0xb6, 0x06, - 0xb8, 0x15, 0xfc, 0x34, 0x5d, 0xcf, 0xf1, 0x1d, 0x34, 0x1f, 0x50, 0xea, 0xcd, 0x27, 0x2e, 0xb6, - 0x0f, 0x77, 0x7b, 0x2d, 0xf7, 0xc4, 0x6c, 0xb1, 0xa1, 0x16, 0x19, 0x9e, 0x1c, 0x4e, 0x48, 0x6b, - 0x42, 0x02, 0x51, 0xed, 0x01, 0x40, 0xc7, 0x19, 0x8f, 0x1d, 0x5b, 0xc7, 0xc4, 0x45, 0x75, 0xa8, - 0x60, 0xcf, 0xeb, 0x38, 0x43, 0x5c, 0x57, 0x1a, 0xca, 0xf6, 0x9c, 0x1e, 0x92, 0x68, 0x0d, 0xe6, - 0xb1, 0xe7, 0xf5, 0x88, 0x59, 0x2f, 0x35, 0x94, 0xed, 0xaa, 0xce, 0x29, 0xed, 0x43, 0xa8, 0x1c, - 0x18, 0xe6, 0x53, 0x82, 0x3d, 0x2a, 0x72, 0x4a, 0xb0, 0xb7, 0xdb, 0x65, 0x73, 0xab, 0x3a, 0xa7, - 0x90, 0x0a, 0x0b, 0xf4, 0xeb, 0xb1, 0x31, 0xc6, 0x7c, 0x72, 0x44, 0x6b, 0x47, 0x50, 0x3e, 0x30, - 0x4c, 0xb4, 0x0a, 0x73, 0xbe, 0x61, 0x46, 0x33, 0x03, 0x82, 0x5a, 0xe3, 0x1b, 0xa6, 0x30, 0x2f, - 0x24, 0xd1, 0xbd, 0x40, 0xe5, 0x9e, 0x45, 0xfc, 0x7a, 0xb9, 0x51, 0xde, 0xae, 0xb5, 0x97, 0x9a, - 0x1c, 0x01, 0x6e, 0x8d, 0x1e, 0x09, 0x68, 0x9f, 0xc0, 0x95, 0x1d, 0xec, 0x53, 0xe6, 0x81, 0x61, - 0x12, 0x1d, 0xbf, 0xcc, 0xb5, 0xb4, 0x01, 0x35, 0xc7, 0xc5, 0x9e, 0xe1, 0x5b, 0x8e, 0xbd, 0xdb, - 0xe5, 0x8b, 0x8a, 0x2c, 0xed, 0x18, 0x96, 0x24, 0x5d, 0xc4, 0x45, 0x6d, 0x80, 0x41, 0x84, 0x20, - 0x53, 0x58, 0x6b, 0xa3, 0xd0, 0x9a, 0x18, 0x5b, 0x5d, 0x90, 0x42, 0x5b, 0x70, 0xc9, 0x37, 0x4c, - 0x52, 0x2f, 0x31, 0xdb, 0x6b, 0x82, 0xed, 0x3a, 0x1b, 0xd0, 0xbe, 0x51, 0x60, 0xb1, 0xe3, 0x61, - 0xc3, 0xc7, 0x94, 0x87, 0x5f, 0x8a, 0x58, 0x28, 0x32, 0x16, 0xb1, 0x33, 0x25, 0xc9, 0x99, 0x4d, - 0x80, 0xe0, 0x2b, 0x42, 0xa9, 0xaa, 0x0b, 0x9c, 0xa4, 0xb3, 0x97, 0xd2, 0xce, 0x76, 0xe0, 0xb2, - 0x60, 0x43, 0x31, 0x57, 0xb5, 0x17, 0xb0, 0xd8, 0xc5, 0x23, 0x1c, 0x39, 0x92, 0x87, 0x7d, 0xb4, - 0x05, 0x4a, 0xe2, 0x16, 0x48, 0x18, 0x59, 0xce, 0x34, 0x52, 0xd0, 0x5f, 0xd0, 0xc8, 0xdf, 0x15, - 0xa8, 0xf6, 0xb1, 0x5f, 0xc8, 0xc4, 0x3a, 0x54, 0x6c, 0x3c, 0x61, 0x91, 0x09, 0xcc, 0x0b, 0x49, - 0xd4, 0x04, 0x64, 0xd9, 0x03, 0x0f, 0x1b, 0x04, 0x3f, 0x8d, 0x23, 0x71, 0x89, 0x45, 0x22, 0x63, - 0x04, 0xdd, 0x85, 0xab, 0x1e, 0x1e, 0x9e, 0x0e, 0x44, 0xe9, 0x39, 0x26, 0x9d, 0xe2, 0x27, 0x81, - 0x99, 0x4f, 0x03, 0xf3, 0x11, 0x40, 0xe8, 0x52, 0x41, 0x54, 0xfe, 0x52, 0xe0, 0x4a, 0x1f, 0xdb, - 0xc3, 0x1e, 0x31, 0xdb, 0xd2, 0x36, 0x64, 0x96, 0x29, 0xcc, 0xb2, 0x90, 0xa4, 0x59, 0xfe, 0x34, - 0x4c, 0xc9, 0x12, 0x1b, 0x8a, 0x68, 0x74, 0x03, 0xaa, 0x3b, 0x9e, 0x73, 0xea, 0x0a, 0x3b, 0x31, - 0x66, 0x50, 0xb8, 0x09, 0xb6, 0x87, 0xd1, 0x1e, 0xe4, 0x14, 0x85, 0x83, 0x7e, 0x61, 0x6f, 0x7f, - 0x64, 0xf8, 0xc7, 0x8e, 0x37, 0xde, 0xed, 0xd6, 0xe7, 0x58, 0x55, 0x4a, 0xf1, 0xa9, 0x5d, 0x03, - 0xc7, 0xf6, 0xb1, 0xed, 0x73, 0x28, 0x42, 0x32, 0x09, 0x54, 0x25, 0x0d, 0xd4, 0x23, 0x58, 0x92, - 0xbc, 0x2c, 0x88, 0xd6, 0xf7, 0x0a, 0x2c, 0xef, 0x30, 0xc0, 0xa9, 0xb6, 0x3d, 0x27, 0x28, 0x35, - 0x5d, 0x80, 0x7d, 0xc3, 0xb4, 0x6c, 0xb6, 0x18, 0xd7, 0x74, 0xbb, 0x49, 0xb0, 0x77, 0x86, 0xbd, - 0x43, 0xc3, 0xb5, 0x0e, 0x5d, 0xc3, 0x33, 0xc6, 0xa4, 0xa9, 0xe3, 0x97, 0xa7, 0x98, 0xf8, 0xb1, - 0xac, 0x2e, 0xcc, 0xcb, 0xcd, 0xf1, 0xd9, 0xe9, 0xe1, 0x00, 0xc4, 0x16, 0x49, 0x75, 0x53, 0x99, - 0x51, 0x37, 0x45, 0x4c, 0x4b, 0x32, 0xa6, 0x2a, 0x2c, 0xd0, 0x08, 0x1c, 0x58, 0x7c, 0xcf, 0x97, - 0xf5, 0x88, 0xd6, 0x7e, 0x51, 0x00, 0x25, 0x61, 0x28, 0x58, 0x25, 0x1f, 0x49, 0xd8, 0x95, 0xd8, - 0x9c, 0xb7, 0x33, 0xb1, 0x23, 0xae, 0x63, 0x13, 0x9c, 0x03, 0xde, 0x7d, 0xa8, 0xf9, 0xb1, 0x35, - 0xfc, 0xbc, 0x40, 0x82, 0xdf, 0x7c, 0x48, 0x17, 0xc5, 0xb4, 0x01, 0x8b, 0x26, 0xaf, 0xf4, 0x0f, - 0x5f, 0xed, 0x76, 0xdf, 0x44, 0xf1, 0x32, 0x19, 0x56, 0xd2, 0x22, 0x05, 0xb1, 0xda, 0x80, 0xb2, - 0x6f, 0x98, 0x1c, 0x24, 0xe9, 0x40, 0xa1, 0x7c, 0xed, 0x01, 0x2c, 0xec, 0x59, 0x27, 0xb8, 0xf0, - 0x39, 0xfd, 0xa7, 0x02, 0x15, 0xba, 0x32, 0x8d, 0x7e, 0x81, 0xf9, 0x14, 0x0a, 0x0f, 0xbb, 0xa3, - 0x57, 0x41, 0x05, 0x0b, 0xa1, 0x10, 0x58, 0xe8, 0x36, 0x5c, 0x8e, 0x48, 0xa6, 0x22, 0x28, 0x06, - 0x32, 0x93, 0x56, 0x12, 0xbe, 0x09, 0x79, 0x31, 0xa8, 0xea, 0x31, 0x63, 0x4a, 0x15, 0xd8, 0x04, - 0x18, 0x04, 0x47, 0x19, 0xdd, 0xb3, 0x41, 0x11, 0x10, 0x38, 0xda, 0xdf, 0x25, 0x80, 0x67, 0x8e, - 0x77, 0xd2, 0x73, 0x98, 0x8b, 0x1a, 0x2c, 0x4e, 0x22, 0x2a, 0x72, 0x54, 0xe2, 0xe5, 0xe6, 0xa4, - 0x60, 0x44, 0x59, 0x36, 0xa2, 0x09, 0xd5, 0x11, 0x0f, 0x02, 0x61, 0xc7, 0x40, 0xad, 0x7d, 0x35, - 0x8c, 0x54, 0x18, 0x1d, 0x3d, 0x16, 0xa1, 0xd9, 0x3a, 0x08, 0x30, 0x27, 0xec, 0x1c, 0x10, 0xb2, - 0x95, 0xc7, 0x42, 0x8f, 0x04, 0xd0, 0x3b, 0xb0, 0x32, 0xf9, 0xd2, 0xe9, 0x18, 0x76, 0x1f, 0x8b, - 0xe7, 0xc7, 0x3c, 0xab, 0xb6, 0x59, 0x43, 0xa8, 0x0d, 0xab, 0x01, 0xdb, 0x97, 0xa7, 0x54, 0xd8, - 0x94, 0xcc, 0x31, 0x8a, 0xbf, 0x45, 0xf6, 0x3d, 0xeb, 0xcc, 0xf0, 0x71, 0x7d, 0xa1, 0xa1, 0x6c, - 0x2f, 0xe8, 0x31, 0x83, 0xee, 0x00, 0x8b, 0xec, 0x9f, 0x1e, 0x8d, 0xac, 0x41, 0xbd, 0xca, 0x06, - 0x23, 0x9a, 0x46, 0xa0, 0x13, 0x47, 0x00, 0x58, 0x1d, 0x17, 0x38, 0xda, 0xb7, 0x0a, 0xac, 0x05, - 0xe4, 0x13, 0x1b, 0xc7, 0xa1, 0xa0, 0x59, 0xd7, 0x06, 0x88, 0x91, 0x4f, 0xe6, 0x83, 0x20, 0x2a, - 0x48, 0x5d, 0xa0, 0x62, 0xf6, 0x60, 0x3d, 0xd3, 0x8e, 0x82, 0xc7, 0xc2, 0x19, 0xac, 0x05, 0xf7, - 0x93, 0x94, 0x5b, 0x17, 0xd9, 0x64, 0xe7, 0x72, 0x23, 0x73, 0xdd, 0x82, 0x6e, 0xf8, 0xb0, 0x4a, - 0xb7, 0x68, 0xca, 0x89, 0xbc, 0x62, 0xa0, 0xc1, 0xe2, 0x33, 0xd1, 0xb9, 0xc0, 0x7c, 0x89, 0x77, - 0x0e, 0x27, 0x3e, 0x85, 0x6b, 0x19, 0xab, 0x16, 0x74, 0xe1, 0x3b, 0x05, 0xd6, 0x79, 0xde, 0xbc, - 0x8e, 0x1b, 0x93, 0x0c, 0x37, 0xa4, 0x18, 0xe5, 0x27, 0xfc, 0xec, 0x2b, 0xf6, 0x63, 0xa8, 0x67, - 0x9b, 0x54, 0xd0, 0xc7, 0x1f, 0x14, 0xb8, 0xc6, 0x4f, 0x94, 0x58, 0xdb, 0xd4, 0x37, 0x4f, 0x37, - 0xe3, 0x90, 0x7d, 0xfd, 0x0b, 0xca, 0xec, 0x50, 0xfe, 0xaa, 0xc0, 0x5a, 0x96, 0x65, 0x05, 0xcf, - 0xbb, 0xfb, 0x50, 0x8b, 0x83, 0x10, 0x3e, 0xa4, 0xb2, 0x8a, 0x82, 0x28, 0x96, 0xb8, 0x51, 0x94, - 0x0b, 0xde, 0x28, 0xb4, 0x1f, 0x15, 0xb8, 0xce, 0x7d, 0xf9, 0xd8, 0xb3, 0xb0, 0x3d, 0xfc, 0x8f, - 0x61, 0xfd, 0x9b, 0x02, 0x37, 0xf2, 0xed, 0xfb, 0x3f, 0x22, 0xfe, 0x15, 0xd4, 0x78, 0x9e, 0x90, - 0x1e, 0x31, 0xd1, 0x1d, 0x9a, 0x72, 0x63, 0xe1, 0x38, 0x48, 0x1d, 0x8c, 0xe1, 0x38, 0xbd, 0x57, - 0x08, 0xf6, 0x44, 0x29, 0x2c, 0x33, 0xf3, 0x73, 0x58, 0xfb, 0x49, 0x81, 0x46, 0x7a, 0xdf, 0x0a, - 0xc6, 0x5c, 0xa8, 0xa1, 0x90, 0xd8, 0x12, 0xe5, 0x62, 0x5b, 0x42, 0xfb, 0x43, 0x81, 0x9b, 0x33, - 0x8c, 0x2c, 0x18, 0xf5, 0xf7, 0xa0, 0x36, 0x88, 0xd5, 0xf0, 0xa8, 0xaf, 0x24, 0xd0, 0x66, 0x2b, - 0x88, 0x72, 0xff, 0x56, 0xd8, 0x5f, 0x80, 0xd6, 0x19, 0x61, 0xc3, 0x7b, 0x43, 0xe8, 0x6b, 0xcf, - 0xe1, 0xd6, 0x4c, 0xfd, 0x05, 0x2b, 0xf1, 0x08, 0xd4, 0x7e, 0x2a, 0x22, 0x7b, 0xf8, 0x0c, 0x8f, - 0x66, 0x3c, 0x24, 0x46, 0x54, 0x86, 0x19, 0x3b, 0xa7, 0x07, 0xc4, 0x39, 0x32, 0xfe, 0x33, 0xb8, - 0x9e, 0xbb, 0x5a, 0x31, 0x07, 0xda, 0x3f, 0x03, 0x5c, 0x7e, 0xc2, 0x24, 0xfa, 0xd8, 0x3b, 0xb3, - 0x06, 0x18, 0x3d, 0x80, 0x9a, 0xd0, 0xfc, 0x42, 0x6b, 0xa1, 0x02, 0xb9, 0xbb, 0xa6, 0xae, 0x67, - 0xf2, 0x89, 0x8b, 0xde, 0x87, 0x6a, 0xd4, 0x4f, 0x42, 0xab, 0xd1, 0xf2, 0x42, 0x9b, 0x4b, 0xbd, - 0x96, 0xc1, 0x0d, 0x66, 0x46, 0x4d, 0x9e, 0x78, 0xa6, 0xd8, 0x57, 0x8a, 0x67, 0xca, 0xdd, 0xa0, - 0x16, 0xcc, 0x07, 0x5d, 0x10, 0xb4, 0x1c, 0x0a, 0x44, 0x8d, 0x1e, 0x15, 0x25, 0x59, 0xc4, 0xa5, - 0x4e, 0x0a, 0xdd, 0x80, 0xd8, 0x49, 0xb9, 0x11, 0x12, 0x3b, 0x99, 0x6c, 0x1d, 0xec, 0xb0, 0x6e, - 0xa3, 0xf0, 0xfc, 0x45, 0x6f, 0x09, 0x78, 0xc8, 0xdd, 0x01, 0x55, 0xcd, 0x1b, 0x8a, 0x14, 0x09, - 0x6f, 0x43, 0x49, 0x91, 0xfc, 0x30, 0x95, 0x14, 0x25, 0x9f, 0x93, 0x9f, 0xc3, 0x4a, 0xc6, 0x85, - 0x16, 0x6d, 0xca, 0x50, 0x27, 0xaf, 0x44, 0xea, 0xd6, 0xd4, 0xf1, 0x40, 0x6f, 0xc6, 0x0d, 0x33, - 0xd6, 0x9b, 0x7d, 0xed, 0x8d, 0xf5, 0xe6, 0x5d, 0x4f, 0xf7, 0x61, 0x39, 0x75, 0xe9, 0x43, 0x37, - 0xc4, 0x87, 0x52, 0x4a, 0xe7, 0xc6, 0x94, 0x51, 0xe2, 0xa2, 0xe7, 0xb0, 0x9a, 0x75, 0xcb, 0x42, - 0x5b, 0x89, 0x3a, 0x96, 0xd2, 0xdb, 0x98, 0x2e, 0x40, 0x5c, 0xd4, 0x8f, 0x5e, 0xf0, 0x42, 0xe2, - 0xa1, 0x8d, 0x44, 0x38, 0xe4, 0xfb, 0x81, 0xba, 0x39, 0x6d, 0x98, 0xb8, 0x08, 0x43, 0x3d, 0xef, - 0xf8, 0x46, 0xb7, 0x12, 0x73, 0xb3, 0x2e, 0x20, 0xea, 0xed, 0xd9, 0x42, 0xc4, 0x45, 0x3e, 0x6c, - 0x4c, 0x3d, 0x34, 0xd0, 0x76, 0xbe, 0x9d, 0x72, 0x09, 0x56, 0xef, 0x9c, 0x53, 0x92, 0xb8, 0xe8, - 0x6b, 0xd8, 0x9a, 0x51, 0x73, 0xd1, 0xdd, 0x08, 0xf6, 0x99, 0xc5, 0x5f, 0xbd, 0x77, 0x6e, 0x59, - 0xe2, 0xa2, 0x23, 0x58, 0xcf, 0x29, 0x93, 0x48, 0x13, 0x6a, 0x41, 0x4e, 0xd5, 0x56, 0x6f, 0xcd, - 0x94, 0x21, 0xee, 0xc3, 0xe5, 0x2f, 0x96, 0x9a, 0xfc, 0xef, 0x98, 0x0f, 0x82, 0x9f, 0xa3, 0x79, - 0xf6, 0x5f, 0xcb, 0xbb, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x50, 0x31, 0x47, 0xbd, 0xad, 0x19, - 0x00, 0x00, +var fileDescriptor_office_8a5f7d4f1783db20 = []byte{ + // 1494 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6e, 0xdb, 0xc6, + 0x13, 0x07, 0x25, 0x4b, 0xb2, 0x46, 0x4e, 0x1c, 0xaf, 0x1d, 0x5b, 0x7f, 0x26, 0xb6, 0x15, 0x26, + 0x7f, 0xc0, 0x49, 0x00, 0xa9, 0x50, 0x03, 0xb4, 0x40, 0xd1, 0xa0, 0x88, 0x94, 0x1a, 0x6e, 0xad, + 0xc4, 0xa5, 0x9c, 0x06, 0xe9, 0x21, 0x06, 0x2d, 0xad, 0x59, 0xc2, 0x12, 0xc9, 0x70, 0x69, 0x09, + 0xe9, 0xb1, 0x87, 0xbe, 0x40, 0x0f, 0x3d, 0xf5, 0xd2, 0x57, 0x28, 0xfa, 0x08, 0x3d, 0xf4, 0x54, + 0xf4, 0xd4, 0x53, 0x6f, 0x7d, 0x8f, 0x16, 0xbb, 0xfc, 0xda, 0xe5, 0x87, 0xa4, 0xd0, 0x0d, 0xd0, + 0x9e, 0xc4, 0x99, 0x9d, 0x9d, 0x9d, 0xf9, 0xcd, 0xee, 0xcc, 0xee, 0x08, 0xd6, 0xad, 0xb3, 0x33, + 0x63, 0x80, 0x5b, 0xde, 0x4f, 0xd3, 0x76, 0x2c, 0xd7, 0x42, 0x65, 0x8f, 0x92, 0x6f, 0x3d, 0xb5, + 0xb1, 0x79, 0x72, 0xd0, 0x6b, 0xd9, 0xe7, 0x7a, 0x8b, 0x0d, 0xb5, 0xc8, 0xf0, 0xfc, 0x64, 0x4a, + 0x5a, 0x53, 0xe2, 0x89, 0x2a, 0x0f, 0x01, 0x3a, 0xd6, 0x78, 0x6c, 0x99, 0x2a, 0x26, 0x36, 0xaa, + 0x43, 0x05, 0x3b, 0x4e, 0xc7, 0x1a, 0xe2, 0xba, 0xd4, 0x90, 0xf6, 0x4a, 0x6a, 0x40, 0xa2, 0x4d, + 0x28, 0x63, 0xc7, 0xe9, 0x11, 0xbd, 0x5e, 0x68, 0x48, 0x7b, 0x55, 0xd5, 0xa7, 0x94, 0x0f, 0xa1, + 0x72, 0xac, 0xe9, 0xcf, 0x08, 0x76, 0xa8, 0xc8, 0x05, 0xc1, 0xce, 0x41, 0x97, 0xcd, 0xad, 0xaa, + 0x3e, 0x85, 0x64, 0x58, 0xa6, 0x5f, 0x4f, 0xb4, 0x31, 0xf6, 0x27, 0x87, 0xb4, 0x72, 0x0a, 0xc5, + 0x63, 0x4d, 0x47, 0x1b, 0x50, 0x72, 0x35, 0x3d, 0x9c, 0xe9, 0x11, 0xd4, 0x1a, 0x57, 0xd3, 0xb9, + 0x79, 0x01, 0x89, 0xee, 0x7b, 0x2a, 0x0f, 0x0d, 0xe2, 0xd6, 0x8b, 0x8d, 0xe2, 0x5e, 0xad, 0xbd, + 0xda, 0xf4, 0x11, 0xf0, 0xad, 0x51, 0x43, 0x01, 0xe5, 0x13, 0xb8, 0xba, 0x8f, 0x5d, 0xca, 0x3c, + 0xd6, 0x74, 0xa2, 0xe2, 0x57, 0x99, 0x96, 0x36, 0xa0, 0x66, 0xd9, 0xd8, 0xd1, 0x5c, 0xc3, 0x32, + 0x0f, 0xba, 0xfe, 0xa2, 0x3c, 0x4b, 0x39, 0x83, 0x55, 0x41, 0x17, 0xb1, 0x51, 0x1b, 0x60, 0x10, + 0x22, 0xc8, 0x14, 0xd6, 0xda, 0x28, 0xb0, 0x26, 0xc2, 0x56, 0xe5, 0xa4, 0xd0, 0x2e, 0x2c, 0xb9, + 0x9a, 0x4e, 0xea, 0x05, 0x66, 0x7b, 0x8d, 0xb3, 0x5d, 0x65, 0x03, 0xca, 0xd7, 0x12, 0xac, 0x74, + 0x1c, 0xac, 0xb9, 0x98, 0xf2, 0xf0, 0x2b, 0x1e, 0x0b, 0x49, 0xc4, 0x22, 0x72, 0xa6, 0x20, 0x38, + 0xb3, 0x03, 0xe0, 0x7d, 0x85, 0x28, 0x55, 0x55, 0x8e, 0x13, 0x77, 0x76, 0x29, 0xe9, 0x6c, 0x07, + 0xae, 0x70, 0x36, 0xe4, 0x73, 0x55, 0x79, 0x09, 0x2b, 0x5d, 0x3c, 0xc2, 0xa1, 0x23, 0x59, 0xd8, + 0x87, 0x5b, 0xa0, 0xc0, 0x6f, 0x81, 0x98, 0x91, 0xc5, 0x54, 0x23, 0x39, 0xfd, 0x39, 0x8d, 0xfc, + 0x4d, 0x82, 0x6a, 0x1f, 0xbb, 0xb9, 0x4c, 0xac, 0x43, 0xc5, 0xc4, 0x53, 0x16, 0x19, 0xcf, 0xbc, + 0x80, 0x44, 0x4d, 0x40, 0x86, 0x39, 0x70, 0xb0, 0x46, 0xf0, 0xb3, 0x28, 0x12, 0x4b, 0x2c, 0x12, + 0x29, 0x23, 0xe8, 0x1e, 0x5c, 0x73, 0xf0, 0xf0, 0x62, 0xc0, 0x4b, 0x97, 0x98, 0x74, 0x82, 0x1f, + 0x07, 0xa6, 0x9c, 0x04, 0xe6, 0x23, 0x80, 0xc0, 0xa5, 0x9c, 0xa8, 0xfc, 0x29, 0xc1, 0xd5, 0x3e, + 0x36, 0x87, 0x3d, 0xa2, 0xb7, 0x85, 0x6d, 0xc8, 0x2c, 0x93, 0x98, 0x65, 0x01, 0x49, 0x4f, 0xf9, + 0xb3, 0xe0, 0x48, 0x16, 0xd8, 0x50, 0x48, 0xa3, 0x9b, 0x50, 0xdd, 0x77, 0xac, 0x0b, 0x9b, 0xdb, + 0x89, 0x11, 0x83, 0xc2, 0x4d, 0xb0, 0x39, 0x0c, 0xf7, 0xa0, 0x4f, 0x51, 0x38, 0xe8, 0x17, 0x76, + 0x8e, 0x46, 0x9a, 0x7b, 0x66, 0x39, 0xe3, 0x83, 0x6e, 0xbd, 0xc4, 0xb2, 0x52, 0x82, 0x4f, 0xed, + 0x1a, 0x58, 0xa6, 0x8b, 0x4d, 0xd7, 0x87, 0x22, 0x20, 0xe3, 0x40, 0x55, 0x92, 0x40, 0x3d, 0x86, + 0x55, 0xc1, 0xcb, 0x9c, 0x68, 0x7d, 0x2b, 0xc1, 0xda, 0x3e, 0x03, 0x9c, 0x6a, 0x3b, 0xb4, 0xbc, + 0x54, 0xd3, 0x05, 0x38, 0xd2, 0x74, 0xc3, 0x64, 0x8b, 0xf9, 0x9a, 0xee, 0x34, 0x09, 0x76, 0x26, + 0xd8, 0x39, 0xd1, 0x6c, 0xe3, 0xc4, 0xd6, 0x1c, 0x6d, 0x4c, 0x9a, 0x2a, 0x7e, 0x75, 0x81, 0x89, + 0x1b, 0xc9, 0xaa, 0xdc, 0xbc, 0xcc, 0x33, 0x3e, 0xff, 0x78, 0x58, 0x00, 0x91, 0x45, 0x42, 0xde, + 0x94, 0xe6, 0xe4, 0x4d, 0x1e, 0xd3, 0x82, 0x88, 0xa9, 0x0c, 0xcb, 0x34, 0x02, 0xc7, 0x86, 0xbf, + 0xe7, 0x8b, 0x6a, 0x48, 0x2b, 0x3f, 0x4b, 0x80, 0xe2, 0x30, 0xe4, 0xcc, 0x92, 0x8f, 0x05, 0xec, + 0x0a, 0x6c, 0xce, 0xff, 0x53, 0xb1, 0x23, 0xb6, 0x65, 0x12, 0x9c, 0x01, 0xde, 0x03, 0xa8, 0xb9, + 0x91, 0x35, 0x7e, 0xbd, 0x40, 0x9c, 0xdf, 0xfe, 0x90, 0xca, 0x8b, 0x29, 0x03, 0x16, 0x4d, 0x3f, + 0xd3, 0x3f, 0x7a, 0x7d, 0xd0, 0x7d, 0x1b, 0xc9, 0x4b, 0x67, 0x58, 0x09, 0x8b, 0xe4, 0xc4, 0x6a, + 0x1b, 0x8a, 0xae, 0xa6, 0xfb, 0x20, 0x09, 0x05, 0x85, 0xf2, 0x95, 0x87, 0xb0, 0x7c, 0x68, 0x9c, + 0xe3, 0xdc, 0x75, 0xfa, 0x0f, 0x09, 0x2a, 0x74, 0x65, 0x1a, 0xfd, 0x1c, 0xf3, 0x29, 0x14, 0x0e, + 0xb6, 0x47, 0xaf, 0xbd, 0x0c, 0x16, 0x40, 0xc1, 0xb1, 0xd0, 0x1d, 0xb8, 0x12, 0x92, 0x4c, 0x85, + 0x97, 0x0c, 0x44, 0x26, 0xcd, 0x24, 0xfe, 0x26, 0xf4, 0x93, 0x41, 0x55, 0x8d, 0x18, 0x33, 0xb2, + 0xc0, 0x0e, 0xc0, 0xc0, 0x2b, 0x65, 0x74, 0xcf, 0x56, 0x58, 0x16, 0xe1, 0x38, 0xca, 0x5f, 0x05, + 0x80, 0xe7, 0x96, 0x73, 0xde, 0xb3, 0x98, 0x8b, 0x0a, 0xac, 0x4c, 0x43, 0x2a, 0x74, 0x54, 0xe0, + 0x65, 0x9e, 0x49, 0xce, 0x88, 0xa2, 0x68, 0x44, 0x13, 0xaa, 0x23, 0x3f, 0x08, 0x84, 0x95, 0x81, + 0x5a, 0xfb, 0x5a, 0x10, 0xa9, 0x20, 0x3a, 0x6a, 0x24, 0x42, 0x4f, 0xeb, 0xc0, 0xc3, 0x9c, 0xb0, + 0x3a, 0xc0, 0x9d, 0x56, 0x3f, 0x16, 0x6a, 0x28, 0x80, 0xde, 0x81, 0xf5, 0xe9, 0x97, 0x56, 0x47, + 0x33, 0xfb, 0x98, 0xaf, 0x1f, 0x65, 0x96, 0x6d, 0xd3, 0x86, 0x50, 0x1b, 0x36, 0x3c, 0xb6, 0x2b, + 0x4e, 0xa9, 0xb0, 0x29, 0xa9, 0x63, 0x14, 0x7f, 0x83, 0x1c, 0x39, 0xc6, 0x44, 0x73, 0x71, 0x7d, + 0xb9, 0x21, 0xed, 0x2d, 0xab, 0x11, 0x83, 0xee, 0x00, 0x83, 0x1c, 0x5d, 0x9c, 0x8e, 0x8c, 0x41, + 0xbd, 0xca, 0x06, 0x43, 0x9a, 0x46, 0xa0, 0x13, 0x45, 0x00, 0xbc, 0x08, 0x44, 0x1c, 0xe5, 0x1b, + 0x09, 0x36, 0x3d, 0xf2, 0xa9, 0x89, 0xa3, 0x50, 0xd0, 0x53, 0xd7, 0x06, 0x88, 0x90, 0x8f, 0x9f, + 0x07, 0x4e, 0x94, 0x93, 0xba, 0x44, 0xc6, 0xec, 0xc1, 0x56, 0xaa, 0x1d, 0x39, 0xcb, 0xc2, 0x04, + 0x36, 0xbd, 0xfb, 0x49, 0xc2, 0xad, 0xcb, 0x6c, 0xb2, 0x85, 0xdc, 0x48, 0x5d, 0x37, 0xa7, 0x1b, + 0x2e, 0x6c, 0xd0, 0x2d, 0x9a, 0x70, 0x22, 0x2b, 0x19, 0x28, 0xb0, 0xf2, 0x9c, 0x77, 0xce, 0x33, + 0x5f, 0xe0, 0x2d, 0xe0, 0xc4, 0xa7, 0x70, 0x3d, 0x65, 0xd5, 0x9c, 0x2e, 0xfc, 0x28, 0xc1, 0x96, + 0x7f, 0x6e, 0xde, 0xc4, 0x8d, 0x69, 0x8a, 0x1b, 0xd3, 0x98, 0x1b, 0x73, 0x72, 0x1b, 0x97, 0x12, + 0x96, 0x66, 0xde, 0x4e, 0x4a, 0x49, 0x08, 0x9e, 0x40, 0x3d, 0xdd, 0xe8, 0x9c, 0x28, 0x7c, 0x27, + 0xc1, 0x75, 0xbf, 0xe6, 0x44, 0xda, 0x66, 0xbe, 0x8a, 0xba, 0x29, 0x65, 0xf8, 0xcd, 0xaf, 0x30, + 0xf3, 0x83, 0xfd, 0x8b, 0x04, 0x9b, 0x69, 0x96, 0xe5, 0xac, 0x88, 0x0f, 0xa0, 0x16, 0x85, 0x29, + 0x78, 0x6a, 0xa5, 0xa5, 0x0d, 0x5e, 0x2c, 0x76, 0xe7, 0x28, 0xe6, 0xbc, 0x73, 0x28, 0xdf, 0x4b, + 0x70, 0xc3, 0xf7, 0xe5, 0x63, 0xc7, 0xc0, 0xe6, 0xf0, 0x5f, 0x86, 0xf5, 0xaf, 0x12, 0xdc, 0xcc, + 0xb6, 0xef, 0xbf, 0x88, 0xf8, 0x04, 0x6a, 0xfe, 0x39, 0x21, 0x3d, 0xa2, 0xa3, 0xbb, 0xf4, 0xc8, + 0x8d, 0xb9, 0x82, 0x91, 0x28, 0x9d, 0xc1, 0xf8, 0x42, 0x67, 0x3c, 0xb3, 0xa8, 0x2b, 0x3f, 0x48, + 0xd0, 0x48, 0xee, 0x5a, 0xce, 0x94, 0x4b, 0x35, 0x1c, 0x62, 0x1b, 0xa2, 0x98, 0x6f, 0x43, 0x28, + 0xbf, 0x4b, 0x70, 0x6b, 0x8e, 0x91, 0x39, 0x63, 0xfe, 0x1e, 0xac, 0x0c, 0x22, 0x35, 0x41, 0xd0, + 0xd7, 0x63, 0x60, 0xb3, 0x25, 0x04, 0xc1, 0x7f, 0x2a, 0xec, 0x2f, 0x41, 0xe9, 0x8c, 0xb0, 0xe6, + 0xbc, 0x25, 0xfc, 0x95, 0x17, 0x70, 0x7b, 0xae, 0xfe, 0x9c, 0x99, 0x78, 0x04, 0x72, 0x3f, 0x11, + 0x93, 0x43, 0x3c, 0xc1, 0xa3, 0x39, 0x4f, 0x8d, 0x11, 0x95, 0x61, 0xc6, 0x96, 0x54, 0x8f, 0x58, + 0xe0, 0xc4, 0x7f, 0x06, 0x37, 0x32, 0x57, 0xcb, 0xe7, 0x40, 0xfb, 0x27, 0x80, 0x2b, 0x4f, 0x99, + 0x44, 0x1f, 0x3b, 0x13, 0x63, 0x80, 0xd1, 0x43, 0xa8, 0x71, 0xed, 0x31, 0xb4, 0x19, 0x28, 0x10, + 0xfb, 0x6f, 0xf2, 0x56, 0x2a, 0x9f, 0xd8, 0xe8, 0x7d, 0xa8, 0x86, 0x1d, 0x27, 0xb4, 0x11, 0x2e, + 0xcf, 0x35, 0xc2, 0xe4, 0xeb, 0x29, 0x5c, 0x6f, 0x66, 0xd8, 0x06, 0x8a, 0x66, 0xf2, 0x9d, 0xa7, + 0x68, 0xa6, 0xd8, 0x2f, 0x6a, 0x41, 0xd9, 0xeb, 0x93, 0xa0, 0xb5, 0x40, 0x20, 0x6c, 0x05, 0xc9, + 0x28, 0xce, 0x22, 0x36, 0x75, 0x92, 0xeb, 0x17, 0x44, 0x4e, 0x8a, 0xad, 0x92, 0xc8, 0xc9, 0x78, + 0x73, 0x61, 0x9f, 0xf5, 0x23, 0xb9, 0x07, 0x32, 0xfa, 0x1f, 0x87, 0x87, 0xd8, 0x3f, 0x90, 0xe5, + 0xac, 0xa1, 0x50, 0x11, 0xf7, 0x7a, 0x14, 0x14, 0x89, 0x4f, 0x57, 0x41, 0x51, 0xfc, 0xc1, 0xf9, + 0x39, 0xac, 0xa7, 0x5c, 0x79, 0xd1, 0x8e, 0x08, 0x75, 0xfc, 0xd2, 0x24, 0xef, 0xce, 0x1c, 0xf7, + 0xf4, 0xa6, 0xdc, 0x41, 0x23, 0xbd, 0xe9, 0x17, 0xe3, 0x48, 0x6f, 0xd6, 0x05, 0xf6, 0x08, 0xd6, + 0x12, 0xd7, 0x42, 0x74, 0x93, 0x7f, 0x4a, 0x25, 0x74, 0x6e, 0xcf, 0x18, 0x25, 0x36, 0x7a, 0x01, + 0x1b, 0x69, 0xb7, 0x2c, 0xb4, 0x1b, 0x4b, 0x64, 0x09, 0xbd, 0x8d, 0xd9, 0x02, 0xc4, 0x46, 0xfd, + 0xf0, 0x8d, 0xcf, 0x1d, 0x3c, 0xb4, 0x1d, 0x0b, 0x87, 0x78, 0x3f, 0x90, 0x77, 0x66, 0x0d, 0x13, + 0x1b, 0x61, 0xa8, 0x67, 0x95, 0x6f, 0x74, 0x3b, 0x36, 0x37, 0xed, 0x02, 0x22, 0xdf, 0x99, 0x2f, + 0x44, 0x6c, 0xe4, 0xc2, 0xf6, 0xcc, 0xb2, 0x81, 0xf6, 0xb2, 0xed, 0x14, 0x53, 0xb0, 0x7c, 0x77, + 0x41, 0x49, 0x62, 0xa3, 0xaf, 0x60, 0x77, 0x4e, 0xce, 0x45, 0xf7, 0x42, 0xd8, 0xe7, 0x26, 0x7f, + 0xf9, 0xfe, 0xc2, 0xb2, 0xc4, 0x46, 0xa7, 0xb0, 0x95, 0x91, 0x26, 0x91, 0xc2, 0xe5, 0x82, 0x8c, + 0xac, 0x2d, 0xdf, 0x9e, 0x2b, 0x43, 0xec, 0x47, 0x6b, 0x5f, 0xac, 0x36, 0xfd, 0x3f, 0x6c, 0x3e, + 0xf0, 0x7e, 0x4e, 0xcb, 0xec, 0xdf, 0x98, 0x77, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xc1, + 0x31, 0xd6, 0xcf, 0x19, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index 7297633b3..6642f674f 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -120,7 +120,7 @@ message Comment { string replyUserName = 4; string contentID = 5; string content = 6; - string createTime = 7; + int32 createTime = 7; } message WorkMoment { @@ -169,8 +169,9 @@ message LikeOneWorkMomentResp { message CommentOneWorkMomentReq { string userID = 1; string workMomentID = 2; - string content = 3; - string operationID = 4; + string replyUserID = 3; + string content = 4; + string operationID = 5; } message CommentOneWorkMomentResp { @@ -203,7 +204,7 @@ message GetUserFriendWorkMomentsResp { message CommentsMsg { Comment comment = 1; - string workMomentsID = 2; + string workMomentID = 2; string content = 3; } @@ -215,7 +216,7 @@ message GetUserWorkMomentsCommentsMsgReq { message GetUserWorkMomentsCommentsMsgResp { CommonResp commonResp = 1; - repeated CommentsMsg commentsMsg = 2; + repeated CommentsMsg commentsMsgs = 2; server_api_params.ResponsePagination Pagination = 3; } From 9976b8132fc35d1ff65af4b20a80fce48b281fbb Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 17:45:33 +0800 Subject: [PATCH 020/128] getui --- internal/api/office/work_moments.go | 4 ++-- pkg/base_info/work_moments_struct.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 085b10eb4..ac7619dda 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -290,8 +290,8 @@ func GetUserWorkMomentsCommentsMsg(c *gin.Context) { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } resp.Data.CurrentPage = respPb.Pagination.CurrentPage - resp.Data.ShowNumber = respPb.Pagination.ShowNumber - resp.Data.CommentsMsg = respPb.CommentsMsg + resp.Data.ShowNumber = respPb.Pagination.ShowNumber + resp.Data.CommentMsgs = respPb.CommentsMsgs log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) c.JSON(http.StatusOK, resp) } diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 8c37b1534..22d38df37 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -74,9 +74,9 @@ type GetUserWorkMomentsCommentsMsgReq struct { type GetUserWorkMomentsCommentsMsgResp struct { CommResp Data struct { - CommentsMsg []*office.CommentsMsg `json:"comments"` - CurrentPage int32 `json:"currentPage"` - ShowNumber int32 `json:"showNumber"` + CommentMsgs []*office.CommentsMsg `json:"comments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` } `json:"data"` } @@ -94,4 +94,4 @@ type ClearUserWorkMomentsCommentsMsgReq struct { type ClearUserWorkMomentsCommentsMsgResp struct { CommResp -} \ No newline at end of file +} From 27cba5ba310ea08205ac3255bb8ffdd2a4171e7f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 18:16:28 +0800 Subject: [PATCH 021/128] getui --- config/config.yaml | 4 ++-- pkg/common/db/model.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index f0e25250c..cc14788ec 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -25,8 +25,8 @@ mongo: dbTimeout: 10 dbDatabase: openIM #mongo db 默认即可 dbSource: admin - dbUserName: #mongo用户名,建议先不设置 - dbPassword: #mongo密码,建议先不设置 + dbUserName: "openIM" #mongo用户名,建议先不设置 + dbPassword: "123456" #mongo密码,建议先不设置 dbMaxPoolSize: 20 dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index fc6ae3faa..bd465d6ff 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -47,7 +47,7 @@ func init() { uri = config.Config.Mongo.DBUri } else { 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], + 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", From ff5cbc490e80d7e073d08e8c43b962b4a6fc7bc2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 15 Apr 2022 18:22:27 +0800 Subject: [PATCH 022/128] getui --- config/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index cc14788ec..b2393c2a5 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -25,8 +25,8 @@ mongo: dbTimeout: 10 dbDatabase: openIM #mongo db 默认即可 dbSource: admin - dbUserName: "openIM" #mongo用户名,建议先不设置 - dbPassword: "123456" #mongo密码,建议先不设置 + dbUserName: #mongo用户名,建议先不设置 + dbPassword: #mongo密码,建议先不设置 dbMaxPoolSize: 20 dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 @@ -167,7 +167,7 @@ longconnsvr: websocketMaxMsgLen: 4096 websocketTimeOut: 10 -## 推送只能开启一个 enable=true代表开启 +## 推送只能开启一个 enable代表开启 push: tpns: #腾讯推送,暂未测试 暂不要使用 ios: From c21634012070d835e2a0fd0d486e3c15a596edb5 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Fri, 15 Apr 2022 19:48:17 +0800 Subject: [PATCH 023/128] organization --- cmd/open_im_api/main.go | 17 + internal/api/organization/organization.go | 400 ++++++++++++++++++ internal/rpc/organization/organization.go | 70 +++ pkg/base_info/organization_api_struct.go | 101 +++++ pkg/common/db/model_struct.go | 15 +- .../im_mysql_model/organization_model.go | 155 +++++++ pkg/common/token_verify/jwt_token.go | 8 + pkg/proto/organization/organization.proto | 8 +- 8 files changed, 763 insertions(+), 11 deletions(-) create mode 100644 internal/api/organization/organization.go create mode 100644 pkg/base_info/organization_api_struct.go create mode 100644 pkg/common/db/mysql_model/im_mysql_model/organization_model.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 6bbb43dbc..f9f8103f4 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" @@ -136,6 +137,22 @@ func main() { officeGroup.POST("/send_msg_to_tag", office.SendMsg2Tag) officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs) } + + organizationGroup := r.Group("/organization") + { + organizationGroup.POST("/create_department", organization.CreateDepartment) + organizationGroup.POST("/update_department", organization.UpdateDepartment) + organizationGroup.POST("/get_department", organization.GetDepartment) + organizationGroup.POST("/delete_department", organization.DeleteDepartment) + organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) + organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) + 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("/delete_organization_user", organization.DeleteOrganizationUser) + organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) + } + go apiThird.MinioInit() ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") flag.Parse() diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go new file mode 100644 index 000000000..13e1b1c30 --- /dev/null +++ b/internal/api/organization/organization.go @@ -0,0 +1,400 @@ +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/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{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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 GetDepartment(c *gin.Context) { + params := api.GetDepartmentReq{} + 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.GetDepartmentReq{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + client := rpc.NewOrganizationClient(etcdConn) + RpcResp, err := client.GetDepartment(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.GetDepartmentResp{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 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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{} + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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.UserInDepartmentList} + apiResp.Data = jsonData.JsonDataList(RpcResp.UserInDepartmentList) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) + c.JSON(http.StatusOK, apiResp) +} diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 0eddd72e6..c858758f9 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -3,10 +3,15 @@ package organization import ( "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" rpc "Open_IM/pkg/proto/organization" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" + "time" "context" "google.golang.org/grpc" @@ -64,5 +69,70 @@ func (s *organizationServer) Run() { } 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.IsMangerUserID(req.OpUserID) { + errMsg := "is not app manger " + req.OpUserID + " " + req.OperationID + log.Error(req.OperationID, errMsg) + return &rpc.CreateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + } + + department := db.Department{} + utils.CopyStructFields(&department, req.DepartmentInfo) + if department.DepartmentID == "" { + department.DepartmentID = utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) + } + if imdb.CreateDepartment(&department) != nil { + + } + + err, createdDepartment := imdb.GetDepartment(department.DepartmentID) + if err != nil { + + } + resp := &rpc.CreateDepartmentResp{DepartmentInfo: &open_im_sdk.Department{}} + utils.CopyStructFields(resp.DepartmentInfo, createdDepartment) + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", resp) + return resp, nil + +} + +func (s *organizationServer) UpdateDepartment(ctx context.Context, req *rpc.UpdateDepartmentReq) (*rpc.UpdateDepartmentResp, error) { + return nil, nil +} + +func (s *organizationServer) GetDepartment(ctx context.Context, req *rpc.GetDepartmentReq) (*rpc.GetDepartmentResp, error) { + return nil, nil +} + +func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.DeleteDepartmentReq) (*rpc.DeleteDepartmentResp, error) { + return nil, nil +} + +func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rpc.CreateOrganizationUserReq) (*rpc.CreateOrganizationUserResp, error) { + return nil, nil +} + +func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rpc.UpdateOrganizationUserReq) (*rpc.UpdateOrganizationUserResp, error) { + return nil, nil +} + +func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rpc.CreateDepartmentMemberReq) (*rpc.CreateDepartmentMemberResp, error) { + return nil, nil +} + +func (s *organizationServer) GetUserInDepartment(ctx context.Context, req *rpc.GetUserInDepartmentReq) (*rpc.GetUserInDepartmentResp, error) { + return nil, nil +} + +func (s *organizationServer) UpdateUserInDepartment(ctx context.Context, req *rpc.UpdateUserInDepartmentReq) (*rpc.UpdateUserInDepartmentResp, error) { + return nil, nil +} + +func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rpc.DeleteOrganizationUserReq) (*rpc.DeleteOrganizationUserResp, error) { + return nil, nil +} + +func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.GetDepartmentMemberReq) (*rpc.GetDepartmentMemberResp, error) { return nil, nil } diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go new file mode 100644 index 000000000..e84425250 --- /dev/null +++ b/pkg/base_info/organization_api_struct.go @@ -0,0 +1,101 @@ +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 GetDepartmentReq struct { + OperationID string `json:"operationID" binding:"required"` + DepartmentID string +} +type GetDepartmentResp 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 +} +type DeleteDepartmentResp struct { + CommResp +} + +type CreateOrganizationUserReq struct { + OperationID string `json:"operationID" binding:"required"` + OrganizationUser *open_im_sdk.OrganizationUser +} +type CreateOrganizationUserResp struct { + CommResp +} + +type UpdateOrganizationUserReq struct { + OperationID string `json:"operationID" binding:"required"` + OrganizationUser *open_im_sdk.OrganizationUser +} +type UpdateOrganizationUserResp struct { + CommResp +} + +type CreateDepartmentMemberReq struct { + OperationID string `json:"operationID" binding:"required"` + UserInDepartment *open_im_sdk.UserInDepartment +} + +type CreateDepartmentMemberResp struct { + CommResp +} + +type GetUserInDepartmentReq struct { + UserID string + 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"` + UserInDepartment *open_im_sdk.UserInDepartment +} +type UpdateUserInDepartmentResp struct { + CommResp +} + +type DeleteOrganizationUserReq struct { + UserID string + OperationID string `json:"operationID" binding:"required"` +} +type DeleteOrganizationUserResp struct { + CommResp +} + +type GetDepartmentMemberReq struct { + DepartmentID string + OperationID string `json:"operationID" binding:"required"` +} +type GetDepartmentMemberResp struct { + CommResp + UserInDepartmentList []*open_im_sdk.UserInDepartment `json:"-"` + Data []map[string]interface{} `json:"data"` +} diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 8f3d97ad0..64780cb55 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -257,13 +257,14 @@ func (OrganizationUser) TableName() string { } 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"` + Position string `gorm:"column:position;size:256" json:"position"` + Leader int32 `gorm:"column:leader" json:"leader"` + Status int32 `gorm:"column:status" json:"status"` + 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/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..bdb595e3f --- /dev/null +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -0,0 +1,155 @@ +package im_mysql_model + +import ( + "Open_IM/pkg/common/db" + "errors" + "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 + 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 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(userInDepartmentList []db.DepartmentMember) error { + if len(userInDepartmentList) == 0 { + return errors.New("args failed") + } + if err := DeleteUserInAllDepartment(userInDepartmentList[0].UserID); err != nil { + return err + } + for _, v := range userInDepartmentList { + if err := CreateDepartmentMember(&v); err != nil { + return err + } + } + return nil +} + +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).Find(&departmentMemberList).Error + + var userIDList []string = make([]string, 0) + for _, v := range departmentMemberList { + userIDList = append(userIDList, v.UserID) + } + return err, userIDList +} diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 69b112bf7..0687fa564 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -138,6 +138,14 @@ 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 { diff --git a/pkg/proto/organization/organization.proto b/pkg/proto/organization/organization.proto index 498d625aa..67d2b7a8e 100644 --- a/pkg/proto/organization/organization.proto +++ b/pkg/proto/organization/organization.proto @@ -114,12 +114,12 @@ message UpdateUserInDepartmentResp{ } -message DeleteOrganizationReq{ +message DeleteOrganizationUserReq{ string userID = 1; string operationID = 2; string opUserID = 3; } -message DeleteOrganizationResp{ +message DeleteOrganizationUserResp{ int32 errCode = 1; string errMsg = 2; } @@ -139,7 +139,7 @@ message GetDepartmentMemberResp{ service organization{ - rpc createDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); + rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp); rpc GetDepartment(GetDepartmentReq) returns(GetDepartmentResp); rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp); @@ -148,7 +148,7 @@ service organization{ rpc CreateDepartmentMember(CreateDepartmentMemberReq) returns(CreateDepartmentMemberResp); rpc GetUserInDepartment(GetUserInDepartmentReq) returns(GetUserInDepartmentResp); rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp); - rpc DeleteOrganization(DeleteOrganizationReq) returns(DeleteOrganizationResp); + rpc DeleteOrganizationUser(DeleteOrganizationUserReq) returns(DeleteOrganizationUserResp); rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp); } From cc405b83e2661042ee123249acd712dd885b680a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:10:10 +0800 Subject: [PATCH 024/128] organization --- cmd/Open-IM-SDK-Core | 2 +- cmd/open_im_api/main.go | 3 +- cmd/rpc/open_im_organization/Makefile | 25 + cmd/rpc/open_im_organization/main.go | 15 + internal/api/organization/organization.go | 40 +- internal/msg_gateway/gate/rpc_server.go | 2 +- internal/rpc/group/group.go | 18 +- internal/rpc/msg/group_notification.go | 2 +- internal/rpc/organization/organization.go | 252 ++++++++- internal/rpc/user/user.go | 12 +- pkg/base_info/organization_api_struct.go | 9 + pkg/common/db/model_struct.go | 14 +- .../im_mysql_model/organization_model.go | 52 +- pkg/common/token_verify/jwt_token.go | 2 +- pkg/common/utils/utils.go | 2 +- pkg/proto/organization/organization.proto | 25 +- pkg/proto/sdk_ws/ws.pb.go | 522 +++++++++--------- pkg/proto/sdk_ws/ws.proto | 2 +- script/path_info.cfg | 4 +- 19 files changed, 670 insertions(+), 333 deletions(-) create mode 100644 cmd/rpc/open_im_organization/Makefile create mode 100644 cmd/rpc/open_im_organization/main.go diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index a4b710de8..3ecd23203 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit a4b710de8df31fe570fd90895887edef30f3a64c +Subproject commit 3ecd23203cd6bd746b1fcb0c70755bd2cbf5361c diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 1a6a51808..57d534b0c 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -152,7 +152,7 @@ func main() { { organizationGroup.POST("/create_department", organization.CreateDepartment) organizationGroup.POST("/update_department", organization.UpdateDepartment) - organizationGroup.POST("/get_department", organization.GetDepartment) + organizationGroup.POST("/get_department", organization.GetSubDepartment) organizationGroup.POST("/delete_department", organization.DeleteDepartment) organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) @@ -161,6 +161,7 @@ func main() { organizationGroup.POST("/update_user_In_department", organization.UpdateUserInDepartment) organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser) organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) + organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) } go apiThird.MinioInit() 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..cb603ca37 --- /dev/null +++ b/cmd/rpc/open_im_organization/main.go @@ -0,0 +1,15 @@ +package main + +import ( + "Open_IM/internal/rpc/group" + "flag" + "fmt" +) + +func main() { + rpcPort := flag.Int("port", 10100, "get RpcOrganizationPort from cmd,default 10100 as port") + flag.Parse() + fmt.Println("start organization rpc server, port: ", *rpcPort) + rpcServer := group.NewGroupServer(*rpcPort) + rpcServer.Run() +} diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 13e1b1c30..338670c45 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -84,14 +84,14 @@ func UpdateDepartment(c *gin.Context) { c.JSON(http.StatusOK, apiResp) } -func GetDepartment(c *gin.Context) { +func GetSubDepartment(c *gin.Context) { params := api.GetDepartmentReq{} 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.GetDepartmentReq{} + req := &rpc.GetSubDepartmentReq{} utils.CopyStructFields(req, ¶ms) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID @@ -105,7 +105,7 @@ func GetDepartment(c *gin.Context) { 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.NewOrganizationClient(etcdConn) - RpcResp, err := client.GetDepartment(context.Background(), req) + RpcResp, err := client.GetSubDepartment(context.Background(), req) if err != nil { errMsg := "rpc GetDepartment failed " + err.Error() + req.String() log.NewError(req.OperationID, errMsg) @@ -398,3 +398,37 @@ func GetDepartmentMember(c *gin.Context) { 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()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + 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.GetDepartmentMemberResp{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/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/rpc/group/group.go b/internal/rpc/group/group.go index b4520e92a..e22ab18bf 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -202,7 +202,7 @@ 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 } @@ -331,7 +331,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) } @@ -467,8 +467,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) @@ -948,7 +948,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 } @@ -977,7 +977,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 +996,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 +1014,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 +1030,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 } diff --git a/internal/rpc/msg/group_notification.go b/internal/rpc/msg/group_notification.go index d6def3ff2..56052573b 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") diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index c858758f9..ec22e9841 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -69,9 +69,9 @@ func (s *organizationServer) Run() { } 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.IsMangerUserID(req.OpUserID) { - errMsg := "is not app manger " + req.OpUserID + " " + req.OperationID + 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: constant.ErrAccess.ErrMsg}, nil } @@ -81,58 +81,268 @@ func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.Crea if department.DepartmentID == "" { department.DepartmentID = utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) } - if imdb.CreateDepartment(&department) != nil { - + 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) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) return resp, nil - } func (s *organizationServer) UpdateDepartment(ctx context.Context, req *rpc.UpdateDepartmentReq) (*rpc.UpdateDepartmentResp, error) { - return nil, 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.UpdateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.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) + return resp, nil } -func (s *organizationServer) GetDepartment(ctx context.Context, req *rpc.GetDepartmentReq) (*rpc.GetDepartmentResp, error) { - return nil, 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) + 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) { - return nil, 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.DeleteDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.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) + return resp, nil } func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rpc.CreateOrganizationUserReq) (*rpc.CreateOrganizationUserResp, error) { - return nil, 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: constant.ErrAccess.ErrMsg}, nil + } + organizationUser := db.OrganizationUser{} + utils.CopyStructFields(&organizationUser, req.OrganizationUser) + 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) + return resp, nil } func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rpc.UpdateOrganizationUserReq) (*rpc.UpdateOrganizationUserResp, error) { - return nil, 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: constant.ErrAccess.ErrMsg}, nil + } + organizationUser := db.OrganizationUser{} + utils.CopyStructFields(&organizationUser, req.OrganizationUser) + 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) + return resp, nil } func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rpc.CreateDepartmentMemberReq) (*rpc.CreateDepartmentMemberResp, error) { - return nil, 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.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + } + departmentMember := db.DepartmentMember{} + utils.CopyStructFields(&departmentMember, req.UserInDepartment) + log.Debug(req.OperationID, "src ", *req.UserInDepartment, "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) + return resp, nil +} + +func (s *organizationServer) GetUserInDepartmentByUserID(userID 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") + } + 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) + resp.DepartmentMemberList = append(resp.DepartmentMemberList, &v1) + } + return resp, nil } func (s *organizationServer) GetUserInDepartment(ctx context.Context, req *rpc.GetUserInDepartmentReq) (*rpc.GetUserInDepartmentResp, error) { - return nil, nil + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + r, err := s.GetUserInDepartmentByUserID(req.UserID) + 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) { - return nil, 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.UpdateUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.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) + 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: constant.ErrAccess.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) + return resp, nil } func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rpc.DeleteOrganizationUserReq) (*rpc.DeleteOrganizationUserResp, error) { - return nil, 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.DeleteOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.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) + return resp, nil } func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.GetDepartmentMemberReq) (*rpc.GetDepartmentMemberResp, error) { - return nil, nil + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) + err, departmentMemberUserIDList := imdb.GetDepartmentMemberUserIDList(req.DepartmentID) + if err != nil { + errMsg := req.OperationID + " " + "GetDepartmentMemberUserIDList failed " + err.Error() + log.Error(req.OperationID, errMsg, req.DepartmentID) + return &rpc.GetDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil + } + + resp := rpc.GetDepartmentMemberResp{} + for _, v := range departmentMemberUserIDList { + r, err := s.GetUserInDepartmentByUserID(v) + if err != nil { + log.Error(req.OperationID, "GetUserInDepartmentByUserID failed ", err.Error()) + continue + } + log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", *r) + resp.UserInDepartmentList = append(resp.UserInDepartmentList, r) + } + + 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..1234b2be9 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -278,8 +278,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 +299,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 +315,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/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index e84425250..0289b2f81 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -99,3 +99,12 @@ type GetDepartmentMemberResp struct { UserInDepartmentList []*open_im_sdk.UserInDepartment `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/common/db/model_struct.go b/pkg/common/db/model_struct.go index 64780cb55..9591050e0 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -227,9 +227,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"` } @@ -243,7 +243,7 @@ type OrganizationUser struct { 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"` + 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"` @@ -259,10 +259,10 @@ func (OrganizationUser) TableName() string { 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"` + 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"` - Status int32 `gorm:"column:status" json:"status"` + 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"` } 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 index bdb595e3f..bf44972ab 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -2,7 +2,6 @@ package im_mysql_model import ( "Open_IM/pkg/common/db" - "errors" "time" ) @@ -72,6 +71,16 @@ func CreateOrganizationUser(organizationUser *db.OrganizationUser) error { 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 { @@ -101,25 +110,34 @@ func GetUserInDepartment(userID string) (error, []db.DepartmentMember) { return err, nil } var departmentMemberList []db.DepartmentMember - err = dbConn.Table("department_members").Where("user_id=?", userID).Find(&departmentMemberList).Error + err = dbConn.Table("department_members").Where("user_id=?", userID).Take(&departmentMemberList).Error return err, departmentMemberList } -func UpdateUserInDepartment(userInDepartmentList []db.DepartmentMember) error { - if len(userInDepartmentList) == 0 { - return errors.New("args failed") - } - if err := DeleteUserInAllDepartment(userInDepartmentList[0].UserID); err != nil { +func UpdateUserInDepartment(departmentMember *db.DepartmentMember, args map[string]interface{}) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { return err } - for _, v := range userInDepartmentList { - if err := CreateDepartmentMember(&v); err != nil { - return err - } + if err = dbConn.Table("department_members").Where("department_id=? ADN user_id=?", departmentMember.DepartmentID, departmentMember.UserID). + Updates(departmentMember).Error; err != nil { + return err + } + if args != nil { + return dbConn.Table("department_members").Where("department_id=? ADN 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=? ADN user_id=?", departmentID, userID).Delete(db.DepartmentMember{}).Error +} + func DeleteUserInAllDepartment(userID string) error { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { @@ -140,13 +158,21 @@ func DeleteOrganizationUser(OrganizationUserID string) error { } func GetDepartmentMemberUserIDList(departmentID string) (error, []string) { + //dbConn, err := db.DB.MysqlDB.DefaultGormDB() + //if err != nil { + // return err + //} + //return dbConn.Table("department_members").Where("user_id=?", userID).Delete(db.DepartmentMember{}).Error + 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).Find(&departmentMemberList).Error - + 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) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index f362ef42c..1f9cdd66f 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -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 { 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/organization/organization.proto b/pkg/proto/organization/organization.proto index 67d2b7a8e..343ac43ea 100644 --- a/pkg/proto/organization/organization.proto +++ b/pkg/proto/organization/organization.proto @@ -28,13 +28,13 @@ message UpdateDepartmentResp{ } -message GetDepartmentReq{ +message GetSubDepartmentReq{ string departmentID = 1; string operationID = 2; string opUserID = 3; } -message GetDepartmentResp{ +message GetSubDepartmentResp{ int32 errCode = 1; string errMsg = 2; repeated server_api_params.Department departmentList = 3; @@ -104,7 +104,7 @@ message GetUserInDepartmentResp{ message UpdateUserInDepartmentReq{ - server_api_params.UserInDepartment userInDepartment = 1; + server_api_params.DepartmentMember departmentMember = 1; string operationID = 2; string opUserID = 3; } @@ -114,6 +114,17 @@ message UpdateUserInDepartmentResp{ } +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; @@ -141,14 +152,18 @@ message GetDepartmentMemberResp{ service organization{ rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp); - rpc GetDepartment(GetDepartmentReq) returns(GetDepartmentResp); + 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 DeleteOrganizationUser(DeleteOrganizationUserReq) returns(DeleteOrganizationUserResp); rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp); } diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index 6e29ab2d8..27901e90f 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_966fa482a95c53be, []int{0} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{1} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{2} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{3} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{4} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{5} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{6} + return fileDescriptor_ws_822d08ca95807876, []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_966fa482a95c53be, []int{7} + return fileDescriptor_ws_822d08ca95807876, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -878,7 +878,7 @@ 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_966fa482a95c53be, []int{8} + return fileDescriptor_ws_822d08ca95807876, []int{8} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -989,7 +989,7 @@ 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_966fa482a95c53be, []int{9} + return fileDescriptor_ws_822d08ca95807876, []int{9} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1103,7 +1103,7 @@ 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_966fa482a95c53be, []int{10} + return fileDescriptor_ws_822d08ca95807876, []int{10} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1173,7 +1173,7 @@ func (m *DepartmentMember) GetEx() string { } type UserInDepartment struct { - DepartmentUser *OrganizationUser `protobuf:"bytes,1,opt,name=departmentUser" json:"departmentUser,omitempty"` + 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:"-"` @@ -1184,7 +1184,7 @@ 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_966fa482a95c53be, []int{11} + return fileDescriptor_ws_822d08ca95807876, []int{11} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1204,9 +1204,9 @@ func (m *UserInDepartment) XXX_DiscardUnknown() { var xxx_messageInfo_UserInDepartment proto.InternalMessageInfo -func (m *UserInDepartment) GetDepartmentUser() *OrganizationUser { +func (m *UserInDepartment) GetOrganizationUser() *OrganizationUser { if m != nil { - return m.DepartmentUser + return m.OrganizationUser } return nil } @@ -1231,7 +1231,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_966fa482a95c53be, []int{12} + return fileDescriptor_ws_822d08ca95807876, []int{12} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1285,7 +1285,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_966fa482a95c53be, []int{13} + return fileDescriptor_ws_822d08ca95807876, []int{13} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1336,7 +1336,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_966fa482a95c53be, []int{14} + return fileDescriptor_ws_822d08ca95807876, []int{14} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1368,7 +1368,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_966fa482a95c53be, []int{15} + return fileDescriptor_ws_822d08ca95807876, []int{15} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1415,7 +1415,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_966fa482a95c53be, []int{16} + return fileDescriptor_ws_822d08ca95807876, []int{16} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1484,7 +1484,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_966fa482a95c53be, []int{17} + return fileDescriptor_ws_822d08ca95807876, []int{17} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1645,7 +1645,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_966fa482a95c53be, []int{18} + return fileDescriptor_ws_822d08ca95807876, []int{18} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1713,7 +1713,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_966fa482a95c53be, []int{19} + return fileDescriptor_ws_822d08ca95807876, []int{19} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1770,7 +1770,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_966fa482a95c53be, []int{20} + return fileDescriptor_ws_822d08ca95807876, []int{20} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1839,7 +1839,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_966fa482a95c53be, []int{21} + return fileDescriptor_ws_822d08ca95807876, []int{21} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1894,7 +1894,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_966fa482a95c53be, []int{22} + return fileDescriptor_ws_822d08ca95807876, []int{22} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1950,7 +1950,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_966fa482a95c53be, []int{23} + return fileDescriptor_ws_822d08ca95807876, []int{23} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2005,7 +2005,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_966fa482a95c53be, []int{24} + return fileDescriptor_ws_822d08ca95807876, []int{24} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2060,7 +2060,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_966fa482a95c53be, []int{25} + return fileDescriptor_ws_822d08ca95807876, []int{25} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2116,7 +2116,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_966fa482a95c53be, []int{26} + return fileDescriptor_ws_822d08ca95807876, []int{26} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2179,7 +2179,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_966fa482a95c53be, []int{27} + return fileDescriptor_ws_822d08ca95807876, []int{27} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2242,7 +2242,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_966fa482a95c53be, []int{28} + return fileDescriptor_ws_822d08ca95807876, []int{28} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2304,7 +2304,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_966fa482a95c53be, []int{29} + return fileDescriptor_ws_822d08ca95807876, []int{29} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2358,7 +2358,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_966fa482a95c53be, []int{30} + return fileDescriptor_ws_822d08ca95807876, []int{30} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2414,7 +2414,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_966fa482a95c53be, []int{31} + return fileDescriptor_ws_822d08ca95807876, []int{31} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2483,7 +2483,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_966fa482a95c53be, []int{32} + return fileDescriptor_ws_822d08ca95807876, []int{32} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2544,7 +2544,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_966fa482a95c53be, []int{33} + return fileDescriptor_ws_822d08ca95807876, []int{33} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2598,7 +2598,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_966fa482a95c53be, []int{34} + return fileDescriptor_ws_822d08ca95807876, []int{34} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2652,7 +2652,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_966fa482a95c53be, []int{35} + return fileDescriptor_ws_822d08ca95807876, []int{35} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2705,7 +2705,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_966fa482a95c53be, []int{36} + return fileDescriptor_ws_822d08ca95807876, []int{36} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2751,7 +2751,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_966fa482a95c53be, []int{37} + return fileDescriptor_ws_822d08ca95807876, []int{37} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2791,7 +2791,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_966fa482a95c53be, []int{38} + return fileDescriptor_ws_822d08ca95807876, []int{38} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2838,7 +2838,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_966fa482a95c53be, []int{39} + return fileDescriptor_ws_822d08ca95807876, []int{39} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2886,7 +2886,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_966fa482a95c53be, []int{40} + return fileDescriptor_ws_822d08ca95807876, []int{40} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -2939,7 +2939,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_966fa482a95c53be, []int{41} + return fileDescriptor_ws_822d08ca95807876, []int{41} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -2977,7 +2977,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_966fa482a95c53be, []int{42} + return fileDescriptor_ws_822d08ca95807876, []int{42} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3015,7 +3015,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_966fa482a95c53be, []int{43} + return fileDescriptor_ws_822d08ca95807876, []int{43} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3053,7 +3053,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_966fa482a95c53be, []int{44} + return fileDescriptor_ws_822d08ca95807876, []int{44} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3092,7 +3092,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_966fa482a95c53be, []int{45} + return fileDescriptor_ws_822d08ca95807876, []int{45} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3131,7 +3131,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_966fa482a95c53be, []int{46} + return fileDescriptor_ws_822d08ca95807876, []int{46} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3171,7 +3171,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_966fa482a95c53be, []int{47} + return fileDescriptor_ws_822d08ca95807876, []int{47} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3225,7 +3225,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_966fa482a95c53be, []int{48} + return fileDescriptor_ws_822d08ca95807876, []int{48} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3271,7 +3271,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_966fa482a95c53be, []int{49} + return fileDescriptor_ws_822d08ca95807876, []int{49} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3324,7 +3324,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_966fa482a95c53be, []int{50} + return fileDescriptor_ws_822d08ca95807876, []int{50} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3591,7 +3591,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_966fa482a95c53be, []int{51} + return fileDescriptor_ws_822d08ca95807876, []int{51} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3859,7 +3859,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_966fa482a95c53be, []int{52} + return fileDescriptor_ws_822d08ca95807876, []int{52} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -3955,7 +3955,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_966fa482a95c53be, []int{53} + return fileDescriptor_ws_822d08ca95807876, []int{53} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4010,7 +4010,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_966fa482a95c53be, []int{54} + return fileDescriptor_ws_822d08ca95807876, []int{54} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4071,7 +4071,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_966fa482a95c53be, []int{55} + return fileDescriptor_ws_822d08ca95807876, []int{55} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4126,7 +4126,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_966fa482a95c53be, []int{56} + return fileDescriptor_ws_822d08ca95807876, []int{56} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4187,7 +4187,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_966fa482a95c53be, []int{57} + return fileDescriptor_ws_822d08ca95807876, []int{57} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4242,7 +4242,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_966fa482a95c53be, []int{58} + return fileDescriptor_ws_822d08ca95807876, []int{58} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4300,7 +4300,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_966fa482a95c53be, []int{59} + return fileDescriptor_ws_822d08ca95807876, []int{59} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4335,7 +4335,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_966fa482a95c53be, []int{60} + return fileDescriptor_ws_822d08ca95807876, []int{60} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4403,7 +4403,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_966fa482a95c53be, []int{61} + return fileDescriptor_ws_822d08ca95807876, []int{61} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4457,7 +4457,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_966fa482a95c53be, []int{62} + return fileDescriptor_ws_822d08ca95807876, []int{62} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4508,7 +4508,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_966fa482a95c53be, []int{63} + return fileDescriptor_ws_822d08ca95807876, []int{63} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4543,7 +4543,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_966fa482a95c53be, []int{64} + return fileDescriptor_ws_822d08ca95807876, []int{64} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4608,7 +4608,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_966fa482a95c53be, []int{65} + return fileDescriptor_ws_822d08ca95807876, []int{65} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4642,7 +4642,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_966fa482a95c53be, []int{66} + return fileDescriptor_ws_822d08ca95807876, []int{66} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4702,7 +4702,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_966fa482a95c53be, []int{67} + return fileDescriptor_ws_822d08ca95807876, []int{67} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4808,195 +4808,195 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_966fa482a95c53be) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_822d08ca95807876) } -var fileDescriptor_ws_966fa482a95c53be = []byte{ - // 2988 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, 0x34, 0x66, 0x76, 0x30, - 0x85, 0xb5, 0x2c, 0x0b, 0xcc, 0xa2, 0x45, 0x48, 0xb0, 0x0b, 0x83, 0xfc, 0x9a, 0xc7, 0xae, 0xdb, - 0xf6, 0x56, 0xcf, 0xb0, 0x08, 0x90, 0x56, 0xe5, 0xae, 0x74, 0xbb, 0xd6, 0xd5, 0x55, 0xd5, 0xf5, - 0xf0, 0x8c, 0x11, 0x12, 0x12, 0x48, 0x88, 0x1b, 0x27, 0x38, 0x70, 0x41, 0xe2, 0x82, 0x40, 0xab, - 0xd5, 0x0a, 0x81, 0xc4, 0x01, 0x21, 0x0e, 0xfc, 0x03, 0x1c, 0x11, 0x37, 0xce, 0x5c, 0x39, 0x20, - 0x21, 0x81, 0x32, 0x22, 0xab, 0x2a, 0xb3, 0xaa, 0xdb, 0xee, 0xb5, 0xac, 0x9d, 0x59, 0x0d, 0x37, - 0x47, 0x74, 0x46, 0x64, 0xe4, 0x2f, 0x22, 0x23, 0x22, 0x33, 0xcb, 0xb0, 0x18, 0x3b, 0x27, 0x6f, - 0x3d, 0x8a, 0x5f, 0x7a, 0x14, 0xdf, 0x0a, 0xa3, 0x20, 0x09, 0x8c, 0xe5, 0x98, 0x45, 0xa7, 0x2c, - 0x7a, 0xcb, 0x0e, 0xdd, 0xb7, 0x42, 0x3b, 0xb2, 0x87, 0xb1, 0xf9, 0x4f, 0x1d, 0x9a, 0x77, 0xa3, - 0x20, 0x0d, 0xef, 0xfb, 0x47, 0x81, 0xd1, 0x81, 0xd9, 0x01, 0x12, 0xdb, 0x1d, 0x6d, 0x4d, 0x7b, - 0xa1, 0x69, 0x65, 0xa4, 0x71, 0x03, 0x9a, 0xf8, 0xe7, 0x9e, 0x3d, 0x64, 0x1d, 0x1d, 0x7f, 0x2b, - 0x18, 0x86, 0x09, 0xf3, 0x7e, 0x90, 0xb8, 0x47, 0x6e, 0xdf, 0x4e, 0xdc, 0xc0, 0xef, 0xd4, 0x70, - 0x80, 0xc2, 0xe3, 0x63, 0x5c, 0x3f, 0x89, 0x02, 0x27, 0xed, 0xe3, 0x98, 0x19, 0x1a, 0x23, 0xf3, - 0xf8, 0xfc, 0x47, 0x76, 0x9f, 0x3d, 0xb4, 0x76, 0x3b, 0x75, 0x9a, 0x5f, 0x90, 0xc6, 0x1a, 0xb4, - 0x82, 0x47, 0x3e, 0x8b, 0x1e, 0xc6, 0x2c, 0xba, 0xbf, 0xdd, 0x69, 0xe0, 0xaf, 0x32, 0xcb, 0xb8, - 0x09, 0xd0, 0x8f, 0x98, 0x9d, 0xb0, 0x07, 0xee, 0x90, 0x75, 0x66, 0xd7, 0xb4, 0x17, 0xda, 0x96, - 0xc4, 0xe1, 0x1a, 0x86, 0x6c, 0x78, 0xc8, 0xa2, 0xad, 0x20, 0xf5, 0x93, 0xce, 0x1c, 0x0e, 0x90, - 0x59, 0xc6, 0x02, 0xe8, 0xec, 0x71, 0xa7, 0x89, 0xaa, 0x75, 0xf6, 0xd8, 0x58, 0x81, 0x46, 0x9c, - 0xd8, 0x49, 0x1a, 0x77, 0x60, 0x4d, 0x7b, 0xa1, 0x6e, 0x09, 0xca, 0x58, 0x87, 0x36, 0xea, 0x0d, - 0x32, 0x6b, 0x5a, 0x28, 0xa2, 0x32, 0x73, 0xc4, 0x1e, 0x9c, 0x85, 0xac, 0x33, 0x8f, 0x0a, 0x0a, - 0x86, 0xf9, 0x57, 0x1d, 0xae, 0x21, 0xee, 0x5d, 0x34, 0xe0, 0x4e, 0xea, 0x79, 0x17, 0x78, 0x60, - 0x05, 0x1a, 0x29, 0x4d, 0x47, 0xf0, 0x0b, 0x8a, 0xcf, 0x13, 0x05, 0x1e, 0xdb, 0x65, 0xa7, 0xcc, - 0x43, 0xe0, 0xeb, 0x56, 0xc1, 0x30, 0x56, 0x61, 0xee, 0xed, 0xc0, 0xf5, 0x11, 0x93, 0x19, 0xfc, - 0x31, 0xa7, 0xf9, 0x6f, 0xbe, 0xdb, 0x3f, 0xf1, 0xb9, 0x4b, 0x09, 0xee, 0x9c, 0x96, 0x3d, 0xd1, - 0x50, 0x3d, 0xf1, 0x3c, 0x2c, 0xd8, 0x61, 0xd8, 0xb5, 0xfd, 0x01, 0x8b, 0x68, 0xd2, 0x59, 0xd4, - 0x5b, 0xe2, 0x72, 0x7f, 0xf0, 0x99, 0x7a, 0x41, 0x1a, 0xf5, 0x19, 0xc2, 0x5d, 0xb7, 0x24, 0x0e, - 0xd7, 0x13, 0x84, 0x2c, 0x92, 0x60, 0x24, 0xe4, 0x4b, 0x5c, 0xe1, 0x15, 0xc8, 0xbd, 0xc2, 0xfd, - 0x98, 0x26, 0x6c, 0xc7, 0x77, 0x70, 0x51, 0x2d, 0xe1, 0xc7, 0x82, 0x65, 0xfe, 0x50, 0x83, 0x85, - 0x83, 0xf4, 0xd0, 0x73, 0xfb, 0xa8, 0x82, 0xc3, 0x5a, 0x80, 0xa7, 0x29, 0xe0, 0xc9, 0x10, 0xe8, - 0x93, 0x21, 0xa8, 0xa9, 0x10, 0xac, 0x40, 0x63, 0xc0, 0x7c, 0x87, 0x45, 0x02, 0x52, 0x41, 0x09, - 0x53, 0xeb, 0x99, 0xa9, 0xe6, 0x4f, 0x75, 0x98, 0xfb, 0x80, 0x4d, 0x58, 0x83, 0x56, 0x78, 0x1c, - 0xf8, 0x6c, 0x2f, 0xe5, 0x61, 0x25, 0x6c, 0x91, 0x59, 0xc6, 0x75, 0xa8, 0x1f, 0xba, 0x51, 0x72, - 0x8c, 0x7e, 0x6d, 0x5b, 0x44, 0x70, 0x2e, 0x1b, 0xda, 0x2e, 0x39, 0xb3, 0x69, 0x11, 0x21, 0x16, - 0x34, 0x97, 0x63, 0xaf, 0xee, 0xb1, 0x66, 0x65, 0x8f, 0x55, 0x63, 0x03, 0xc6, 0xc5, 0x86, 0xf9, - 0x2f, 0x0d, 0xe0, 0x4e, 0xe4, 0x32, 0xdf, 0x41, 0x68, 0x4a, 0x9b, 0x5b, 0xab, 0x6e, 0xee, 0x15, - 0x68, 0x44, 0x6c, 0x68, 0x47, 0x27, 0x59, 0xf0, 0x13, 0x55, 0x32, 0xa8, 0x56, 0x31, 0xe8, 0x55, - 0x80, 0x23, 0x9c, 0x87, 0xeb, 0x41, 0xa8, 0x5a, 0x2f, 0x7f, 0xec, 0x56, 0x25, 0x0d, 0xde, 0xca, - 0xbc, 0x64, 0x49, 0xc3, 0xf9, 0xce, 0xb2, 0x1d, 0x47, 0x04, 0x70, 0x9d, 0x76, 0x56, 0xce, 0x18, - 0x13, 0xbf, 0x8d, 0x73, 0xe2, 0x77, 0x36, 0x0f, 0x8a, 0x7f, 0x68, 0xd0, 0xdc, 0xf4, 0xec, 0xfe, - 0xc9, 0x94, 0x4b, 0x57, 0x97, 0xa8, 0x57, 0x96, 0x78, 0x17, 0xda, 0x87, 0x5c, 0x5d, 0xb6, 0x04, - 0x44, 0xa1, 0xf5, 0xf2, 0x27, 0xc6, 0xac, 0x52, 0xdd, 0x14, 0x96, 0x2a, 0xa7, 0x2e, 0x77, 0xe6, - 0xe2, 0xe5, 0xd6, 0xcf, 0x59, 0x6e, 0x23, 0x5f, 0xee, 0x5f, 0x74, 0x98, 0xc7, 0x44, 0x67, 0xb1, - 0x51, 0xca, 0xe2, 0xc4, 0xf8, 0x2a, 0xcc, 0xa5, 0x99, 0xa9, 0xda, 0xb4, 0xa6, 0xe6, 0x22, 0xc6, - 0x2b, 0x22, 0xad, 0xa2, 0xbc, 0x8e, 0xf2, 0x37, 0xc6, 0xc8, 0xe7, 0x35, 0xcd, 0x2a, 0x86, 0xf3, - 0x12, 0x74, 0x6c, 0xfb, 0x8e, 0xc7, 0x2c, 0x16, 0xa7, 0x5e, 0x22, 0xb2, 0xa5, 0xc2, 0xa3, 0x48, - 0x1b, 0x75, 0xe3, 0x81, 0x28, 0x50, 0x82, 0xe2, 0xe8, 0xd0, 0x38, 0xfe, 0x13, 0x2d, 0xbd, 0x60, - 0xf0, 0x8d, 0x1a, 0xb1, 0x11, 0x7a, 0x88, 0xb6, 0x55, 0x46, 0x16, 0x73, 0x0a, 0xd4, 0x28, 0x10, - 0x14, 0x1e, 0x77, 0x31, 0xd1, 0xa8, 0x80, 0x2a, 0x93, 0xc4, 0x29, 0x17, 0x26, 0xf3, 0x6f, 0x35, - 0x68, 0xd3, 0xf6, 0xc9, 0x40, 0xbd, 0xc9, 0xe3, 0x3c, 0x18, 0x2a, 0x51, 0x24, 0x71, 0xb8, 0x15, - 0x9c, 0xda, 0x53, 0x13, 0x8d, 0xc2, 0xe3, 0xa1, 0xc8, 0xe9, 0x3b, 0x4a, 0xc2, 0x91, 0x59, 0xd9, - 0x2c, 0x77, 0xe5, 0xc4, 0x23, 0x71, 0x78, 0x2a, 0x4b, 0x02, 0x25, 0x3a, 0x72, 0x9a, 0xcb, 0x26, - 0x41, 0x3e, 0x3f, 0xc5, 0x87, 0xc4, 0xe1, 0xf8, 0x26, 0x41, 0x36, 0x37, 0x81, 0x54, 0x30, 0x48, - 0xb3, 0x98, 0x97, 0x4a, 0x49, 0x4e, 0x57, 0xbc, 0xda, 0x3c, 0xd7, 0xab, 0xa0, 0x78, 0x55, 0xdd, - 0x5c, 0xad, 0xca, 0xe6, 0x5a, 0x87, 0x36, 0xe9, 0xc9, 0x82, 0x7e, 0x9e, 0x4a, 0xbd, 0xc2, 0x54, - 0x63, 0xa3, 0x5d, 0x8e, 0x0d, 0xd5, 0xbb, 0x0b, 0x13, 0xbc, 0xbb, 0x98, 0x7b, 0xf7, 0x37, 0x3a, - 0xc0, 0x36, 0x0b, 0xed, 0x28, 0x19, 0x32, 0x3f, 0xe1, 0xcb, 0x73, 0x72, 0x2a, 0x77, 0xae, 0xc2, - 0x93, 0xeb, 0x84, 0xae, 0xd6, 0x09, 0x03, 0x66, 0x10, 0x70, 0xf2, 0x26, 0xfe, 0xcd, 0xc1, 0x0c, - 0xed, 0x88, 0xb4, 0x51, 0x90, 0xe7, 0x34, 0xaf, 0x03, 0x41, 0xe4, 0x88, 0xca, 0x51, 0xb7, 0x88, - 0xe0, 0x9b, 0xbf, 0x98, 0x0f, 0x1b, 0x9a, 0x06, 0xe5, 0x75, 0x95, 0x7b, 0x61, 0x0f, 0xf6, 0x22, - 0x2c, 0xc5, 0xe9, 0x61, 0xb1, 0xb8, 0xbd, 0x74, 0x28, 0xc2, 0xbd, 0xc2, 0xe7, 0xa0, 0x52, 0x73, - 0xc6, 0x07, 0x51, 0xa9, 0x29, 0x18, 0xe5, 0xae, 0xc0, 0x7c, 0x47, 0x87, 0xa5, 0xfd, 0x68, 0x60, - 0xfb, 0xee, 0x77, 0xb0, 0xdd, 0xc4, 0x04, 0x7e, 0x99, 0x92, 0xbb, 0x06, 0x2d, 0xe6, 0x0f, 0x3c, - 0x37, 0x3e, 0xde, 0x2b, 0x70, 0x93, 0x59, 0x32, 0xd8, 0x33, 0x93, 0x8a, 0x72, 0x5d, 0x29, 0xca, - 0x2b, 0xd0, 0x18, 0x06, 0x87, 0xae, 0x97, 0xc5, 0xbd, 0xa0, 0x30, 0xe6, 0x99, 0xc7, 0xb0, 0x3a, - 0xe7, 0x31, 0x9f, 0x31, 0x8a, 0x42, 0x3d, 0x37, 0xb6, 0x50, 0x37, 0xe5, 0x42, 0xad, 0x02, 0x0f, - 0x15, 0xe0, 0x09, 0xae, 0x56, 0x0e, 0xd7, 0x9f, 0x34, 0x58, 0x2a, 0xe0, 0xa6, 0x1e, 0x74, 0x22, - 0x5c, 0x26, 0xcc, 0x6f, 0xcb, 0x11, 0x28, 0x92, 0x87, 0xcc, 0xe3, 0x66, 0xed, 0x63, 0xdc, 0x50, - 0x4e, 0x25, 0x82, 0x03, 0x7d, 0x10, 0xc4, 0xae, 0xd4, 0xef, 0xe7, 0x34, 0x9f, 0x6d, 0x97, 0xd9, - 0x12, 0x58, 0x44, 0x71, 0x7e, 0x8f, 0xba, 0x6e, 0x8a, 0x31, 0x41, 0xf1, 0x25, 0xec, 0xe4, 0x75, - 0x74, 0xe7, 0xb1, 0xf9, 0x7b, 0x0d, 0x96, 0xa8, 0x3e, 0x48, 0x9b, 0xe5, 0x75, 0x39, 0x50, 0xb1, - 0xe6, 0x53, 0x89, 0xf9, 0xe4, 0x98, 0x12, 0x51, 0x0e, 0x17, 0xab, 0x24, 0x6a, 0xbc, 0x09, 0xd7, - 0x9d, 0x12, 0x46, 0xbb, 0x6e, 0x9c, 0x74, 0xf4, 0xb5, 0xda, 0x04, 0x95, 0x65, 0x48, 0xad, 0xb1, - 0x0a, 0xcc, 0xef, 0x42, 0xe7, 0x20, 0xf5, 0xbc, 0x2e, 0x8b, 0x63, 0x7b, 0xc0, 0x36, 0xcf, 0x7a, - 0x6c, 0xc4, 0xf9, 0x16, 0x8b, 0x43, 0x1e, 0x5d, 0x2c, 0x8a, 0xb6, 0x02, 0x87, 0xa1, 0xe9, 0x75, - 0x2b, 0x23, 0x39, 0x30, 0x2c, 0x8a, 0x78, 0x8a, 0x11, 0x3d, 0x10, 0x51, 0xc6, 0x2d, 0x98, 0xf1, - 0xb8, 0x59, 0x35, 0x34, 0x6b, 0x75, 0x8c, 0x59, 0xdd, 0x78, 0xb0, 0x6d, 0x27, 0xb6, 0x85, 0xe3, - 0xcc, 0x21, 0x7c, 0x64, 0xfc, 0xec, 0xa3, 0x89, 0x11, 0xc0, 0xbb, 0x14, 0x2c, 0xf3, 0x6e, 0xe0, - 0xe7, 0x01, 0x20, 0xb3, 0xb8, 0xd9, 0x31, 0xe9, 0x41, 0x3b, 0xda, 0x56, 0x46, 0x9a, 0xd7, 0xc1, - 0xb8, 0xcb, 0x92, 0xae, 0xfd, 0x78, 0xc3, 0x77, 0xba, 0xae, 0xdf, 0x63, 0x23, 0x8b, 0x8d, 0xcc, - 0x1d, 0xb8, 0x56, 0xe1, 0xc6, 0x21, 0xee, 0x14, 0xfb, 0x71, 0x8f, 0x8d, 0xd0, 0x80, 0xb6, 0x25, - 0x28, 0xe4, 0xe3, 0x28, 0xd1, 0x00, 0x09, 0xca, 0x1c, 0xc1, 0x22, 0x77, 0x55, 0x8f, 0xf9, 0x4e, - 0x37, 0x1e, 0xa0, 0x8a, 0x35, 0x68, 0x11, 0x02, 0xdd, 0x78, 0x50, 0x74, 0x54, 0x12, 0x8b, 0x8f, - 0xe8, 0x7b, 0x2e, 0x77, 0x09, 0x8e, 0x10, 0xab, 0x91, 0x58, 0x3c, 0x6e, 0x63, 0x26, 0x0e, 0x18, - 0x3c, 0xa0, 0x6b, 0x56, 0x4e, 0x9b, 0x7f, 0xa8, 0xc3, 0xac, 0x00, 0x14, 0x4f, 0x88, 0xbc, 0x89, - 0xcd, 0xf1, 0x22, 0x8a, 0xca, 0x4d, 0xff, 0xb4, 0x38, 0xab, 0x11, 0x25, 0x9f, 0xee, 0x6a, 0xea, - 0xe9, 0xae, 0x64, 0xd3, 0x4c, 0xd5, 0xa6, 0xd2, 0xba, 0xea, 0xd5, 0x75, 0xf1, 0xec, 0x8a, 0x09, - 0xe7, 0xc0, 0xb3, 0x93, 0xa3, 0x20, 0x1a, 0x8a, 0x9e, 0xb4, 0x6e, 0x55, 0xf8, 0x3c, 0xa3, 0x13, - 0x2f, 0x2f, 0xc9, 0xb4, 0xb3, 0x4a, 0x5c, 0x5e, 0x00, 0x89, 0x93, 0x95, 0x66, 0x3a, 0x0c, 0xa8, - 0x4c, 0xb2, 0x2d, 0x8e, 0xdd, 0xc0, 0xc7, 0xe2, 0x40, 0x15, 0x58, 0x66, 0xf1, 0x95, 0x0f, 0xe3, - 0xc1, 0x9d, 0x28, 0x18, 0x8a, 0x23, 0x41, 0x46, 0xe2, 0xca, 0x03, 0x3f, 0xc9, 0x0a, 0x4b, 0x8b, - 0x64, 0x25, 0x16, 0x97, 0x15, 0x24, 0x96, 0xdf, 0x79, 0x2b, 0x23, 0x8d, 0x25, 0xa8, 0xc5, 0x6c, - 0x24, 0x6a, 0x2a, 0xff, 0x53, 0xf1, 0xdc, 0xa2, 0xea, 0xb9, 0x52, 0x92, 0x5c, 0xc2, 0x5f, 0xe5, - 0x24, 0x59, 0x9c, 0xf7, 0x97, 0x95, 0xf3, 0xfe, 0x06, 0xcc, 0x06, 0x21, 0x8f, 0xf3, 0xb8, 0x63, - 0xe0, 0x1e, 0xfb, 0xd4, 0xe4, 0x3d, 0x76, 0x6b, 0x9f, 0x46, 0xee, 0xf8, 0x49, 0x74, 0x66, 0x65, - 0x72, 0xc6, 0x2e, 0x2c, 0x06, 0x47, 0x47, 0x9e, 0xeb, 0xb3, 0x83, 0x34, 0x3e, 0xc6, 0xde, 0xf5, - 0x1a, 0x26, 0x26, 0x73, 0x5c, 0x62, 0x52, 0x47, 0x5a, 0x65, 0xd1, 0xd5, 0x57, 0x60, 0x5e, 0x9e, - 0x86, 0xc3, 0x70, 0xc2, 0xce, 0x44, 0x0c, 0xf2, 0x3f, 0x79, 0x3a, 0x3e, 0xb5, 0xbd, 0x94, 0xca, - 0xdb, 0x9c, 0x45, 0xc4, 0x2b, 0xfa, 0x97, 0x34, 0xf3, 0x27, 0x1a, 0x2c, 0x96, 0x26, 0xe0, 0xa3, - 0x13, 0x37, 0xf1, 0x98, 0xd0, 0x40, 0x04, 0x6f, 0x1d, 0x1c, 0x16, 0xf7, 0x45, 0x08, 0xe3, 0xdf, - 0xa2, 0x8e, 0xd4, 0xf2, 0x03, 0xa1, 0x09, 0xf3, 0xee, 0x7e, 0x8f, 0x2b, 0xea, 0x05, 0xa9, 0xef, - 0xe4, 0x97, 0x3a, 0x12, 0x8f, 0x87, 0x90, 0xbb, 0xdf, 0xdb, 0xb4, 0x9d, 0x01, 0xa3, 0xab, 0x97, - 0x3a, 0xda, 0xa4, 0x32, 0x4d, 0x07, 0xe6, 0x1e, 0xb8, 0x61, 0xbc, 0x15, 0x0c, 0x87, 0xdc, 0x11, - 0x0e, 0x4b, 0x78, 0x91, 0xd3, 0xd0, 0xdf, 0x82, 0xe2, 0xa1, 0xe2, 0xb0, 0x23, 0x3b, 0xf5, 0x12, - 0x3e, 0x34, 0xdb, 0xb8, 0x12, 0x0b, 0x2f, 0x1d, 0xe2, 0xc0, 0xdf, 0x26, 0x69, 0xb2, 0x53, 0xe2, - 0x98, 0x7f, 0xd6, 0x61, 0x09, 0x8f, 0x06, 0x5b, 0xe8, 0x76, 0x07, 0x85, 0x5e, 0x86, 0x3a, 0x6e, - 0x43, 0x51, 0x2b, 0xce, 0x3f, 0x4e, 0xd0, 0x50, 0xe3, 0x36, 0x34, 0x82, 0x10, 0x0b, 0x0c, 0x9d, - 0x41, 0x9e, 0x9f, 0x24, 0xa4, 0xde, 0xef, 0x58, 0x42, 0xca, 0xb8, 0x03, 0x30, 0x2c, 0x2a, 0x0a, - 0xa5, 0xee, 0x69, 0x75, 0x48, 0x92, 0x1c, 0xdc, 0x3c, 0x0d, 0xe7, 0x97, 0x3c, 0x35, 0x4b, 0x65, - 0x1a, 0x7b, 0xb0, 0x80, 0x66, 0xef, 0x67, 0xe7, 0x4a, 0xf4, 0xc1, 0xf4, 0x33, 0x96, 0xa4, 0xcd, - 0x5f, 0x68, 0x02, 0x46, 0xfe, 0x6b, 0x8f, 0x11, 0xf6, 0x05, 0x24, 0xda, 0xa5, 0x20, 0x59, 0x85, - 0xb9, 0x61, 0x2a, 0x1d, 0x73, 0x6b, 0x56, 0x4e, 0x17, 0x2e, 0xaa, 0x4d, 0xed, 0x22, 0xf3, 0x97, - 0x1a, 0x74, 0x5e, 0x0b, 0x5c, 0x1f, 0x7f, 0xd8, 0x08, 0x43, 0x4f, 0xdc, 0x44, 0x5e, 0xda, 0xe7, - 0x5f, 0x83, 0xa6, 0x4d, 0x6a, 0xfc, 0x44, 0xb8, 0x7d, 0x8a, 0xa3, 0x6b, 0x21, 0x23, 0x9d, 0x42, - 0x6a, 0xf2, 0x29, 0xc4, 0x7c, 0x57, 0x83, 0x05, 0x02, 0xe5, 0x8d, 0xd4, 0x4d, 0x2e, 0x6d, 0xdf, - 0x26, 0xcc, 0x8d, 0x52, 0x37, 0xb9, 0x44, 0x54, 0xe6, 0x72, 0xd5, 0x78, 0xaa, 0x8d, 0x89, 0x27, - 0xf3, 0x3d, 0x0d, 0x6e, 0x94, 0x61, 0xdd, 0xe8, 0xf7, 0x59, 0xf8, 0x24, 0xb7, 0x94, 0x72, 0x0a, - 0x9b, 0x29, 0x9d, 0xc2, 0xc6, 0x9a, 0x6c, 0xb1, 0xb7, 0x59, 0xff, 0xe9, 0x35, 0xf9, 0x07, 0x3a, - 0x7c, 0xf4, 0x6e, 0xbe, 0xf1, 0x1e, 0x44, 0xb6, 0x1f, 0x1f, 0xb1, 0x28, 0x7a, 0x82, 0xf6, 0xee, - 0x42, 0xdb, 0x67, 0x8f, 0x0a, 0x9b, 0xc4, 0x76, 0x9c, 0x56, 0x8d, 0x2a, 0x3c, 0x5d, 0xee, 0x32, - 0xff, 0xad, 0xc1, 0x12, 0xe9, 0x79, 0xdd, 0xed, 0x9f, 0x3c, 0xc1, 0xc5, 0xef, 0xc1, 0xc2, 0x09, - 0x5a, 0xc0, 0xa9, 0x4b, 0xa4, 0xed, 0x92, 0xf4, 0x94, 0xcb, 0xff, 0x8f, 0x06, 0xcb, 0xa4, 0xe8, - 0xbe, 0x7f, 0xea, 0x3e, 0xc9, 0x60, 0x3d, 0x80, 0x45, 0x97, 0x4c, 0xb8, 0x24, 0x00, 0x65, 0xf1, - 0x29, 0x11, 0xf8, 0x9d, 0x06, 0x8b, 0xa4, 0x69, 0xc7, 0x4f, 0x58, 0x74, 0xe9, 0xf5, 0xdf, 0xe3, - 0x27, 0xfb, 0x24, 0xb2, 0xfd, 0xcb, 0x64, 0x48, 0x59, 0x74, 0xca, 0x24, 0xf9, 0xae, 0x06, 0x06, - 0xaa, 0xda, 0x76, 0xe3, 0xa1, 0x1b, 0xc7, 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x33, 0x1d, 0xae, - 0x4b, 0x5a, 0xba, 0x69, 0xf2, 0xb4, 0x9b, 0x6c, 0x6c, 0x43, 0x93, 0xf7, 0x08, 0xf2, 0xf5, 0xfe, - 0xb4, 0x13, 0x15, 0x82, 0xbc, 0x8b, 0x45, 0xa2, 0xc7, 0xfa, 0x81, 0xef, 0xc4, 0xd8, 0x1c, 0xb5, - 0x2d, 0x85, 0xc7, 0xd3, 0xd0, 0xaa, 0xa4, 0x66, 0xcb, 0xf6, 0xfb, 0xcc, 0x7b, 0x66, 0x20, 0x32, - 0x7f, 0xad, 0xc1, 0x02, 0x0d, 0x79, 0xfa, 0x97, 0xcc, 0x6b, 0x3d, 0x05, 0xf2, 0x87, 0xc6, 0x4b, - 0xe6, 0x09, 0x2c, 0xd3, 0x8d, 0xbe, 0xd4, 0x9e, 0xf0, 0x83, 0xaf, 0xed, 0xd0, 0x59, 0x56, 0x43, - 0xa1, 0x8c, 0x54, 0xdf, 0x6a, 0xc4, 0x73, 0x7c, 0xf1, 0x56, 0x73, 0x13, 0xc0, 0x76, 0x9c, 0x37, - 0x83, 0xc8, 0x71, 0xfd, 0xac, 0xd7, 0x94, 0x38, 0xe6, 0x6b, 0x30, 0xcf, 0x8f, 0xde, 0x0f, 0xa4, - 0xbb, 0xf9, 0x73, 0x5f, 0x0f, 0xe4, 0x7b, 0x7d, 0x5d, 0xbd, 0xd7, 0x37, 0xbf, 0x0d, 0xff, 0x5f, - 0x31, 0x1c, 0xb1, 0xde, 0xa2, 0x27, 0x87, 0x6c, 0x12, 0x01, 0xf9, 0xc7, 0xc7, 0xa0, 0x27, 0xdb, - 0x62, 0x29, 0x42, 0xe6, 0xf7, 0x35, 0x78, 0xae, 0xa2, 0x7e, 0x23, 0x0c, 0xa3, 0xe0, 0x54, 0xb8, - 0xf4, 0x2a, 0xa6, 0x51, 0xfb, 0x30, 0xbd, 0xdc, 0x87, 0x8d, 0x35, 0x42, 0xe9, 0x1d, 0x3f, 0x00, - 0x23, 0x7e, 0xa5, 0xc1, 0xa2, 0x30, 0xc2, 0x71, 0xc4, 0xb4, 0x5f, 0x84, 0x06, 0x3d, 0x57, 0x8a, - 0x09, 0x9f, 0x1b, 0x3b, 0x61, 0xf6, 0xcc, 0x6a, 0x89, 0xc1, 0xd5, 0x88, 0xd4, 0xc7, 0xe5, 0x8d, - 0x2f, 0xe7, 0x71, 0x3f, 0xf5, 0x83, 0xa2, 0x10, 0x30, 0xbf, 0x91, 0x05, 0xf3, 0x36, 0xf3, 0xd8, - 0x55, 0x62, 0x64, 0x3e, 0x84, 0x05, 0x7c, 0x3b, 0x2d, 0x30, 0xb8, 0x12, 0xb5, 0x6f, 0xc2, 0x12, - 0xaa, 0xbd, 0x72, 0x7b, 0xf3, 0xdd, 0xc1, 0xf1, 0xd9, 0x3a, 0xb6, 0xfd, 0xc1, 0x55, 0x6a, 0xff, - 0x1c, 0x5c, 0xcb, 0xb0, 0x7f, 0x18, 0x3a, 0xf9, 0x7d, 0xc6, 0x84, 0x5b, 0x5c, 0xf3, 0xf3, 0xb0, - 0xb2, 0x15, 0xf8, 0xa7, 0x2c, 0x8a, 0xe9, 0xce, 0x1b, 0x45, 0x32, 0x09, 0x65, 0xf3, 0x0b, 0xca, - 0x7c, 0x1b, 0x56, 0x65, 0x89, 0x1e, 0x4b, 0x0e, 0x22, 0xf7, 0x54, 0x92, 0x12, 0xb7, 0x9c, 0x9a, - 0x72, 0xcb, 0x59, 0xdc, 0x8a, 0xea, 0xca, 0xad, 0xe8, 0x0d, 0x68, 0xba, 0xb1, 0x50, 0x80, 0x41, - 0x35, 0x67, 0x15, 0x0c, 0xb3, 0x07, 0xcb, 0xe2, 0x35, 0xf3, 0xc0, 0x1e, 0xb8, 0x3e, 0x65, 0xc0, - 0x9b, 0x00, 0xa1, 0x3d, 0xc8, 0xbe, 0x66, 0xa0, 0x0b, 0x71, 0x89, 0xc3, 0x7f, 0x8f, 0x8f, 0x83, - 0x47, 0xe2, 0x77, 0x9d, 0x7e, 0x2f, 0x38, 0xe6, 0xd7, 0xc1, 0xb0, 0x58, 0x1c, 0x06, 0x7e, 0xcc, - 0x24, 0xad, 0x6b, 0xd0, 0xda, 0x4a, 0xa3, 0x88, 0xf9, 0x7c, 0xaa, 0xec, 0x69, 0x5f, 0x66, 0x71, - 0xbd, 0xbd, 0x42, 0x2f, 0x5d, 0xa2, 0x4a, 0x1c, 0xf3, 0xe7, 0x35, 0x68, 0xf6, 0xdc, 0x81, 0x6f, - 0x7b, 0x16, 0x1b, 0x19, 0x5f, 0x81, 0x06, 0xb5, 0xb6, 0xc2, 0x8d, 0xe3, 0x2e, 0xf5, 0x68, 0x34, - 0xf5, 0xf0, 0x16, 0x1b, 0xdd, 0xfb, 0x3f, 0x4b, 0xc8, 0x18, 0x6f, 0x40, 0x9b, 0xfe, 0xba, 0x4f, - 0x57, 0x15, 0xa2, 0xce, 0x7c, 0xfa, 0x02, 0x25, 0x62, 0x34, 0xe9, 0x52, 0x35, 0x70, 0x83, 0xfa, - 0x58, 0xfa, 0xc4, 0xde, 0x9d, 0x6c, 0x10, 0x55, 0x48, 0x61, 0x10, 0xc9, 0x70, 0x69, 0x1b, 0x0f, - 0xf3, 0xa2, 0x5d, 0x98, 0x2c, 0x4d, 0x67, 0x7e, 0x21, 0x4d, 0x32, 0x5c, 0xfa, 0x38, 0xf5, 0x07, - 0x0f, 0x43, 0x71, 0xc7, 0x34, 0x59, 0xfa, 0x1e, 0x0e, 0x13, 0xd2, 0x24, 0xc3, 0xa5, 0x23, 0xcc, - 0xac, 0x08, 0xfa, 0x79, 0xd2, 0x94, 0x80, 0x85, 0x34, 0xc9, 0x6c, 0x36, 0x61, 0x36, 0xb4, 0xcf, - 0xbc, 0xc0, 0x76, 0xcc, 0x77, 0x6a, 0x00, 0xd9, 0xc0, 0x18, 0xab, 0xb8, 0xe2, 0xa2, 0xf5, 0x0b, - 0x5d, 0x14, 0x7a, 0x67, 0x92, 0x93, 0x7a, 0xe3, 0x9d, 0xf4, 0x99, 0x69, 0x9d, 0x44, 0xda, 0x4a, - 0x6e, 0xba, 0x5d, 0x72, 0xd3, 0xfa, 0x85, 0x6e, 0x12, 0x46, 0x09, 0x47, 0xdd, 0x2e, 0x39, 0x6a, - 0xfd, 0x42, 0x47, 0x09, 0x79, 0xe1, 0xaa, 0xdb, 0x25, 0x57, 0xad, 0x5f, 0xe8, 0x2a, 0x21, 0x2f, - 0x9c, 0x75, 0xbb, 0xe4, 0xac, 0xf5, 0x0b, 0x9d, 0x25, 0xe4, 0xab, 0xee, 0x7a, 0x4f, 0x87, 0x05, - 0x84, 0x8c, 0x1e, 0x94, 0xfc, 0xa3, 0x00, 0xef, 0x8d, 0x11, 0x2e, 0xf5, 0xe3, 0x18, 0x95, 0x69, - 0x7c, 0x16, 0x96, 0x89, 0x21, 0x3e, 0xa6, 0xc8, 0x5f, 0xe8, 0x9a, 0x56, 0xf5, 0x07, 0x7c, 0x02, - 0x48, 0xe3, 0x24, 0x18, 0x6e, 0xdb, 0x89, 0x9d, 0x75, 0x46, 0x05, 0x47, 0x7e, 0xa0, 0x99, 0xa9, - 0x7c, 0x7e, 0x17, 0x05, 0xc1, 0x30, 0x7f, 0x79, 0x11, 0x14, 0x97, 0x48, 0xdc, 0x21, 0x0b, 0xd2, - 0x44, 0xa4, 0x89, 0x8c, 0xa4, 0x07, 0x6c, 0xc7, 0xb5, 0xf1, 0x59, 0x43, 0xbc, 0xee, 0xe6, 0x0c, - 0xcc, 0x6c, 0xc5, 0x33, 0x8d, 0xf8, 0x3c, 0xae, 0xe0, 0x5c, 0xfc, 0xa4, 0x62, 0xfe, 0x5d, 0x83, - 0x6b, 0x07, 0x76, 0x94, 0xb8, 0x7d, 0x37, 0xb4, 0xfd, 0xa4, 0xcb, 0x12, 0x1b, 0xd7, 0xa0, 0x7c, - 0x21, 0xa3, 0xbd, 0xbf, 0x2f, 0x64, 0x0e, 0x60, 0x71, 0x50, 0xf4, 0xb2, 0xd2, 0x37, 0x36, 0x53, - 0x9f, 0xf1, 0x4b, 0xe2, 0xca, 0xe7, 0x3e, 0xb5, 0xf7, 0xfd, 0xb9, 0x8f, 0xf9, 0x23, 0x1d, 0x16, - 0x4b, 0xa9, 0x93, 0xb7, 0xa3, 0xd4, 0x68, 0xe4, 0x31, 0x91, 0xd3, 0xc6, 0x06, 0x80, 0x9b, 0x87, - 0xd1, 0x39, 0x97, 0xb4, 0x6a, 0xac, 0x59, 0x92, 0xd0, 0xb8, 0xb7, 0x9a, 0xda, 0xa5, 0xdf, 0x6a, - 0x8c, 0x7b, 0xd0, 0x0a, 0x0b, 0x27, 0x9d, 0x73, 0x00, 0x1b, 0xe3, 0x4a, 0x4b, 0x16, 0x35, 0xbf, - 0x05, 0xcb, 0x95, 0x0c, 0x85, 0x4f, 0x37, 0xc1, 0x09, 0xf3, 0xf3, 0xa7, 0x1b, 0x4e, 0x48, 0xc1, - 0xaa, 0x97, 0x83, 0xd5, 0x73, 0x4f, 0xe5, 0xef, 0x09, 0x05, 0x69, 0xfe, 0x58, 0x87, 0x95, 0xf1, - 0xd5, 0xe5, 0x59, 0x85, 0xfb, 0x10, 0x3a, 0x93, 0x32, 0xf9, 0x95, 0xa1, 0x5e, 0x44, 0x77, 0x5e, - 0x87, 0x9f, 0x55, 0xb8, 0xaf, 0x65, 0xd1, 0x2d, 0x95, 0x3a, 0xf3, 0xb7, 0x39, 0x3e, 0x79, 0xa7, - 0xf1, 0x8c, 0xe2, 0x63, 0xbc, 0x08, 0x4b, 0xb4, 0x4c, 0xe9, 0x71, 0x9f, 0x1a, 0xd7, 0x0a, 0xbf, - 0xc8, 0x14, 0x52, 0xd9, 0xbf, 0xb2, 0x98, 0xfd, 0xa3, 0x96, 0xf9, 0x24, 0xef, 0xdf, 0x3e, 0x54, - 0x3e, 0x29, 0x22, 0x4d, 0x6a, 0x6a, 0xa4, 0x48, 0xcb, 0xfb, 0xca, 0xff, 0x45, 0xda, 0xc5, 0x91, - 0x96, 0x63, 0x29, 0x35, 0x78, 0xe6, 0xf7, 0xa0, 0xbd, 0xcd, 0xbc, 0x6e, 0x3c, 0xc8, 0x3e, 0x2b, - 0x3a, 0x0f, 0xc8, 0x49, 0xff, 0xd6, 0x30, 0xf1, 0x83, 0xa2, 0xf2, 0xc7, 0x48, 0x33, 0x95, 0x8f, - 0x91, 0xcc, 0x4d, 0x58, 0x90, 0x0d, 0xb8, 0xcc, 0x57, 0x55, 0x9b, 0x37, 0xbe, 0xb9, 0x7a, 0xeb, - 0x25, 0xfa, 0x07, 0x9a, 0x57, 0x2b, 0x20, 0x1e, 0x36, 0xf0, 0x1f, 0x6a, 0xbe, 0xf0, 0xdf, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x3b, 0x39, 0xf9, 0x52, 0x63, 0x33, 0x00, 0x00, +var fileDescriptor_ws_822d08ca95807876 = []byte{ + // 2985 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x24, 0x47, + 0x15, 0xa7, 0x7b, 0x3c, 0x63, 0xcf, 0x1b, 0x8f, 0x3f, 0x7a, 0x17, 0x33, 0x98, 0xcd, 0x62, 0x1a, + 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0xf2, 0xd7, 0x7e, 0x04, 0x8f, 0xed, 0xf4, + 0xec, 0x12, 0x04, 0x48, 0x51, 0x7b, 0xba, 0x3c, 0xee, 0xb8, 0xa7, 0xab, 0xa7, 0x3f, 0xbc, 0x6b, + 0x84, 0x84, 0x04, 0x12, 0xe2, 0xc6, 0x09, 0x0e, 0x5c, 0x90, 0xb8, 0x20, 0x50, 0x14, 0x45, 0x08, + 0x6e, 0x11, 0xe2, 0xc0, 0x3f, 0xc0, 0x11, 0x71, 0xe3, 0xcc, 0x95, 0x03, 0x12, 0x12, 0xa8, 0xea, + 0x55, 0x57, 0x57, 0x75, 0xcf, 0xd8, 0x13, 0xcb, 0xca, 0x6e, 0xb4, 0xdc, 0xfc, 0xde, 0xd4, 0x7b, + 0xf5, 0xea, 0xf7, 0x5e, 0xbd, 0xf7, 0xaa, 0xaa, 0x0d, 0x8b, 0x89, 0x77, 0xf2, 0xe6, 0xa3, 0xe4, + 0xa5, 0x47, 0xc9, 0xad, 0x28, 0xa6, 0x29, 0xb5, 0x96, 0x13, 0x12, 0x9f, 0x92, 0xf8, 0x4d, 0x37, + 0xf2, 0xdf, 0x8c, 0xdc, 0xd8, 0x1d, 0x26, 0xf6, 0xbf, 0x4c, 0x68, 0xde, 0x8d, 0x69, 0x16, 0xdd, + 0x0f, 0x8f, 0xa8, 0xd5, 0x81, 0xd9, 0x01, 0x27, 0xb6, 0x3b, 0xc6, 0x9a, 0xf1, 0x42, 0xd3, 0xc9, + 0x49, 0xeb, 0x06, 0x34, 0xf9, 0x9f, 0x7b, 0xee, 0x90, 0x74, 0x4c, 0xfe, 0x5b, 0xc1, 0xb0, 0x6c, + 0x98, 0x0f, 0x69, 0xea, 0x1f, 0xf9, 0x7d, 0x37, 0xf5, 0x69, 0xd8, 0xa9, 0xf1, 0x01, 0x1a, 0x8f, + 0x8d, 0xf1, 0xc3, 0x34, 0xa6, 0x5e, 0xd6, 0xe7, 0x63, 0x66, 0x70, 0x8c, 0xca, 0x63, 0xf3, 0x1f, + 0xb9, 0x7d, 0xf2, 0xd0, 0xd9, 0xed, 0xd4, 0x71, 0x7e, 0x41, 0x5a, 0x6b, 0xd0, 0xa2, 0x8f, 0x42, + 0x12, 0x3f, 0x4c, 0x48, 0x7c, 0x7f, 0xbb, 0xd3, 0xe0, 0xbf, 0xaa, 0x2c, 0xeb, 0x26, 0x40, 0x3f, + 0x26, 0x6e, 0x4a, 0x1e, 0xf8, 0x43, 0xd2, 0x99, 0x5d, 0x33, 0x5e, 0x68, 0x3b, 0x0a, 0x87, 0x69, + 0x18, 0x92, 0xe1, 0x21, 0x89, 0xb7, 0x68, 0x16, 0xa6, 0x9d, 0x39, 0x3e, 0x40, 0x65, 0x59, 0x0b, + 0x60, 0x92, 0xc7, 0x9d, 0x26, 0x57, 0x6d, 0x92, 0xc7, 0xd6, 0x0a, 0x34, 0x92, 0xd4, 0x4d, 0xb3, + 0xa4, 0x03, 0x6b, 0xc6, 0x0b, 0x75, 0x47, 0x50, 0xd6, 0x3a, 0xb4, 0xb9, 0x5e, 0x9a, 0x5b, 0xd3, + 0xe2, 0x22, 0x3a, 0x53, 0x22, 0xf6, 0xe0, 0x2c, 0x22, 0x9d, 0x79, 0xae, 0xa0, 0x60, 0xd8, 0x7f, + 0x33, 0xe1, 0x1a, 0xc7, 0xbd, 0xcb, 0x0d, 0xb8, 0x93, 0x05, 0xc1, 0x05, 0x1e, 0x58, 0x81, 0x46, + 0x86, 0xd3, 0x21, 0xfc, 0x82, 0x62, 0xf3, 0xc4, 0x34, 0x20, 0xbb, 0xe4, 0x94, 0x04, 0x1c, 0xf8, + 0xba, 0x53, 0x30, 0xac, 0x55, 0x98, 0x7b, 0x8b, 0xfa, 0x21, 0xc7, 0x64, 0x86, 0xff, 0x28, 0x69, + 0xf6, 0x5b, 0xe8, 0xf7, 0x4f, 0x42, 0xe6, 0x52, 0x84, 0x5b, 0xd2, 0xaa, 0x27, 0x1a, 0xba, 0x27, + 0x9e, 0x87, 0x05, 0x37, 0x8a, 0xba, 0x6e, 0x38, 0x20, 0x31, 0x4e, 0x3a, 0xcb, 0xf5, 0x96, 0xb8, + 0xcc, 0x1f, 0x6c, 0xa6, 0x1e, 0xcd, 0xe2, 0x3e, 0xe1, 0x70, 0xd7, 0x1d, 0x85, 0xc3, 0xf4, 0xd0, + 0x88, 0xc4, 0x0a, 0x8c, 0x88, 0x7c, 0x89, 0x2b, 0xbc, 0x02, 0xd2, 0x2b, 0xcc, 0x8f, 0x59, 0x4a, + 0x76, 0x42, 0x8f, 0x2f, 0xaa, 0x25, 0xfc, 0x58, 0xb0, 0xec, 0x9f, 0x18, 0xb0, 0x70, 0x90, 0x1d, + 0x06, 0x7e, 0x9f, 0xab, 0x60, 0xb0, 0x16, 0xe0, 0x19, 0x1a, 0x78, 0x2a, 0x04, 0xe6, 0x64, 0x08, + 0x6a, 0x3a, 0x04, 0x2b, 0xd0, 0x18, 0x90, 0xd0, 0x23, 0xb1, 0x80, 0x54, 0x50, 0xc2, 0xd4, 0x7a, + 0x6e, 0xaa, 0xfd, 0x0b, 0x13, 0xe6, 0x3e, 0x60, 0x13, 0xd6, 0xa0, 0x15, 0x1d, 0xd3, 0x90, 0xec, + 0x65, 0x2c, 0xac, 0x84, 0x2d, 0x2a, 0xcb, 0xba, 0x0e, 0xf5, 0x43, 0x3f, 0x4e, 0x8f, 0xb9, 0x5f, + 0xdb, 0x0e, 0x12, 0x8c, 0x4b, 0x86, 0xae, 0x8f, 0xce, 0x6c, 0x3a, 0x48, 0x88, 0x05, 0xcd, 0x49, + 0xec, 0xf5, 0x3d, 0xd6, 0xac, 0xec, 0xb1, 0x6a, 0x6c, 0xc0, 0xb8, 0xd8, 0xb0, 0xff, 0x6d, 0x00, + 0xdc, 0x89, 0x7d, 0x12, 0x7a, 0x1c, 0x9a, 0xd2, 0xe6, 0x36, 0xaa, 0x9b, 0x7b, 0x05, 0x1a, 0x31, + 0x19, 0xba, 0xf1, 0x49, 0x1e, 0xfc, 0x48, 0x95, 0x0c, 0xaa, 0x55, 0x0c, 0x7a, 0x15, 0xe0, 0x88, + 0xcf, 0xc3, 0xf4, 0x70, 0xa8, 0x5a, 0x2f, 0x7f, 0xe2, 0x56, 0x25, 0x0d, 0xde, 0xca, 0xbd, 0xe4, + 0x28, 0xc3, 0xd9, 0xce, 0x72, 0x3d, 0x4f, 0x04, 0x70, 0x1d, 0x77, 0x96, 0x64, 0x8c, 0x89, 0xdf, + 0xc6, 0x39, 0xf1, 0x3b, 0x2b, 0x83, 0xe2, 0x9f, 0x06, 0x34, 0x37, 0x03, 0xb7, 0x7f, 0x32, 0xe5, + 0xd2, 0xf5, 0x25, 0x9a, 0x95, 0x25, 0xde, 0x85, 0xf6, 0x21, 0x53, 0x97, 0x2f, 0x81, 0xa3, 0xd0, + 0x7a, 0xf9, 0x53, 0x63, 0x56, 0xa9, 0x6f, 0x0a, 0x47, 0x97, 0xd3, 0x97, 0x3b, 0x73, 0xf1, 0x72, + 0xeb, 0xe7, 0x2c, 0xb7, 0x21, 0x97, 0xfb, 0x57, 0x13, 0xe6, 0x79, 0xa2, 0x73, 0xc8, 0x28, 0x23, + 0x49, 0x6a, 0x7d, 0x1d, 0xe6, 0xb2, 0xdc, 0x54, 0x63, 0x5a, 0x53, 0xa5, 0x88, 0xf5, 0x8a, 0x48, + 0xab, 0x5c, 0xde, 0xe4, 0xf2, 0x37, 0xc6, 0xc8, 0xcb, 0x9a, 0xe6, 0x14, 0xc3, 0x59, 0x09, 0x3a, + 0x76, 0x43, 0x2f, 0x20, 0x0e, 0x49, 0xb2, 0x20, 0x15, 0xd9, 0x52, 0xe3, 0x61, 0xa4, 0x8d, 0xba, + 0xc9, 0x40, 0x14, 0x28, 0x41, 0x31, 0x74, 0x70, 0x1c, 0xfb, 0x09, 0x97, 0x5e, 0x30, 0xd8, 0x46, + 0x8d, 0xc9, 0x88, 0x7b, 0x08, 0xb7, 0x55, 0x4e, 0x16, 0x73, 0x0a, 0xd4, 0x30, 0x10, 0x34, 0x1e, + 0x73, 0x31, 0xd2, 0x5c, 0x01, 0x56, 0x26, 0x85, 0x53, 0x2e, 0x4c, 0xf6, 0xdf, 0x6b, 0xd0, 0xc6, + 0xed, 0x93, 0x83, 0x7a, 0x93, 0xc5, 0x39, 0x1d, 0x6a, 0x51, 0xa4, 0x70, 0x98, 0x15, 0x8c, 0xda, + 0xd3, 0x13, 0x8d, 0xc6, 0x63, 0xa1, 0xc8, 0xe8, 0x3b, 0x5a, 0xc2, 0x51, 0x59, 0xf9, 0x2c, 0x77, + 0xd5, 0xc4, 0xa3, 0x70, 0x58, 0x2a, 0x4b, 0xa9, 0x16, 0x1d, 0x92, 0x66, 0xb2, 0x29, 0x95, 0xf3, + 0x63, 0x7c, 0x28, 0x1c, 0x86, 0x6f, 0x4a, 0xf3, 0xb9, 0x11, 0xa4, 0x82, 0x81, 0x9a, 0xc5, 0xbc, + 0x58, 0x4a, 0x24, 0x5d, 0xf1, 0x6a, 0xf3, 0x5c, 0xaf, 0x82, 0xe6, 0x55, 0x7d, 0x73, 0xb5, 0x2a, + 0x9b, 0x6b, 0x1d, 0xda, 0xa8, 0x27, 0x0f, 0xfa, 0x79, 0x2c, 0xf5, 0x1a, 0x53, 0x8f, 0x8d, 0x76, + 0x39, 0x36, 0x74, 0xef, 0x2e, 0x4c, 0xf0, 0xee, 0xa2, 0xf4, 0xee, 0xef, 0x4d, 0x80, 0x6d, 0x12, + 0xb9, 0x71, 0x3a, 0x24, 0x61, 0xca, 0x96, 0xe7, 0x49, 0x4a, 0x3a, 0x57, 0xe3, 0xa9, 0x75, 0xc2, + 0xd4, 0xeb, 0x84, 0x05, 0x33, 0x1c, 0x70, 0xf4, 0x26, 0xff, 0x9b, 0x81, 0x19, 0xb9, 0x31, 0x6a, + 0xc3, 0x20, 0x97, 0x34, 0xab, 0x03, 0x34, 0xf6, 0x44, 0xe5, 0xa8, 0x3b, 0x48, 0xb0, 0xcd, 0x5f, + 0xcc, 0xc7, 0x1b, 0x9a, 0x06, 0xe6, 0x75, 0x9d, 0x7b, 0x61, 0x0f, 0xf6, 0x22, 0x2c, 0x25, 0xd9, + 0x61, 0xb1, 0xb8, 0xbd, 0x6c, 0x28, 0xc2, 0xbd, 0xc2, 0x67, 0xa0, 0x62, 0x73, 0xc6, 0x06, 0x61, + 0xa9, 0x29, 0x18, 0xe5, 0xae, 0xc0, 0x7e, 0xdb, 0x84, 0xa5, 0xfd, 0x78, 0xe0, 0x86, 0xfe, 0xf7, + 0x79, 0xbb, 0xc9, 0x13, 0xf8, 0x65, 0x4a, 0xee, 0x1a, 0xb4, 0x48, 0x38, 0x08, 0xfc, 0xe4, 0x78, + 0xaf, 0xc0, 0x4d, 0x65, 0xa9, 0x60, 0xcf, 0x4c, 0x2a, 0xca, 0x75, 0xad, 0x28, 0xaf, 0x40, 0x63, + 0x48, 0x0f, 0xfd, 0x20, 0x8f, 0x7b, 0x41, 0xf1, 0x98, 0x27, 0x01, 0xe1, 0xd5, 0x59, 0xc6, 0x7c, + 0xce, 0x28, 0x0a, 0xf5, 0xdc, 0xd8, 0x42, 0xdd, 0x54, 0x0b, 0xb5, 0x0e, 0x3c, 0x54, 0x80, 0x47, + 0xb8, 0x5a, 0x12, 0xae, 0x3f, 0x1b, 0xb0, 0x54, 0xc0, 0x8d, 0x3d, 0xe8, 0x44, 0xb8, 0x6c, 0x98, + 0xdf, 0x56, 0x23, 0x50, 0x24, 0x0f, 0x95, 0xc7, 0xcc, 0xda, 0xe7, 0x71, 0x83, 0x39, 0x15, 0x09, + 0x06, 0xf4, 0x01, 0x4d, 0x7c, 0xa5, 0xdf, 0x97, 0x34, 0x9b, 0x6d, 0x97, 0xb8, 0x0a, 0x58, 0x48, + 0x31, 0x7e, 0x0f, 0xbb, 0x6e, 0x8c, 0x31, 0x41, 0xb1, 0x25, 0xec, 0xc8, 0x3a, 0xba, 0xf3, 0xd8, + 0x7e, 0xcf, 0x80, 0x25, 0xac, 0x0f, 0xca, 0x66, 0xd9, 0x87, 0x25, 0x5a, 0x8a, 0x02, 0x51, 0x64, + 0x3e, 0x3d, 0xa6, 0x48, 0x94, 0x03, 0xc6, 0xa9, 0x08, 0x5b, 0x6f, 0xc0, 0x75, 0xaf, 0x84, 0xd3, + 0xae, 0x9f, 0xa4, 0x1d, 0x73, 0xad, 0x36, 0x41, 0x69, 0x19, 0x56, 0x67, 0xac, 0x02, 0xfb, 0x07, + 0xd0, 0x39, 0xc8, 0x82, 0xa0, 0x4b, 0x92, 0xc4, 0x1d, 0x90, 0xcd, 0xb3, 0x1e, 0x19, 0x31, 0xbe, + 0x43, 0x92, 0x88, 0x45, 0x18, 0x89, 0xe3, 0x2d, 0xea, 0x11, 0x6e, 0x7c, 0xdd, 0xc9, 0x49, 0x06, + 0x0e, 0x89, 0x63, 0x96, 0x66, 0x44, 0x1f, 0x84, 0x94, 0x75, 0x0b, 0x66, 0x02, 0x66, 0x56, 0x8d, + 0x9b, 0xb5, 0x3a, 0xc6, 0xac, 0x6e, 0x32, 0xd8, 0x76, 0x53, 0xd7, 0xe1, 0xe3, 0xec, 0x21, 0x7c, + 0x6c, 0xfc, 0xec, 0xa3, 0x89, 0x51, 0xc0, 0x3a, 0x15, 0x5e, 0xea, 0x7d, 0x1a, 0xca, 0x20, 0x50, + 0x59, 0xcc, 0xec, 0x04, 0xf5, 0x70, 0x3b, 0xda, 0x4e, 0x4e, 0xda, 0xd7, 0xc1, 0xba, 0x4b, 0xd2, + 0xae, 0xfb, 0x78, 0x23, 0xf4, 0xba, 0x7e, 0xd8, 0x23, 0x23, 0x87, 0x8c, 0xec, 0x1d, 0xb8, 0x56, + 0xe1, 0x26, 0x11, 0xdf, 0x2d, 0xee, 0xe3, 0x1e, 0x19, 0x71, 0x03, 0xda, 0x8e, 0xa0, 0x38, 0x9f, + 0x8f, 0x12, 0x4d, 0x90, 0xa0, 0xec, 0x11, 0x2c, 0x32, 0x57, 0xf5, 0x48, 0xe8, 0x75, 0x93, 0x01, + 0x57, 0xb1, 0x06, 0x2d, 0x44, 0xa0, 0x9b, 0x0c, 0x8a, 0xae, 0x4a, 0x61, 0xb1, 0x11, 0xfd, 0xc0, + 0x67, 0x2e, 0xe1, 0x23, 0xc4, 0x6a, 0x14, 0x16, 0x8b, 0xdd, 0x84, 0x88, 0x43, 0x06, 0x0b, 0xea, + 0x9a, 0x23, 0x69, 0xfb, 0xbd, 0x3a, 0xcc, 0x0a, 0x40, 0xf9, 0x29, 0x91, 0x35, 0xb2, 0x12, 0x2f, + 0xa4, 0xb0, 0xe4, 0xf4, 0x4f, 0x8b, 0xf3, 0x1a, 0x52, 0xea, 0x09, 0xaf, 0xa6, 0x9f, 0xf0, 0x4a, + 0x36, 0xcd, 0x54, 0x6d, 0x2a, 0xad, 0xab, 0x5e, 0x5d, 0x17, 0xcb, 0xb0, 0x3c, 0xe9, 0x1c, 0x04, + 0x6e, 0x7a, 0x44, 0xe3, 0xa1, 0xe8, 0x4b, 0xeb, 0x4e, 0x85, 0xcf, 0xb2, 0x3a, 0xf2, 0x64, 0x59, + 0xc6, 0xdd, 0x55, 0xe2, 0xb2, 0x22, 0x88, 0x9c, 0xbc, 0x3c, 0xe3, 0x81, 0x40, 0x67, 0xa2, 0x6d, + 0x49, 0xe2, 0xd3, 0x90, 0x17, 0x08, 0xac, 0xc2, 0x2a, 0x8b, 0xad, 0x7c, 0x98, 0x0c, 0xee, 0xc4, + 0x74, 0x28, 0x8e, 0x05, 0x39, 0xc9, 0x57, 0x4e, 0xc3, 0x34, 0x2f, 0x2e, 0x2d, 0x94, 0x55, 0x58, + 0x4c, 0x56, 0x90, 0xbc, 0x04, 0xcf, 0x3b, 0x39, 0x69, 0x2d, 0x41, 0x2d, 0x21, 0x23, 0x51, 0x57, + 0xd9, 0x9f, 0x9a, 0xe7, 0x16, 0x75, 0xcf, 0x95, 0x12, 0xe5, 0x12, 0xff, 0x55, 0x4d, 0x94, 0xc5, + 0x99, 0x7f, 0x59, 0x3b, 0xf3, 0x6f, 0xc0, 0x2c, 0x8d, 0x58, 0x9c, 0x27, 0x1d, 0x8b, 0xef, 0xb1, + 0xcf, 0x4c, 0xde, 0x63, 0xb7, 0xf6, 0x71, 0xe4, 0x4e, 0x98, 0xc6, 0x67, 0x4e, 0x2e, 0x67, 0xed, + 0xc2, 0x22, 0x3d, 0x3a, 0x0a, 0xfc, 0x90, 0x1c, 0x64, 0xc9, 0x31, 0xef, 0x5f, 0xaf, 0xf1, 0xd4, + 0x64, 0x8f, 0x4b, 0x4d, 0xfa, 0x48, 0xa7, 0x2c, 0xba, 0xfa, 0x0a, 0xcc, 0xab, 0xd3, 0x30, 0x18, + 0x4e, 0xc8, 0x99, 0x88, 0x41, 0xf6, 0x27, 0x4b, 0xc9, 0xa7, 0x6e, 0x90, 0x61, 0x89, 0x9b, 0x73, + 0x90, 0x78, 0xc5, 0xfc, 0x8a, 0x61, 0xff, 0xdc, 0x80, 0xc5, 0xd2, 0x04, 0x6c, 0x74, 0xea, 0xa7, + 0x01, 0x11, 0x1a, 0x90, 0x60, 0xed, 0x83, 0x47, 0x92, 0xbe, 0x08, 0x61, 0xfe, 0xb7, 0xa8, 0x25, + 0x35, 0x79, 0x28, 0xb4, 0x61, 0xde, 0xdf, 0xef, 0x31, 0x45, 0x3d, 0x9a, 0x85, 0x9e, 0xbc, 0xd8, + 0x51, 0x78, 0x2c, 0x84, 0xfc, 0xfd, 0xde, 0xa6, 0xeb, 0x0d, 0x08, 0x5e, 0xbf, 0xd4, 0xb9, 0x4d, + 0x3a, 0xd3, 0xf6, 0x60, 0xee, 0x81, 0x1f, 0x25, 0x5b, 0x74, 0x38, 0x64, 0x8e, 0xf0, 0x48, 0xca, + 0x0a, 0x9d, 0xc1, 0xfd, 0x2d, 0x28, 0x16, 0x2a, 0x1e, 0x39, 0x72, 0xb3, 0x20, 0x65, 0x43, 0xf3, + 0x8d, 0xab, 0xb0, 0xf8, 0xc5, 0x43, 0x42, 0xc3, 0x6d, 0x94, 0x46, 0x3b, 0x15, 0x8e, 0xfd, 0x17, + 0x13, 0x96, 0xf8, 0xf1, 0x60, 0x8b, 0xbb, 0xdd, 0xe3, 0x42, 0x2f, 0x43, 0x9d, 0x6f, 0x43, 0x51, + 0x2d, 0xce, 0x3f, 0x52, 0xe0, 0x50, 0xeb, 0x36, 0x34, 0x68, 0xc4, 0x4b, 0x0c, 0x9e, 0x43, 0x9e, + 0x9f, 0x24, 0xa4, 0xdf, 0xf1, 0x38, 0x42, 0xca, 0xba, 0x03, 0x30, 0x2c, 0x2a, 0x0a, 0xa6, 0xee, + 0x69, 0x75, 0x28, 0x92, 0x0c, 0x5c, 0x99, 0x86, 0xe5, 0x45, 0x4f, 0xcd, 0xd1, 0x99, 0xd6, 0x1e, + 0x2c, 0x70, 0xb3, 0xf7, 0xf3, 0xb3, 0x25, 0xf7, 0xc1, 0xf4, 0x33, 0x96, 0xa4, 0xed, 0x5f, 0x1b, + 0x02, 0x46, 0xf6, 0x6b, 0x8f, 0x20, 0xf6, 0x05, 0x24, 0xc6, 0xa5, 0x20, 0x59, 0x85, 0xb9, 0x61, + 0xa6, 0x1c, 0x75, 0x6b, 0x8e, 0xa4, 0x0b, 0x17, 0xd5, 0xa6, 0x76, 0x91, 0xfd, 0x1b, 0x03, 0x3a, + 0xaf, 0x51, 0x3f, 0xe4, 0x3f, 0x6c, 0x44, 0x51, 0x20, 0x6e, 0x23, 0x2f, 0xed, 0xf3, 0x6f, 0x40, + 0xd3, 0x45, 0x35, 0x61, 0x2a, 0xdc, 0x3e, 0xc5, 0xf1, 0xb5, 0x90, 0x51, 0x4e, 0x22, 0x35, 0xf5, + 0x24, 0x62, 0xbf, 0x63, 0xc0, 0x02, 0x82, 0xf2, 0x7a, 0xe6, 0xa7, 0x97, 0xb6, 0x6f, 0x13, 0xe6, + 0x46, 0x99, 0x9f, 0x5e, 0x22, 0x2a, 0xa5, 0x5c, 0x35, 0x9e, 0x6a, 0x63, 0xe2, 0xc9, 0x7e, 0xd7, + 0x80, 0x1b, 0x65, 0x58, 0x37, 0xfa, 0x7d, 0x12, 0x3d, 0xc9, 0x2d, 0xa5, 0x9d, 0xc4, 0x66, 0x4a, + 0x27, 0xb1, 0xb1, 0x26, 0x3b, 0xe4, 0x2d, 0xd2, 0x7f, 0x7a, 0x4d, 0xfe, 0xb1, 0x09, 0x1f, 0xbf, + 0x2b, 0x37, 0xde, 0x83, 0xd8, 0x0d, 0x93, 0x23, 0x12, 0xc7, 0x4f, 0xd0, 0xde, 0x5d, 0x68, 0x87, + 0xe4, 0x51, 0x61, 0x93, 0xd8, 0x8e, 0xd3, 0xaa, 0xd1, 0x85, 0xa7, 0xcb, 0x5d, 0xf6, 0x7f, 0x0c, + 0x58, 0x42, 0x3d, 0xdf, 0xf4, 0xfb, 0x27, 0x4f, 0x70, 0xf1, 0x7b, 0xb0, 0x70, 0xc2, 0x2d, 0x60, + 0xd4, 0x25, 0xd2, 0x76, 0x49, 0x7a, 0xca, 0xe5, 0xff, 0xd7, 0x80, 0x65, 0x54, 0x74, 0x3f, 0x3c, + 0xf5, 0x9f, 0x64, 0xb0, 0x1e, 0xc0, 0xa2, 0x8f, 0x26, 0x5c, 0x12, 0x80, 0xb2, 0xf8, 0x94, 0x08, + 0xfc, 0xd1, 0x80, 0x45, 0xd4, 0xb4, 0x13, 0xa6, 0x24, 0xbe, 0xf4, 0xfa, 0xef, 0xb1, 0xd3, 0x7d, + 0x1a, 0xbb, 0xe1, 0x65, 0x32, 0xa4, 0x2a, 0x3a, 0x65, 0x92, 0x7c, 0xc7, 0x00, 0x8b, 0xab, 0xda, + 0xf6, 0x93, 0xa1, 0x9f, 0x24, 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x4b, 0x13, 0xae, 0x2b, 0x5a, + 0xba, 0x59, 0xfa, 0xb4, 0x9b, 0x6c, 0x6d, 0x43, 0x93, 0xf5, 0x08, 0xea, 0x15, 0xff, 0xb4, 0x13, + 0x15, 0x82, 0xac, 0x8b, 0xe5, 0x44, 0x8f, 0xf4, 0x69, 0xe8, 0x25, 0xbc, 0x39, 0x6a, 0x3b, 0x1a, + 0x8f, 0xa5, 0xa1, 0x55, 0x45, 0xcd, 0x96, 0x1b, 0xf6, 0x49, 0xf0, 0xcc, 0x40, 0x64, 0xff, 0xce, + 0x80, 0x05, 0x1c, 0xf2, 0xf4, 0x2f, 0x99, 0xd5, 0x7a, 0x0c, 0xe4, 0x0f, 0x8d, 0x97, 0xec, 0x13, + 0x58, 0xc6, 0x5b, 0x7d, 0xa5, 0x3d, 0x61, 0x07, 0x5f, 0xd7, 0xc3, 0xb3, 0xac, 0xc1, 0x85, 0x72, + 0x52, 0x7f, 0xaf, 0x11, 0x4f, 0xf2, 0xc5, 0x7b, 0xcd, 0x4d, 0x00, 0xd7, 0xf3, 0xde, 0xa0, 0xb1, + 0xe7, 0x87, 0x79, 0xaf, 0xa9, 0x70, 0xec, 0xd7, 0x60, 0x9e, 0x1d, 0xbd, 0x1f, 0x28, 0xf7, 0xf3, + 0xe7, 0xbe, 0x20, 0xa8, 0x77, 0xfb, 0xa6, 0x7e, 0xb7, 0x6f, 0x7f, 0x0f, 0x3e, 0x5a, 0x31, 0x9c, + 0x63, 0xbd, 0x85, 0xcf, 0x0e, 0xf9, 0x24, 0x02, 0xf2, 0x4f, 0x8e, 0x41, 0x4f, 0xb5, 0xc5, 0xd1, + 0x84, 0xec, 0x1f, 0x19, 0xf0, 0x5c, 0x45, 0xfd, 0x46, 0x14, 0xc5, 0xf4, 0x54, 0xb8, 0xf4, 0x2a, + 0xa6, 0xd1, 0xfb, 0x30, 0xb3, 0xdc, 0x87, 0x8d, 0x35, 0x42, 0xeb, 0x1d, 0x3f, 0x00, 0x23, 0x7e, + 0x6b, 0xc0, 0xa2, 0x30, 0xc2, 0xf3, 0xc4, 0xb4, 0x5f, 0x86, 0x06, 0x3e, 0x59, 0x8a, 0x09, 0x9f, + 0x1b, 0x3b, 0x61, 0xfe, 0xd4, 0xea, 0x88, 0xc1, 0xd5, 0x88, 0x34, 0xc7, 0xe5, 0x8d, 0xaf, 0xca, + 0xb8, 0x9f, 0xfa, 0x51, 0x51, 0x08, 0xd8, 0xdf, 0xce, 0x83, 0x79, 0x9b, 0x04, 0xe4, 0x2a, 0x31, + 0xb2, 0x1f, 0xc2, 0x02, 0x7f, 0x3f, 0x2d, 0x30, 0xb8, 0x12, 0xb5, 0x6f, 0xc0, 0x12, 0x57, 0x7b, + 0xe5, 0xf6, 0xca, 0xdd, 0xc1, 0xf0, 0xd9, 0x3a, 0x76, 0xc3, 0xc1, 0x55, 0x6a, 0xff, 0x02, 0x5c, + 0xcb, 0xb1, 0x7f, 0x18, 0x79, 0xf2, 0x3e, 0x63, 0xc2, 0x2d, 0xae, 0xfd, 0x45, 0x58, 0xd9, 0xa2, + 0xe1, 0x29, 0x89, 0x13, 0xbc, 0xe3, 0xe6, 0x22, 0xb9, 0x84, 0xb6, 0xf9, 0x05, 0x65, 0xbf, 0x05, + 0xab, 0xaa, 0x44, 0x8f, 0xa4, 0x07, 0xb1, 0x7f, 0xaa, 0x48, 0x89, 0x5b, 0x4e, 0x43, 0xbb, 0xe5, + 0x2c, 0x6e, 0x45, 0x4d, 0xed, 0x56, 0xf4, 0x06, 0x34, 0xfd, 0x44, 0x28, 0xe0, 0x41, 0x35, 0xe7, + 0x14, 0x0c, 0xbb, 0x07, 0xcb, 0xe2, 0x45, 0xf3, 0xc0, 0x1d, 0xf8, 0x21, 0x66, 0xc0, 0x9b, 0x00, + 0x91, 0x3b, 0xc8, 0xbf, 0x68, 0xc0, 0x0b, 0x71, 0x85, 0xc3, 0x7e, 0x4f, 0x8e, 0xe9, 0x23, 0xf1, + 0xbb, 0x89, 0xbf, 0x17, 0x1c, 0xfb, 0x5b, 0x60, 0x39, 0x24, 0x89, 0x68, 0x98, 0x10, 0x45, 0xeb, + 0x1a, 0xb4, 0xb6, 0xb2, 0x38, 0x26, 0x21, 0x9b, 0x2a, 0x7f, 0xde, 0x57, 0x59, 0x4c, 0x6f, 0xaf, + 0xd0, 0x8b, 0x97, 0xa8, 0x0a, 0xc7, 0xfe, 0x55, 0x0d, 0x9a, 0x3d, 0x7f, 0x10, 0xba, 0x81, 0x43, + 0x46, 0xd6, 0xd7, 0xa0, 0x81, 0xad, 0xad, 0x70, 0xe3, 0xb8, 0x4b, 0x3d, 0x1c, 0x8d, 0x3d, 0xbc, + 0x43, 0x46, 0xf7, 0x3e, 0xe2, 0x08, 0x19, 0xeb, 0x75, 0x68, 0xe3, 0x5f, 0xf7, 0xf1, 0xaa, 0x42, + 0xd4, 0x99, 0xcf, 0x5e, 0xa0, 0x44, 0x8c, 0x46, 0x5d, 0xba, 0x06, 0x66, 0x50, 0x9f, 0x97, 0x3e, + 0xb1, 0x77, 0x27, 0x1b, 0x84, 0x15, 0x52, 0x18, 0x84, 0x32, 0x4c, 0xda, 0xe5, 0x87, 0x79, 0xd1, + 0x2e, 0x4c, 0x96, 0xc6, 0x33, 0xbf, 0x90, 0x46, 0x19, 0x26, 0x7d, 0x9c, 0x85, 0x83, 0x87, 0x91, + 0xb8, 0x63, 0x9a, 0x2c, 0x7d, 0x8f, 0x0f, 0x13, 0xd2, 0x28, 0xc3, 0xa4, 0x63, 0x9e, 0x59, 0x39, + 0xe8, 0xe7, 0x49, 0x63, 0x02, 0x16, 0xd2, 0x28, 0xb3, 0xd9, 0x84, 0xd9, 0xc8, 0x3d, 0x0b, 0xa8, + 0xeb, 0xd9, 0x6f, 0xd7, 0x00, 0xf2, 0x81, 0x09, 0xaf, 0xe2, 0x9a, 0x8b, 0xd6, 0x2f, 0x74, 0x51, + 0x14, 0x9c, 0x29, 0x4e, 0xea, 0x8d, 0x77, 0xd2, 0xe7, 0xa6, 0x75, 0x12, 0x6a, 0x2b, 0xb9, 0xe9, + 0x76, 0xc9, 0x4d, 0xeb, 0x17, 0xba, 0x49, 0x18, 0x25, 0x1c, 0x75, 0xbb, 0xe4, 0xa8, 0xf5, 0x0b, + 0x1d, 0x25, 0xe4, 0x85, 0xab, 0x6e, 0x97, 0x5c, 0xb5, 0x7e, 0xa1, 0xab, 0x84, 0xbc, 0x70, 0xd6, + 0xed, 0x92, 0xb3, 0xd6, 0x2f, 0x74, 0x96, 0x90, 0xaf, 0xba, 0xeb, 0x5d, 0x13, 0x16, 0x38, 0x64, + 0xf8, 0xa0, 0x14, 0x1e, 0x51, 0x7e, 0x6f, 0xcc, 0xe1, 0xd2, 0x3f, 0x90, 0xd1, 0x99, 0xd6, 0xe7, + 0x61, 0x19, 0x19, 0xe2, 0x83, 0x0a, 0xf9, 0x42, 0xd7, 0x74, 0xaa, 0x3f, 0xf0, 0x27, 0x80, 0x2c, + 0x49, 0xe9, 0x70, 0xdb, 0x4d, 0xdd, 0xbc, 0x33, 0x2a, 0x38, 0xea, 0x03, 0xcd, 0x4c, 0xe5, 0x13, + 0xbc, 0x98, 0xd2, 0xa1, 0x7c, 0x79, 0x11, 0x14, 0x93, 0x48, 0xfd, 0x21, 0xa1, 0x59, 0x2a, 0xd2, + 0x44, 0x4e, 0xe2, 0x23, 0xb6, 0xe7, 0xbb, 0xfc, 0x59, 0x43, 0xbc, 0xf0, 0x4a, 0x06, 0xcf, 0x6c, + 0xc5, 0x33, 0x8d, 0xf8, 0x44, 0xae, 0xe0, 0x5c, 0xfc, 0xa4, 0x62, 0xff, 0xc3, 0x80, 0x6b, 0x07, + 0x6e, 0x9c, 0xfa, 0x7d, 0x3f, 0x72, 0xc3, 0xb4, 0x4b, 0x52, 0x97, 0xaf, 0x41, 0xfb, 0x4a, 0xc6, + 0x78, 0x7f, 0x5f, 0xc9, 0x1c, 0xc0, 0xe2, 0xa0, 0xe8, 0x65, 0x95, 0xef, 0x6c, 0xa6, 0x3e, 0xe3, + 0x97, 0xc4, 0xb5, 0x4f, 0x7e, 0x6a, 0xef, 0xfb, 0x93, 0x1f, 0xfb, 0xa7, 0x26, 0x2c, 0x96, 0x52, + 0x27, 0x6b, 0x47, 0xb1, 0xd1, 0x90, 0x31, 0x21, 0x69, 0x6b, 0x03, 0xc0, 0x97, 0x61, 0x74, 0xce, + 0x25, 0xad, 0x1e, 0x6b, 0x8e, 0x22, 0x34, 0xee, 0xad, 0xa6, 0x76, 0xe9, 0xb7, 0x1a, 0xeb, 0x1e, + 0xb4, 0xa2, 0xc2, 0x49, 0xe7, 0x1c, 0xc0, 0xc6, 0xb8, 0xd2, 0x51, 0x45, 0xed, 0xef, 0xc2, 0x72, + 0x25, 0x43, 0xf1, 0xa7, 0x1b, 0x7a, 0x42, 0x42, 0xf9, 0x74, 0xc3, 0x08, 0x25, 0x58, 0xcd, 0x72, + 0xb0, 0x06, 0xfe, 0xa9, 0xfa, 0x4d, 0xa1, 0x20, 0xed, 0x9f, 0x99, 0xb0, 0x32, 0xbe, 0xba, 0x3c, + 0xab, 0x70, 0x1f, 0x42, 0x67, 0x52, 0x26, 0xbf, 0x32, 0xd4, 0x8b, 0xe8, 0x96, 0x75, 0xf8, 0x59, + 0x85, 0xfb, 0x5a, 0x1e, 0xdd, 0x4a, 0xa9, 0xb3, 0xff, 0x20, 0xf1, 0x91, 0x9d, 0xc6, 0x33, 0x8a, + 0x8f, 0xf5, 0x22, 0x2c, 0xe1, 0x32, 0x95, 0xc7, 0x7d, 0x6c, 0x5c, 0x2b, 0xfc, 0x22, 0x53, 0x28, + 0x65, 0xff, 0xca, 0x62, 0xf6, 0x4f, 0x46, 0xee, 0x13, 0xd9, 0xbf, 0x7d, 0xa8, 0x7c, 0x52, 0x44, + 0x9a, 0xd2, 0xd4, 0x28, 0x91, 0x26, 0xfb, 0xca, 0xff, 0x47, 0xda, 0xc5, 0x91, 0x26, 0xb1, 0x54, + 0x1a, 0x3c, 0xfb, 0x87, 0xd0, 0xde, 0x26, 0x41, 0x37, 0x19, 0xe4, 0x9f, 0x15, 0x9d, 0x07, 0xe4, + 0xa4, 0x7f, 0x6d, 0x98, 0xf8, 0x41, 0x51, 0xf9, 0x63, 0xa4, 0x99, 0xca, 0xc7, 0x48, 0xf6, 0x26, + 0x2c, 0xa8, 0x06, 0x5c, 0xe6, 0xab, 0xaa, 0xcd, 0x1b, 0xdf, 0x59, 0xbd, 0xf5, 0x12, 0xfe, 0x13, + 0xcd, 0xab, 0x15, 0x10, 0x0f, 0x1b, 0xfc, 0x9f, 0x6a, 0xbe, 0xf4, 0xbf, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x6c, 0xa8, 0x04, 0xcf, 0x67, 0x33, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 9f8c51917..ad4de4737 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -149,7 +149,7 @@ message DepartmentMember { message UserInDepartment { - OrganizationUser departmentUser = 1; + OrganizationUser organizationUser = 1; repeated DepartmentMember departmentMemberList = 2; } diff --git a/script/path_info.cfg b/script/path_info.cfg index 84e81adfd..a2281f35c 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/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} From cad147faf80ba980017d4066eb344ec5a533da12 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:14:47 +0800 Subject: [PATCH 025/128] organization --- cmd/rpc/open_im_organization/main.go | 2 +- config/config.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/rpc/open_im_organization/main.go b/cmd/rpc/open_im_organization/main.go index cb603ca37..8fa33964d 100644 --- a/cmd/rpc/open_im_organization/main.go +++ b/cmd/rpc/open_im_organization/main.go @@ -7,7 +7,7 @@ import ( ) func main() { - rpcPort := flag.Int("port", 10100, "get RpcOrganizationPort from cmd,default 10100 as port") + rpcPort := flag.Int("port", 11200, "get RpcOrganizationPort from cmd,default 11200 as port") flag.Parse() fmt.Println("start organization rpc server, port: ", *rpcPort) rpcServer := group.NewGroupServer(*rpcPort) diff --git a/config/config.yaml b/config/config.yaml index b2393c2a5..520cd8486 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -122,6 +122,7 @@ rpcport: #rpc服务端口 默认即可 openImMessageCmsPort: [ 10900 ] openImAdminCmsPort: [ 11000 ] openImOfficePort: [ 11100 ] + openImOrganizationPort: [ 11200 ] c2c: callbackBeforeSendMsg: switch: false From 0d5132f7105c1a120868dd485741037ce32e05db Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:17:21 +0800 Subject: [PATCH 026/128] organization --- pkg/proto/organization/organization.pb.go | 1780 +++++++++++++++++++++ script/start_rpc_service.sh | 3 +- 2 files changed, 1782 insertions(+), 1 deletion(-) create mode 100644 pkg/proto/organization/organization.pb.go diff --git a/pkg/proto/organization/organization.pb.go b/pkg/proto/organization/organization.pb.go new file mode 100644 index 000000000..844dfd947 --- /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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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 { + UserInDepartment *sdk_ws.UserInDepartment `protobuf:"bytes,1,opt,name=userInDepartment" json:"userInDepartment,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_a03f9a4144ed1081, []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) GetUserInDepartment() *sdk_ws.UserInDepartment { + if m != nil { + return m.UserInDepartment + } + 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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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_a03f9a4144ed1081, []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"` + UserInDepartmentList []*sdk_ws.UserInDepartment `protobuf:"bytes,3,rep,name=userInDepartmentList" json:"userInDepartmentList,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_a03f9a4144ed1081, []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) GetUserInDepartmentList() []*sdk_ws.UserInDepartment { + if m != nil { + return m.UserInDepartmentList + } + 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_a03f9a4144ed1081) +} + +var fileDescriptor_organization_a03f9a4144ed1081 = []byte{ + // 713 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4f, 0x6f, 0x12, 0x41, + 0x14, 0xcf, 0x8a, 0x56, 0xfb, 0xda, 0x18, 0x32, 0x25, 0x48, 0xd7, 0x34, 0xd2, 0xd5, 0x46, 0x4e, + 0x90, 0xd4, 0xa3, 0x37, 0x8b, 0x69, 0x49, 0xac, 0x24, 0x18, 0x62, 0xf0, 0x42, 0x96, 0x30, 0x12, + 0x82, 0xec, 0x0e, 0x33, 0x8b, 0x24, 0xfd, 0x12, 0x9e, 0xbc, 0x18, 0x8f, 0x9e, 0xfc, 0x34, 0x7e, + 0x24, 0xb3, 0xbb, 0x94, 0x0e, 0x6f, 0xde, 0x52, 0x5c, 0x16, 0xa3, 0xc7, 0x19, 0x66, 0xde, 0xef, + 0xbd, 0xdf, 0xfb, 0x33, 0x3f, 0x16, 0x9e, 0xf8, 0x72, 0xe0, 0x7a, 0xc3, 0x2b, 0x37, 0x18, 0xfa, + 0x5e, 0x4d, 0x5f, 0x54, 0x85, 0xf4, 0x03, 0x9f, 0xed, 0xeb, 0x7b, 0xf6, 0x71, 0x53, 0x70, 0xaf, + 0xdb, 0xb8, 0xac, 0x89, 0xd1, 0xa0, 0x16, 0x1d, 0xa8, 0xa9, 0xfe, 0xa8, 0x3b, 0x53, 0xb5, 0x99, + 0x8a, 0x2f, 0x38, 0xdf, 0x2c, 0x38, 0x38, 0x93, 0xdc, 0x0d, 0x78, 0x9d, 0x0b, 0x57, 0x06, 0x63, + 0xee, 0x05, 0x2d, 0x3e, 0x61, 0xaf, 0xe1, 0x61, 0x7f, 0xb1, 0xd1, 0xf0, 0x3e, 0xfa, 0x25, 0xab, + 0x6c, 0x55, 0xf6, 0x4e, 0x8f, 0xaa, 0x8a, 0xcb, 0xcf, 0x5c, 0x76, 0x5d, 0x31, 0xec, 0x0a, 0x57, + 0xba, 0x63, 0x55, 0xd5, 0x6e, 0xa2, 0x4b, 0xac, 0x0c, 0x7b, 0xbe, 0xe0, 0x32, 0x72, 0xa7, 0x51, + 0x2f, 0xdd, 0x29, 0x5b, 0x95, 0xdd, 0x96, 0xbe, 0xc5, 0x6c, 0x78, 0xe0, 0x8b, 0xb6, 0xe2, 0xb2, + 0x51, 0x2f, 0xe5, 0xa2, 0x9f, 0x17, 0x6b, 0xe7, 0x8b, 0x05, 0x05, 0xd3, 0x39, 0x25, 0x58, 0x09, + 0xee, 0x73, 0x29, 0xcf, 0xfc, 0x3e, 0x8f, 0xdc, 0xba, 0xd7, 0xba, 0x5e, 0xb2, 0x22, 0xec, 0x70, + 0x29, 0x2f, 0xd5, 0x60, 0x8e, 0x35, 0x5f, 0x11, 0xf1, 0xe4, 0x52, 0xc4, 0x13, 0xd1, 0xd5, 0x16, + 0xfd, 0x7f, 0x93, 0xae, 0x0b, 0x28, 0x98, 0xbe, 0xa5, 0x61, 0xcb, 0x99, 0xc1, 0xc1, 0x39, 0x0f, + 0xde, 0x4d, 0x7b, 0xcb, 0x51, 0x3a, 0xb0, 0xaf, 0x39, 0x5c, 0x8f, 0xac, 0xed, 0xb6, 0x96, 0xf6, + 0x32, 0xc8, 0xb8, 0x89, 0xbc, 0x79, 0xc6, 0xdf, 0x0c, 0x55, 0x50, 0xca, 0x95, 0x73, 0x7f, 0x94, + 0x92, 0xf0, 0x52, 0x48, 0x45, 0x9d, 0x7f, 0xe2, 0x38, 0xe1, 0xdb, 0xa7, 0xe2, 0x02, 0x0a, 0x26, + 0x70, 0xaa, 0x6c, 0xfe, 0xb4, 0xe0, 0x30, 0x6e, 0xa3, 0xa6, 0x36, 0x1d, 0x42, 0x98, 0x30, 0x92, + 0x26, 0xe4, 0x7d, 0xb4, 0x3d, 0x2f, 0xde, 0xa7, 0x04, 0x53, 0x86, 0x05, 0xe3, 0xf2, 0x86, 0x61, + 0xbf, 0x05, 0x3b, 0xc9, 0xd7, 0xd4, 0xc1, 0xc7, 0x5d, 0xf1, 0x7f, 0x04, 0x9f, 0xe4, 0xeb, 0x86, + 0x99, 0xbf, 0x29, 0xa2, 0x4b, 0x3e, 0xee, 0x2d, 0x82, 0x9f, 0x86, 0xb8, 0xde, 0xcd, 0x8f, 0x2b, + 0x82, 0x6f, 0xa3, 0xa3, 0x2d, 0xe3, 0x72, 0x56, 0x99, 0x37, 0x7d, 0x4d, 0x15, 0xbc, 0x07, 0xc5, + 0x73, 0x1e, 0x18, 0x6e, 0xf3, 0x49, 0x78, 0x63, 0x1a, 0xfb, 0x10, 0xb7, 0xed, 0x7c, 0xb5, 0xa1, + 0xff, 0xdf, 0x2d, 0x78, 0x44, 0x02, 0xa6, 0x1a, 0x5f, 0x54, 0x72, 0x72, 0x1b, 0x24, 0x47, 0x6b, + 0x04, 0x8a, 0x92, 0x26, 0xe4, 0xfb, 0x88, 0xf6, 0x15, 0xb5, 0x60, 0x64, 0xc8, 0xb8, 0x9c, 0x55, + 0x23, 0x64, 0xc3, 0xa6, 0xf3, 0xd5, 0x82, 0xc3, 0x78, 0x9a, 0xfe, 0xb5, 0x7a, 0x30, 0x9e, 0x88, + 0xbb, 0xe6, 0x13, 0x11, 0xc6, 0x99, 0xe4, 0x56, 0xaa, 0x38, 0x27, 0xd7, 0x61, 0x52, 0xc3, 0x6e, + 0x3b, 0x65, 0xbf, 0x08, 0x21, 0xa3, 0x99, 0x75, 0x15, 0xb5, 0x2d, 0x35, 0xaf, 0xb6, 0xff, 0xe6, + 0xfe, 0x88, 0x5b, 0x38, 0x9b, 0x01, 0xc4, 0xde, 0x43, 0x01, 0x77, 0xa1, 0xa6, 0x43, 0xd6, 0x6a, + 0x63, 0xd2, 0xc0, 0xe9, 0xaf, 0x5d, 0x58, 0x12, 0xfa, 0xac, 0x03, 0x79, 0x3c, 0x3a, 0xd9, 0x71, + 0x75, 0xe9, 0xff, 0x01, 0x21, 0xf2, 0x6d, 0xe7, 0xb6, 0x23, 0x4a, 0x84, 0xa6, 0xb1, 0xa8, 0xc4, + 0xa6, 0x09, 0x41, 0x8c, 0x4d, 0x93, 0xba, 0xb4, 0x03, 0x79, 0xac, 0xf5, 0xb0, 0x69, 0x42, 0x85, + 0x62, 0xd3, 0xa4, 0x5c, 0xec, 0x40, 0x1e, 0x8b, 0x27, 0x6c, 0x9a, 0x50, 0x75, 0xd8, 0x34, 0xa9, + 0xbf, 0x46, 0x50, 0xa4, 0x05, 0x0a, 0x7b, 0x4e, 0xd1, 0x49, 0x34, 0xa2, 0x5d, 0x59, 0xef, 0x60, + 0x0c, 0x46, 0x0b, 0x02, 0x0c, 0x96, 0x28, 0x71, 0x30, 0xd8, 0x0a, 0x7d, 0x31, 0x82, 0x22, 0xdd, + 0xc9, 0x18, 0x2c, 0x71, 0xc4, 0x60, 0xb0, 0x15, 0x83, 0x61, 0x41, 0x23, 0x6e, 0x36, 0x9a, 0x46, + 0x62, 0x1e, 0xd0, 0x34, 0x92, 0xbd, 0xdb, 0x8b, 0xfe, 0xcf, 0xe0, 0xee, 0x62, 0xcf, 0x8c, 0x4a, + 0x22, 0x5e, 0x07, 0xfb, 0x64, 0x8d, 0x53, 0x3a, 0x7b, 0x06, 0x0c, 0xc9, 0x1e, 0x85, 0x54, 0x59, + 0xef, 0xa0, 0x5e, 0x17, 0xb7, 0x81, 0x25, 0xbe, 0xf8, 0x74, 0x5d, 0x90, 0x60, 0x31, 0x7b, 0x46, + 0x9e, 0x4c, 0xf6, 0xa8, 0x24, 0x9d, 0xac, 0x71, 0x4a, 0x89, 0x57, 0x47, 0x1f, 0x1e, 0x57, 0x97, + 0x3e, 0x68, 0xbc, 0xd4, 0x17, 0xbd, 0x9d, 0xe8, 0x6b, 0xc5, 0x8b, 0xdf, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x33, 0x0d, 0x37, 0x72, 0x01, 0x11, 0x00, 0x00, +} diff --git a/script/start_rpc_service.sh b/script/start_rpc_service.sh index e15307f45..eb261fb48 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 @@ -64,4 +65,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 From 0bb3cb4aab0d3ae4bcc1d69478bcb9d0c45ea4a1 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:19:24 +0800 Subject: [PATCH 027/128] organization --- script/path_info.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/path_info.cfg b/script/path_info.cfg index a2281f35c..b50fc18fb 100644 --- a/script/path_info.cfg +++ b/script/path_info.cfg @@ -49,7 +49,7 @@ service_source_root=( ../cmd/rpc/open_im_message_cms/ ../cmd/rpc/open_im_statistics/ ../cmd/rpc/open_im_office/ - ../cmd/rpc/organization/ + ../cmd/rpc/open_im_organization/ ${msg_gateway_source_root} ${msg_transfer_source_root} ${msg_source_root} From bf081dce32cfbb233d46118de0ae0c65486e4cd5 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:22:01 +0800 Subject: [PATCH 028/128] organization --- script/start_rpc_service.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/script/start_rpc_service.sh b/script/start_rpc_service.sh index eb261fb48..20e7991b4 100644 --- a/script/start_rpc_service.sh +++ b/script/start_rpc_service.sh @@ -37,6 +37,7 @@ service_port_name=( openImStatisticsPort openImOfflineMessagePort openImOfficePort + openImOrganizationPort ) for ((i = 0; i < ${#service_filename[*]}; i++)); do From bef4f0c4e25c1cdc97f65f4a3beb22c8cd1a79fd Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:25:01 +0800 Subject: [PATCH 029/128] organization --- script/check_all.sh | 1 + 1 file changed, 1 insertion(+) 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 From cde38e012fe2223b32577434e47bc3a50a2b9d80 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:27:18 +0800 Subject: [PATCH 030/128] organization --- pkg/common/db/mysql.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index 982ad378f..925058841 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -106,20 +106,20 @@ func initMysqlDB() { fmt.Println("CreateTable Conversation") db.CreateTable(&Conversation{}) } - /* - if db.HasTable(&Department{}) { - fmt.Println("CreateTable Department") - db.CreateTable(&Department{}) - } - if db.HasTable(&OrganizationUser{}) { - fmt.Println("CreateTable OrganizationUser") - db.CreateTable(&OrganizationUser{}) - } - if db.HasTable(&DepartmentMember{}) { - fmt.Println("CreateTable DepartmentMember") - db.CreateTable(&DepartmentMember{}) - } - */ + + if db.HasTable(&Department{}) { + fmt.Println("CreateTable Department") + db.CreateTable(&Department{}) + } + if db.HasTable(&OrganizationUser{}) { + fmt.Println("CreateTable OrganizationUser") + db.CreateTable(&OrganizationUser{}) + } + if db.HasTable(&DepartmentMember{}) { + fmt.Println("CreateTable DepartmentMember") + db.CreateTable(&DepartmentMember{}) + } + return } From edf7df368e6abf72c3a3ad18c8a602ce4e228bf7 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:30:02 +0800 Subject: [PATCH 031/128] organization --- pkg/common/db/mysql.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index 925058841..cfef4dfee 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -107,15 +107,15 @@ func initMysqlDB() { db.CreateTable(&Conversation{}) } - if db.HasTable(&Department{}) { + if !db.HasTable(&Department{}) { fmt.Println("CreateTable Department") db.CreateTable(&Department{}) } - if db.HasTable(&OrganizationUser{}) { + 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{}) } From 3c1e6d0e5cecc5ff4f31a5b7a970ae414aa38c6b Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:42:50 +0800 Subject: [PATCH 032/128] organization --- pkg/common/token_verify/jwt_token.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 1f9cdd66f..057d55641 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -150,17 +150,17 @@ 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, "") } 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, "") } if v, ok := m[tokensString]; ok { switch v { @@ -168,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, "") 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, "") } //func MakeTheTokenInvalid(currentClaims *Claims, platformClass string) (bool, error) { From 42af55a7403c5ee824844df062b0b86625138f5f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:45:41 +0800 Subject: [PATCH 033/128] organization --- pkg/common/token_verify/jwt_token.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 057d55641..bfff43116 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -156,11 +156,11 @@ func ParseToken(tokensString, operationID string) (claims *Claims, err error) { 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, utils.Wrap(&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, utils.Wrap(&constant.ErrTokenInvalid, "") + return nil, utils.Wrap(&constant.ErrTokenInvalid, "get token from redis err") } if v, ok := m[tokensString]; ok { switch v { @@ -171,7 +171,7 @@ func ParseToken(tokensString, operationID string) (claims *Claims, err error) { 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, utils.Wrap(&constant.ErrTokenKicked, "") + return nil, utils.Wrap(&constant.ErrTokenKicked, "this token has been kicked by other same terminal ") case constant.ExpiredToken: return nil, utils.Wrap(&constant.ErrTokenExpired, "") default: @@ -179,7 +179,7 @@ func ParseToken(tokensString, operationID string) (claims *Claims, err error) { } } log.NewError(operationID, "redis token map not find", constant.ErrTokenUnknown) - return nil, utils.Wrap(&constant.ErrTokenUnknown, "") + return nil, utils.Wrap(&constant.ErrTokenUnknown, "redis token map not find") } //func MakeTheTokenInvalid(currentClaims *Claims, platformClass string) (bool, error) { From 300b72b9b89373c58d8cc3d07da7954c095665c4 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:47:00 +0800 Subject: [PATCH 034/128] organization --- internal/api/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 338670c45..0a9dab470 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -27,7 +27,7 @@ func CreateDepartment(c *gin.Context) { 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") + 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 From af5ee452063e1c12a1ff47832b369bb33d063f3a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:56:28 +0800 Subject: [PATCH 035/128] organization --- config/config.yaml | 1 + internal/rpc/organization/organization.go | 2 +- pkg/common/config/config.go | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 520cd8486..d61292bdc 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -145,6 +145,7 @@ rpcregistername: #rpc注册服务名,默认即可 OpenImMessageCMSName: MessageCMS openImAdminCMSName: AdminCMS openImOfficeName: Office + openImOrganizationName: Organization log: storageLocation: ../logs/ diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index ec22e9841..e27bb9ed3 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -31,7 +31,7 @@ func NewGroupServer(port int) *organizationServer { log.NewPrivateLog(constant.LogFileName) return &organizationServer{ rpcPort: port, - rpcRegisterName: config.Config.RpcRegisterName.OpenImGroupName, + rpcRegisterName: config.Config.RpcRegisterName.OpenImOrganizationName, etcdSchema: config.Config.Etcd.EtcdSchema, etcdAddr: config.Config.Etcd.EtcdAddr, } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 4cc5fed27..9e1bd54b6 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -117,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"` From 32679585416d2cbf0df1bf4ec6af79e32db93555 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 20:59:38 +0800 Subject: [PATCH 036/128] organization --- internal/api/organization/organization.go | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 0a9dab470..4a54a90b5 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -34,7 +34,7 @@ func CreateDepartment(c *gin.Context) { } 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) + 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 { @@ -69,7 +69,7 @@ func UpdateDepartment(c *gin.Context) { } 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) + 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 { @@ -103,7 +103,7 @@ func GetSubDepartment(c *gin.Context) { } 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) + 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 { @@ -137,7 +137,7 @@ func DeleteDepartment(c *gin.Context) { 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) + 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 { @@ -172,7 +172,7 @@ func CreateOrganizationUser(c *gin.Context) { 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) + 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 { @@ -207,7 +207,7 @@ func UpdateOrganizationUser(c *gin.Context) { 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) + 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 { @@ -242,7 +242,7 @@ func CreateDepartmentMember(c *gin.Context) { 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) + 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 { @@ -277,7 +277,7 @@ func GetUserInDepartment(c *gin.Context) { 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) + 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 { @@ -313,7 +313,7 @@ func UpdateUserInDepartment(c *gin.Context) { 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) + 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 { @@ -348,7 +348,7 @@ func DeleteOrganizationUser(c *gin.Context) { 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) + 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 { @@ -383,7 +383,7 @@ func GetDepartmentMember(c *gin.Context) { 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) + 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 { @@ -418,7 +418,7 @@ func DeleteUserInDepartment(c *gin.Context) { 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) + 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 { From 9abfe233bc52b4995e6cc7746122b3bd4630b991 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:10:46 +0800 Subject: [PATCH 037/128] organization --- cmd/rpc/open_im_organization/main.go | 4 ++-- internal/rpc/organization/organization.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/rpc/open_im_organization/main.go b/cmd/rpc/open_im_organization/main.go index 8fa33964d..906ac510f 100644 --- a/cmd/rpc/open_im_organization/main.go +++ b/cmd/rpc/open_im_organization/main.go @@ -1,7 +1,7 @@ package main import ( - "Open_IM/internal/rpc/group" + "Open_IM/internal/rpc/organization" "flag" "fmt" ) @@ -10,6 +10,6 @@ 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 := group.NewGroupServer(*rpcPort) + rpcServer := organization.NewServer(*rpcPort) rpcServer.Run() } diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index e27bb9ed3..dc80ce188 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -27,7 +27,7 @@ type organizationServer struct { etcdAddr []string } -func NewGroupServer(port int) *organizationServer { +func NewServer(port int) *organizationServer { log.NewPrivateLog(constant.LogFileName) return &organizationServer{ rpcPort: port, From 9e18bcaeb8a7072ed07723f1af13cb05803d92c5 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:14:28 +0800 Subject: [PATCH 038/128] organization --- pkg/base_info/organization_api_struct.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 0289b2f81..380678336 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -3,7 +3,7 @@ package base_info import open_im_sdk "Open_IM/pkg/proto/sdk_ws" type CreateDepartmentReq struct { - *open_im_sdk.Department + open_im_sdk.Department OperationID string `json:"operationID" binding:"required"` } type CreateDepartmentResp struct { @@ -13,7 +13,7 @@ type CreateDepartmentResp struct { } type UpdateDepartmentReq struct { - *open_im_sdk.Department + open_im_sdk.Department DepartmentID string `json:"departmentID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } From 4a7f406edbbc68ff6388db73f363ed37b08c659a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:17:32 +0800 Subject: [PATCH 039/128] organization --- internal/api/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 4a54a90b5..ee8ee6489 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -33,7 +33,7 @@ func CreateDepartment(c *gin.Context) { return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) From b4ab2c69ae80773db4c8a305499062a87d299518 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:20:17 +0800 Subject: [PATCH 040/128] organization --- internal/api/organization/organization.go | 1 + pkg/base_info/organization_api_struct.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index ee8ee6489..4778dc866 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -24,6 +24,7 @@ func CreateDepartment(c *gin.Context) { } req := &rpc.CreateDepartmentReq{} 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 { diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 380678336..a52a84f65 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -3,7 +3,7 @@ package base_info import open_im_sdk "Open_IM/pkg/proto/sdk_ws" type CreateDepartmentReq struct { - open_im_sdk.Department + *open_im_sdk.Department OperationID string `json:"operationID" binding:"required"` } type CreateDepartmentResp struct { From 3d690b7c72b698a3000fbb47ff8f55dfe4b7b83a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:23:38 +0800 Subject: [PATCH 041/128] organization --- pkg/base_info/organization_api_struct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index a52a84f65..380678336 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -3,7 +3,7 @@ package base_info import open_im_sdk "Open_IM/pkg/proto/sdk_ws" type CreateDepartmentReq struct { - *open_im_sdk.Department + open_im_sdk.Department OperationID string `json:"operationID" binding:"required"` } type CreateDepartmentResp struct { From bbcb3e94036b792c0231405db964da8f845bdd84 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:26:16 +0800 Subject: [PATCH 042/128] organization --- internal/api/organization/organization.go | 2 +- pkg/base_info/organization_api_struct.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 4778dc866..d64e21d37 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -24,7 +24,7 @@ func CreateDepartment(c *gin.Context) { } req := &rpc.CreateDepartmentReq{} utils.CopyStructFields(req, ¶ms) - utils.CopyStructFields(req.DepartmentInfo, ¶ms) + utils.CopyStructFields(req.DepartmentInfo, ¶ms.Department) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID if err != nil { diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 380678336..a52a84f65 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -3,7 +3,7 @@ package base_info import open_im_sdk "Open_IM/pkg/proto/sdk_ws" type CreateDepartmentReq struct { - open_im_sdk.Department + *open_im_sdk.Department OperationID string `json:"operationID" binding:"required"` } type CreateDepartmentResp struct { From f4dcae722c156ef271be4c03059d494cfdadb67c Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:28:37 +0800 Subject: [PATCH 043/128] organization --- internal/api/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index d64e21d37..eed92ba41 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -24,7 +24,7 @@ func CreateDepartment(c *gin.Context) { } req := &rpc.CreateDepartmentReq{} utils.CopyStructFields(req, ¶ms) - utils.CopyStructFields(req.DepartmentInfo, ¶ms.Department) + utils.CopyStructFields(req.DepartmentInfo, params.Department) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID if err != nil { From a42b72e9ce4c827f646db4af7aaf8a2d43a57a7b Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:31:28 +0800 Subject: [PATCH 044/128] organization --- internal/api/organization/organization.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index eed92ba41..8a651af47 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -8,6 +8,7 @@ import ( "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" @@ -22,7 +23,7 @@ func CreateDepartment(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - req := &rpc.CreateDepartmentReq{} + req := &rpc.CreateDepartmentReq{DepartmentInfo: &open_im_sdk.Department{}} utils.CopyStructFields(req, ¶ms) utils.CopyStructFields(req.DepartmentInfo, params.Department) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) From 6184eaa30e83dea5d06a8bdd11c0ed6450b8f93e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:32:53 +0800 Subject: [PATCH 045/128] organization --- internal/api/organization/organization.go | 1 - pkg/base_info/organization_api_struct.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 8a651af47..413928a64 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -25,7 +25,6 @@ func CreateDepartment(c *gin.Context) { } req := &rpc.CreateDepartmentReq{DepartmentInfo: &open_im_sdk.Department{}} utils.CopyStructFields(req, ¶ms) - utils.CopyStructFields(req.DepartmentInfo, params.Department) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID if err != nil { diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index a52a84f65..0289b2f81 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -13,7 +13,7 @@ type CreateDepartmentResp struct { } type UpdateDepartmentReq struct { - open_im_sdk.Department + *open_im_sdk.Department DepartmentID string `json:"departmentID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } From f076a927c9a7d9c5344b0b9310b8586902e63bcb Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:34:29 +0800 Subject: [PATCH 046/128] organization --- internal/api/organization/organization.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 413928a64..f24161d32 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -25,6 +25,7 @@ func CreateDepartment(c *gin.Context) { } req := &rpc.CreateDepartmentReq{DepartmentInfo: &open_im_sdk.Department{}} utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req, params.Department) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID if err != nil { From 02b5ff38a40573c89c79b13f341d6941593e23dd Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 16 Apr 2022 21:41:38 +0800 Subject: [PATCH 047/128] organization --- internal/api/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index f24161d32..3ff448e1e 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -25,7 +25,7 @@ func CreateDepartment(c *gin.Context) { } req := &rpc.CreateDepartmentReq{DepartmentInfo: &open_im_sdk.Department{}} utils.CopyStructFields(req, ¶ms) - utils.CopyStructFields(req, params.Department) + utils.CopyStructFields(req.DepartmentInfo, ¶ms) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID if err != nil { From 1902c3792400b51dd84aa1c74ea0a250e59d0875 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 11:51:36 +0800 Subject: [PATCH 048/128] organization --- internal/api/organization/organization.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 3ff448e1e..53542ea97 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -59,8 +59,9 @@ func UpdateDepartment(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - req := &rpc.UpdateDepartmentReq{} + 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 { @@ -70,7 +71,7 @@ func UpdateDepartment(c *gin.Context) { return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) From 6d55f354048b22d7292a885b5bab8975322b9a1f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 11:59:31 +0800 Subject: [PATCH 049/128] organization --- cmd/open_im_api/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 57d534b0c..4ffca2a56 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -152,7 +152,7 @@ func main() { { organizationGroup.POST("/create_department", organization.CreateDepartment) organizationGroup.POST("/update_department", organization.UpdateDepartment) - organizationGroup.POST("/get_department", organization.GetSubDepartment) + organizationGroup.POST("/get_sub_department", organization.GetSubDepartment) organizationGroup.POST("/delete_department", organization.DeleteDepartment) organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) From 9def85f9ba8b49dca285d65936c9757e14d2fc3a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 12:32:28 +0800 Subject: [PATCH 050/128] organization --- internal/api/organization/organization.go | 4 ++-- pkg/base_info/organization_api_struct.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 53542ea97..7a951e763 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -88,7 +88,7 @@ func UpdateDepartment(c *gin.Context) { } func GetSubDepartment(c *gin.Context) { - params := api.GetDepartmentReq{} + 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()}) @@ -116,7 +116,7 @@ func GetSubDepartment(c *gin.Context) { return } - apiResp := api.GetDepartmentResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, DepartmentList: RpcResp.DepartmentList} + 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) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 0289b2f81..93fcfa069 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -21,11 +21,11 @@ type UpdateDepartmentResp struct { CommResp } -type GetDepartmentReq struct { +type GetSubDepartmentReq struct { OperationID string `json:"operationID" binding:"required"` DepartmentID string } -type GetDepartmentResp struct { +type GetSubDepartmentResp struct { CommResp DepartmentList []*open_im_sdk.Department `json:"-"` Data []map[string]interface{} `json:"data"` From 6787563efe24b642294e3be175ac4936f147b4f8 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 12:37:00 +0800 Subject: [PATCH 051/128] organization --- pkg/base_info/organization_api_struct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 93fcfa069..27d6210e6 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -23,7 +23,7 @@ type UpdateDepartmentResp struct { type GetSubDepartmentReq struct { OperationID string `json:"operationID" binding:"required"` - DepartmentID string + DepartmentID string `json:"departmentID" binding:"required"` } type GetSubDepartmentResp struct { CommResp From 80ba371296d5350195bb333e83f6533b2e007cf5 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 12:41:42 +0800 Subject: [PATCH 052/128] organization --- pkg/base_info/organization_api_struct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 27d6210e6..f00c2124c 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -33,7 +33,7 @@ type GetSubDepartmentResp struct { type DeleteDepartmentReq struct { OperationID string `json:"operationID" binding:"required"` - DepartmentID string + DepartmentID string `json:"departmentID" binding:"required"` } type DeleteDepartmentResp struct { CommResp From 7c64239b36088d69c7f4d6be3c8631068ac492bb Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 14:39:48 +0800 Subject: [PATCH 053/128] organization --- cmd/open_im_api/main.go | 2 ++ internal/api/organization/organization.go | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 4ffca2a56..a2f8522ef 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -154,9 +154,11 @@ func main() { organizationGroup.POST("/update_department", organization.UpdateDepartment) organizationGroup.POST("/get_sub_department", organization.GetSubDepartment) organizationGroup.POST("/delete_department", organization.DeleteDepartment) + organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) 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("/delete_organization_user", organization.DeleteOrganizationUser) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 7a951e763..7ae90b480 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -163,8 +163,9 @@ func CreateOrganizationUser(c *gin.Context) { return } - req := &rpc.CreateOrganizationUserReq{} + 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 From 9436c836e64273f3ea4935f8cf71474f6e4a93b1 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 14:42:07 +0800 Subject: [PATCH 054/128] organization --- internal/api/organization/organization.go | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 7ae90b480..1bc0f30e9 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -105,7 +105,7 @@ func GetSubDepartment(c *gin.Context) { return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -139,7 +139,7 @@ func DeleteDepartment(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -175,7 +175,7 @@ func CreateOrganizationUser(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -199,9 +199,9 @@ func UpdateOrganizationUser(c *gin.Context) { return } - req := &rpc.UpdateOrganizationUserReq{} + 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 { @@ -210,7 +210,7 @@ func UpdateOrganizationUser(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -245,7 +245,7 @@ func CreateDepartmentMember(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -280,7 +280,7 @@ func GetUserInDepartment(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -316,7 +316,7 @@ func UpdateUserInDepartment(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -351,7 +351,7 @@ func DeleteOrganizationUser(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -386,7 +386,7 @@ func GetDepartmentMember(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) @@ -421,7 +421,7 @@ func DeleteUserInDepartment(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) + 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) From eae7a48991cc78401046ddba0f20e2b04477ed1c Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 14:44:44 +0800 Subject: [PATCH 055/128] organization --- internal/api/organization/organization.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 1bc0f30e9..383ae732b 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -156,7 +156,7 @@ func DeleteDepartment(c *gin.Context) { } func CreateOrganizationUser(c *gin.Context) { - params := api.CreateOrganizationUserReq{} + params := api.CreateOrganizationUserReq{OrganizationUser: &open_im_sdk.OrganizationUser{}} 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()}) @@ -192,7 +192,7 @@ func CreateOrganizationUser(c *gin.Context) { } func UpdateOrganizationUser(c *gin.Context) { - params := api.UpdateOrganizationUserReq{} + params := api.UpdateOrganizationUserReq{OrganizationUser: &open_im_sdk.OrganizationUser{}} 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()}) @@ -227,7 +227,7 @@ func UpdateOrganizationUser(c *gin.Context) { } func CreateDepartmentMember(c *gin.Context) { - params := api.CreateDepartmentMemberReq{} + params := api.CreateDepartmentMemberReq{UserInDepartment: &open_im_sdk.UserInDepartment{}} 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()}) From eb630b23ae53a1736cdc0f1973de19e9273ecf5d Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 14:45:45 +0800 Subject: [PATCH 056/128] organization --- internal/api/organization/organization.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 383ae732b..e4984490f 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -234,8 +234,9 @@ func CreateDepartmentMember(c *gin.Context) { return } - req := &rpc.CreateDepartmentMemberReq{} + req := &rpc.CreateDepartmentMemberReq{UserInDepartment: &open_im_sdk.UserInDepartment{}} utils.CopyStructFields(req, ¶ms) + utils.CopyStructFields(req.UserInDepartment, ¶ms) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID From b6e06dfdc237822f75478ee921b5e23b10e1c88d Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 14:47:52 +0800 Subject: [PATCH 057/128] organization --- internal/api/organization/organization.go | 4 ++-- pkg/base_info/organization_api_struct.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index e4984490f..250e9eef0 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -299,14 +299,14 @@ func GetUserInDepartment(c *gin.Context) { } func UpdateUserInDepartment(c *gin.Context) { - params := api.UpdateUserInDepartmentReq{} + params := api.UpdateUserInDepartmentReq{DepartmentMember: &open_im_sdk.DepartmentMember{}} 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{} + req := &rpc.UpdateUserInDepartmentReq{DepartmentMember: &open_im_sdk.DepartmentMember{}} utils.CopyStructFields(req, ¶ms) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index f00c2124c..c8c6babe8 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -75,8 +75,8 @@ type GetUserInDepartmentResp struct { } type UpdateUserInDepartmentReq struct { - OperationID string `json:"operationID" binding:"required"` - UserInDepartment *open_im_sdk.UserInDepartment + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.DepartmentMember } type UpdateUserInDepartmentResp struct { CommResp From ecc47dcfbbb5cbcd1974c1995228c0b440a72668 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 14:54:51 +0800 Subject: [PATCH 058/128] organization --- internal/rpc/organization/organization.go | 1 + pkg/common/db/mysql_model/im_mysql_model/organization_model.go | 1 + 2 files changed, 2 insertions(+) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index dc80ce188..894fa643d 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -171,6 +171,7 @@ func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rp } 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 { 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 index bf44972ab..0b7f1621e 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -68,6 +68,7 @@ func CreateOrganizationUser(organizationUser *db.OrganizationUser) error { return err } organizationUser.CreateTime = time.Now() + return dbConn.Table("organization_users").Create(organizationUser).Error } From fd01e5c2633b1e9c258088c7c8b26ee09ea52afa Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 15:01:26 +0800 Subject: [PATCH 059/128] organization --- internal/api/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 250e9eef0..13402d044 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -156,7 +156,7 @@ func DeleteDepartment(c *gin.Context) { } func CreateOrganizationUser(c *gin.Context) { - params := api.CreateOrganizationUserReq{OrganizationUser: &open_im_sdk.OrganizationUser{}} + 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()}) From 06e44cc649ccd7a2f82f73d28d34e73bcd6803ef Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 15:03:50 +0800 Subject: [PATCH 060/128] organization --- pkg/base_info/organization_api_struct.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index c8c6babe8..7243d310b 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -40,8 +40,8 @@ type DeleteDepartmentResp struct { } type CreateOrganizationUserReq struct { - OperationID string `json:"operationID" binding:"required"` - OrganizationUser *open_im_sdk.OrganizationUser + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.OrganizationUser } type CreateOrganizationUserResp struct { CommResp From 803d0c2ae2bcbf8fe6df6cb02e0fe3872c7a11d7 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 15:09:18 +0800 Subject: [PATCH 061/128] organization --- internal/api/organization/organization.go | 2 +- pkg/base_info/organization_api_struct.go | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 13402d044..714b26a7e 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -192,7 +192,7 @@ func CreateOrganizationUser(c *gin.Context) { } func UpdateOrganizationUser(c *gin.Context) { - params := api.UpdateOrganizationUserReq{OrganizationUser: &open_im_sdk.OrganizationUser{}} + 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()}) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 7243d310b..ac80f82df 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -48,16 +48,16 @@ type CreateOrganizationUserResp struct { } type UpdateOrganizationUserReq struct { - OperationID string `json:"operationID" binding:"required"` - OrganizationUser *open_im_sdk.OrganizationUser + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.OrganizationUser } type UpdateOrganizationUserResp struct { CommResp } type CreateDepartmentMemberReq struct { - OperationID string `json:"operationID" binding:"required"` - UserInDepartment *open_im_sdk.UserInDepartment + OperationID string `json:"operationID" binding:"required"` + *open_im_sdk.UserInDepartment } type CreateDepartmentMemberResp struct { @@ -65,7 +65,7 @@ type CreateDepartmentMemberResp struct { } type GetUserInDepartmentReq struct { - UserID string + UserID string `json:"userID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } type GetUserInDepartmentResp struct { @@ -83,7 +83,7 @@ type UpdateUserInDepartmentResp struct { } type DeleteOrganizationUserReq struct { - UserID string + UserID string `json:"userID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } type DeleteOrganizationUserResp struct { @@ -91,7 +91,7 @@ type DeleteOrganizationUserResp struct { } type GetDepartmentMemberReq struct { - DepartmentID string + DepartmentID string `json:"departmentID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } type GetDepartmentMemberResp struct { From a981d1082ad675b81cebb2e3b5ac32ff7546c4cc Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 15:11:27 +0800 Subject: [PATCH 062/128] organization --- internal/rpc/organization/organization.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 894fa643d..9a7c362c4 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -194,6 +194,10 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp } 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, "src ", *req.OrganizationUser, "dst ", organizationUser) err := imdb.UpdateOrganizationUser(&organizationUser, nil) if err != nil { From 0dac9044a52fb5b7a62f024a95cccf6bc844a0db Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 17 Apr 2022 15:18:21 +0800 Subject: [PATCH 063/128] organization --- internal/rpc/organization/organization.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 9a7c362c4..98994269a 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -196,6 +196,7 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp 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) From 3bbf84861e6137b580cb72f495d77c7a7f7ae1f7 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 10:53:23 +0800 Subject: [PATCH 064/128] organization --- cmd/open_im_api/main.go | 5 +++-- internal/rpc/group/group.go | 33 +++++++++++++++++++++++++++++++-- pkg/common/constant/error.go | 4 +++- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index a2f8522ef..b391bd4f2 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -157,11 +157,12 @@ func main() { organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) - organizationGroup.POST("/create_department_member", organization.CreateDepartmentMember) + 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("/delete_organization_user", organization.DeleteOrganizationUser) + organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index e22ab18bf..fec32ec32 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -207,10 +207,14 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite 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 @@ -518,6 +522,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 @@ -595,6 +609,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,6 +646,16 @@ 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 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") From 248de7f1f2f07ccaad6f145baeda54dd47deb6e4 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 11:52:17 +0800 Subject: [PATCH 065/128] set groupmember nickname --- cmd/open_im_api/main.go | 2 + config/config.yaml | 14 + internal/api/group/group.go | 34 ++ internal/rpc/group/group.go | 33 ++ internal/rpc/msg/group_notification.go | 21 + pkg/base_info/group_api_struct.go | 11 + pkg/common/config/config.go | 5 + pkg/common/constant/constant.go | 1 + pkg/proto/group/group.pb.go | 539 ++++++++++++++--------- pkg/proto/group/group.proto | 16 + pkg/proto/sdk_ws/ws.pb.go | 576 ++++++++++++++----------- pkg/proto/sdk_ws/ws.proto | 6 + 12 files changed, 806 insertions(+), 452 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index b391bd4f2..122f4d055 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -84,6 +84,8 @@ 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") diff --git a/config/config.yaml b/config/config.yaml index d61292bdc..05c56bc6a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -432,6 +432,20 @@ notification: ext: "groupMemberCancelMuted ext" defaultTips: tips: "group Member Cancel Muted" + + groupMemberInfoSet: + conversation: + reliabilityLevel: 2 + unreadCount: true + offlinePush: + switch: false + title: "groupMemberInfoSet title" + desc: "groupMemberInfoSet desc" + ext: "groupMemberInfoSet ext" + defaultTips: + tips: "group member info set" + + #############################friend################################# friendApplicationAdded: 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/rpc/group/group.go b/internal/rpc/group/group.go index fec32ec32..db8d73162 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -1073,3 +1073,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 56052573b..5ba2400dd 100644 --- a/internal/rpc/msg/group_notification.go +++ b/internal/rpc/msg/group_notification.go @@ -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/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/common/config/config.go b/pkg/common/config/config.go index 9e1bd54b6..664ceadb8 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -304,6 +304,11 @@ 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"` ////////////////////////user/////////////////////// UserInfoUpdated struct { diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index fdee4f2b7..291049a14 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 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) } +func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_95c16320d90511af) } -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, +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/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index 27901e90f..b587caa32 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_822d08ca95807876, []int{0} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{1} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{2} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{3} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{4} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{5} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{6} + return fileDescriptor_ws_4f11937c2cee8c46, []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_822d08ca95807876, []int{7} + return fileDescriptor_ws_4f11937c2cee8c46, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -878,7 +878,7 @@ 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_822d08ca95807876, []int{8} + return fileDescriptor_ws_4f11937c2cee8c46, []int{8} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -989,7 +989,7 @@ 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_822d08ca95807876, []int{9} + return fileDescriptor_ws_4f11937c2cee8c46, []int{9} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1103,7 +1103,7 @@ 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_822d08ca95807876, []int{10} + return fileDescriptor_ws_4f11937c2cee8c46, []int{10} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1184,7 +1184,7 @@ 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_822d08ca95807876, []int{11} + return fileDescriptor_ws_4f11937c2cee8c46, []int{11} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1231,7 +1231,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_822d08ca95807876, []int{12} + return fileDescriptor_ws_4f11937c2cee8c46, []int{12} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1285,7 +1285,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_822d08ca95807876, []int{13} + return fileDescriptor_ws_4f11937c2cee8c46, []int{13} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1336,7 +1336,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_822d08ca95807876, []int{14} + return fileDescriptor_ws_4f11937c2cee8c46, []int{14} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1368,7 +1368,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_822d08ca95807876, []int{15} + return fileDescriptor_ws_4f11937c2cee8c46, []int{15} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1415,7 +1415,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_822d08ca95807876, []int{16} + return fileDescriptor_ws_4f11937c2cee8c46, []int{16} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1484,7 +1484,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_822d08ca95807876, []int{17} + return fileDescriptor_ws_4f11937c2cee8c46, []int{17} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1645,7 +1645,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_822d08ca95807876, []int{18} + return fileDescriptor_ws_4f11937c2cee8c46, []int{18} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1713,7 +1713,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_822d08ca95807876, []int{19} + return fileDescriptor_ws_4f11937c2cee8c46, []int{19} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1770,7 +1770,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_822d08ca95807876, []int{20} + return fileDescriptor_ws_4f11937c2cee8c46, []int{20} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1839,7 +1839,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_822d08ca95807876, []int{21} + return fileDescriptor_ws_4f11937c2cee8c46, []int{21} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1894,7 +1894,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_822d08ca95807876, []int{22} + return fileDescriptor_ws_4f11937c2cee8c46, []int{22} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1950,7 +1950,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_822d08ca95807876, []int{23} + return fileDescriptor_ws_4f11937c2cee8c46, []int{23} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2005,7 +2005,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_822d08ca95807876, []int{24} + return fileDescriptor_ws_4f11937c2cee8c46, []int{24} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2060,7 +2060,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_822d08ca95807876, []int{25} + return fileDescriptor_ws_4f11937c2cee8c46, []int{25} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2116,7 +2116,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_822d08ca95807876, []int{26} + return fileDescriptor_ws_4f11937c2cee8c46, []int{26} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2179,7 +2179,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_822d08ca95807876, []int{27} + return fileDescriptor_ws_4f11937c2cee8c46, []int{27} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2242,7 +2242,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_822d08ca95807876, []int{28} + return fileDescriptor_ws_4f11937c2cee8c46, []int{28} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2304,7 +2304,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_822d08ca95807876, []int{29} + return fileDescriptor_ws_4f11937c2cee8c46, []int{29} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2358,7 +2358,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_822d08ca95807876, []int{30} + return fileDescriptor_ws_4f11937c2cee8c46, []int{30} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2414,7 +2414,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_822d08ca95807876, []int{31} + return fileDescriptor_ws_4f11937c2cee8c46, []int{31} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2483,7 +2483,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_822d08ca95807876, []int{32} + return fileDescriptor_ws_4f11937c2cee8c46, []int{32} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2544,7 +2544,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_822d08ca95807876, []int{33} + return fileDescriptor_ws_4f11937c2cee8c46, []int{33} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2598,7 +2598,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_822d08ca95807876, []int{34} + return fileDescriptor_ws_4f11937c2cee8c46, []int{34} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2639,6 +2639,68 @@ 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_4f11937c2cee8c46, []int{35} +} +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 FriendApplication struct { AddTime int64 `protobuf:"varint,1,opt,name=addTime" json:"addTime,omitempty"` AddSource string `protobuf:"bytes,2,opt,name=addSource" json:"addSource,omitempty"` @@ -2652,7 +2714,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_822d08ca95807876, []int{35} + return fileDescriptor_ws_4f11937c2cee8c46, []int{36} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2705,7 +2767,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_822d08ca95807876, []int{36} + return fileDescriptor_ws_4f11937c2cee8c46, []int{37} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2751,7 +2813,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_822d08ca95807876, []int{37} + return fileDescriptor_ws_4f11937c2cee8c46, []int{38} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2791,7 +2853,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_822d08ca95807876, []int{38} + return fileDescriptor_ws_4f11937c2cee8c46, []int{39} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2838,7 +2900,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_822d08ca95807876, []int{39} + return fileDescriptor_ws_4f11937c2cee8c46, []int{40} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2886,7 +2948,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_822d08ca95807876, []int{40} + return fileDescriptor_ws_4f11937c2cee8c46, []int{41} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -2939,7 +3001,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_822d08ca95807876, []int{41} + return fileDescriptor_ws_4f11937c2cee8c46, []int{42} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -2977,7 +3039,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_822d08ca95807876, []int{42} + return fileDescriptor_ws_4f11937c2cee8c46, []int{43} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3015,7 +3077,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_822d08ca95807876, []int{43} + return fileDescriptor_ws_4f11937c2cee8c46, []int{44} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3053,7 +3115,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_822d08ca95807876, []int{44} + return fileDescriptor_ws_4f11937c2cee8c46, []int{45} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3092,7 +3154,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_822d08ca95807876, []int{45} + return fileDescriptor_ws_4f11937c2cee8c46, []int{46} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3131,7 +3193,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_822d08ca95807876, []int{46} + return fileDescriptor_ws_4f11937c2cee8c46, []int{47} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3171,7 +3233,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_822d08ca95807876, []int{47} + return fileDescriptor_ws_4f11937c2cee8c46, []int{48} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3225,7 +3287,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_822d08ca95807876, []int{48} + return fileDescriptor_ws_4f11937c2cee8c46, []int{49} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3271,7 +3333,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_822d08ca95807876, []int{49} + return fileDescriptor_ws_4f11937c2cee8c46, []int{50} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3324,7 +3386,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_822d08ca95807876, []int{50} + return fileDescriptor_ws_4f11937c2cee8c46, []int{51} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3591,7 +3653,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_822d08ca95807876, []int{51} + return fileDescriptor_ws_4f11937c2cee8c46, []int{52} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3859,7 +3921,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_822d08ca95807876, []int{52} + return fileDescriptor_ws_4f11937c2cee8c46, []int{53} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -3955,7 +4017,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_822d08ca95807876, []int{53} + return fileDescriptor_ws_4f11937c2cee8c46, []int{54} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4010,7 +4072,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_822d08ca95807876, []int{54} + return fileDescriptor_ws_4f11937c2cee8c46, []int{55} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4071,7 +4133,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_822d08ca95807876, []int{55} + return fileDescriptor_ws_4f11937c2cee8c46, []int{56} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4126,7 +4188,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_822d08ca95807876, []int{56} + return fileDescriptor_ws_4f11937c2cee8c46, []int{57} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4187,7 +4249,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_822d08ca95807876, []int{57} + return fileDescriptor_ws_4f11937c2cee8c46, []int{58} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4242,7 +4304,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_822d08ca95807876, []int{58} + return fileDescriptor_ws_4f11937c2cee8c46, []int{59} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4300,7 +4362,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_822d08ca95807876, []int{59} + return fileDescriptor_ws_4f11937c2cee8c46, []int{60} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4335,7 +4397,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_822d08ca95807876, []int{60} + return fileDescriptor_ws_4f11937c2cee8c46, []int{61} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4403,7 +4465,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_822d08ca95807876, []int{61} + return fileDescriptor_ws_4f11937c2cee8c46, []int{62} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4457,7 +4519,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_822d08ca95807876, []int{62} + return fileDescriptor_ws_4f11937c2cee8c46, []int{63} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4508,7 +4570,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_822d08ca95807876, []int{63} + return fileDescriptor_ws_4f11937c2cee8c46, []int{64} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4543,7 +4605,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_822d08ca95807876, []int{64} + return fileDescriptor_ws_4f11937c2cee8c46, []int{65} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4608,7 +4670,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_822d08ca95807876, []int{65} + return fileDescriptor_ws_4f11937c2cee8c46, []int{66} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4642,7 +4704,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_822d08ca95807876, []int{66} + return fileDescriptor_ws_4f11937c2cee8c46, []int{67} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4702,7 +4764,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_822d08ca95807876, []int{67} + return fileDescriptor_ws_4f11937c2cee8c46, []int{68} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4773,6 +4835,7 @@ 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((*FriendApplication)(nil), "server_api_params.FriendApplication") proto.RegisterType((*FromToUserID)(nil), "server_api_params.FromToUserID") proto.RegisterType((*FriendApplicationTips)(nil), "server_api_params.FriendApplicationTips") @@ -4808,195 +4871,196 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_822d08ca95807876) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_4f11937c2cee8c46) } -var fileDescriptor_ws_822d08ca95807876 = []byte{ - // 2985 bytes of a gzipped FileDescriptorProto +var fileDescriptor_ws_4f11937c2cee8c46 = []byte{ + // 3005 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x24, 0x47, 0x15, 0xa7, 0x7b, 0x3c, 0x63, 0xcf, 0x1b, 0x8f, 0x3f, 0x7a, 0x17, 0x33, 0x98, 0xcd, 0x62, 0x1a, - 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0xf2, 0xd7, 0x7e, 0x04, 0x8f, 0xed, 0xf4, - 0xec, 0x12, 0x04, 0x48, 0x51, 0x7b, 0xba, 0x3c, 0xee, 0xb8, 0xa7, 0xab, 0xa7, 0x3f, 0xbc, 0x6b, - 0x84, 0x84, 0x04, 0x12, 0xe2, 0xc6, 0x09, 0x0e, 0x5c, 0x90, 0xb8, 0x20, 0x50, 0x14, 0x45, 0x08, - 0x6e, 0x11, 0xe2, 0xc0, 0x3f, 0xc0, 0x11, 0x71, 0xe3, 0xcc, 0x95, 0x03, 0x12, 0x12, 0xa8, 0xea, - 0x55, 0x57, 0x57, 0x75, 0xcf, 0xd8, 0x13, 0xcb, 0xca, 0x6e, 0xb4, 0xdc, 0xfc, 0xde, 0xd4, 0x7b, - 0xf5, 0xea, 0xf7, 0x5e, 0xbd, 0xf7, 0xaa, 0xaa, 0x0d, 0x8b, 0x89, 0x77, 0xf2, 0xe6, 0xa3, 0xe4, - 0xa5, 0x47, 0xc9, 0xad, 0x28, 0xa6, 0x29, 0xb5, 0x96, 0x13, 0x12, 0x9f, 0x92, 0xf8, 0x4d, 0x37, - 0xf2, 0xdf, 0x8c, 0xdc, 0xd8, 0x1d, 0x26, 0xf6, 0xbf, 0x4c, 0x68, 0xde, 0x8d, 0x69, 0x16, 0xdd, - 0x0f, 0x8f, 0xa8, 0xd5, 0x81, 0xd9, 0x01, 0x27, 0xb6, 0x3b, 0xc6, 0x9a, 0xf1, 0x42, 0xd3, 0xc9, - 0x49, 0xeb, 0x06, 0x34, 0xf9, 0x9f, 0x7b, 0xee, 0x90, 0x74, 0x4c, 0xfe, 0x5b, 0xc1, 0xb0, 0x6c, - 0x98, 0x0f, 0x69, 0xea, 0x1f, 0xf9, 0x7d, 0x37, 0xf5, 0x69, 0xd8, 0xa9, 0xf1, 0x01, 0x1a, 0x8f, - 0x8d, 0xf1, 0xc3, 0x34, 0xa6, 0x5e, 0xd6, 0xe7, 0x63, 0x66, 0x70, 0x8c, 0xca, 0x63, 0xf3, 0x1f, - 0xb9, 0x7d, 0xf2, 0xd0, 0xd9, 0xed, 0xd4, 0x71, 0x7e, 0x41, 0x5a, 0x6b, 0xd0, 0xa2, 0x8f, 0x42, - 0x12, 0x3f, 0x4c, 0x48, 0x7c, 0x7f, 0xbb, 0xd3, 0xe0, 0xbf, 0xaa, 0x2c, 0xeb, 0x26, 0x40, 0x3f, - 0x26, 0x6e, 0x4a, 0x1e, 0xf8, 0x43, 0xd2, 0x99, 0x5d, 0x33, 0x5e, 0x68, 0x3b, 0x0a, 0x87, 0x69, - 0x18, 0x92, 0xe1, 0x21, 0x89, 0xb7, 0x68, 0x16, 0xa6, 0x9d, 0x39, 0x3e, 0x40, 0x65, 0x59, 0x0b, - 0x60, 0x92, 0xc7, 0x9d, 0x26, 0x57, 0x6d, 0x92, 0xc7, 0xd6, 0x0a, 0x34, 0x92, 0xd4, 0x4d, 0xb3, - 0xa4, 0x03, 0x6b, 0xc6, 0x0b, 0x75, 0x47, 0x50, 0xd6, 0x3a, 0xb4, 0xb9, 0x5e, 0x9a, 0x5b, 0xd3, - 0xe2, 0x22, 0x3a, 0x53, 0x22, 0xf6, 0xe0, 0x2c, 0x22, 0x9d, 0x79, 0xae, 0xa0, 0x60, 0xd8, 0x7f, - 0x33, 0xe1, 0x1a, 0xc7, 0xbd, 0xcb, 0x0d, 0xb8, 0x93, 0x05, 0xc1, 0x05, 0x1e, 0x58, 0x81, 0x46, - 0x86, 0xd3, 0x21, 0xfc, 0x82, 0x62, 0xf3, 0xc4, 0x34, 0x20, 0xbb, 0xe4, 0x94, 0x04, 0x1c, 0xf8, - 0xba, 0x53, 0x30, 0xac, 0x55, 0x98, 0x7b, 0x8b, 0xfa, 0x21, 0xc7, 0x64, 0x86, 0xff, 0x28, 0x69, - 0xf6, 0x5b, 0xe8, 0xf7, 0x4f, 0x42, 0xe6, 0x52, 0x84, 0x5b, 0xd2, 0xaa, 0x27, 0x1a, 0xba, 0x27, - 0x9e, 0x87, 0x05, 0x37, 0x8a, 0xba, 0x6e, 0x38, 0x20, 0x31, 0x4e, 0x3a, 0xcb, 0xf5, 0x96, 0xb8, - 0xcc, 0x1f, 0x6c, 0xa6, 0x1e, 0xcd, 0xe2, 0x3e, 0xe1, 0x70, 0xd7, 0x1d, 0x85, 0xc3, 0xf4, 0xd0, - 0x88, 0xc4, 0x0a, 0x8c, 0x88, 0x7c, 0x89, 0x2b, 0xbc, 0x02, 0xd2, 0x2b, 0xcc, 0x8f, 0x59, 0x4a, - 0x76, 0x42, 0x8f, 0x2f, 0xaa, 0x25, 0xfc, 0x58, 0xb0, 0xec, 0x9f, 0x18, 0xb0, 0x70, 0x90, 0x1d, - 0x06, 0x7e, 0x9f, 0xab, 0x60, 0xb0, 0x16, 0xe0, 0x19, 0x1a, 0x78, 0x2a, 0x04, 0xe6, 0x64, 0x08, - 0x6a, 0x3a, 0x04, 0x2b, 0xd0, 0x18, 0x90, 0xd0, 0x23, 0xb1, 0x80, 0x54, 0x50, 0xc2, 0xd4, 0x7a, - 0x6e, 0xaa, 0xfd, 0x0b, 0x13, 0xe6, 0x3e, 0x60, 0x13, 0xd6, 0xa0, 0x15, 0x1d, 0xd3, 0x90, 0xec, - 0x65, 0x2c, 0xac, 0x84, 0x2d, 0x2a, 0xcb, 0xba, 0x0e, 0xf5, 0x43, 0x3f, 0x4e, 0x8f, 0xb9, 0x5f, - 0xdb, 0x0e, 0x12, 0x8c, 0x4b, 0x86, 0xae, 0x8f, 0xce, 0x6c, 0x3a, 0x48, 0x88, 0x05, 0xcd, 0x49, - 0xec, 0xf5, 0x3d, 0xd6, 0xac, 0xec, 0xb1, 0x6a, 0x6c, 0xc0, 0xb8, 0xd8, 0xb0, 0xff, 0x6d, 0x00, - 0xdc, 0x89, 0x7d, 0x12, 0x7a, 0x1c, 0x9a, 0xd2, 0xe6, 0x36, 0xaa, 0x9b, 0x7b, 0x05, 0x1a, 0x31, - 0x19, 0xba, 0xf1, 0x49, 0x1e, 0xfc, 0x48, 0x95, 0x0c, 0xaa, 0x55, 0x0c, 0x7a, 0x15, 0xe0, 0x88, - 0xcf, 0xc3, 0xf4, 0x70, 0xa8, 0x5a, 0x2f, 0x7f, 0xe2, 0x56, 0x25, 0x0d, 0xde, 0xca, 0xbd, 0xe4, - 0x28, 0xc3, 0xd9, 0xce, 0x72, 0x3d, 0x4f, 0x04, 0x70, 0x1d, 0x77, 0x96, 0x64, 0x8c, 0x89, 0xdf, - 0xc6, 0x39, 0xf1, 0x3b, 0x2b, 0x83, 0xe2, 0x9f, 0x06, 0x34, 0x37, 0x03, 0xb7, 0x7f, 0x32, 0xe5, - 0xd2, 0xf5, 0x25, 0x9a, 0x95, 0x25, 0xde, 0x85, 0xf6, 0x21, 0x53, 0x97, 0x2f, 0x81, 0xa3, 0xd0, - 0x7a, 0xf9, 0x53, 0x63, 0x56, 0xa9, 0x6f, 0x0a, 0x47, 0x97, 0xd3, 0x97, 0x3b, 0x73, 0xf1, 0x72, - 0xeb, 0xe7, 0x2c, 0xb7, 0x21, 0x97, 0xfb, 0x57, 0x13, 0xe6, 0x79, 0xa2, 0x73, 0xc8, 0x28, 0x23, - 0x49, 0x6a, 0x7d, 0x1d, 0xe6, 0xb2, 0xdc, 0x54, 0x63, 0x5a, 0x53, 0xa5, 0x88, 0xf5, 0x8a, 0x48, - 0xab, 0x5c, 0xde, 0xe4, 0xf2, 0x37, 0xc6, 0xc8, 0xcb, 0x9a, 0xe6, 0x14, 0xc3, 0x59, 0x09, 0x3a, - 0x76, 0x43, 0x2f, 0x20, 0x0e, 0x49, 0xb2, 0x20, 0x15, 0xd9, 0x52, 0xe3, 0x61, 0xa4, 0x8d, 0xba, - 0xc9, 0x40, 0x14, 0x28, 0x41, 0x31, 0x74, 0x70, 0x1c, 0xfb, 0x09, 0x97, 0x5e, 0x30, 0xd8, 0x46, - 0x8d, 0xc9, 0x88, 0x7b, 0x08, 0xb7, 0x55, 0x4e, 0x16, 0x73, 0x0a, 0xd4, 0x30, 0x10, 0x34, 0x1e, - 0x73, 0x31, 0xd2, 0x5c, 0x01, 0x56, 0x26, 0x85, 0x53, 0x2e, 0x4c, 0xf6, 0xdf, 0x6b, 0xd0, 0xc6, - 0xed, 0x93, 0x83, 0x7a, 0x93, 0xc5, 0x39, 0x1d, 0x6a, 0x51, 0xa4, 0x70, 0x98, 0x15, 0x8c, 0xda, - 0xd3, 0x13, 0x8d, 0xc6, 0x63, 0xa1, 0xc8, 0xe8, 0x3b, 0x5a, 0xc2, 0x51, 0x59, 0xf9, 0x2c, 0x77, - 0xd5, 0xc4, 0xa3, 0x70, 0x58, 0x2a, 0x4b, 0xa9, 0x16, 0x1d, 0x92, 0x66, 0xb2, 0x29, 0x95, 0xf3, - 0x63, 0x7c, 0x28, 0x1c, 0x86, 0x6f, 0x4a, 0xf3, 0xb9, 0x11, 0xa4, 0x82, 0x81, 0x9a, 0xc5, 0xbc, - 0x58, 0x4a, 0x24, 0x5d, 0xf1, 0x6a, 0xf3, 0x5c, 0xaf, 0x82, 0xe6, 0x55, 0x7d, 0x73, 0xb5, 0x2a, - 0x9b, 0x6b, 0x1d, 0xda, 0xa8, 0x27, 0x0f, 0xfa, 0x79, 0x2c, 0xf5, 0x1a, 0x53, 0x8f, 0x8d, 0x76, - 0x39, 0x36, 0x74, 0xef, 0x2e, 0x4c, 0xf0, 0xee, 0xa2, 0xf4, 0xee, 0xef, 0x4d, 0x80, 0x6d, 0x12, - 0xb9, 0x71, 0x3a, 0x24, 0x61, 0xca, 0x96, 0xe7, 0x49, 0x4a, 0x3a, 0x57, 0xe3, 0xa9, 0x75, 0xc2, - 0xd4, 0xeb, 0x84, 0x05, 0x33, 0x1c, 0x70, 0xf4, 0x26, 0xff, 0x9b, 0x81, 0x19, 0xb9, 0x31, 0x6a, - 0xc3, 0x20, 0x97, 0x34, 0xab, 0x03, 0x34, 0xf6, 0x44, 0xe5, 0xa8, 0x3b, 0x48, 0xb0, 0xcd, 0x5f, - 0xcc, 0xc7, 0x1b, 0x9a, 0x06, 0xe6, 0x75, 0x9d, 0x7b, 0x61, 0x0f, 0xf6, 0x22, 0x2c, 0x25, 0xd9, - 0x61, 0xb1, 0xb8, 0xbd, 0x6c, 0x28, 0xc2, 0xbd, 0xc2, 0x67, 0xa0, 0x62, 0x73, 0xc6, 0x06, 0x61, - 0xa9, 0x29, 0x18, 0xe5, 0xae, 0xc0, 0x7e, 0xdb, 0x84, 0xa5, 0xfd, 0x78, 0xe0, 0x86, 0xfe, 0xf7, - 0x79, 0xbb, 0xc9, 0x13, 0xf8, 0x65, 0x4a, 0xee, 0x1a, 0xb4, 0x48, 0x38, 0x08, 0xfc, 0xe4, 0x78, - 0xaf, 0xc0, 0x4d, 0x65, 0xa9, 0x60, 0xcf, 0x4c, 0x2a, 0xca, 0x75, 0xad, 0x28, 0xaf, 0x40, 0x63, - 0x48, 0x0f, 0xfd, 0x20, 0x8f, 0x7b, 0x41, 0xf1, 0x98, 0x27, 0x01, 0xe1, 0xd5, 0x59, 0xc6, 0x7c, - 0xce, 0x28, 0x0a, 0xf5, 0xdc, 0xd8, 0x42, 0xdd, 0x54, 0x0b, 0xb5, 0x0e, 0x3c, 0x54, 0x80, 0x47, - 0xb8, 0x5a, 0x12, 0xae, 0x3f, 0x1b, 0xb0, 0x54, 0xc0, 0x8d, 0x3d, 0xe8, 0x44, 0xb8, 0x6c, 0x98, - 0xdf, 0x56, 0x23, 0x50, 0x24, 0x0f, 0x95, 0xc7, 0xcc, 0xda, 0xe7, 0x71, 0x83, 0x39, 0x15, 0x09, - 0x06, 0xf4, 0x01, 0x4d, 0x7c, 0xa5, 0xdf, 0x97, 0x34, 0x9b, 0x6d, 0x97, 0xb8, 0x0a, 0x58, 0x48, - 0x31, 0x7e, 0x0f, 0xbb, 0x6e, 0x8c, 0x31, 0x41, 0xb1, 0x25, 0xec, 0xc8, 0x3a, 0xba, 0xf3, 0xd8, - 0x7e, 0xcf, 0x80, 0x25, 0xac, 0x0f, 0xca, 0x66, 0xd9, 0x87, 0x25, 0x5a, 0x8a, 0x02, 0x51, 0x64, - 0x3e, 0x3d, 0xa6, 0x48, 0x94, 0x03, 0xc6, 0xa9, 0x08, 0x5b, 0x6f, 0xc0, 0x75, 0xaf, 0x84, 0xd3, - 0xae, 0x9f, 0xa4, 0x1d, 0x73, 0xad, 0x36, 0x41, 0x69, 0x19, 0x56, 0x67, 0xac, 0x02, 0xfb, 0x07, - 0xd0, 0x39, 0xc8, 0x82, 0xa0, 0x4b, 0x92, 0xc4, 0x1d, 0x90, 0xcd, 0xb3, 0x1e, 0x19, 0x31, 0xbe, - 0x43, 0x92, 0x88, 0x45, 0x18, 0x89, 0xe3, 0x2d, 0xea, 0x11, 0x6e, 0x7c, 0xdd, 0xc9, 0x49, 0x06, - 0x0e, 0x89, 0x63, 0x96, 0x66, 0x44, 0x1f, 0x84, 0x94, 0x75, 0x0b, 0x66, 0x02, 0x66, 0x56, 0x8d, - 0x9b, 0xb5, 0x3a, 0xc6, 0xac, 0x6e, 0x32, 0xd8, 0x76, 0x53, 0xd7, 0xe1, 0xe3, 0xec, 0x21, 0x7c, - 0x6c, 0xfc, 0xec, 0xa3, 0x89, 0x51, 0xc0, 0x3a, 0x15, 0x5e, 0xea, 0x7d, 0x1a, 0xca, 0x20, 0x50, - 0x59, 0xcc, 0xec, 0x04, 0xf5, 0x70, 0x3b, 0xda, 0x4e, 0x4e, 0xda, 0xd7, 0xc1, 0xba, 0x4b, 0xd2, - 0xae, 0xfb, 0x78, 0x23, 0xf4, 0xba, 0x7e, 0xd8, 0x23, 0x23, 0x87, 0x8c, 0xec, 0x1d, 0xb8, 0x56, - 0xe1, 0x26, 0x11, 0xdf, 0x2d, 0xee, 0xe3, 0x1e, 0x19, 0x71, 0x03, 0xda, 0x8e, 0xa0, 0x38, 0x9f, - 0x8f, 0x12, 0x4d, 0x90, 0xa0, 0xec, 0x11, 0x2c, 0x32, 0x57, 0xf5, 0x48, 0xe8, 0x75, 0x93, 0x01, - 0x57, 0xb1, 0x06, 0x2d, 0x44, 0xa0, 0x9b, 0x0c, 0x8a, 0xae, 0x4a, 0x61, 0xb1, 0x11, 0xfd, 0xc0, - 0x67, 0x2e, 0xe1, 0x23, 0xc4, 0x6a, 0x14, 0x16, 0x8b, 0xdd, 0x84, 0x88, 0x43, 0x06, 0x0b, 0xea, - 0x9a, 0x23, 0x69, 0xfb, 0xbd, 0x3a, 0xcc, 0x0a, 0x40, 0xf9, 0x29, 0x91, 0x35, 0xb2, 0x12, 0x2f, - 0xa4, 0xb0, 0xe4, 0xf4, 0x4f, 0x8b, 0xf3, 0x1a, 0x52, 0xea, 0x09, 0xaf, 0xa6, 0x9f, 0xf0, 0x4a, - 0x36, 0xcd, 0x54, 0x6d, 0x2a, 0xad, 0xab, 0x5e, 0x5d, 0x17, 0xcb, 0xb0, 0x3c, 0xe9, 0x1c, 0x04, - 0x6e, 0x7a, 0x44, 0xe3, 0xa1, 0xe8, 0x4b, 0xeb, 0x4e, 0x85, 0xcf, 0xb2, 0x3a, 0xf2, 0x64, 0x59, - 0xc6, 0xdd, 0x55, 0xe2, 0xb2, 0x22, 0x88, 0x9c, 0xbc, 0x3c, 0xe3, 0x81, 0x40, 0x67, 0xa2, 0x6d, - 0x49, 0xe2, 0xd3, 0x90, 0x17, 0x08, 0xac, 0xc2, 0x2a, 0x8b, 0xad, 0x7c, 0x98, 0x0c, 0xee, 0xc4, - 0x74, 0x28, 0x8e, 0x05, 0x39, 0xc9, 0x57, 0x4e, 0xc3, 0x34, 0x2f, 0x2e, 0x2d, 0x94, 0x55, 0x58, - 0x4c, 0x56, 0x90, 0xbc, 0x04, 0xcf, 0x3b, 0x39, 0x69, 0x2d, 0x41, 0x2d, 0x21, 0x23, 0x51, 0x57, - 0xd9, 0x9f, 0x9a, 0xe7, 0x16, 0x75, 0xcf, 0x95, 0x12, 0xe5, 0x12, 0xff, 0x55, 0x4d, 0x94, 0xc5, - 0x99, 0x7f, 0x59, 0x3b, 0xf3, 0x6f, 0xc0, 0x2c, 0x8d, 0x58, 0x9c, 0x27, 0x1d, 0x8b, 0xef, 0xb1, - 0xcf, 0x4c, 0xde, 0x63, 0xb7, 0xf6, 0x71, 0xe4, 0x4e, 0x98, 0xc6, 0x67, 0x4e, 0x2e, 0x67, 0xed, - 0xc2, 0x22, 0x3d, 0x3a, 0x0a, 0xfc, 0x90, 0x1c, 0x64, 0xc9, 0x31, 0xef, 0x5f, 0xaf, 0xf1, 0xd4, - 0x64, 0x8f, 0x4b, 0x4d, 0xfa, 0x48, 0xa7, 0x2c, 0xba, 0xfa, 0x0a, 0xcc, 0xab, 0xd3, 0x30, 0x18, - 0x4e, 0xc8, 0x99, 0x88, 0x41, 0xf6, 0x27, 0x4b, 0xc9, 0xa7, 0x6e, 0x90, 0x61, 0x89, 0x9b, 0x73, - 0x90, 0x78, 0xc5, 0xfc, 0x8a, 0x61, 0xff, 0xdc, 0x80, 0xc5, 0xd2, 0x04, 0x6c, 0x74, 0xea, 0xa7, - 0x01, 0x11, 0x1a, 0x90, 0x60, 0xed, 0x83, 0x47, 0x92, 0xbe, 0x08, 0x61, 0xfe, 0xb7, 0xa8, 0x25, - 0x35, 0x79, 0x28, 0xb4, 0x61, 0xde, 0xdf, 0xef, 0x31, 0x45, 0x3d, 0x9a, 0x85, 0x9e, 0xbc, 0xd8, - 0x51, 0x78, 0x2c, 0x84, 0xfc, 0xfd, 0xde, 0xa6, 0xeb, 0x0d, 0x08, 0x5e, 0xbf, 0xd4, 0xb9, 0x4d, - 0x3a, 0xd3, 0xf6, 0x60, 0xee, 0x81, 0x1f, 0x25, 0x5b, 0x74, 0x38, 0x64, 0x8e, 0xf0, 0x48, 0xca, - 0x0a, 0x9d, 0xc1, 0xfd, 0x2d, 0x28, 0x16, 0x2a, 0x1e, 0x39, 0x72, 0xb3, 0x20, 0x65, 0x43, 0xf3, - 0x8d, 0xab, 0xb0, 0xf8, 0xc5, 0x43, 0x42, 0xc3, 0x6d, 0x94, 0x46, 0x3b, 0x15, 0x8e, 0xfd, 0x17, - 0x13, 0x96, 0xf8, 0xf1, 0x60, 0x8b, 0xbb, 0xdd, 0xe3, 0x42, 0x2f, 0x43, 0x9d, 0x6f, 0x43, 0x51, - 0x2d, 0xce, 0x3f, 0x52, 0xe0, 0x50, 0xeb, 0x36, 0x34, 0x68, 0xc4, 0x4b, 0x0c, 0x9e, 0x43, 0x9e, - 0x9f, 0x24, 0xa4, 0xdf, 0xf1, 0x38, 0x42, 0xca, 0xba, 0x03, 0x30, 0x2c, 0x2a, 0x0a, 0xa6, 0xee, - 0x69, 0x75, 0x28, 0x92, 0x0c, 0x5c, 0x99, 0x86, 0xe5, 0x45, 0x4f, 0xcd, 0xd1, 0x99, 0xd6, 0x1e, - 0x2c, 0x70, 0xb3, 0xf7, 0xf3, 0xb3, 0x25, 0xf7, 0xc1, 0xf4, 0x33, 0x96, 0xa4, 0xed, 0x5f, 0x1b, - 0x02, 0x46, 0xf6, 0x6b, 0x8f, 0x20, 0xf6, 0x05, 0x24, 0xc6, 0xa5, 0x20, 0x59, 0x85, 0xb9, 0x61, - 0xa6, 0x1c, 0x75, 0x6b, 0x8e, 0xa4, 0x0b, 0x17, 0xd5, 0xa6, 0x76, 0x91, 0xfd, 0x1b, 0x03, 0x3a, - 0xaf, 0x51, 0x3f, 0xe4, 0x3f, 0x6c, 0x44, 0x51, 0x20, 0x6e, 0x23, 0x2f, 0xed, 0xf3, 0x6f, 0x40, - 0xd3, 0x45, 0x35, 0x61, 0x2a, 0xdc, 0x3e, 0xc5, 0xf1, 0xb5, 0x90, 0x51, 0x4e, 0x22, 0x35, 0xf5, - 0x24, 0x62, 0xbf, 0x63, 0xc0, 0x02, 0x82, 0xf2, 0x7a, 0xe6, 0xa7, 0x97, 0xb6, 0x6f, 0x13, 0xe6, - 0x46, 0x99, 0x9f, 0x5e, 0x22, 0x2a, 0xa5, 0x5c, 0x35, 0x9e, 0x6a, 0x63, 0xe2, 0xc9, 0x7e, 0xd7, - 0x80, 0x1b, 0x65, 0x58, 0x37, 0xfa, 0x7d, 0x12, 0x3d, 0xc9, 0x2d, 0xa5, 0x9d, 0xc4, 0x66, 0x4a, - 0x27, 0xb1, 0xb1, 0x26, 0x3b, 0xe4, 0x2d, 0xd2, 0x7f, 0x7a, 0x4d, 0xfe, 0xb1, 0x09, 0x1f, 0xbf, - 0x2b, 0x37, 0xde, 0x83, 0xd8, 0x0d, 0x93, 0x23, 0x12, 0xc7, 0x4f, 0xd0, 0xde, 0x5d, 0x68, 0x87, - 0xe4, 0x51, 0x61, 0x93, 0xd8, 0x8e, 0xd3, 0xaa, 0xd1, 0x85, 0xa7, 0xcb, 0x5d, 0xf6, 0x7f, 0x0c, - 0x58, 0x42, 0x3d, 0xdf, 0xf4, 0xfb, 0x27, 0x4f, 0x70, 0xf1, 0x7b, 0xb0, 0x70, 0xc2, 0x2d, 0x60, - 0xd4, 0x25, 0xd2, 0x76, 0x49, 0x7a, 0xca, 0xe5, 0xff, 0xd7, 0x80, 0x65, 0x54, 0x74, 0x3f, 0x3c, - 0xf5, 0x9f, 0x64, 0xb0, 0x1e, 0xc0, 0xa2, 0x8f, 0x26, 0x5c, 0x12, 0x80, 0xb2, 0xf8, 0x94, 0x08, - 0xfc, 0xd1, 0x80, 0x45, 0xd4, 0xb4, 0x13, 0xa6, 0x24, 0xbe, 0xf4, 0xfa, 0xef, 0xb1, 0xd3, 0x7d, - 0x1a, 0xbb, 0xe1, 0x65, 0x32, 0xa4, 0x2a, 0x3a, 0x65, 0x92, 0x7c, 0xc7, 0x00, 0x8b, 0xab, 0xda, - 0xf6, 0x93, 0xa1, 0x9f, 0x24, 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x4b, 0x13, 0xae, 0x2b, 0x5a, - 0xba, 0x59, 0xfa, 0xb4, 0x9b, 0x6c, 0x6d, 0x43, 0x93, 0xf5, 0x08, 0xea, 0x15, 0xff, 0xb4, 0x13, - 0x15, 0x82, 0xac, 0x8b, 0xe5, 0x44, 0x8f, 0xf4, 0x69, 0xe8, 0x25, 0xbc, 0x39, 0x6a, 0x3b, 0x1a, - 0x8f, 0xa5, 0xa1, 0x55, 0x45, 0xcd, 0x96, 0x1b, 0xf6, 0x49, 0xf0, 0xcc, 0x40, 0x64, 0xff, 0xce, - 0x80, 0x05, 0x1c, 0xf2, 0xf4, 0x2f, 0x99, 0xd5, 0x7a, 0x0c, 0xe4, 0x0f, 0x8d, 0x97, 0xec, 0x13, - 0x58, 0xc6, 0x5b, 0x7d, 0xa5, 0x3d, 0x61, 0x07, 0x5f, 0xd7, 0xc3, 0xb3, 0xac, 0xc1, 0x85, 0x72, - 0x52, 0x7f, 0xaf, 0x11, 0x4f, 0xf2, 0xc5, 0x7b, 0xcd, 0x4d, 0x00, 0xd7, 0xf3, 0xde, 0xa0, 0xb1, - 0xe7, 0x87, 0x79, 0xaf, 0xa9, 0x70, 0xec, 0xd7, 0x60, 0x9e, 0x1d, 0xbd, 0x1f, 0x28, 0xf7, 0xf3, - 0xe7, 0xbe, 0x20, 0xa8, 0x77, 0xfb, 0xa6, 0x7e, 0xb7, 0x6f, 0x7f, 0x0f, 0x3e, 0x5a, 0x31, 0x9c, - 0x63, 0xbd, 0x85, 0xcf, 0x0e, 0xf9, 0x24, 0x02, 0xf2, 0x4f, 0x8e, 0x41, 0x4f, 0xb5, 0xc5, 0xd1, - 0x84, 0xec, 0x1f, 0x19, 0xf0, 0x5c, 0x45, 0xfd, 0x46, 0x14, 0xc5, 0xf4, 0x54, 0xb8, 0xf4, 0x2a, - 0xa6, 0xd1, 0xfb, 0x30, 0xb3, 0xdc, 0x87, 0x8d, 0x35, 0x42, 0xeb, 0x1d, 0x3f, 0x00, 0x23, 0x7e, - 0x6b, 0xc0, 0xa2, 0x30, 0xc2, 0xf3, 0xc4, 0xb4, 0x5f, 0x86, 0x06, 0x3e, 0x59, 0x8a, 0x09, 0x9f, - 0x1b, 0x3b, 0x61, 0xfe, 0xd4, 0xea, 0x88, 0xc1, 0xd5, 0x88, 0x34, 0xc7, 0xe5, 0x8d, 0xaf, 0xca, - 0xb8, 0x9f, 0xfa, 0x51, 0x51, 0x08, 0xd8, 0xdf, 0xce, 0x83, 0x79, 0x9b, 0x04, 0xe4, 0x2a, 0x31, - 0xb2, 0x1f, 0xc2, 0x02, 0x7f, 0x3f, 0x2d, 0x30, 0xb8, 0x12, 0xb5, 0x6f, 0xc0, 0x12, 0x57, 0x7b, - 0xe5, 0xf6, 0xca, 0xdd, 0xc1, 0xf0, 0xd9, 0x3a, 0x76, 0xc3, 0xc1, 0x55, 0x6a, 0xff, 0x02, 0x5c, - 0xcb, 0xb1, 0x7f, 0x18, 0x79, 0xf2, 0x3e, 0x63, 0xc2, 0x2d, 0xae, 0xfd, 0x45, 0x58, 0xd9, 0xa2, - 0xe1, 0x29, 0x89, 0x13, 0xbc, 0xe3, 0xe6, 0x22, 0xb9, 0x84, 0xb6, 0xf9, 0x05, 0x65, 0xbf, 0x05, - 0xab, 0xaa, 0x44, 0x8f, 0xa4, 0x07, 0xb1, 0x7f, 0xaa, 0x48, 0x89, 0x5b, 0x4e, 0x43, 0xbb, 0xe5, - 0x2c, 0x6e, 0x45, 0x4d, 0xed, 0x56, 0xf4, 0x06, 0x34, 0xfd, 0x44, 0x28, 0xe0, 0x41, 0x35, 0xe7, - 0x14, 0x0c, 0xbb, 0x07, 0xcb, 0xe2, 0x45, 0xf3, 0xc0, 0x1d, 0xf8, 0x21, 0x66, 0xc0, 0x9b, 0x00, - 0x91, 0x3b, 0xc8, 0xbf, 0x68, 0xc0, 0x0b, 0x71, 0x85, 0xc3, 0x7e, 0x4f, 0x8e, 0xe9, 0x23, 0xf1, - 0xbb, 0x89, 0xbf, 0x17, 0x1c, 0xfb, 0x5b, 0x60, 0x39, 0x24, 0x89, 0x68, 0x98, 0x10, 0x45, 0xeb, - 0x1a, 0xb4, 0xb6, 0xb2, 0x38, 0x26, 0x21, 0x9b, 0x2a, 0x7f, 0xde, 0x57, 0x59, 0x4c, 0x6f, 0xaf, - 0xd0, 0x8b, 0x97, 0xa8, 0x0a, 0xc7, 0xfe, 0x55, 0x0d, 0x9a, 0x3d, 0x7f, 0x10, 0xba, 0x81, 0x43, - 0x46, 0xd6, 0xd7, 0xa0, 0x81, 0xad, 0xad, 0x70, 0xe3, 0xb8, 0x4b, 0x3d, 0x1c, 0x8d, 0x3d, 0xbc, - 0x43, 0x46, 0xf7, 0x3e, 0xe2, 0x08, 0x19, 0xeb, 0x75, 0x68, 0xe3, 0x5f, 0xf7, 0xf1, 0xaa, 0x42, - 0xd4, 0x99, 0xcf, 0x5e, 0xa0, 0x44, 0x8c, 0x46, 0x5d, 0xba, 0x06, 0x66, 0x50, 0x9f, 0x97, 0x3e, - 0xb1, 0x77, 0x27, 0x1b, 0x84, 0x15, 0x52, 0x18, 0x84, 0x32, 0x4c, 0xda, 0xe5, 0x87, 0x79, 0xd1, - 0x2e, 0x4c, 0x96, 0xc6, 0x33, 0xbf, 0x90, 0x46, 0x19, 0x26, 0x7d, 0x9c, 0x85, 0x83, 0x87, 0x91, - 0xb8, 0x63, 0x9a, 0x2c, 0x7d, 0x8f, 0x0f, 0x13, 0xd2, 0x28, 0xc3, 0xa4, 0x63, 0x9e, 0x59, 0x39, - 0xe8, 0xe7, 0x49, 0x63, 0x02, 0x16, 0xd2, 0x28, 0xb3, 0xd9, 0x84, 0xd9, 0xc8, 0x3d, 0x0b, 0xa8, - 0xeb, 0xd9, 0x6f, 0xd7, 0x00, 0xf2, 0x81, 0x09, 0xaf, 0xe2, 0x9a, 0x8b, 0xd6, 0x2f, 0x74, 0x51, - 0x14, 0x9c, 0x29, 0x4e, 0xea, 0x8d, 0x77, 0xd2, 0xe7, 0xa6, 0x75, 0x12, 0x6a, 0x2b, 0xb9, 0xe9, - 0x76, 0xc9, 0x4d, 0xeb, 0x17, 0xba, 0x49, 0x18, 0x25, 0x1c, 0x75, 0xbb, 0xe4, 0xa8, 0xf5, 0x0b, - 0x1d, 0x25, 0xe4, 0x85, 0xab, 0x6e, 0x97, 0x5c, 0xb5, 0x7e, 0xa1, 0xab, 0x84, 0xbc, 0x70, 0xd6, - 0xed, 0x92, 0xb3, 0xd6, 0x2f, 0x74, 0x96, 0x90, 0xaf, 0xba, 0xeb, 0x5d, 0x13, 0x16, 0x38, 0x64, - 0xf8, 0xa0, 0x14, 0x1e, 0x51, 0x7e, 0x6f, 0xcc, 0xe1, 0xd2, 0x3f, 0x90, 0xd1, 0x99, 0xd6, 0xe7, - 0x61, 0x19, 0x19, 0xe2, 0x83, 0x0a, 0xf9, 0x42, 0xd7, 0x74, 0xaa, 0x3f, 0xf0, 0x27, 0x80, 0x2c, - 0x49, 0xe9, 0x70, 0xdb, 0x4d, 0xdd, 0xbc, 0x33, 0x2a, 0x38, 0xea, 0x03, 0xcd, 0x4c, 0xe5, 0x13, - 0xbc, 0x98, 0xd2, 0xa1, 0x7c, 0x79, 0x11, 0x14, 0x93, 0x48, 0xfd, 0x21, 0xa1, 0x59, 0x2a, 0xd2, - 0x44, 0x4e, 0xe2, 0x23, 0xb6, 0xe7, 0xbb, 0xfc, 0x59, 0x43, 0xbc, 0xf0, 0x4a, 0x06, 0xcf, 0x6c, - 0xc5, 0x33, 0x8d, 0xf8, 0x44, 0xae, 0xe0, 0x5c, 0xfc, 0xa4, 0x62, 0xff, 0xc3, 0x80, 0x6b, 0x07, - 0x6e, 0x9c, 0xfa, 0x7d, 0x3f, 0x72, 0xc3, 0xb4, 0x4b, 0x52, 0x97, 0xaf, 0x41, 0xfb, 0x4a, 0xc6, - 0x78, 0x7f, 0x5f, 0xc9, 0x1c, 0xc0, 0xe2, 0xa0, 0xe8, 0x65, 0x95, 0xef, 0x6c, 0xa6, 0x3e, 0xe3, - 0x97, 0xc4, 0xb5, 0x4f, 0x7e, 0x6a, 0xef, 0xfb, 0x93, 0x1f, 0xfb, 0xa7, 0x26, 0x2c, 0x96, 0x52, - 0x27, 0x6b, 0x47, 0xb1, 0xd1, 0x90, 0x31, 0x21, 0x69, 0x6b, 0x03, 0xc0, 0x97, 0x61, 0x74, 0xce, - 0x25, 0xad, 0x1e, 0x6b, 0x8e, 0x22, 0x34, 0xee, 0xad, 0xa6, 0x76, 0xe9, 0xb7, 0x1a, 0xeb, 0x1e, - 0xb4, 0xa2, 0xc2, 0x49, 0xe7, 0x1c, 0xc0, 0xc6, 0xb8, 0xd2, 0x51, 0x45, 0xed, 0xef, 0xc2, 0x72, - 0x25, 0x43, 0xf1, 0xa7, 0x1b, 0x7a, 0x42, 0x42, 0xf9, 0x74, 0xc3, 0x08, 0x25, 0x58, 0xcd, 0x72, - 0xb0, 0x06, 0xfe, 0xa9, 0xfa, 0x4d, 0xa1, 0x20, 0xed, 0x9f, 0x99, 0xb0, 0x32, 0xbe, 0xba, 0x3c, - 0xab, 0x70, 0x1f, 0x42, 0x67, 0x52, 0x26, 0xbf, 0x32, 0xd4, 0x8b, 0xe8, 0x96, 0x75, 0xf8, 0x59, - 0x85, 0xfb, 0x5a, 0x1e, 0xdd, 0x4a, 0xa9, 0xb3, 0xff, 0x20, 0xf1, 0x91, 0x9d, 0xc6, 0x33, 0x8a, - 0x8f, 0xf5, 0x22, 0x2c, 0xe1, 0x32, 0x95, 0xc7, 0x7d, 0x6c, 0x5c, 0x2b, 0xfc, 0x22, 0x53, 0x28, - 0x65, 0xff, 0xca, 0x62, 0xf6, 0x4f, 0x46, 0xee, 0x13, 0xd9, 0xbf, 0x7d, 0xa8, 0x7c, 0x52, 0x44, - 0x9a, 0xd2, 0xd4, 0x28, 0x91, 0x26, 0xfb, 0xca, 0xff, 0x47, 0xda, 0xc5, 0x91, 0x26, 0xb1, 0x54, - 0x1a, 0x3c, 0xfb, 0x87, 0xd0, 0xde, 0x26, 0x41, 0x37, 0x19, 0xe4, 0x9f, 0x15, 0x9d, 0x07, 0xe4, - 0xa4, 0x7f, 0x6d, 0x98, 0xf8, 0x41, 0x51, 0xf9, 0x63, 0xa4, 0x99, 0xca, 0xc7, 0x48, 0xf6, 0x26, - 0x2c, 0xa8, 0x06, 0x5c, 0xe6, 0xab, 0xaa, 0xcd, 0x1b, 0xdf, 0x59, 0xbd, 0xf5, 0x12, 0xfe, 0x13, - 0xcd, 0xab, 0x15, 0x10, 0x0f, 0x1b, 0xfc, 0x9f, 0x6a, 0xbe, 0xf4, 0xbf, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x6c, 0xa8, 0x04, 0xcf, 0x67, 0x33, 0x00, 0x00, + 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0x5a, 0xdb, 0xfb, 0x15, 0xd6, 0x1f, 0xe9, + 0xd9, 0x25, 0x08, 0x90, 0xa2, 0xf6, 0x74, 0x79, 0xdc, 0x71, 0x77, 0x57, 0x4f, 0x7f, 0x78, 0x77, + 0x11, 0x12, 0x12, 0x48, 0x88, 0x1b, 0x27, 0x38, 0x70, 0x41, 0xe2, 0x82, 0x40, 0x51, 0x14, 0x21, + 0xb8, 0x45, 0x88, 0x03, 0xff, 0x00, 0x47, 0xc4, 0x8d, 0x33, 0x57, 0x0e, 0x48, 0x48, 0xa0, 0xaa, + 0x57, 0x5d, 0x5d, 0xd5, 0x3d, 0x63, 0x4f, 0x46, 0x56, 0x76, 0xa3, 0xe5, 0x36, 0xef, 0x75, 0xbd, + 0x57, 0xaf, 0x7e, 0xef, 0x55, 0xbd, 0x57, 0x1f, 0x03, 0xcb, 0xa9, 0x77, 0xf2, 0xe6, 0xc3, 0xf4, + 0xa5, 0x87, 0xe9, 0xb5, 0x38, 0xa1, 0x19, 0xb5, 0x56, 0x53, 0x92, 0x9c, 0x92, 0xe4, 0x4d, 0x37, + 0xf6, 0xdf, 0x8c, 0xdd, 0xc4, 0x0d, 0x53, 0xfb, 0x5f, 0x26, 0xb4, 0x6f, 0x27, 0x34, 0x8f, 0xef, + 0x46, 0x47, 0xd4, 0xea, 0xc1, 0xfc, 0x90, 0x13, 0x3b, 0x3d, 0x63, 0xc3, 0x78, 0xa1, 0xed, 0x14, + 0xa4, 0x75, 0x05, 0xda, 0xfc, 0xe7, 0x9e, 0x1b, 0x92, 0x9e, 0xc9, 0xbf, 0x95, 0x0c, 0xcb, 0x86, + 0xc5, 0x88, 0x66, 0xfe, 0x91, 0x3f, 0x70, 0x33, 0x9f, 0x46, 0xbd, 0x06, 0x6f, 0xa0, 0xf1, 0x58, + 0x1b, 0x3f, 0xca, 0x12, 0xea, 0xe5, 0x03, 0xde, 0x66, 0x0e, 0xdb, 0xa8, 0x3c, 0xd6, 0xff, 0x91, + 0x3b, 0x20, 0x0f, 0x9c, 0x7b, 0xbd, 0x26, 0xf6, 0x2f, 0x48, 0x6b, 0x03, 0x3a, 0xf4, 0x61, 0x44, + 0x92, 0x07, 0x29, 0x49, 0xee, 0xee, 0xf4, 0x5a, 0xfc, 0xab, 0xca, 0xb2, 0xae, 0x02, 0x0c, 0x12, + 0xe2, 0x66, 0xe4, 0xbe, 0x1f, 0x92, 0xde, 0xfc, 0x86, 0xf1, 0x42, 0xd7, 0x51, 0x38, 0x4c, 0x43, + 0x48, 0xc2, 0x43, 0x92, 0x6c, 0xd3, 0x3c, 0xca, 0x7a, 0x0b, 0xbc, 0x81, 0xca, 0xb2, 0x96, 0xc0, + 0x24, 0x8f, 0x7a, 0x6d, 0xae, 0xda, 0x24, 0x8f, 0xac, 0x35, 0x68, 0xa5, 0x99, 0x9b, 0xe5, 0x69, + 0x0f, 0x36, 0x8c, 0x17, 0x9a, 0x8e, 0xa0, 0xac, 0x4d, 0xe8, 0x72, 0xbd, 0xb4, 0xb0, 0xa6, 0xc3, + 0x45, 0x74, 0xa6, 0x44, 0xec, 0xfe, 0xe3, 0x98, 0xf4, 0x16, 0xb9, 0x82, 0x92, 0x61, 0xff, 0xcd, + 0x84, 0x4b, 0x1c, 0xf7, 0x5d, 0x6e, 0xc0, 0xad, 0x3c, 0x08, 0xce, 0xf1, 0xc0, 0x1a, 0xb4, 0x72, + 0xec, 0x0e, 0xe1, 0x17, 0x14, 0xeb, 0x27, 0xa1, 0x01, 0xb9, 0x47, 0x4e, 0x49, 0xc0, 0x81, 0x6f, + 0x3a, 0x25, 0xc3, 0x5a, 0x87, 0x85, 0xb7, 0xa8, 0x1f, 0x71, 0x4c, 0xe6, 0xf8, 0x47, 0x49, 0xb3, + 0x6f, 0x91, 0x3f, 0x38, 0x89, 0x98, 0x4b, 0x11, 0x6e, 0x49, 0xab, 0x9e, 0x68, 0xe9, 0x9e, 0x78, + 0x1e, 0x96, 0xdc, 0x38, 0xde, 0x75, 0xa3, 0x21, 0x49, 0xb0, 0xd3, 0x79, 0xae, 0xb7, 0xc2, 0x65, + 0xfe, 0x60, 0x3d, 0xf5, 0x69, 0x9e, 0x0c, 0x08, 0x87, 0xbb, 0xe9, 0x28, 0x1c, 0xa6, 0x87, 0xc6, + 0x24, 0x51, 0x60, 0x44, 0xe4, 0x2b, 0x5c, 0xe1, 0x15, 0x90, 0x5e, 0x61, 0x7e, 0xcc, 0x33, 0x72, + 0x33, 0xf2, 0xf8, 0xa0, 0x3a, 0xc2, 0x8f, 0x25, 0xcb, 0xfe, 0x89, 0x01, 0x4b, 0x07, 0xf9, 0x61, + 0xe0, 0x0f, 0xb8, 0x0a, 0x06, 0x6b, 0x09, 0x9e, 0xa1, 0x81, 0xa7, 0x42, 0x60, 0x4e, 0x86, 0xa0, + 0xa1, 0x43, 0xb0, 0x06, 0xad, 0x21, 0x89, 0x3c, 0x92, 0x08, 0x48, 0x05, 0x25, 0x4c, 0x6d, 0x16, + 0xa6, 0xda, 0xbf, 0x30, 0x61, 0xe1, 0x03, 0x36, 0x61, 0x03, 0x3a, 0xf1, 0x31, 0x8d, 0xc8, 0x5e, + 0xce, 0xc2, 0x4a, 0xd8, 0xa2, 0xb2, 0xac, 0xcb, 0xd0, 0x3c, 0xf4, 0x93, 0xec, 0x98, 0xfb, 0xb5, + 0xeb, 0x20, 0xc1, 0xb8, 0x24, 0x74, 0x7d, 0x74, 0x66, 0xdb, 0x41, 0x42, 0x0c, 0x68, 0x41, 0x62, + 0xaf, 0xcf, 0xb1, 0x76, 0x6d, 0x8e, 0xd5, 0x63, 0x03, 0xc6, 0xc5, 0x86, 0xfd, 0x6f, 0x03, 0xe0, + 0x56, 0xe2, 0x93, 0xc8, 0xe3, 0xd0, 0x54, 0x26, 0xb7, 0x51, 0x9f, 0xdc, 0x6b, 0xd0, 0x4a, 0x48, + 0xe8, 0x26, 0x27, 0x45, 0xf0, 0x23, 0x55, 0x31, 0xa8, 0x51, 0x33, 0xe8, 0x55, 0x80, 0x23, 0xde, + 0x0f, 0xd3, 0xc3, 0xa1, 0xea, 0xbc, 0xfc, 0x89, 0x6b, 0xb5, 0x65, 0xf0, 0x5a, 0xe1, 0x25, 0x47, + 0x69, 0xce, 0x66, 0x96, 0xeb, 0x79, 0x22, 0x80, 0x9b, 0x38, 0xb3, 0x24, 0x63, 0x4c, 0xfc, 0xb6, + 0xce, 0x88, 0xdf, 0x79, 0x19, 0x14, 0xff, 0x34, 0xa0, 0xbd, 0x15, 0xb8, 0x83, 0x93, 0x29, 0x87, + 0xae, 0x0f, 0xd1, 0xac, 0x0d, 0xf1, 0x36, 0x74, 0x0f, 0x99, 0xba, 0x62, 0x08, 0x1c, 0x85, 0xce, + 0xcb, 0x9f, 0x1a, 0x33, 0x4a, 0x7d, 0x52, 0x38, 0xba, 0x9c, 0x3e, 0xdc, 0xb9, 0xf3, 0x87, 0xdb, + 0x3c, 0x63, 0xb8, 0x2d, 0x39, 0xdc, 0xbf, 0x9a, 0xb0, 0xc8, 0x17, 0x3a, 0x87, 0x8c, 0x72, 0x92, + 0x66, 0xd6, 0xd7, 0x61, 0x21, 0x2f, 0x4c, 0x35, 0xa6, 0x35, 0x55, 0x8a, 0x58, 0xaf, 0x88, 0x65, + 0x95, 0xcb, 0x9b, 0x5c, 0xfe, 0xca, 0x18, 0x79, 0x99, 0xd3, 0x9c, 0xb2, 0x39, 0x4b, 0x41, 0xc7, + 0x6e, 0xe4, 0x05, 0xc4, 0x21, 0x69, 0x1e, 0x64, 0x62, 0xb5, 0xd4, 0x78, 0x18, 0x69, 0xa3, 0xdd, + 0x74, 0x28, 0x12, 0x94, 0xa0, 0x18, 0x3a, 0xd8, 0x8e, 0x7d, 0xc2, 0xa1, 0x97, 0x0c, 0x36, 0x51, + 0x13, 0x32, 0xe2, 0x1e, 0xc2, 0x69, 0x55, 0x90, 0x65, 0x9f, 0x02, 0x35, 0x0c, 0x04, 0x8d, 0xc7, + 0x5c, 0x8c, 0x34, 0x57, 0x80, 0x99, 0x49, 0xe1, 0x54, 0x13, 0x93, 0xfd, 0xf7, 0x06, 0x74, 0x71, + 0xfa, 0x14, 0xa0, 0x5e, 0x65, 0x71, 0x4e, 0x43, 0x2d, 0x8a, 0x14, 0x0e, 0xb3, 0x82, 0x51, 0x7b, + 0xfa, 0x42, 0xa3, 0xf1, 0x58, 0x28, 0x32, 0xfa, 0x96, 0xb6, 0xe0, 0xa8, 0xac, 0xa2, 0x97, 0xdb, + 0xea, 0xc2, 0xa3, 0x70, 0xd8, 0x52, 0x96, 0x51, 0x2d, 0x3a, 0x24, 0xcd, 0x64, 0x33, 0x2a, 0xfb, + 0xc7, 0xf8, 0x50, 0x38, 0x0c, 0xdf, 0x8c, 0x16, 0x7d, 0x23, 0x48, 0x25, 0x03, 0x35, 0x8b, 0x7e, + 0x31, 0x95, 0x48, 0xba, 0xe6, 0xd5, 0xf6, 0x99, 0x5e, 0x05, 0xcd, 0xab, 0xfa, 0xe4, 0xea, 0xd4, + 0x26, 0xd7, 0x26, 0x74, 0x51, 0x4f, 0x11, 0xf4, 0x8b, 0x98, 0xea, 0x35, 0xa6, 0x1e, 0x1b, 0xdd, + 0x6a, 0x6c, 0xe8, 0xde, 0x5d, 0x9a, 0xe0, 0xdd, 0x65, 0xe9, 0xdd, 0xdf, 0x9b, 0x00, 0x3b, 0x24, + 0x76, 0x93, 0x2c, 0x24, 0x51, 0xc6, 0x86, 0xe7, 0x49, 0x4a, 0x3a, 0x57, 0xe3, 0xa9, 0x79, 0xc2, + 0xd4, 0xf3, 0x84, 0x05, 0x73, 0x1c, 0x70, 0xf4, 0x26, 0xff, 0xcd, 0xc0, 0x8c, 0xdd, 0x04, 0xb5, + 0x61, 0x90, 0x4b, 0x9a, 0xe5, 0x01, 0x9a, 0x78, 0x22, 0x73, 0x34, 0x1d, 0x24, 0xd8, 0xe4, 0x2f, + 0xfb, 0xe3, 0x05, 0x4d, 0x0b, 0xd7, 0x75, 0x9d, 0x7b, 0x6e, 0x0d, 0xf6, 0x22, 0xac, 0xa4, 0xf9, + 0x61, 0x39, 0xb8, 0xbd, 0x3c, 0x14, 0xe1, 0x5e, 0xe3, 0x33, 0x50, 0xb1, 0x38, 0x63, 0x8d, 0x30, + 0xd5, 0x94, 0x8c, 0x6a, 0x55, 0x60, 0xbf, 0x6d, 0xc2, 0xca, 0x7e, 0x32, 0x74, 0x23, 0xff, 0xfb, + 0xbc, 0xdc, 0xe4, 0x0b, 0xf8, 0x2c, 0x29, 0x77, 0x03, 0x3a, 0x24, 0x1a, 0x06, 0x7e, 0x7a, 0xbc, + 0x57, 0xe2, 0xa6, 0xb2, 0x54, 0xb0, 0xe7, 0x26, 0x25, 0xe5, 0xa6, 0x96, 0x94, 0xd7, 0xa0, 0x15, + 0xd2, 0x43, 0x3f, 0x28, 0xe2, 0x5e, 0x50, 0x3c, 0xe6, 0x49, 0x40, 0x78, 0x76, 0x96, 0x31, 0x5f, + 0x30, 0xca, 0x44, 0xbd, 0x30, 0x36, 0x51, 0xb7, 0xd5, 0x44, 0xad, 0x03, 0x0f, 0x35, 0xe0, 0x11, + 0xae, 0x8e, 0x84, 0xeb, 0xcf, 0x06, 0xac, 0x94, 0x70, 0x63, 0x0d, 0x3a, 0x11, 0x2e, 0x1b, 0x16, + 0x77, 0xd4, 0x08, 0x14, 0x8b, 0x87, 0xca, 0x63, 0x66, 0xed, 0xf3, 0xb8, 0xc1, 0x35, 0x15, 0x09, + 0x06, 0xf4, 0x01, 0x4d, 0x7d, 0xa5, 0xde, 0x97, 0x34, 0xeb, 0xed, 0x1e, 0x71, 0x15, 0xb0, 0x90, + 0x62, 0xfc, 0x3e, 0x56, 0xdd, 0x18, 0x63, 0x82, 0x62, 0x43, 0xb8, 0x29, 0xf3, 0xe8, 0xcd, 0x47, + 0xf6, 0x7b, 0x06, 0xac, 0x60, 0x7e, 0x50, 0x26, 0xcb, 0x3e, 0xac, 0xd0, 0x4a, 0x14, 0x88, 0x24, + 0xf3, 0xe9, 0x31, 0x49, 0xa2, 0x1a, 0x30, 0x4e, 0x4d, 0xd8, 0x7a, 0x03, 0x2e, 0x7b, 0x15, 0x9c, + 0xee, 0xf9, 0x69, 0xd6, 0x33, 0x37, 0x1a, 0x13, 0x94, 0x56, 0x61, 0x75, 0xc6, 0x2a, 0xb0, 0x7f, + 0x00, 0xbd, 0x83, 0x3c, 0x08, 0x76, 0x49, 0x9a, 0xba, 0x43, 0xb2, 0xf5, 0xb8, 0x4f, 0x46, 0x8c, + 0xef, 0x90, 0x34, 0x66, 0x11, 0x46, 0x92, 0x64, 0x9b, 0x7a, 0x84, 0x1b, 0xdf, 0x74, 0x0a, 0x92, + 0x81, 0x43, 0x92, 0x84, 0x2d, 0x33, 0xa2, 0x0e, 0x42, 0xca, 0xba, 0x06, 0x73, 0x01, 0x33, 0xab, + 0xc1, 0xcd, 0x5a, 0x1f, 0x63, 0xd6, 0x6e, 0x3a, 0xdc, 0x71, 0x33, 0xd7, 0xe1, 0xed, 0xec, 0x10, + 0x3e, 0x36, 0xbe, 0xf7, 0xd1, 0xc4, 0x28, 0x60, 0x95, 0x0a, 0x4f, 0xf5, 0x3e, 0x8d, 0x64, 0x10, + 0xa8, 0x2c, 0x66, 0x76, 0x8a, 0x7a, 0xb8, 0x1d, 0x5d, 0xa7, 0x20, 0xed, 0xcb, 0x60, 0xdd, 0x26, + 0xd9, 0xae, 0xfb, 0xe8, 0x46, 0xe4, 0xed, 0xfa, 0x51, 0x9f, 0x8c, 0x1c, 0x32, 0xb2, 0x6f, 0xc2, + 0xa5, 0x1a, 0x37, 0x8d, 0xf9, 0x6c, 0x71, 0x1f, 0xf5, 0xc9, 0x88, 0x1b, 0xd0, 0x75, 0x04, 0xc5, + 0xf9, 0xbc, 0x95, 0x28, 0x82, 0x04, 0x65, 0x8f, 0x60, 0x99, 0xb9, 0xaa, 0x4f, 0x22, 0x6f, 0x37, + 0x1d, 0x72, 0x15, 0x1b, 0xd0, 0x41, 0x04, 0x76, 0xd3, 0x61, 0x59, 0x55, 0x29, 0x2c, 0xd6, 0x62, + 0x10, 0xf8, 0xcc, 0x25, 0xbc, 0x85, 0x18, 0x8d, 0xc2, 0x62, 0xb1, 0x9b, 0x12, 0xb1, 0xc9, 0x60, + 0x41, 0xdd, 0x70, 0x24, 0x6d, 0xbf, 0xd7, 0x84, 0x79, 0x01, 0x28, 0xdf, 0x25, 0xb2, 0x42, 0x56, + 0xe2, 0x85, 0x14, 0xa6, 0x9c, 0xc1, 0x69, 0xb9, 0x5f, 0x43, 0x4a, 0xdd, 0xe1, 0x35, 0xf4, 0x1d, + 0x5e, 0xc5, 0xa6, 0xb9, 0xba, 0x4d, 0x95, 0x71, 0x35, 0xeb, 0xe3, 0x62, 0x2b, 0x2c, 0x5f, 0x74, + 0x0e, 0x02, 0x37, 0x3b, 0xa2, 0x49, 0x28, 0xea, 0xd2, 0xa6, 0x53, 0xe3, 0xb3, 0x55, 0x1d, 0x79, + 0x32, 0x2d, 0xe3, 0xec, 0xaa, 0x70, 0x59, 0x12, 0x44, 0x4e, 0x91, 0x9e, 0x71, 0x43, 0xa0, 0x33, + 0xd1, 0xb6, 0x34, 0xf5, 0x69, 0xc4, 0x13, 0x04, 0x66, 0x61, 0x95, 0xc5, 0x46, 0x1e, 0xa6, 0xc3, + 0x5b, 0x09, 0x0d, 0xc5, 0xb6, 0xa0, 0x20, 0xf9, 0xc8, 0x69, 0x94, 0x15, 0xc9, 0xa5, 0x83, 0xb2, + 0x0a, 0x8b, 0xc9, 0x0a, 0x92, 0xa7, 0xe0, 0x45, 0xa7, 0x20, 0xad, 0x15, 0x68, 0xa4, 0x64, 0x24, + 0xf2, 0x2a, 0xfb, 0xa9, 0x79, 0x6e, 0x59, 0xf7, 0x5c, 0x65, 0xa1, 0x5c, 0xe1, 0x5f, 0xd5, 0x85, + 0xb2, 0xdc, 0xf3, 0xaf, 0x6a, 0x7b, 0xfe, 0x1b, 0x30, 0x4f, 0x63, 0x16, 0xe7, 0x69, 0xcf, 0xe2, + 0x73, 0xec, 0x33, 0x93, 0xe7, 0xd8, 0xb5, 0x7d, 0x6c, 0x79, 0x33, 0xca, 0x92, 0xc7, 0x4e, 0x21, + 0x67, 0xdd, 0x83, 0x65, 0x7a, 0x74, 0x14, 0xf8, 0x11, 0x39, 0xc8, 0xd3, 0x63, 0x5e, 0xbf, 0x5e, + 0xe2, 0x4b, 0x93, 0x3d, 0x6e, 0x69, 0xd2, 0x5b, 0x3a, 0x55, 0xd1, 0xf5, 0x57, 0x60, 0x51, 0xed, + 0x86, 0xc1, 0x70, 0x42, 0x1e, 0x8b, 0x18, 0x64, 0x3f, 0xd9, 0x92, 0x7c, 0xea, 0x06, 0x39, 0xa6, + 0xb8, 0x05, 0x07, 0x89, 0x57, 0xcc, 0xaf, 0x18, 0xf6, 0xcf, 0x0d, 0x58, 0xae, 0x74, 0xc0, 0x5a, + 0x67, 0x7e, 0x16, 0x10, 0xa1, 0x01, 0x09, 0x56, 0x3e, 0x78, 0x24, 0x1d, 0x88, 0x10, 0xe6, 0xbf, + 0x45, 0x2e, 0x69, 0xc8, 0x4d, 0xa1, 0x0d, 0x8b, 0xfe, 0x7e, 0x9f, 0x29, 0xea, 0xd3, 0x3c, 0xf2, + 0xe4, 0xc1, 0x8e, 0xc2, 0x63, 0x21, 0xe4, 0xef, 0xf7, 0xb7, 0x5c, 0x6f, 0x48, 0xf0, 0xf8, 0xa5, + 0xc9, 0x6d, 0xd2, 0x99, 0xb6, 0x07, 0x0b, 0xf7, 0xfd, 0x38, 0xdd, 0xa6, 0x61, 0xc8, 0x1c, 0xe1, + 0x91, 0x8c, 0x25, 0x3a, 0x83, 0xfb, 0x5b, 0x50, 0x2c, 0x54, 0x3c, 0x72, 0xe4, 0xe6, 0x41, 0xc6, + 0x9a, 0x16, 0x13, 0x57, 0x61, 0xf1, 0x83, 0x87, 0x94, 0x46, 0x3b, 0x28, 0x8d, 0x76, 0x2a, 0x1c, + 0xfb, 0x2f, 0x26, 0xac, 0xf0, 0xed, 0xc1, 0x36, 0x77, 0xbb, 0xc7, 0x85, 0x5e, 0x86, 0x26, 0x9f, + 0x86, 0x22, 0x5b, 0x9c, 0xbd, 0xa5, 0xc0, 0xa6, 0xd6, 0x75, 0x68, 0xd1, 0x98, 0xa7, 0x18, 0xdc, + 0x87, 0x3c, 0x3f, 0x49, 0x48, 0x3f, 0xe3, 0x71, 0x84, 0x94, 0x75, 0x0b, 0x20, 0x2c, 0x33, 0x0a, + 0x2e, 0xdd, 0xd3, 0xea, 0x50, 0x24, 0x19, 0xb8, 0x72, 0x19, 0x96, 0x07, 0x3d, 0x0d, 0x47, 0x67, + 0x5a, 0x7b, 0xb0, 0xc4, 0xcd, 0xde, 0x2f, 0xf6, 0x96, 0xdc, 0x07, 0xd3, 0xf7, 0x58, 0x91, 0xb6, + 0x7f, 0x6d, 0x08, 0x18, 0xd9, 0xd7, 0x3e, 0x41, 0xec, 0x4b, 0x48, 0x8c, 0x99, 0x20, 0x59, 0x87, + 0x85, 0x30, 0x57, 0xb6, 0xba, 0x0d, 0x47, 0xd2, 0xa5, 0x8b, 0x1a, 0x53, 0xbb, 0xc8, 0xfe, 0x8d, + 0x01, 0xbd, 0xd7, 0xa8, 0x1f, 0xf1, 0x0f, 0x37, 0xe2, 0x38, 0x10, 0xa7, 0x91, 0x33, 0xfb, 0xfc, + 0x1b, 0xd0, 0x76, 0x51, 0x4d, 0x94, 0x09, 0xb7, 0x4f, 0xb1, 0x7d, 0x2d, 0x65, 0x94, 0x9d, 0x48, + 0x43, 0xdd, 0x89, 0xd8, 0xef, 0x18, 0xb0, 0x84, 0xa0, 0xbc, 0x9e, 0xfb, 0xd9, 0xcc, 0xf6, 0x6d, + 0xc1, 0xc2, 0x28, 0xf7, 0xb3, 0x19, 0xa2, 0x52, 0xca, 0xd5, 0xe3, 0xa9, 0x31, 0x26, 0x9e, 0xec, + 0x77, 0x0d, 0xb8, 0x52, 0x85, 0xf5, 0xc6, 0x60, 0x40, 0xe2, 0x27, 0x39, 0xa5, 0xb4, 0x9d, 0xd8, + 0x5c, 0x65, 0x27, 0x36, 0xd6, 0x64, 0x87, 0xbc, 0x45, 0x06, 0x4f, 0xaf, 0xc9, 0x3f, 0x36, 0xe1, + 0xe3, 0xb7, 0xe5, 0xc4, 0xbb, 0x9f, 0xb8, 0x51, 0x7a, 0x44, 0x92, 0xe4, 0x09, 0xda, 0x7b, 0x0f, + 0xba, 0x11, 0x79, 0x58, 0xda, 0x24, 0xa6, 0xe3, 0xb4, 0x6a, 0x74, 0xe1, 0xe9, 0xd6, 0x2e, 0xfb, + 0x3f, 0x06, 0xac, 0xa0, 0x9e, 0x6f, 0xfa, 0x83, 0x93, 0x27, 0x38, 0xf8, 0x3d, 0x58, 0x3a, 0xe1, + 0x16, 0x30, 0x6a, 0x86, 0x65, 0xbb, 0x22, 0x3d, 0xe5, 0xf0, 0xff, 0x6b, 0xc0, 0x2a, 0x2a, 0xba, + 0x1b, 0x9d, 0xfa, 0x4f, 0x32, 0x58, 0x0f, 0x60, 0xd9, 0x47, 0x13, 0x66, 0x04, 0xa0, 0x2a, 0x3e, + 0x25, 0x02, 0x7f, 0x34, 0x60, 0x19, 0x35, 0xdd, 0x8c, 0x32, 0x92, 0xcc, 0x3c, 0xfe, 0x3b, 0x6c, + 0x77, 0x9f, 0x25, 0x6e, 0x34, 0xcb, 0x0a, 0xa9, 0x8a, 0x4e, 0xb9, 0x48, 0xbe, 0x63, 0x80, 0xc5, + 0x55, 0xed, 0xf8, 0x69, 0xe8, 0xa7, 0xe9, 0x13, 0x74, 0xdd, 0x74, 0x06, 0xff, 0xd2, 0x84, 0xcb, + 0x8a, 0x96, 0xdd, 0x3c, 0x7b, 0xda, 0x4d, 0xb6, 0x76, 0xa0, 0xcd, 0x6a, 0x04, 0xf5, 0x88, 0x7f, + 0xda, 0x8e, 0x4a, 0x41, 0x56, 0xc5, 0x72, 0xa2, 0x4f, 0x06, 0x34, 0xf2, 0x52, 0x5e, 0x1c, 0x75, + 0x1d, 0x8d, 0xc7, 0x96, 0xa1, 0x75, 0x45, 0xcd, 0xb6, 0x1b, 0x0d, 0x48, 0xf0, 0xcc, 0x40, 0x64, + 0xff, 0xce, 0x80, 0x25, 0x6c, 0xf2, 0xf4, 0x0f, 0x99, 0xe5, 0x7a, 0x0c, 0xe4, 0x0f, 0x8d, 0x97, + 0x58, 0x78, 0xad, 0x29, 0x5a, 0xd4, 0xba, 0xfa, 0xe9, 0x0d, 0xad, 0x3b, 0xd0, 0x19, 0x1c, 0xbb, + 0xd1, 0x70, 0xa6, 0xe0, 0x52, 0x45, 0xed, 0x13, 0x58, 0xc5, 0x4b, 0x0d, 0xa5, 0x3a, 0x63, 0xfb, + 0x7e, 0xd7, 0xc3, 0xad, 0xbc, 0xc1, 0xbb, 0x2f, 0x48, 0xfd, 0xba, 0x4a, 0xbc, 0x48, 0x28, 0xaf, + 0xab, 0xae, 0x02, 0xb8, 0x9e, 0xf7, 0x06, 0x4d, 0x3c, 0x3f, 0x2a, 0x4a, 0x6d, 0x85, 0x63, 0xbf, + 0x06, 0x8b, 0xb7, 0x12, 0x1a, 0xde, 0x57, 0xae, 0x27, 0xce, 0xbc, 0x40, 0x51, 0xaf, 0x36, 0x4c, + 0xfd, 0x6a, 0xc3, 0xfe, 0x1e, 0x7c, 0xb4, 0x66, 0x38, 0xf7, 0xda, 0x36, 0xde, 0xba, 0x14, 0x9d, + 0x08, 0xe7, 0x7d, 0x72, 0x0c, 0x38, 0xaa, 0x2d, 0x8e, 0x26, 0x64, 0xff, 0xc8, 0x80, 0xe7, 0x6a, + 0xea, 0x6f, 0xc4, 0x71, 0x42, 0x4f, 0x45, 0x44, 0x5f, 0x44, 0x37, 0x7a, 0x19, 0x6a, 0x56, 0xcb, + 0xd0, 0xb1, 0x46, 0x68, 0xa5, 0xf3, 0x07, 0x60, 0xc4, 0x6f, 0x0d, 0x58, 0x16, 0x46, 0x78, 0x9e, + 0xe8, 0xf6, 0xcb, 0xd0, 0xc2, 0x1b, 0x5b, 0xd1, 0xe1, 0x73, 0x63, 0x3b, 0x2c, 0x6e, 0x9a, 0x1d, + 0xd1, 0xb8, 0x1e, 0xdb, 0xe6, 0xb8, 0xd8, 0xfe, 0xaa, 0x9c, 0x41, 0x53, 0xdf, 0xa9, 0x0a, 0x01, + 0xfb, 0xdb, 0x45, 0x30, 0xef, 0x90, 0x80, 0x5c, 0x24, 0x46, 0xf6, 0x03, 0x58, 0xe2, 0xd7, 0xc7, + 0x25, 0x06, 0x17, 0xa2, 0xf6, 0x0d, 0x58, 0xe1, 0x6a, 0x2f, 0xdc, 0x5e, 0x39, 0x3b, 0x18, 0x3e, + 0xdb, 0x38, 0xdf, 0x2f, 0x4e, 0xfb, 0x17, 0xe0, 0x52, 0x81, 0xfd, 0x83, 0xd8, 0x93, 0xc7, 0x39, + 0x13, 0x0e, 0xb1, 0xed, 0x2f, 0xc2, 0xda, 0x36, 0x8d, 0x4e, 0x49, 0x92, 0xe2, 0x11, 0x3f, 0x17, + 0x29, 0x24, 0xb4, 0xc9, 0x2f, 0x28, 0xfb, 0x2d, 0x58, 0x57, 0x25, 0xfa, 0x24, 0x3b, 0x48, 0xfc, + 0x53, 0x45, 0x4a, 0x1c, 0xf2, 0x1a, 0xda, 0x21, 0x6f, 0x79, 0x28, 0x6c, 0x6a, 0x87, 0xc2, 0x57, + 0xa0, 0xed, 0xa7, 0x42, 0x01, 0x0f, 0xaa, 0x05, 0xa7, 0x64, 0xd8, 0x7d, 0x58, 0x15, 0x17, 0xba, + 0x07, 0xee, 0xd0, 0x8f, 0x70, 0x05, 0xbc, 0x0a, 0x10, 0xbb, 0xc3, 0xe2, 0x41, 0x07, 0xde, 0x07, + 0x28, 0x1c, 0xf6, 0x3d, 0x3d, 0xa6, 0x0f, 0xc5, 0x77, 0x13, 0xbf, 0x97, 0x1c, 0xfb, 0x5b, 0x60, + 0x39, 0x24, 0x8d, 0x69, 0x94, 0x12, 0x45, 0xeb, 0x06, 0x74, 0xb6, 0xf3, 0x24, 0x21, 0x11, 0xeb, + 0xaa, 0x78, 0xdd, 0xa0, 0xb2, 0x98, 0xde, 0x7e, 0xa9, 0x17, 0xcf, 0x90, 0x15, 0x8e, 0xfd, 0xab, + 0x06, 0xb4, 0xfb, 0xfe, 0x30, 0x72, 0x03, 0x87, 0x8c, 0xac, 0xaf, 0x41, 0x0b, 0x2b, 0x7b, 0xe1, + 0xc6, 0x71, 0x67, 0x9a, 0xd8, 0x1a, 0xb7, 0x30, 0x0e, 0x19, 0xdd, 0xf9, 0x88, 0x23, 0x64, 0xac, + 0xd7, 0xa1, 0x8b, 0xbf, 0xee, 0xe2, 0x49, 0x8d, 0xc8, 0x58, 0x9f, 0x3d, 0x47, 0x89, 0x68, 0x8d, + 0xba, 0x74, 0x0d, 0xcc, 0xa0, 0x01, 0xcf, 0xfc, 0x62, 0xee, 0x4e, 0x36, 0x08, 0x0b, 0x04, 0x61, + 0x10, 0xca, 0x30, 0x69, 0x97, 0x9f, 0x65, 0x88, 0x84, 0x36, 0x59, 0x1a, 0x8f, 0x3c, 0x84, 0x34, + 0xca, 0x30, 0xe9, 0xe3, 0x3c, 0x1a, 0x3e, 0x88, 0xc5, 0x11, 0xdb, 0x64, 0xe9, 0x3b, 0xbc, 0x99, + 0x90, 0x46, 0x19, 0x26, 0x9d, 0xf0, 0x95, 0x95, 0x83, 0x7e, 0x96, 0x34, 0x2e, 0xc0, 0x42, 0x1a, + 0x65, 0xb6, 0xda, 0x30, 0x1f, 0xbb, 0x8f, 0x03, 0xea, 0x7a, 0xf6, 0xdb, 0x0d, 0x80, 0xa2, 0x61, + 0xca, 0xeb, 0x01, 0xcd, 0x45, 0x9b, 0xe7, 0xba, 0x28, 0x0e, 0x1e, 0x2b, 0x4e, 0xea, 0x8f, 0x77, + 0xd2, 0xe7, 0xa6, 0x75, 0x12, 0x6a, 0xab, 0xb8, 0xe9, 0x7a, 0xc5, 0x4d, 0x9b, 0xe7, 0xba, 0x49, + 0x18, 0x25, 0x1c, 0x75, 0xbd, 0xe2, 0xa8, 0xcd, 0x73, 0x1d, 0x25, 0xe4, 0x85, 0xab, 0xae, 0x57, + 0x5c, 0xb5, 0x79, 0xae, 0xab, 0x84, 0xbc, 0x70, 0xd6, 0xf5, 0x8a, 0xb3, 0x36, 0xcf, 0x75, 0x96, + 0x90, 0xaf, 0xbb, 0xeb, 0x5d, 0x13, 0x96, 0x38, 0x64, 0x78, 0x9f, 0x16, 0x1d, 0x51, 0x7e, 0x6c, + 0xce, 0xe1, 0xd2, 0xdf, 0x07, 0xe9, 0x4c, 0xeb, 0xf3, 0xb0, 0x8a, 0x0c, 0xf1, 0x9e, 0x44, 0x5e, + 0x50, 0xb6, 0x9d, 0xfa, 0x07, 0x7e, 0x03, 0x92, 0xa7, 0x19, 0x0d, 0x77, 0xdc, 0xcc, 0x2d, 0x2a, + 0xa3, 0x92, 0xa3, 0xde, 0x4f, 0xcd, 0xd5, 0x5e, 0x20, 0x26, 0x94, 0x86, 0xf2, 0xe2, 0x49, 0x50, + 0x4c, 0x22, 0xf3, 0x43, 0x42, 0xf3, 0x4c, 0x2c, 0x13, 0x05, 0x89, 0x77, 0xf8, 0x9e, 0xef, 0xf2, + 0x5b, 0x1d, 0x71, 0xc1, 0x2d, 0x19, 0x7c, 0x65, 0x2b, 0x6f, 0xa9, 0xc4, 0x0b, 0xc1, 0x92, 0x73, + 0xfe, 0x8d, 0x92, 0xfd, 0x0f, 0x03, 0x2e, 0x1d, 0xb8, 0x49, 0xe6, 0x0f, 0xfc, 0xd8, 0x8d, 0xb2, + 0x5d, 0x92, 0xb9, 0x7c, 0x0c, 0xda, 0x23, 0x21, 0xe3, 0xfd, 0x3d, 0x12, 0x3a, 0x80, 0xe5, 0xa1, + 0x5e, 0x84, 0xbf, 0xcf, 0xfa, 0xb9, 0x2a, 0xae, 0xbd, 0x78, 0x6a, 0xbc, 0xef, 0x17, 0x4f, 0xf6, + 0x4f, 0x4d, 0x58, 0xae, 0x2c, 0x9d, 0xac, 0x1c, 0xc5, 0x42, 0x43, 0xc6, 0x84, 0xa4, 0xad, 0x1b, + 0x00, 0xbe, 0x0c, 0xa3, 0x33, 0xce, 0xa8, 0xf5, 0x58, 0x73, 0x14, 0xa1, 0x71, 0x57, 0x55, 0x8d, + 0x99, 0xaf, 0xaa, 0xd8, 0x16, 0x21, 0x2e, 0x9d, 0x74, 0xc6, 0x16, 0x61, 0x8c, 0x2b, 0x1d, 0x55, + 0xd4, 0xfe, 0x2e, 0xac, 0xd6, 0x56, 0x28, 0x7e, 0x73, 0x45, 0x4f, 0x48, 0x24, 0x6f, 0xae, 0x18, + 0xa1, 0x04, 0xab, 0x59, 0x0d, 0xd6, 0xc0, 0x3f, 0x55, 0x9f, 0x54, 0x0a, 0xd2, 0xfe, 0x99, 0x09, + 0x6b, 0xe3, 0xb3, 0xcb, 0xb3, 0x0a, 0xf7, 0x21, 0xf4, 0x26, 0xad, 0xe4, 0x17, 0x86, 0x7a, 0x19, + 0xdd, 0x32, 0x0f, 0x3f, 0xab, 0x70, 0x5f, 0x2a, 0xa2, 0x5b, 0x49, 0x75, 0xf6, 0x1f, 0x24, 0x3e, + 0xb2, 0xd2, 0x78, 0x46, 0xf1, 0xb1, 0x5e, 0x84, 0x15, 0x1c, 0xa6, 0xf2, 0xb6, 0x01, 0x0b, 0xd7, + 0x1a, 0xbf, 0x5c, 0x29, 0x94, 0xb4, 0x7f, 0x61, 0x31, 0xfb, 0x27, 0xa3, 0xf0, 0x89, 0xac, 0xdf, + 0x3e, 0x54, 0x3e, 0x29, 0x23, 0x4d, 0x29, 0x6a, 0x94, 0x48, 0x93, 0x75, 0xe5, 0xff, 0x23, 0xed, + 0xfc, 0x48, 0x93, 0x58, 0x2a, 0x05, 0x9e, 0xfd, 0x43, 0xe8, 0xee, 0x90, 0x60, 0x37, 0x1d, 0x16, + 0xaf, 0xaa, 0xce, 0x02, 0x72, 0xd2, 0x3f, 0x3b, 0x26, 0xbe, 0xa7, 0xaa, 0xbe, 0xc5, 0x9a, 0xab, + 0xbd, 0xc5, 0xb2, 0xb7, 0x60, 0x49, 0x35, 0x60, 0x96, 0x47, 0x65, 0x5b, 0x57, 0xbe, 0xb3, 0x7e, + 0xed, 0x25, 0xfc, 0x0f, 0xd1, 0xab, 0x35, 0x10, 0x0f, 0x5b, 0xfc, 0x3f, 0x45, 0x5f, 0xfa, 0x5f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xd4, 0xff, 0x7e, 0x96, 0x66, 0x34, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index ad4de4737..60fdae9d7 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -346,6 +346,12 @@ message GroupCancelMutedTips{ int64 operationTime = 3; } +message GroupMemberInfoSetTips{ + GroupInfo group = 1; + GroupMemberFullInfo opUser = 2; + int64 operationTime = 3; + GroupMemberFullInfo changedUser = 4; +} //////////////////////friend///////////////////// //message FriendInfo{ From 453c6f05bdc077b0c3dae4efb5a6242271dedc51 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 11:52:49 +0800 Subject: [PATCH 066/128] set group member nickname --- config/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 05c56bc6a..6208515ac 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -439,8 +439,8 @@ notification: unreadCount: true offlinePush: switch: false - title: "groupMemberInfoSet title" - desc: "groupMemberInfoSet desc" + title: "groupMemberInfoSet title " + desc: "groupMemberInfoSet desc " ext: "groupMemberInfoSet ext" defaultTips: tips: "group member info set" From 24fe8ab4a44b12a8af88331ea5ea52d71e297567 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 11:53:03 +0800 Subject: [PATCH 067/128] set group member nickname --- config/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 6208515ac..dae8f7a2f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -436,11 +436,11 @@ notification: groupMemberInfoSet: conversation: reliabilityLevel: 2 - unreadCount: true + unreadCount: false offlinePush: switch: false - title: "groupMemberInfoSet title " - desc: "groupMemberInfoSet desc " + title: "groupMemberInfoSet title" + desc: "groupMemberInfoSet desc" ext: "groupMemberInfoSet ext" defaultTips: tips: "group member info set" From 472c1a9e3ea35765dc201fb775196c3da5204518 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 13:01:16 +0800 Subject: [PATCH 068/128] set group member nickname --- internal/rpc/group/group.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index db8d73162..e71647d55 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -661,7 +661,7 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe 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 From c59dc129a8e5c13b241ea5974dedfcb8c1001598 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 14:27:12 +0800 Subject: [PATCH 069/128] /user/get_users_online_status --- cmd/open_im_api/main.go | 8 ++-- internal/api/manage/management_user.go | 8 +++- internal/api/user/user.go | 62 ++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 122f4d055..bbeb522e3 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -38,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") @@ -86,6 +87,7 @@ func main() { groupRouterGroup.POST("/cancel_mute_group", group.CancelMuteGroup) groupRouterGroup.POST("/set_group_member_nickname", group.SetGroupMemberNickname) + } //certificate authRouterGroup := r.Group("/auth") diff --git a/internal/api/manage/management_user.go b/internal/api/manage/management_user.go index 5bcc19be0..1ff802cc4 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,12 @@ func GetUsersOnlineStatus(c *gin.Context) { 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 @@ -176,5 +183,4 @@ func GetUsersOnlineStatus(c *gin.Context) { } log.NewInfo(req.OperationID, "GetUsersOnlineStatus api return", resp) c.JSON(http.StatusOK, resp) - } diff --git a/internal/api/user/user.go b/internal/api/user/user.go index 1756a9f8d..b3abbbab4 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,63 @@ 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 + } + 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) +} From f6b30ed0c68d1a230aacc9f96e47812cd2b8b00d Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 15:45:44 +0800 Subject: [PATCH 070/128] organization --- internal/api/organization/organization.go | 2 +- internal/rpc/organization/organization.go | 6 +- pkg/base_info/organization_api_struct.go | 2 +- pkg/common/constant/constant.go | 2 + pkg/proto/organization/organization.pb.go | 148 +++---- pkg/proto/organization/organization.proto | 2 +- pkg/proto/sdk_ws/ws.pb.go | 451 +++++++++++----------- pkg/proto/sdk_ws/ws.proto | 12 +- 8 files changed, 314 insertions(+), 311 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 714b26a7e..4bcd140f4 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -227,7 +227,7 @@ func UpdateOrganizationUser(c *gin.Context) { } func CreateDepartmentMember(c *gin.Context) { - params := api.CreateDepartmentMemberReq{UserInDepartment: &open_im_sdk.UserInDepartment{}} + 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()}) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 98994269a..014e2b710 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -219,9 +219,10 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp log.Error(req.OperationID, errMsg) return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil } + departmentMember := db.DepartmentMember{} - utils.CopyStructFields(&departmentMember, req.UserInDepartment) - log.Debug(req.OperationID, "src ", *req.UserInDepartment, "dst ", 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() @@ -229,6 +230,7 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp 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) return resp, nil diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index ac80f82df..87d026f10 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -57,7 +57,7 @@ type UpdateOrganizationUserResp struct { type CreateDepartmentMemberReq struct { OperationID string `json:"operationID" binding:"required"` - *open_im_sdk.UserInDepartment + *open_im_sdk.DepartmentMember } type CreateDepartmentMemberResp struct { diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 291049a14..a30d1c222 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -89,6 +89,8 @@ const ( ConversationPrivateChatNotification = 1701 + OrganizationChangedNotification = 1801 + NotificationEnd = 2000 //status diff --git a/pkg/proto/organization/organization.pb.go b/pkg/proto/organization/organization.pb.go index 844dfd947..7da1cd816 100644 --- a/pkg/proto/organization/organization.pb.go +++ b/pkg/proto/organization/organization.pb.go @@ -37,7 +37,7 @@ 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_a03f9a4144ed1081, []int{0} + return fileDescriptor_organization_4c9882c006c04fab, []int{0} } func (m *CreateDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentReq.Unmarshal(m, b) @@ -91,7 +91,7 @@ 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_a03f9a4144ed1081, []int{1} + return fileDescriptor_organization_4c9882c006c04fab, []int{1} } func (m *CreateDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentResp.Unmarshal(m, b) @@ -145,7 +145,7 @@ 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_a03f9a4144ed1081, []int{2} + return fileDescriptor_organization_4c9882c006c04fab, []int{2} } func (m *UpdateDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateDepartmentReq.Unmarshal(m, b) @@ -198,7 +198,7 @@ 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_a03f9a4144ed1081, []int{3} + return fileDescriptor_organization_4c9882c006c04fab, []int{3} } func (m *UpdateDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateDepartmentResp.Unmarshal(m, b) @@ -245,7 +245,7 @@ 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_a03f9a4144ed1081, []int{4} + return fileDescriptor_organization_4c9882c006c04fab, []int{4} } func (m *GetSubDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSubDepartmentReq.Unmarshal(m, b) @@ -299,7 +299,7 @@ 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_a03f9a4144ed1081, []int{5} + return fileDescriptor_organization_4c9882c006c04fab, []int{5} } func (m *GetSubDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSubDepartmentResp.Unmarshal(m, b) @@ -353,7 +353,7 @@ 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_a03f9a4144ed1081, []int{6} + return fileDescriptor_organization_4c9882c006c04fab, []int{6} } func (m *DeleteDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteDepartmentReq.Unmarshal(m, b) @@ -406,7 +406,7 @@ 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_a03f9a4144ed1081, []int{7} + return fileDescriptor_organization_4c9882c006c04fab, []int{7} } func (m *DeleteDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteDepartmentResp.Unmarshal(m, b) @@ -453,7 +453,7 @@ func (m *CreateOrganizationUserReq) Reset() { *m = CreateOrganizationUse func (m *CreateOrganizationUserReq) String() string { return proto.CompactTextString(m) } func (*CreateOrganizationUserReq) ProtoMessage() {} func (*CreateOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{8} + return fileDescriptor_organization_4c9882c006c04fab, []int{8} } func (m *CreateOrganizationUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOrganizationUserReq.Unmarshal(m, b) @@ -506,7 +506,7 @@ func (m *CreateOrganizationUserResp) Reset() { *m = CreateOrganizationUs func (m *CreateOrganizationUserResp) String() string { return proto.CompactTextString(m) } func (*CreateOrganizationUserResp) ProtoMessage() {} func (*CreateOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{9} + return fileDescriptor_organization_4c9882c006c04fab, []int{9} } func (m *CreateOrganizationUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOrganizationUserResp.Unmarshal(m, b) @@ -553,7 +553,7 @@ func (m *UpdateOrganizationUserReq) Reset() { *m = UpdateOrganizationUse func (m *UpdateOrganizationUserReq) String() string { return proto.CompactTextString(m) } func (*UpdateOrganizationUserReq) ProtoMessage() {} func (*UpdateOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{10} + return fileDescriptor_organization_4c9882c006c04fab, []int{10} } func (m *UpdateOrganizationUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateOrganizationUserReq.Unmarshal(m, b) @@ -606,7 +606,7 @@ func (m *UpdateOrganizationUserResp) Reset() { *m = UpdateOrganizationUs func (m *UpdateOrganizationUserResp) String() string { return proto.CompactTextString(m) } func (*UpdateOrganizationUserResp) ProtoMessage() {} func (*UpdateOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{11} + return fileDescriptor_organization_4c9882c006c04fab, []int{11} } func (m *UpdateOrganizationUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateOrganizationUserResp.Unmarshal(m, b) @@ -641,7 +641,7 @@ func (m *UpdateOrganizationUserResp) GetErrMsg() string { } type CreateDepartmentMemberReq struct { - UserInDepartment *sdk_ws.UserInDepartment `protobuf:"bytes,1,opt,name=userInDepartment" json:"userInDepartment,omitempty"` + 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:"-"` @@ -653,7 +653,7 @@ func (m *CreateDepartmentMemberReq) Reset() { *m = CreateDepartmentMembe func (m *CreateDepartmentMemberReq) String() string { return proto.CompactTextString(m) } func (*CreateDepartmentMemberReq) ProtoMessage() {} func (*CreateDepartmentMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{12} + return fileDescriptor_organization_4c9882c006c04fab, []int{12} } func (m *CreateDepartmentMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentMemberReq.Unmarshal(m, b) @@ -673,9 +673,9 @@ func (m *CreateDepartmentMemberReq) XXX_DiscardUnknown() { var xxx_messageInfo_CreateDepartmentMemberReq proto.InternalMessageInfo -func (m *CreateDepartmentMemberReq) GetUserInDepartment() *sdk_ws.UserInDepartment { +func (m *CreateDepartmentMemberReq) GetDepartmentMember() *sdk_ws.DepartmentMember { if m != nil { - return m.UserInDepartment + return m.DepartmentMember } return nil } @@ -706,7 +706,7 @@ func (m *CreateDepartmentMemberResp) Reset() { *m = CreateDepartmentMemb func (m *CreateDepartmentMemberResp) String() string { return proto.CompactTextString(m) } func (*CreateDepartmentMemberResp) ProtoMessage() {} func (*CreateDepartmentMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{13} + return fileDescriptor_organization_4c9882c006c04fab, []int{13} } func (m *CreateDepartmentMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentMemberResp.Unmarshal(m, b) @@ -753,7 +753,7 @@ 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_a03f9a4144ed1081, []int{14} + return fileDescriptor_organization_4c9882c006c04fab, []int{14} } func (m *GetUserInDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInDepartmentReq.Unmarshal(m, b) @@ -807,7 +807,7 @@ 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_a03f9a4144ed1081, []int{15} + return fileDescriptor_organization_4c9882c006c04fab, []int{15} } func (m *GetUserInDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInDepartmentResp.Unmarshal(m, b) @@ -861,7 +861,7 @@ func (m *UpdateUserInDepartmentReq) Reset() { *m = UpdateUserInDepartmen func (m *UpdateUserInDepartmentReq) String() string { return proto.CompactTextString(m) } func (*UpdateUserInDepartmentReq) ProtoMessage() {} func (*UpdateUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{16} + return fileDescriptor_organization_4c9882c006c04fab, []int{16} } func (m *UpdateUserInDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateUserInDepartmentReq.Unmarshal(m, b) @@ -914,7 +914,7 @@ func (m *UpdateUserInDepartmentResp) Reset() { *m = UpdateUserInDepartme func (m *UpdateUserInDepartmentResp) String() string { return proto.CompactTextString(m) } func (*UpdateUserInDepartmentResp) ProtoMessage() {} func (*UpdateUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{17} + return fileDescriptor_organization_4c9882c006c04fab, []int{17} } func (m *UpdateUserInDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateUserInDepartmentResp.Unmarshal(m, b) @@ -962,7 +962,7 @@ func (m *DeleteUserInDepartmentReq) Reset() { *m = DeleteUserInDepartmen func (m *DeleteUserInDepartmentReq) String() string { return proto.CompactTextString(m) } func (*DeleteUserInDepartmentReq) ProtoMessage() {} func (*DeleteUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{18} + return fileDescriptor_organization_4c9882c006c04fab, []int{18} } func (m *DeleteUserInDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUserInDepartmentReq.Unmarshal(m, b) @@ -1022,7 +1022,7 @@ func (m *DeleteUserInDepartmentResp) Reset() { *m = DeleteUserInDepartme func (m *DeleteUserInDepartmentResp) String() string { return proto.CompactTextString(m) } func (*DeleteUserInDepartmentResp) ProtoMessage() {} func (*DeleteUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{19} + return fileDescriptor_organization_4c9882c006c04fab, []int{19} } func (m *DeleteUserInDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUserInDepartmentResp.Unmarshal(m, b) @@ -1069,7 +1069,7 @@ func (m *DeleteOrganizationUserReq) Reset() { *m = DeleteOrganizationUse func (m *DeleteOrganizationUserReq) String() string { return proto.CompactTextString(m) } func (*DeleteOrganizationUserReq) ProtoMessage() {} func (*DeleteOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{20} + return fileDescriptor_organization_4c9882c006c04fab, []int{20} } func (m *DeleteOrganizationUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOrganizationUserReq.Unmarshal(m, b) @@ -1122,7 +1122,7 @@ func (m *DeleteOrganizationUserResp) Reset() { *m = DeleteOrganizationUs func (m *DeleteOrganizationUserResp) String() string { return proto.CompactTextString(m) } func (*DeleteOrganizationUserResp) ProtoMessage() {} func (*DeleteOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_a03f9a4144ed1081, []int{21} + return fileDescriptor_organization_4c9882c006c04fab, []int{21} } func (m *DeleteOrganizationUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOrganizationUserResp.Unmarshal(m, b) @@ -1169,7 +1169,7 @@ 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_a03f9a4144ed1081, []int{22} + return fileDescriptor_organization_4c9882c006c04fab, []int{22} } func (m *GetDepartmentMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetDepartmentMemberReq.Unmarshal(m, b) @@ -1223,7 +1223,7 @@ 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_a03f9a4144ed1081, []int{23} + return fileDescriptor_organization_4c9882c006c04fab, []int{23} } func (m *GetDepartmentMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetDepartmentMemberResp.Unmarshal(m, b) @@ -1727,54 +1727,54 @@ var _Organization_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_a03f9a4144ed1081) + proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_4c9882c006c04fab) } -var fileDescriptor_organization_a03f9a4144ed1081 = []byte{ - // 713 bytes of a gzipped FileDescriptorProto +var fileDescriptor_organization_4c9882c006c04fab = []byte{ + // 708 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4f, 0x6f, 0x12, 0x41, - 0x14, 0xcf, 0x8a, 0x56, 0xfb, 0xda, 0x18, 0x32, 0x25, 0x48, 0xd7, 0x34, 0xd2, 0xd5, 0x46, 0x4e, - 0x90, 0xd4, 0xa3, 0x37, 0x8b, 0x69, 0x49, 0xac, 0x24, 0x18, 0x62, 0xf0, 0x42, 0x96, 0x30, 0x12, - 0x82, 0xec, 0x0e, 0x33, 0x8b, 0x24, 0xfd, 0x12, 0x9e, 0xbc, 0x18, 0x8f, 0x9e, 0xfc, 0x34, 0x7e, - 0x24, 0xb3, 0xbb, 0x94, 0x0e, 0x6f, 0xde, 0x52, 0x5c, 0x16, 0xa3, 0xc7, 0x19, 0x66, 0xde, 0xef, - 0xbd, 0xdf, 0xfb, 0x33, 0x3f, 0x16, 0x9e, 0xf8, 0x72, 0xe0, 0x7a, 0xc3, 0x2b, 0x37, 0x18, 0xfa, - 0x5e, 0x4d, 0x5f, 0x54, 0x85, 0xf4, 0x03, 0x9f, 0xed, 0xeb, 0x7b, 0xf6, 0x71, 0x53, 0x70, 0xaf, - 0xdb, 0xb8, 0xac, 0x89, 0xd1, 0xa0, 0x16, 0x1d, 0xa8, 0xa9, 0xfe, 0xa8, 0x3b, 0x53, 0xb5, 0x99, - 0x8a, 0x2f, 0x38, 0xdf, 0x2c, 0x38, 0x38, 0x93, 0xdc, 0x0d, 0x78, 0x9d, 0x0b, 0x57, 0x06, 0x63, - 0xee, 0x05, 0x2d, 0x3e, 0x61, 0xaf, 0xe1, 0x61, 0x7f, 0xb1, 0xd1, 0xf0, 0x3e, 0xfa, 0x25, 0xab, - 0x6c, 0x55, 0xf6, 0x4e, 0x8f, 0xaa, 0x8a, 0xcb, 0xcf, 0x5c, 0x76, 0x5d, 0x31, 0xec, 0x0a, 0x57, - 0xba, 0x63, 0x55, 0xd5, 0x6e, 0xa2, 0x4b, 0xac, 0x0c, 0x7b, 0xbe, 0xe0, 0x32, 0x72, 0xa7, 0x51, - 0x2f, 0xdd, 0x29, 0x5b, 0x95, 0xdd, 0x96, 0xbe, 0xc5, 0x6c, 0x78, 0xe0, 0x8b, 0xb6, 0xe2, 0xb2, - 0x51, 0x2f, 0xe5, 0xa2, 0x9f, 0x17, 0x6b, 0xe7, 0x8b, 0x05, 0x05, 0xd3, 0x39, 0x25, 0x58, 0x09, - 0xee, 0x73, 0x29, 0xcf, 0xfc, 0x3e, 0x8f, 0xdc, 0xba, 0xd7, 0xba, 0x5e, 0xb2, 0x22, 0xec, 0x70, - 0x29, 0x2f, 0xd5, 0x60, 0x8e, 0x35, 0x5f, 0x11, 0xf1, 0xe4, 0x52, 0xc4, 0x13, 0xd1, 0xd5, 0x16, - 0xfd, 0x7f, 0x93, 0xae, 0x0b, 0x28, 0x98, 0xbe, 0xa5, 0x61, 0xcb, 0x99, 0xc1, 0xc1, 0x39, 0x0f, - 0xde, 0x4d, 0x7b, 0xcb, 0x51, 0x3a, 0xb0, 0xaf, 0x39, 0x5c, 0x8f, 0xac, 0xed, 0xb6, 0x96, 0xf6, - 0x32, 0xc8, 0xb8, 0x89, 0xbc, 0x79, 0xc6, 0xdf, 0x0c, 0x55, 0x50, 0xca, 0x95, 0x73, 0x7f, 0x94, - 0x92, 0xf0, 0x52, 0x48, 0x45, 0x9d, 0x7f, 0xe2, 0x38, 0xe1, 0xdb, 0xa7, 0xe2, 0x02, 0x0a, 0x26, - 0x70, 0xaa, 0x6c, 0xfe, 0xb4, 0xe0, 0x30, 0x6e, 0xa3, 0xa6, 0x36, 0x1d, 0x42, 0x98, 0x30, 0x92, - 0x26, 0xe4, 0x7d, 0xb4, 0x3d, 0x2f, 0xde, 0xa7, 0x04, 0x53, 0x86, 0x05, 0xe3, 0xf2, 0x86, 0x61, - 0xbf, 0x05, 0x3b, 0xc9, 0xd7, 0xd4, 0xc1, 0xc7, 0x5d, 0xf1, 0x7f, 0x04, 0x9f, 0xe4, 0xeb, 0x86, - 0x99, 0xbf, 0x29, 0xa2, 0x4b, 0x3e, 0xee, 0x2d, 0x82, 0x9f, 0x86, 0xb8, 0xde, 0xcd, 0x8f, 0x2b, - 0x82, 0x6f, 0xa3, 0xa3, 0x2d, 0xe3, 0x72, 0x56, 0x99, 0x37, 0x7d, 0x4d, 0x15, 0xbc, 0x07, 0xc5, - 0x73, 0x1e, 0x18, 0x6e, 0xf3, 0x49, 0x78, 0x63, 0x1a, 0xfb, 0x10, 0xb7, 0xed, 0x7c, 0xb5, 0xa1, - 0xff, 0xdf, 0x2d, 0x78, 0x44, 0x02, 0xa6, 0x1a, 0x5f, 0x54, 0x72, 0x72, 0x1b, 0x24, 0x47, 0x6b, - 0x04, 0x8a, 0x92, 0x26, 0xe4, 0xfb, 0x88, 0xf6, 0x15, 0xb5, 0x60, 0x64, 0xc8, 0xb8, 0x9c, 0x55, - 0x23, 0x64, 0xc3, 0xa6, 0xf3, 0xd5, 0x82, 0xc3, 0x78, 0x9a, 0xfe, 0xb5, 0x7a, 0x30, 0x9e, 0x88, - 0xbb, 0xe6, 0x13, 0x11, 0xc6, 0x99, 0xe4, 0x56, 0xaa, 0x38, 0x27, 0xd7, 0x61, 0x52, 0xc3, 0x6e, - 0x3b, 0x65, 0xbf, 0x08, 0x21, 0xa3, 0x99, 0x75, 0x15, 0xb5, 0x2d, 0x35, 0xaf, 0xb6, 0xff, 0xe6, - 0xfe, 0x88, 0x5b, 0x38, 0x9b, 0x01, 0xc4, 0xde, 0x43, 0x01, 0x77, 0xa1, 0xa6, 0x43, 0xd6, 0x6a, - 0x63, 0xd2, 0xc0, 0xe9, 0xaf, 0x5d, 0x58, 0x12, 0xfa, 0xac, 0x03, 0x79, 0x3c, 0x3a, 0xd9, 0x71, - 0x75, 0xe9, 0xff, 0x01, 0x21, 0xf2, 0x6d, 0xe7, 0xb6, 0x23, 0x4a, 0x84, 0xa6, 0xb1, 0xa8, 0xc4, - 0xa6, 0x09, 0x41, 0x8c, 0x4d, 0x93, 0xba, 0xb4, 0x03, 0x79, 0xac, 0xf5, 0xb0, 0x69, 0x42, 0x85, - 0x62, 0xd3, 0xa4, 0x5c, 0xec, 0x40, 0x1e, 0x8b, 0x27, 0x6c, 0x9a, 0x50, 0x75, 0xd8, 0x34, 0xa9, - 0xbf, 0x46, 0x50, 0xa4, 0x05, 0x0a, 0x7b, 0x4e, 0xd1, 0x49, 0x34, 0xa2, 0x5d, 0x59, 0xef, 0x60, - 0x0c, 0x46, 0x0b, 0x02, 0x0c, 0x96, 0x28, 0x71, 0x30, 0xd8, 0x0a, 0x7d, 0x31, 0x82, 0x22, 0xdd, - 0xc9, 0x18, 0x2c, 0x71, 0xc4, 0x60, 0xb0, 0x15, 0x83, 0x61, 0x41, 0x23, 0x6e, 0x36, 0x9a, 0x46, - 0x62, 0x1e, 0xd0, 0x34, 0x92, 0xbd, 0xdb, 0x8b, 0xfe, 0xcf, 0xe0, 0xee, 0x62, 0xcf, 0x8c, 0x4a, - 0x22, 0x5e, 0x07, 0xfb, 0x64, 0x8d, 0x53, 0x3a, 0x7b, 0x06, 0x0c, 0xc9, 0x1e, 0x85, 0x54, 0x59, - 0xef, 0xa0, 0x5e, 0x17, 0xb7, 0x81, 0x25, 0xbe, 0xf8, 0x74, 0x5d, 0x90, 0x60, 0x31, 0x7b, 0x46, - 0x9e, 0x4c, 0xf6, 0xa8, 0x24, 0x9d, 0xac, 0x71, 0x4a, 0x89, 0x57, 0x47, 0x1f, 0x1e, 0x57, 0x97, - 0x3e, 0x68, 0xbc, 0xd4, 0x17, 0xbd, 0x9d, 0xe8, 0x6b, 0xc5, 0x8b, 0xdf, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x33, 0x0d, 0x37, 0x72, 0x01, 0x11, 0x00, 0x00, + 0x14, 0xcf, 0x8a, 0x56, 0x79, 0x6d, 0x0c, 0x99, 0x12, 0xa4, 0x6b, 0x1a, 0x29, 0xda, 0xc8, 0x09, + 0x92, 0x7a, 0xf4, 0x66, 0x31, 0x2d, 0x89, 0x48, 0x82, 0x69, 0x0c, 0x5e, 0xc8, 0x12, 0x46, 0x42, + 0x90, 0xdd, 0xe9, 0xcc, 0x22, 0x49, 0xbf, 0x84, 0x27, 0x2f, 0xc6, 0xa3, 0x27, 0x3f, 0x8d, 0x1f, + 0xc9, 0xec, 0x2e, 0xc5, 0xd9, 0x37, 0x6f, 0xe9, 0xba, 0x80, 0xa9, 0xc7, 0x19, 0x66, 0xde, 0xef, + 0xbd, 0xdf, 0xfb, 0x33, 0x3f, 0x16, 0x9e, 0x78, 0x72, 0xe4, 0xb8, 0xe3, 0x2b, 0xc7, 0x1f, 0x7b, + 0x6e, 0x43, 0x5f, 0xd4, 0x85, 0xf4, 0x7c, 0x8f, 0xed, 0xe9, 0x7b, 0xf6, 0x51, 0x47, 0x70, 0xb7, + 0xdf, 0x6a, 0x37, 0xc4, 0x64, 0xd4, 0x08, 0x0f, 0x34, 0xd4, 0x70, 0xd2, 0x9f, 0xab, 0xc6, 0x5c, + 0x45, 0x17, 0xaa, 0xdf, 0x2c, 0xd8, 0x3f, 0x95, 0xdc, 0xf1, 0x79, 0x93, 0x0b, 0x47, 0xfa, 0x53, + 0xee, 0xfa, 0x5d, 0x7e, 0xc9, 0x5e, 0xc3, 0xc3, 0xe1, 0x72, 0xa3, 0xe5, 0x7e, 0xf4, 0xca, 0x56, + 0xc5, 0xaa, 0xed, 0x9e, 0x1c, 0xd6, 0x15, 0x97, 0x9f, 0xb9, 0xec, 0x3b, 0x62, 0xdc, 0x17, 0x8e, + 0x74, 0xa6, 0xaa, 0xae, 0xdd, 0x44, 0x97, 0x58, 0x05, 0x76, 0x3d, 0xc1, 0x65, 0xe8, 0x4e, 0xab, + 0x59, 0xbe, 0x53, 0xb1, 0x6a, 0xf9, 0xae, 0xbe, 0xc5, 0x6c, 0x78, 0xe0, 0x89, 0x0b, 0xc5, 0x65, + 0xab, 0x59, 0xce, 0x85, 0x3f, 0x2f, 0xd7, 0xd5, 0x2f, 0x16, 0x14, 0x4d, 0xe7, 0x94, 0x60, 0x65, + 0xb8, 0xcf, 0xa5, 0x3c, 0xf5, 0x86, 0x3c, 0x74, 0xeb, 0x5e, 0xf7, 0x7a, 0xc9, 0x4a, 0xb0, 0xc3, + 0xa5, 0x6c, 0xab, 0xd1, 0x02, 0x6b, 0xb1, 0x22, 0xe2, 0xc9, 0x65, 0x88, 0x27, 0xa4, 0xeb, 0x42, + 0x0c, 0x6f, 0x27, 0x5d, 0xe7, 0x50, 0x34, 0x7d, 0xcb, 0xc2, 0x56, 0x75, 0x0e, 0xfb, 0x67, 0xdc, + 0x7f, 0x37, 0x1b, 0xc4, 0xa3, 0xac, 0xc2, 0x9e, 0xe6, 0x70, 0x33, 0xb4, 0x96, 0xef, 0xc6, 0xf6, + 0x36, 0x90, 0x71, 0x13, 0x79, 0xfd, 0x8c, 0xbf, 0x19, 0x2b, 0xbf, 0x9c, 0xab, 0xe4, 0xfe, 0x2a, + 0x25, 0xc1, 0xa5, 0x80, 0x8a, 0x26, 0xff, 0xc4, 0x71, 0xc2, 0xb7, 0x4f, 0xc5, 0x39, 0x14, 0x4d, + 0xe0, 0x4c, 0xd9, 0xfc, 0x69, 0xc1, 0x41, 0xd4, 0x46, 0x1d, 0x6d, 0x3a, 0x04, 0x30, 0x41, 0x24, + 0x1d, 0x28, 0x78, 0x68, 0x7b, 0x51, 0xbc, 0x4f, 0x09, 0xa6, 0x0c, 0x0b, 0xc6, 0xe5, 0x35, 0xc3, + 0x7e, 0x0b, 0x76, 0x92, 0xaf, 0x99, 0x83, 0x8f, 0xba, 0xe2, 0xff, 0x08, 0x3e, 0xc9, 0xd7, 0x35, + 0x33, 0xff, 0xa7, 0x88, 0xda, 0x7c, 0x3a, 0x58, 0x06, 0x3f, 0x44, 0xdb, 0x2b, 0x82, 0x37, 0x2c, + 0x18, 0x97, 0x37, 0x95, 0x79, 0xd3, 0xd7, 0x4c, 0xc1, 0xbb, 0x50, 0x3a, 0xe3, 0x7e, 0x68, 0xdc, + 0x8d, 0x37, 0x6f, 0x09, 0x76, 0x66, 0x91, 0x0f, 0x51, 0xdb, 0x2e, 0x56, 0x6b, 0xfa, 0xff, 0xdd, + 0x82, 0x47, 0x24, 0x60, 0xa6, 0xf1, 0xd5, 0x81, 0xc2, 0x0c, 0x59, 0x5a, 0x3c, 0x59, 0x54, 0x72, + 0x0c, 0x50, 0xe3, 0xb2, 0xd6, 0x08, 0x14, 0x25, 0xb7, 0xaf, 0x16, 0x92, 0x7c, 0xcd, 0x54, 0x0b, + 0x5f, 0x2d, 0x38, 0x88, 0xa6, 0xe9, 0x3f, 0xab, 0x07, 0xe3, 0x89, 0xb8, 0x6b, 0x3e, 0x11, 0x41, + 0x9c, 0x49, 0x6e, 0x65, 0x8a, 0xf3, 0xf2, 0x3a, 0x4c, 0x6a, 0xd8, 0x6d, 0xa7, 0xec, 0x97, 0x21, + 0x6c, 0x68, 0x66, 0x5d, 0x85, 0x6d, 0x4b, 0xcd, 0xab, 0xed, 0xbf, 0xb9, 0x3f, 0xa2, 0x16, 0xde, + 0xcc, 0x00, 0x62, 0xef, 0xa1, 0x88, 0xbb, 0x50, 0xd3, 0x21, 0xa9, 0xda, 0x98, 0x34, 0x70, 0xf2, + 0x2b, 0x0f, 0x31, 0xa1, 0xcf, 0x7a, 0x50, 0xc0, 0xa3, 0x93, 0x1d, 0xd5, 0x63, 0xff, 0x0f, 0x08, + 0x91, 0x6f, 0x57, 0x6f, 0x3a, 0xa2, 0x44, 0x60, 0x1a, 0x8b, 0x4a, 0x6c, 0x9a, 0x10, 0xc4, 0xd8, + 0x34, 0xa9, 0x4b, 0x7b, 0x50, 0xc0, 0x5a, 0x0f, 0x9b, 0x26, 0x54, 0x28, 0x36, 0x4d, 0xca, 0xc5, + 0x1e, 0x14, 0xb0, 0x78, 0xc2, 0xa6, 0x09, 0x55, 0x87, 0x4d, 0x93, 0xfa, 0x6b, 0x02, 0x25, 0x5a, + 0xa0, 0xb0, 0xe7, 0x14, 0x9d, 0x44, 0x23, 0xda, 0xb5, 0x74, 0x07, 0x23, 0x30, 0x5a, 0x10, 0x60, + 0xb0, 0x44, 0x89, 0x83, 0xc1, 0x56, 0xe8, 0x8b, 0x09, 0x94, 0xe8, 0x4e, 0xc6, 0x60, 0x89, 0x23, + 0x06, 0x83, 0xad, 0x18, 0x0c, 0x4b, 0x1a, 0x71, 0xb3, 0xd1, 0x34, 0x12, 0xf3, 0x80, 0xa6, 0x91, + 0xec, 0xdd, 0x41, 0xf8, 0x7f, 0x06, 0x77, 0x17, 0x7b, 0x66, 0x54, 0x12, 0xf1, 0x3a, 0xd8, 0xc7, + 0x29, 0x4e, 0xe9, 0xec, 0x19, 0x30, 0x24, 0x7b, 0x14, 0x52, 0x2d, 0xdd, 0x41, 0xbd, 0x2e, 0x6e, + 0x02, 0x4b, 0x7c, 0xf1, 0xe9, 0xba, 0x20, 0xc1, 0x22, 0xf6, 0x8c, 0x3c, 0x99, 0xec, 0x51, 0x49, + 0x3a, 0x4e, 0x71, 0x4a, 0x89, 0x57, 0x87, 0x1f, 0x1e, 0xd7, 0x63, 0x1f, 0x34, 0x5e, 0xea, 0x8b, + 0xc1, 0x4e, 0xf8, 0xb5, 0xe2, 0xc5, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x53, 0xac, 0x82, + 0x01, 0x11, 0x00, 0x00, } diff --git a/pkg/proto/organization/organization.proto b/pkg/proto/organization/organization.proto index 343ac43ea..3a8f2f8c9 100644 --- a/pkg/proto/organization/organization.proto +++ b/pkg/proto/organization/organization.proto @@ -81,7 +81,7 @@ message UpdateOrganizationUserResp{ message CreateDepartmentMemberReq{ - server_api_params.UserInDepartment userInDepartment = 1; + server_api_params.DepartmentMember departmentMember = 1; string operationID = 2; string opUserID = 3; } diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index b587caa32..3825fb262 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_4f11937c2cee8c46, []int{0} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{1} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{2} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{3} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{4} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{5} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{6} + return fileDescriptor_ws_f7386a43c650fa79, []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_4f11937c2cee8c46, []int{7} + return fileDescriptor_ws_f7386a43c650fa79, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -878,7 +878,7 @@ 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_4f11937c2cee8c46, []int{8} + return fileDescriptor_ws_f7386a43c650fa79, []int{8} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -989,7 +989,7 @@ 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_4f11937c2cee8c46, []int{9} + return fileDescriptor_ws_f7386a43c650fa79, []int{9} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1088,12 +1088,12 @@ func (m *OrganizationUser) GetEx() string { 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"` + 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:"-"` @@ -1103,7 +1103,7 @@ 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_4f11937c2cee8c46, []int{10} + return fileDescriptor_ws_f7386a43c650fa79, []int{10} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1184,7 +1184,7 @@ 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_4f11937c2cee8c46, []int{11} + return fileDescriptor_ws_f7386a43c650fa79, []int{11} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1231,7 +1231,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_4f11937c2cee8c46, []int{12} + return fileDescriptor_ws_f7386a43c650fa79, []int{12} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1285,7 +1285,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_4f11937c2cee8c46, []int{13} + return fileDescriptor_ws_f7386a43c650fa79, []int{13} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1336,7 +1336,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_4f11937c2cee8c46, []int{14} + return fileDescriptor_ws_f7386a43c650fa79, []int{14} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1368,7 +1368,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_4f11937c2cee8c46, []int{15} + return fileDescriptor_ws_f7386a43c650fa79, []int{15} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1415,7 +1415,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_4f11937c2cee8c46, []int{16} + return fileDescriptor_ws_f7386a43c650fa79, []int{16} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1484,7 +1484,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_4f11937c2cee8c46, []int{17} + return fileDescriptor_ws_f7386a43c650fa79, []int{17} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1645,7 +1645,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_4f11937c2cee8c46, []int{18} + return fileDescriptor_ws_f7386a43c650fa79, []int{18} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1713,7 +1713,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_4f11937c2cee8c46, []int{19} + return fileDescriptor_ws_f7386a43c650fa79, []int{19} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1770,7 +1770,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_4f11937c2cee8c46, []int{20} + return fileDescriptor_ws_f7386a43c650fa79, []int{20} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1839,7 +1839,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_4f11937c2cee8c46, []int{21} + return fileDescriptor_ws_f7386a43c650fa79, []int{21} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1894,7 +1894,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_4f11937c2cee8c46, []int{22} + return fileDescriptor_ws_f7386a43c650fa79, []int{22} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1950,7 +1950,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_4f11937c2cee8c46, []int{23} + return fileDescriptor_ws_f7386a43c650fa79, []int{23} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2005,7 +2005,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_4f11937c2cee8c46, []int{24} + return fileDescriptor_ws_f7386a43c650fa79, []int{24} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2060,7 +2060,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_4f11937c2cee8c46, []int{25} + return fileDescriptor_ws_f7386a43c650fa79, []int{25} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2116,7 +2116,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_4f11937c2cee8c46, []int{26} + return fileDescriptor_ws_f7386a43c650fa79, []int{26} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2179,7 +2179,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_4f11937c2cee8c46, []int{27} + return fileDescriptor_ws_f7386a43c650fa79, []int{27} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2242,7 +2242,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_4f11937c2cee8c46, []int{28} + return fileDescriptor_ws_f7386a43c650fa79, []int{28} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2304,7 +2304,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_4f11937c2cee8c46, []int{29} + return fileDescriptor_ws_f7386a43c650fa79, []int{29} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2358,7 +2358,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_4f11937c2cee8c46, []int{30} + return fileDescriptor_ws_f7386a43c650fa79, []int{30} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2414,7 +2414,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_4f11937c2cee8c46, []int{31} + return fileDescriptor_ws_f7386a43c650fa79, []int{31} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2483,7 +2483,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_4f11937c2cee8c46, []int{32} + return fileDescriptor_ws_f7386a43c650fa79, []int{32} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2544,7 +2544,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_4f11937c2cee8c46, []int{33} + return fileDescriptor_ws_f7386a43c650fa79, []int{33} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2598,7 +2598,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_4f11937c2cee8c46, []int{34} + return fileDescriptor_ws_f7386a43c650fa79, []int{34} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2653,7 +2653,7 @@ 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_4f11937c2cee8c46, []int{35} + return fileDescriptor_ws_f7386a43c650fa79, []int{35} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -2714,7 +2714,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_4f11937c2cee8c46, []int{36} + return fileDescriptor_ws_f7386a43c650fa79, []int{36} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2767,7 +2767,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_4f11937c2cee8c46, []int{37} + return fileDescriptor_ws_f7386a43c650fa79, []int{37} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2813,7 +2813,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_4f11937c2cee8c46, []int{38} + return fileDescriptor_ws_f7386a43c650fa79, []int{38} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2853,7 +2853,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_4f11937c2cee8c46, []int{39} + return fileDescriptor_ws_f7386a43c650fa79, []int{39} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2900,7 +2900,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_4f11937c2cee8c46, []int{40} + return fileDescriptor_ws_f7386a43c650fa79, []int{40} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2948,7 +2948,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_4f11937c2cee8c46, []int{41} + return fileDescriptor_ws_f7386a43c650fa79, []int{41} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3001,7 +3001,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_4f11937c2cee8c46, []int{42} + return fileDescriptor_ws_f7386a43c650fa79, []int{42} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3039,7 +3039,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_4f11937c2cee8c46, []int{43} + return fileDescriptor_ws_f7386a43c650fa79, []int{43} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3077,7 +3077,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_4f11937c2cee8c46, []int{44} + return fileDescriptor_ws_f7386a43c650fa79, []int{44} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3115,7 +3115,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_4f11937c2cee8c46, []int{45} + return fileDescriptor_ws_f7386a43c650fa79, []int{45} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3154,7 +3154,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_4f11937c2cee8c46, []int{46} + return fileDescriptor_ws_f7386a43c650fa79, []int{46} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3193,7 +3193,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_4f11937c2cee8c46, []int{47} + return fileDescriptor_ws_f7386a43c650fa79, []int{47} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3233,7 +3233,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_4f11937c2cee8c46, []int{48} + return fileDescriptor_ws_f7386a43c650fa79, []int{48} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3287,7 +3287,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_4f11937c2cee8c46, []int{49} + return fileDescriptor_ws_f7386a43c650fa79, []int{49} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3333,7 +3333,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_4f11937c2cee8c46, []int{50} + return fileDescriptor_ws_f7386a43c650fa79, []int{50} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3386,7 +3386,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_4f11937c2cee8c46, []int{51} + return fileDescriptor_ws_f7386a43c650fa79, []int{51} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3653,7 +3653,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_4f11937c2cee8c46, []int{52} + return fileDescriptor_ws_f7386a43c650fa79, []int{52} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3921,7 +3921,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_4f11937c2cee8c46, []int{53} + return fileDescriptor_ws_f7386a43c650fa79, []int{53} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4017,7 +4017,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_4f11937c2cee8c46, []int{54} + return fileDescriptor_ws_f7386a43c650fa79, []int{54} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4072,7 +4072,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_4f11937c2cee8c46, []int{55} + return fileDescriptor_ws_f7386a43c650fa79, []int{55} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4133,7 +4133,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_4f11937c2cee8c46, []int{56} + return fileDescriptor_ws_f7386a43c650fa79, []int{56} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4188,7 +4188,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_4f11937c2cee8c46, []int{57} + return fileDescriptor_ws_f7386a43c650fa79, []int{57} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4249,7 +4249,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_4f11937c2cee8c46, []int{58} + return fileDescriptor_ws_f7386a43c650fa79, []int{58} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4304,7 +4304,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_4f11937c2cee8c46, []int{59} + return fileDescriptor_ws_f7386a43c650fa79, []int{59} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4362,7 +4362,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_4f11937c2cee8c46, []int{60} + return fileDescriptor_ws_f7386a43c650fa79, []int{60} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4397,7 +4397,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_4f11937c2cee8c46, []int{61} + return fileDescriptor_ws_f7386a43c650fa79, []int{61} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4465,7 +4465,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_4f11937c2cee8c46, []int{62} + return fileDescriptor_ws_f7386a43c650fa79, []int{62} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4519,7 +4519,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_4f11937c2cee8c46, []int{63} + return fileDescriptor_ws_f7386a43c650fa79, []int{63} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4570,7 +4570,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_4f11937c2cee8c46, []int{64} + return fileDescriptor_ws_f7386a43c650fa79, []int{64} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4605,7 +4605,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_4f11937c2cee8c46, []int{65} + return fileDescriptor_ws_f7386a43c650fa79, []int{65} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4670,7 +4670,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_4f11937c2cee8c46, []int{66} + return fileDescriptor_ws_f7386a43c650fa79, []int{66} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4704,7 +4704,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_4f11937c2cee8c46, []int{67} + return fileDescriptor_ws_f7386a43c650fa79, []int{67} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4764,7 +4764,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_4f11937c2cee8c46, []int{68} + return fileDescriptor_ws_f7386a43c650fa79, []int{68} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4871,55 +4871,55 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_4f11937c2cee8c46) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_f7386a43c650fa79) } -var fileDescriptor_ws_4f11937c2cee8c46 = []byte{ - // 3005 bytes of a gzipped FileDescriptorProto +var fileDescriptor_ws_f7386a43c650fa79 = []byte{ + // 2988 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x24, 0x47, 0x15, 0xa7, 0x7b, 0x3c, 0x63, 0xcf, 0x1b, 0x8f, 0x3f, 0x7a, 0x17, 0x33, 0x98, 0xcd, 0x62, 0x1a, - 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0x5a, 0xdb, 0xfb, 0x15, 0xd6, 0x1f, 0xe9, - 0xd9, 0x25, 0x08, 0x90, 0xa2, 0xf6, 0x74, 0x79, 0xdc, 0x71, 0x77, 0x57, 0x4f, 0x7f, 0x78, 0x77, - 0x11, 0x12, 0x12, 0x48, 0x88, 0x1b, 0x27, 0x38, 0x70, 0x41, 0xe2, 0x82, 0x40, 0x51, 0x14, 0x21, - 0xb8, 0x45, 0x88, 0x03, 0xff, 0x00, 0x47, 0xc4, 0x8d, 0x33, 0x57, 0x0e, 0x48, 0x48, 0xa0, 0xaa, - 0x57, 0x5d, 0x5d, 0xd5, 0x3d, 0x63, 0x4f, 0x46, 0x56, 0x76, 0xa3, 0xe5, 0x36, 0xef, 0x75, 0xbd, - 0x57, 0xaf, 0x7e, 0xef, 0x55, 0xbd, 0x57, 0x1f, 0x03, 0xcb, 0xa9, 0x77, 0xf2, 0xe6, 0xc3, 0xf4, - 0xa5, 0x87, 0xe9, 0xb5, 0x38, 0xa1, 0x19, 0xb5, 0x56, 0x53, 0x92, 0x9c, 0x92, 0xe4, 0x4d, 0x37, - 0xf6, 0xdf, 0x8c, 0xdd, 0xc4, 0x0d, 0x53, 0xfb, 0x5f, 0x26, 0xb4, 0x6f, 0x27, 0x34, 0x8f, 0xef, - 0x46, 0x47, 0xd4, 0xea, 0xc1, 0xfc, 0x90, 0x13, 0x3b, 0x3d, 0x63, 0xc3, 0x78, 0xa1, 0xed, 0x14, - 0xa4, 0x75, 0x05, 0xda, 0xfc, 0xe7, 0x9e, 0x1b, 0x92, 0x9e, 0xc9, 0xbf, 0x95, 0x0c, 0xcb, 0x86, - 0xc5, 0x88, 0x66, 0xfe, 0x91, 0x3f, 0x70, 0x33, 0x9f, 0x46, 0xbd, 0x06, 0x6f, 0xa0, 0xf1, 0x58, - 0x1b, 0x3f, 0xca, 0x12, 0xea, 0xe5, 0x03, 0xde, 0x66, 0x0e, 0xdb, 0xa8, 0x3c, 0xd6, 0xff, 0x91, - 0x3b, 0x20, 0x0f, 0x9c, 0x7b, 0xbd, 0x26, 0xf6, 0x2f, 0x48, 0x6b, 0x03, 0x3a, 0xf4, 0x61, 0x44, - 0x92, 0x07, 0x29, 0x49, 0xee, 0xee, 0xf4, 0x5a, 0xfc, 0xab, 0xca, 0xb2, 0xae, 0x02, 0x0c, 0x12, - 0xe2, 0x66, 0xe4, 0xbe, 0x1f, 0x92, 0xde, 0xfc, 0x86, 0xf1, 0x42, 0xd7, 0x51, 0x38, 0x4c, 0x43, - 0x48, 0xc2, 0x43, 0x92, 0x6c, 0xd3, 0x3c, 0xca, 0x7a, 0x0b, 0xbc, 0x81, 0xca, 0xb2, 0x96, 0xc0, - 0x24, 0x8f, 0x7a, 0x6d, 0xae, 0xda, 0x24, 0x8f, 0xac, 0x35, 0x68, 0xa5, 0x99, 0x9b, 0xe5, 0x69, - 0x0f, 0x36, 0x8c, 0x17, 0x9a, 0x8e, 0xa0, 0xac, 0x4d, 0xe8, 0x72, 0xbd, 0xb4, 0xb0, 0xa6, 0xc3, - 0x45, 0x74, 0xa6, 0x44, 0xec, 0xfe, 0xe3, 0x98, 0xf4, 0x16, 0xb9, 0x82, 0x92, 0x61, 0xff, 0xcd, + 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0x5a, 0xdb, 0xfb, 0x15, 0xd6, 0x5e, 0xa7, + 0x67, 0x97, 0x20, 0x40, 0x8a, 0xda, 0xd3, 0xe5, 0x71, 0xc7, 0xdd, 0x5d, 0x3d, 0xfd, 0xe1, 0x5d, + 0x23, 0x24, 0x24, 0x90, 0x10, 0x37, 0x4e, 0x70, 0xe0, 0x82, 0xc4, 0x05, 0x81, 0xa2, 0x28, 0x42, + 0x70, 0x8b, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x1b, 0x67, 0xae, 0x1c, 0x90, 0x90, 0x40, 0x55, + 0xaf, 0xba, 0xba, 0xaa, 0x7b, 0xc6, 0x9e, 0x8c, 0xac, 0xec, 0x46, 0xcb, 0x6d, 0xde, 0xeb, 0x7a, + 0xaf, 0x5e, 0xfd, 0xde, 0xab, 0x7a, 0xaf, 0x3e, 0x06, 0x96, 0x53, 0xef, 0xf8, 0xcd, 0x47, 0xe9, + 0x4b, 0x8f, 0xd2, 0x6b, 0x71, 0x42, 0x33, 0x6a, 0xad, 0xa6, 0x24, 0x39, 0x21, 0xc9, 0x9b, 0x6e, + 0xec, 0xbf, 0x19, 0xbb, 0x89, 0x1b, 0xa6, 0xf6, 0xbf, 0x4c, 0x68, 0xdf, 0x4e, 0x68, 0x1e, 0xdf, + 0x8d, 0x0e, 0xa9, 0xd5, 0x83, 0xf9, 0x21, 0x27, 0x76, 0x7a, 0xc6, 0x86, 0xf1, 0x42, 0xdb, 0x29, + 0x48, 0xeb, 0x0a, 0xb4, 0xf9, 0xcf, 0x3d, 0x37, 0x24, 0x3d, 0x93, 0x7f, 0x2b, 0x19, 0x96, 0x0d, + 0x8b, 0x11, 0xcd, 0xfc, 0x43, 0x7f, 0xe0, 0x66, 0x3e, 0x8d, 0x7a, 0x0d, 0xde, 0x40, 0xe3, 0xb1, + 0x36, 0x7e, 0x94, 0x25, 0xd4, 0xcb, 0x07, 0xbc, 0xcd, 0x1c, 0xb6, 0x51, 0x79, 0xac, 0xff, 0x43, + 0x77, 0x40, 0x1e, 0x3a, 0xf7, 0x7a, 0x4d, 0xec, 0x5f, 0x90, 0xd6, 0x06, 0x74, 0xe8, 0xa3, 0x88, + 0x24, 0x0f, 0x53, 0x92, 0xdc, 0xdd, 0xe9, 0xb5, 0xf8, 0x57, 0x95, 0x65, 0x5d, 0x05, 0x18, 0x24, + 0xc4, 0xcd, 0xc8, 0x03, 0x3f, 0x24, 0xbd, 0xf9, 0x0d, 0xe3, 0x85, 0xae, 0xa3, 0x70, 0x98, 0x86, + 0x90, 0x84, 0x07, 0x24, 0xd9, 0xa6, 0x79, 0x94, 0xf5, 0x16, 0x78, 0x03, 0x95, 0x65, 0x2d, 0x81, + 0x49, 0x1e, 0xf7, 0xda, 0x5c, 0xb5, 0x49, 0x1e, 0x5b, 0x6b, 0xd0, 0x4a, 0x33, 0x37, 0xcb, 0xd3, + 0x1e, 0x6c, 0x18, 0x2f, 0x34, 0x1d, 0x41, 0x59, 0x9b, 0xd0, 0xe5, 0x7a, 0x69, 0x61, 0x4d, 0x87, + 0x8b, 0xe8, 0x4c, 0x89, 0xd8, 0x83, 0xd3, 0x98, 0xf4, 0x16, 0xb9, 0x82, 0x92, 0x61, 0xff, 0xcd, 0x84, 0x4b, 0x1c, 0xf7, 0x5d, 0x6e, 0xc0, 0xad, 0x3c, 0x08, 0xce, 0xf1, 0xc0, 0x1a, 0xb4, 0x72, - 0xec, 0x0e, 0xe1, 0x17, 0x14, 0xeb, 0x27, 0xa1, 0x01, 0xb9, 0x47, 0x4e, 0x49, 0xc0, 0x81, 0x6f, + 0xec, 0x0e, 0xe1, 0x17, 0x14, 0xeb, 0x27, 0xa1, 0x01, 0xb9, 0x47, 0x4e, 0x48, 0xc0, 0x81, 0x6f, 0x3a, 0x25, 0xc3, 0x5a, 0x87, 0x85, 0xb7, 0xa8, 0x1f, 0x71, 0x4c, 0xe6, 0xf8, 0x47, 0x49, 0xb3, - 0x6f, 0x91, 0x3f, 0x38, 0x89, 0x98, 0x4b, 0x11, 0x6e, 0x49, 0xab, 0x9e, 0x68, 0xe9, 0x9e, 0x78, + 0x6f, 0x91, 0x3f, 0x38, 0x8e, 0x98, 0x4b, 0x11, 0x6e, 0x49, 0xab, 0x9e, 0x68, 0xe9, 0x9e, 0x78, 0x1e, 0x96, 0xdc, 0x38, 0xde, 0x75, 0xa3, 0x21, 0x49, 0xb0, 0xd3, 0x79, 0xae, 0xb7, 0xc2, 0x65, 0xfe, 0x60, 0x3d, 0xf5, 0x69, 0x9e, 0x0c, 0x08, 0x87, 0xbb, 0xe9, 0x28, 0x1c, 0xa6, 0x87, 0xc6, 0x24, 0x51, 0x60, 0x44, 0xe4, 0x2b, 0x5c, 0xe1, 0x15, 0x90, 0x5e, 0x61, 0x7e, 0xcc, 0x33, 0x72, - 0x33, 0xf2, 0xf8, 0xa0, 0x3a, 0xc2, 0x8f, 0x25, 0xcb, 0xfe, 0x89, 0x01, 0x4b, 0x07, 0xf9, 0x61, + 0x33, 0xf2, 0xf8, 0xa0, 0x3a, 0xc2, 0x8f, 0x25, 0xcb, 0xfe, 0x89, 0x01, 0x4b, 0xfb, 0xf9, 0x41, 0xe0, 0x0f, 0xb8, 0x0a, 0x06, 0x6b, 0x09, 0x9e, 0xa1, 0x81, 0xa7, 0x42, 0x60, 0x4e, 0x86, 0xa0, 0xa1, 0x43, 0xb0, 0x06, 0xad, 0x21, 0x89, 0x3c, 0x92, 0x08, 0x48, 0x05, 0x25, 0x4c, 0x6d, 0x16, - 0xa6, 0xda, 0xbf, 0x30, 0x61, 0xe1, 0x03, 0x36, 0x61, 0x03, 0x3a, 0xf1, 0x31, 0x8d, 0xc8, 0x5e, - 0xce, 0xc2, 0x4a, 0xd8, 0xa2, 0xb2, 0xac, 0xcb, 0xd0, 0x3c, 0xf4, 0x93, 0xec, 0x98, 0xfb, 0xb5, + 0xa6, 0xda, 0xbf, 0x30, 0x61, 0xe1, 0x03, 0x36, 0x61, 0x03, 0x3a, 0xf1, 0x11, 0x8d, 0xc8, 0x5e, + 0xce, 0xc2, 0x4a, 0xd8, 0xa2, 0xb2, 0xac, 0xcb, 0xd0, 0x3c, 0xf0, 0x93, 0xec, 0x88, 0xfb, 0xb5, 0xeb, 0x20, 0xc1, 0xb8, 0x24, 0x74, 0x7d, 0x74, 0x66, 0xdb, 0x41, 0x42, 0x0c, 0x68, 0x41, 0x62, 0xaf, 0xcf, 0xb1, 0x76, 0x6d, 0x8e, 0xd5, 0x63, 0x03, 0xc6, 0xc5, 0x86, 0xfd, 0x6f, 0x03, 0xe0, 0x56, 0xe2, 0x93, 0xc8, 0xe3, 0xd0, 0x54, 0x26, 0xb7, 0x51, 0x9f, 0xdc, 0x6b, 0xd0, 0x4a, 0x48, - 0xe8, 0x26, 0x27, 0x45, 0xf0, 0x23, 0x55, 0x31, 0xa8, 0x51, 0x33, 0xe8, 0x55, 0x80, 0x23, 0xde, + 0xe8, 0x26, 0xc7, 0x45, 0xf0, 0x23, 0x55, 0x31, 0xa8, 0x51, 0x33, 0xe8, 0x55, 0x80, 0x43, 0xde, 0x0f, 0xd3, 0xc3, 0xa1, 0xea, 0xbc, 0xfc, 0x89, 0x6b, 0xb5, 0x65, 0xf0, 0x5a, 0xe1, 0x25, 0x47, 0x69, 0xce, 0x66, 0x96, 0xeb, 0x79, 0x22, 0x80, 0x9b, 0x38, 0xb3, 0x24, 0x63, 0x4c, 0xfc, 0xb6, - 0xce, 0x88, 0xdf, 0x79, 0x19, 0x14, 0xff, 0x34, 0xa0, 0xbd, 0x15, 0xb8, 0x83, 0x93, 0x29, 0x87, - 0xae, 0x0f, 0xd1, 0xac, 0x0d, 0xf1, 0x36, 0x74, 0x0f, 0x99, 0xba, 0x62, 0x08, 0x1c, 0x85, 0xce, + 0xce, 0x88, 0xdf, 0x79, 0x19, 0x14, 0xff, 0x34, 0xa0, 0xbd, 0x15, 0xb8, 0x83, 0xe3, 0x29, 0x87, + 0xae, 0x0f, 0xd1, 0xac, 0x0d, 0xf1, 0x36, 0x74, 0x0f, 0x98, 0xba, 0x62, 0x08, 0x1c, 0x85, 0xce, 0xcb, 0x9f, 0x1a, 0x33, 0x4a, 0x7d, 0x52, 0x38, 0xba, 0x9c, 0x3e, 0xdc, 0xb9, 0xf3, 0x87, 0xdb, 0x3c, 0x63, 0xb8, 0x2d, 0x39, 0xdc, 0xbf, 0x9a, 0xb0, 0xc8, 0x17, 0x3a, 0x87, 0x8c, 0x72, 0x92, 0x66, 0xd6, 0xd7, 0x61, 0x21, 0x2f, 0x4c, 0x35, 0xa6, 0x35, 0x55, 0x8a, 0x58, 0xaf, 0x88, 0x65, - 0x95, 0xcb, 0x9b, 0x5c, 0xfe, 0xca, 0x18, 0x79, 0x99, 0xd3, 0x9c, 0xb2, 0x39, 0x4b, 0x41, 0xc7, + 0x95, 0xcb, 0x9b, 0x5c, 0xfe, 0xca, 0x18, 0x79, 0x99, 0xd3, 0x9c, 0xb2, 0x39, 0x4b, 0x41, 0x47, 0x6e, 0xe4, 0x05, 0xc4, 0x21, 0x69, 0x1e, 0x64, 0x62, 0xb5, 0xd4, 0x78, 0x18, 0x69, 0xa3, 0xdd, 0x74, 0x28, 0x12, 0x94, 0xa0, 0x18, 0x3a, 0xd8, 0x8e, 0x7d, 0xc2, 0xa1, 0x97, 0x0c, 0x36, 0x51, 0x13, 0x32, 0xe2, 0x1e, 0xc2, 0x69, 0x55, 0x90, 0x65, 0x9f, 0x02, 0x35, 0x0c, 0x04, 0x8d, 0xc7, @@ -4935,132 +4935,131 @@ var fileDescriptor_ws_4f11937c2cee8c46 = []byte{ 0xd4, 0xf3, 0x84, 0x05, 0x73, 0x1c, 0x70, 0xf4, 0x26, 0xff, 0xcd, 0xc0, 0x8c, 0xdd, 0x04, 0xb5, 0x61, 0x90, 0x4b, 0x9a, 0xe5, 0x01, 0x9a, 0x78, 0x22, 0x73, 0x34, 0x1d, 0x24, 0xd8, 0xe4, 0x2f, 0xfb, 0xe3, 0x05, 0x4d, 0x0b, 0xd7, 0x75, 0x9d, 0x7b, 0x6e, 0x0d, 0xf6, 0x22, 0xac, 0xa4, 0xf9, - 0x61, 0x39, 0xb8, 0xbd, 0x3c, 0x14, 0xe1, 0x5e, 0xe3, 0x33, 0x50, 0xb1, 0x38, 0x63, 0x8d, 0x30, - 0xd5, 0x94, 0x8c, 0x6a, 0x55, 0x60, 0xbf, 0x6d, 0xc2, 0xca, 0x7e, 0x32, 0x74, 0x23, 0xff, 0xfb, - 0xbc, 0xdc, 0xe4, 0x0b, 0xf8, 0x2c, 0x29, 0x77, 0x03, 0x3a, 0x24, 0x1a, 0x06, 0x7e, 0x7a, 0xbc, - 0x57, 0xe2, 0xa6, 0xb2, 0x54, 0xb0, 0xe7, 0x26, 0x25, 0xe5, 0xa6, 0x96, 0x94, 0xd7, 0xa0, 0x15, - 0xd2, 0x43, 0x3f, 0x28, 0xe2, 0x5e, 0x50, 0x3c, 0xe6, 0x49, 0x40, 0x78, 0x76, 0x96, 0x31, 0x5f, - 0x30, 0xca, 0x44, 0xbd, 0x30, 0x36, 0x51, 0xb7, 0xd5, 0x44, 0xad, 0x03, 0x0f, 0x35, 0xe0, 0x11, - 0xae, 0x8e, 0x84, 0xeb, 0xcf, 0x06, 0xac, 0x94, 0x70, 0x63, 0x0d, 0x3a, 0x11, 0x2e, 0x1b, 0x16, - 0x77, 0xd4, 0x08, 0x14, 0x8b, 0x87, 0xca, 0x63, 0x66, 0xed, 0xf3, 0xb8, 0xc1, 0x35, 0x15, 0x09, - 0x06, 0xf4, 0x01, 0x4d, 0x7d, 0xa5, 0xde, 0x97, 0x34, 0xeb, 0xed, 0x1e, 0x71, 0x15, 0xb0, 0x90, - 0x62, 0xfc, 0x3e, 0x56, 0xdd, 0x18, 0x63, 0x82, 0x62, 0x43, 0xb8, 0x29, 0xf3, 0xe8, 0xcd, 0x47, - 0xf6, 0x7b, 0x06, 0xac, 0x60, 0x7e, 0x50, 0x26, 0xcb, 0x3e, 0xac, 0xd0, 0x4a, 0x14, 0x88, 0x24, - 0xf3, 0xe9, 0x31, 0x49, 0xa2, 0x1a, 0x30, 0x4e, 0x4d, 0xd8, 0x7a, 0x03, 0x2e, 0x7b, 0x15, 0x9c, - 0xee, 0xf9, 0x69, 0xd6, 0x33, 0x37, 0x1a, 0x13, 0x94, 0x56, 0x61, 0x75, 0xc6, 0x2a, 0xb0, 0x7f, - 0x00, 0xbd, 0x83, 0x3c, 0x08, 0x76, 0x49, 0x9a, 0xba, 0x43, 0xb2, 0xf5, 0xb8, 0x4f, 0x46, 0x8c, + 0x41, 0x39, 0xb8, 0xbd, 0x3c, 0x14, 0xe1, 0x5e, 0xe3, 0x33, 0x50, 0xb1, 0x38, 0x63, 0x8d, 0x30, + 0xd5, 0x94, 0x8c, 0x6a, 0x55, 0x60, 0xbf, 0x6d, 0xc2, 0xca, 0xfd, 0x64, 0xe8, 0x46, 0xfe, 0xf7, + 0x79, 0xb9, 0xc9, 0x17, 0xf0, 0x59, 0x52, 0xee, 0x06, 0x74, 0x48, 0x34, 0x0c, 0xfc, 0xf4, 0x68, + 0xaf, 0xc4, 0x4d, 0x65, 0xa9, 0x60, 0xcf, 0x4d, 0x4a, 0xca, 0x4d, 0x2d, 0x29, 0xaf, 0x41, 0x2b, + 0xa4, 0x07, 0x7e, 0x50, 0xc4, 0xbd, 0xa0, 0x78, 0xcc, 0x93, 0x80, 0xf0, 0xec, 0x2c, 0x63, 0xbe, + 0x60, 0x94, 0x89, 0x7a, 0x61, 0x6c, 0xa2, 0x6e, 0xab, 0x89, 0x5a, 0x07, 0x1e, 0x6a, 0xc0, 0x23, + 0x5c, 0x1d, 0x09, 0xd7, 0x9f, 0x0d, 0x58, 0x29, 0xe1, 0xc6, 0x1a, 0x74, 0x22, 0x5c, 0xd5, 0x08, + 0x34, 0xc7, 0x44, 0xa0, 0x8c, 0x9b, 0x86, 0x1a, 0x37, 0x2c, 0xd2, 0x68, 0xea, 0x2b, 0xf5, 0xbe, + 0xa4, 0x59, 0x6f, 0x01, 0x71, 0x15, 0xb0, 0x90, 0x52, 0xaa, 0xee, 0x96, 0x56, 0x75, 0x57, 0xf3, + 0xe8, 0x7b, 0x06, 0xac, 0x60, 0x7e, 0x50, 0x26, 0xcb, 0x7d, 0x58, 0xa1, 0x95, 0x28, 0x10, 0x49, + 0xe6, 0xd3, 0x63, 0x92, 0x44, 0x35, 0x60, 0x9c, 0x9a, 0xb0, 0xf5, 0x06, 0x5c, 0xf6, 0x2a, 0x38, + 0xdd, 0xf3, 0xd3, 0xac, 0x67, 0x6e, 0x34, 0x26, 0x28, 0xad, 0xc2, 0xea, 0x8c, 0x55, 0x60, 0xff, + 0x00, 0x7a, 0xfb, 0x79, 0x10, 0xec, 0x92, 0x34, 0x75, 0x87, 0x64, 0xeb, 0xb4, 0x4f, 0x46, 0x8c, 0xef, 0x90, 0x34, 0x66, 0x11, 0x46, 0x92, 0x64, 0x9b, 0x7a, 0x84, 0x1b, 0xdf, 0x74, 0x0a, 0x92, 0x81, 0x43, 0x92, 0x84, 0x2d, 0x33, 0xa2, 0x0e, 0x42, 0xca, 0xba, 0x06, 0x73, 0x01, 0x33, 0xab, 0xc1, 0xcd, 0x5a, 0x1f, 0x63, 0xd6, 0x6e, 0x3a, 0xdc, 0x71, 0x33, 0xd7, 0xe1, 0xed, 0xec, 0x10, 0x3e, 0x36, 0xbe, 0xf7, 0xd1, 0xc4, 0x28, 0x60, 0x95, 0x0a, 0x4f, 0xf5, 0x3e, 0x8d, 0x64, 0x10, 0xa8, 0x2c, 0x66, 0x76, 0x8a, 0x7a, 0xb8, 0x1d, 0x5d, 0xa7, 0x20, 0xed, 0xcb, 0x60, 0xdd, 0x26, - 0xd9, 0xae, 0xfb, 0xe8, 0x46, 0xe4, 0xed, 0xfa, 0x51, 0x9f, 0x8c, 0x1c, 0x32, 0xb2, 0x6f, 0xc2, - 0xa5, 0x1a, 0x37, 0x8d, 0xf9, 0x6c, 0x71, 0x1f, 0xf5, 0xc9, 0x88, 0x1b, 0xd0, 0x75, 0x04, 0xc5, + 0xd9, 0xae, 0xfb, 0xf8, 0x46, 0xe4, 0xed, 0xfa, 0x51, 0x9f, 0x8c, 0x1c, 0x32, 0xb2, 0x6f, 0xc2, + 0xa5, 0x1a, 0x37, 0x8d, 0xf9, 0x6c, 0x71, 0x1f, 0xf7, 0xc9, 0x88, 0x1b, 0xd0, 0x75, 0x04, 0xc5, 0xf9, 0xbc, 0x95, 0x28, 0x82, 0x04, 0x65, 0x8f, 0x60, 0x99, 0xb9, 0xaa, 0x4f, 0x22, 0x6f, 0x37, 0x1d, 0x72, 0x15, 0x1b, 0xd0, 0x41, 0x04, 0x76, 0xd3, 0x61, 0x59, 0x55, 0x29, 0x2c, 0xd6, 0x62, 0x10, 0xf8, 0xcc, 0x25, 0xbc, 0x85, 0x18, 0x8d, 0xc2, 0x62, 0xb1, 0x9b, 0x12, 0xb1, 0xc9, 0x60, - 0x41, 0xdd, 0x70, 0x24, 0x6d, 0xbf, 0xd7, 0x84, 0x79, 0x01, 0x28, 0xdf, 0x25, 0xb2, 0x42, 0x56, - 0xe2, 0x85, 0x14, 0xa6, 0x9c, 0xc1, 0x69, 0xb9, 0x5f, 0x43, 0x4a, 0xdd, 0xe1, 0x35, 0xf4, 0x1d, - 0x5e, 0xc5, 0xa6, 0xb9, 0xba, 0x4d, 0x95, 0x71, 0x35, 0xeb, 0xe3, 0x62, 0x2b, 0x2c, 0x5f, 0x74, - 0x0e, 0x02, 0x37, 0x3b, 0xa2, 0x49, 0x28, 0xea, 0xd2, 0xa6, 0x53, 0xe3, 0xb3, 0x55, 0x1d, 0x79, - 0x32, 0x2d, 0xe3, 0xec, 0xaa, 0x70, 0x59, 0x12, 0x44, 0x4e, 0x91, 0x9e, 0x71, 0x43, 0xa0, 0x33, - 0xd1, 0xb6, 0x34, 0xf5, 0x69, 0xc4, 0x13, 0x04, 0x66, 0x61, 0x95, 0xc5, 0x46, 0x1e, 0xa6, 0xc3, - 0x5b, 0x09, 0x0d, 0xc5, 0xb6, 0xa0, 0x20, 0xf9, 0xc8, 0x69, 0x94, 0x15, 0xc9, 0xa5, 0x83, 0xb2, - 0x0a, 0x8b, 0xc9, 0x0a, 0x92, 0xa7, 0xe0, 0x45, 0xa7, 0x20, 0xad, 0x15, 0x68, 0xa4, 0x64, 0x24, - 0xf2, 0x2a, 0xfb, 0xa9, 0x79, 0x6e, 0x59, 0xf7, 0x5c, 0x65, 0xa1, 0x5c, 0xe1, 0x5f, 0xd5, 0x85, - 0xb2, 0xdc, 0xf3, 0xaf, 0x6a, 0x7b, 0xfe, 0x1b, 0x30, 0x4f, 0x63, 0x16, 0xe7, 0x69, 0xcf, 0xe2, - 0x73, 0xec, 0x33, 0x93, 0xe7, 0xd8, 0xb5, 0x7d, 0x6c, 0x79, 0x33, 0xca, 0x92, 0xc7, 0x4e, 0x21, - 0x67, 0xdd, 0x83, 0x65, 0x7a, 0x74, 0x14, 0xf8, 0x11, 0x39, 0xc8, 0xd3, 0x63, 0x5e, 0xbf, 0x5e, - 0xe2, 0x4b, 0x93, 0x3d, 0x6e, 0x69, 0xd2, 0x5b, 0x3a, 0x55, 0xd1, 0xf5, 0x57, 0x60, 0x51, 0xed, - 0x86, 0xc1, 0x70, 0x42, 0x1e, 0x8b, 0x18, 0x64, 0x3f, 0xd9, 0x92, 0x7c, 0xea, 0x06, 0x39, 0xa6, - 0xb8, 0x05, 0x07, 0x89, 0x57, 0xcc, 0xaf, 0x18, 0xf6, 0xcf, 0x0d, 0x58, 0xae, 0x74, 0xc0, 0x5a, - 0x67, 0x7e, 0x16, 0x10, 0xa1, 0x01, 0x09, 0x56, 0x3e, 0x78, 0x24, 0x1d, 0x88, 0x10, 0xe6, 0xbf, - 0x45, 0x2e, 0x69, 0xc8, 0x4d, 0xa1, 0x0d, 0x8b, 0xfe, 0x7e, 0x9f, 0x29, 0xea, 0xd3, 0x3c, 0xf2, - 0xe4, 0xc1, 0x8e, 0xc2, 0x63, 0x21, 0xe4, 0xef, 0xf7, 0xb7, 0x5c, 0x6f, 0x48, 0xf0, 0xf8, 0xa5, - 0xc9, 0x6d, 0xd2, 0x99, 0xb6, 0x07, 0x0b, 0xf7, 0xfd, 0x38, 0xdd, 0xa6, 0x61, 0xc8, 0x1c, 0xe1, - 0x91, 0x8c, 0x25, 0x3a, 0x83, 0xfb, 0x5b, 0x50, 0x2c, 0x54, 0x3c, 0x72, 0xe4, 0xe6, 0x41, 0xc6, - 0x9a, 0x16, 0x13, 0x57, 0x61, 0xf1, 0x83, 0x87, 0x94, 0x46, 0x3b, 0x28, 0x8d, 0x76, 0x2a, 0x1c, - 0xfb, 0x2f, 0x26, 0xac, 0xf0, 0xed, 0xc1, 0x36, 0x77, 0xbb, 0xc7, 0x85, 0x5e, 0x86, 0x26, 0x9f, - 0x86, 0x22, 0x5b, 0x9c, 0xbd, 0xa5, 0xc0, 0xa6, 0xd6, 0x75, 0x68, 0xd1, 0x98, 0xa7, 0x18, 0xdc, - 0x87, 0x3c, 0x3f, 0x49, 0x48, 0x3f, 0xe3, 0x71, 0x84, 0x94, 0x75, 0x0b, 0x20, 0x2c, 0x33, 0x0a, - 0x2e, 0xdd, 0xd3, 0xea, 0x50, 0x24, 0x19, 0xb8, 0x72, 0x19, 0x96, 0x07, 0x3d, 0x0d, 0x47, 0x67, - 0x5a, 0x7b, 0xb0, 0xc4, 0xcd, 0xde, 0x2f, 0xf6, 0x96, 0xdc, 0x07, 0xd3, 0xf7, 0x58, 0x91, 0xb6, - 0x7f, 0x6d, 0x08, 0x18, 0xd9, 0xd7, 0x3e, 0x41, 0xec, 0x4b, 0x48, 0x8c, 0x99, 0x20, 0x59, 0x87, - 0x85, 0x30, 0x57, 0xb6, 0xba, 0x0d, 0x47, 0xd2, 0xa5, 0x8b, 0x1a, 0x53, 0xbb, 0xc8, 0xfe, 0x8d, - 0x01, 0xbd, 0xd7, 0xa8, 0x1f, 0xf1, 0x0f, 0x37, 0xe2, 0x38, 0x10, 0xa7, 0x91, 0x33, 0xfb, 0xfc, - 0x1b, 0xd0, 0x76, 0x51, 0x4d, 0x94, 0x09, 0xb7, 0x4f, 0xb1, 0x7d, 0x2d, 0x65, 0x94, 0x9d, 0x48, - 0x43, 0xdd, 0x89, 0xd8, 0xef, 0x18, 0xb0, 0x84, 0xa0, 0xbc, 0x9e, 0xfb, 0xd9, 0xcc, 0xf6, 0x6d, - 0xc1, 0xc2, 0x28, 0xf7, 0xb3, 0x19, 0xa2, 0x52, 0xca, 0xd5, 0xe3, 0xa9, 0x31, 0x26, 0x9e, 0xec, - 0x77, 0x0d, 0xb8, 0x52, 0x85, 0xf5, 0xc6, 0x60, 0x40, 0xe2, 0x27, 0x39, 0xa5, 0xb4, 0x9d, 0xd8, - 0x5c, 0x65, 0x27, 0x36, 0xd6, 0x64, 0x87, 0xbc, 0x45, 0x06, 0x4f, 0xaf, 0xc9, 0x3f, 0x36, 0xe1, - 0xe3, 0xb7, 0xe5, 0xc4, 0xbb, 0x9f, 0xb8, 0x51, 0x7a, 0x44, 0x92, 0xe4, 0x09, 0xda, 0x7b, 0x0f, - 0xba, 0x11, 0x79, 0x58, 0xda, 0x24, 0xa6, 0xe3, 0xb4, 0x6a, 0x74, 0xe1, 0xe9, 0xd6, 0x2e, 0xfb, - 0x3f, 0x06, 0xac, 0xa0, 0x9e, 0x6f, 0xfa, 0x83, 0x93, 0x27, 0x38, 0xf8, 0x3d, 0x58, 0x3a, 0xe1, - 0x16, 0x30, 0x6a, 0x86, 0x65, 0xbb, 0x22, 0x3d, 0xe5, 0xf0, 0xff, 0x6b, 0xc0, 0x2a, 0x2a, 0xba, - 0x1b, 0x9d, 0xfa, 0x4f, 0x32, 0x58, 0x0f, 0x60, 0xd9, 0x47, 0x13, 0x66, 0x04, 0xa0, 0x2a, 0x3e, - 0x25, 0x02, 0x7f, 0x34, 0x60, 0x19, 0x35, 0xdd, 0x8c, 0x32, 0x92, 0xcc, 0x3c, 0xfe, 0x3b, 0x6c, - 0x77, 0x9f, 0x25, 0x6e, 0x34, 0xcb, 0x0a, 0xa9, 0x8a, 0x4e, 0xb9, 0x48, 0xbe, 0x63, 0x80, 0xc5, - 0x55, 0xed, 0xf8, 0x69, 0xe8, 0xa7, 0xe9, 0x13, 0x74, 0xdd, 0x74, 0x06, 0xff, 0xd2, 0x84, 0xcb, - 0x8a, 0x96, 0xdd, 0x3c, 0x7b, 0xda, 0x4d, 0xb6, 0x76, 0xa0, 0xcd, 0x6a, 0x04, 0xf5, 0x88, 0x7f, - 0xda, 0x8e, 0x4a, 0x41, 0x56, 0xc5, 0x72, 0xa2, 0x4f, 0x06, 0x34, 0xf2, 0x52, 0x5e, 0x1c, 0x75, - 0x1d, 0x8d, 0xc7, 0x96, 0xa1, 0x75, 0x45, 0xcd, 0xb6, 0x1b, 0x0d, 0x48, 0xf0, 0xcc, 0x40, 0x64, - 0xff, 0xce, 0x80, 0x25, 0x6c, 0xf2, 0xf4, 0x0f, 0x99, 0xe5, 0x7a, 0x0c, 0xe4, 0x0f, 0x8d, 0x97, - 0x58, 0x78, 0xad, 0x29, 0x5a, 0xd4, 0xba, 0xfa, 0xe9, 0x0d, 0xad, 0x3b, 0xd0, 0x19, 0x1c, 0xbb, - 0xd1, 0x70, 0xa6, 0xe0, 0x52, 0x45, 0xed, 0x13, 0x58, 0xc5, 0x4b, 0x0d, 0xa5, 0x3a, 0x63, 0xfb, - 0x7e, 0xd7, 0xc3, 0xad, 0xbc, 0xc1, 0xbb, 0x2f, 0x48, 0xfd, 0xba, 0x4a, 0xbc, 0x48, 0x28, 0xaf, - 0xab, 0xae, 0x02, 0xb8, 0x9e, 0xf7, 0x06, 0x4d, 0x3c, 0x3f, 0x2a, 0x4a, 0x6d, 0x85, 0x63, 0xbf, - 0x06, 0x8b, 0xb7, 0x12, 0x1a, 0xde, 0x57, 0xae, 0x27, 0xce, 0xbc, 0x40, 0x51, 0xaf, 0x36, 0x4c, - 0xfd, 0x6a, 0xc3, 0xfe, 0x1e, 0x7c, 0xb4, 0x66, 0x38, 0xf7, 0xda, 0x36, 0xde, 0xba, 0x14, 0x9d, - 0x08, 0xe7, 0x7d, 0x72, 0x0c, 0x38, 0xaa, 0x2d, 0x8e, 0x26, 0x64, 0xff, 0xc8, 0x80, 0xe7, 0x6a, - 0xea, 0x6f, 0xc4, 0x71, 0x42, 0x4f, 0x45, 0x44, 0x5f, 0x44, 0x37, 0x7a, 0x19, 0x6a, 0x56, 0xcb, - 0xd0, 0xb1, 0x46, 0x68, 0xa5, 0xf3, 0x07, 0x60, 0xc4, 0x6f, 0x0d, 0x58, 0x16, 0x46, 0x78, 0x9e, - 0xe8, 0xf6, 0xcb, 0xd0, 0xc2, 0x1b, 0x5b, 0xd1, 0xe1, 0x73, 0x63, 0x3b, 0x2c, 0x6e, 0x9a, 0x1d, - 0xd1, 0xb8, 0x1e, 0xdb, 0xe6, 0xb8, 0xd8, 0xfe, 0xaa, 0x9c, 0x41, 0x53, 0xdf, 0xa9, 0x0a, 0x01, - 0xfb, 0xdb, 0x45, 0x30, 0xef, 0x90, 0x80, 0x5c, 0x24, 0x46, 0xf6, 0x03, 0x58, 0xe2, 0xd7, 0xc7, - 0x25, 0x06, 0x17, 0xa2, 0xf6, 0x0d, 0x58, 0xe1, 0x6a, 0x2f, 0xdc, 0x5e, 0x39, 0x3b, 0x18, 0x3e, - 0xdb, 0x38, 0xdf, 0x2f, 0x4e, 0xfb, 0x17, 0xe0, 0x52, 0x81, 0xfd, 0x83, 0xd8, 0x93, 0xc7, 0x39, - 0x13, 0x0e, 0xb1, 0xed, 0x2f, 0xc2, 0xda, 0x36, 0x8d, 0x4e, 0x49, 0x92, 0xe2, 0x11, 0x3f, 0x17, - 0x29, 0x24, 0xb4, 0xc9, 0x2f, 0x28, 0xfb, 0x2d, 0x58, 0x57, 0x25, 0xfa, 0x24, 0x3b, 0x48, 0xfc, - 0x53, 0x45, 0x4a, 0x1c, 0xf2, 0x1a, 0xda, 0x21, 0x6f, 0x79, 0x28, 0x6c, 0x6a, 0x87, 0xc2, 0x57, - 0xa0, 0xed, 0xa7, 0x42, 0x01, 0x0f, 0xaa, 0x05, 0xa7, 0x64, 0xd8, 0x7d, 0x58, 0x15, 0x17, 0xba, - 0x07, 0xee, 0xd0, 0x8f, 0x70, 0x05, 0xbc, 0x0a, 0x10, 0xbb, 0xc3, 0xe2, 0x41, 0x07, 0xde, 0x07, - 0x28, 0x1c, 0xf6, 0x3d, 0x3d, 0xa6, 0x0f, 0xc5, 0x77, 0x13, 0xbf, 0x97, 0x1c, 0xfb, 0x5b, 0x60, - 0x39, 0x24, 0x8d, 0x69, 0x94, 0x12, 0x45, 0xeb, 0x06, 0x74, 0xb6, 0xf3, 0x24, 0x21, 0x11, 0xeb, - 0xaa, 0x78, 0xdd, 0xa0, 0xb2, 0x98, 0xde, 0x7e, 0xa9, 0x17, 0xcf, 0x90, 0x15, 0x8e, 0xfd, 0xab, - 0x06, 0xb4, 0xfb, 0xfe, 0x30, 0x72, 0x03, 0x87, 0x8c, 0xac, 0xaf, 0x41, 0x0b, 0x2b, 0x7b, 0xe1, - 0xc6, 0x71, 0x67, 0x9a, 0xd8, 0x1a, 0xb7, 0x30, 0x0e, 0x19, 0xdd, 0xf9, 0x88, 0x23, 0x64, 0xac, - 0xd7, 0xa1, 0x8b, 0xbf, 0xee, 0xe2, 0x49, 0x8d, 0xc8, 0x58, 0x9f, 0x3d, 0x47, 0x89, 0x68, 0x8d, - 0xba, 0x74, 0x0d, 0xcc, 0xa0, 0x01, 0xcf, 0xfc, 0x62, 0xee, 0x4e, 0x36, 0x08, 0x0b, 0x04, 0x61, - 0x10, 0xca, 0x30, 0x69, 0x97, 0x9f, 0x65, 0x88, 0x84, 0x36, 0x59, 0x1a, 0x8f, 0x3c, 0x84, 0x34, - 0xca, 0x30, 0xe9, 0xe3, 0x3c, 0x1a, 0x3e, 0x88, 0xc5, 0x11, 0xdb, 0x64, 0xe9, 0x3b, 0xbc, 0x99, - 0x90, 0x46, 0x19, 0x26, 0x9d, 0xf0, 0x95, 0x95, 0x83, 0x7e, 0x96, 0x34, 0x2e, 0xc0, 0x42, 0x1a, - 0x65, 0xb6, 0xda, 0x30, 0x1f, 0xbb, 0x8f, 0x03, 0xea, 0x7a, 0xf6, 0xdb, 0x0d, 0x80, 0xa2, 0x61, - 0xca, 0xeb, 0x01, 0xcd, 0x45, 0x9b, 0xe7, 0xba, 0x28, 0x0e, 0x1e, 0x2b, 0x4e, 0xea, 0x8f, 0x77, - 0xd2, 0xe7, 0xa6, 0x75, 0x12, 0x6a, 0xab, 0xb8, 0xe9, 0x7a, 0xc5, 0x4d, 0x9b, 0xe7, 0xba, 0x49, - 0x18, 0x25, 0x1c, 0x75, 0xbd, 0xe2, 0xa8, 0xcd, 0x73, 0x1d, 0x25, 0xe4, 0x85, 0xab, 0xae, 0x57, - 0x5c, 0xb5, 0x79, 0xae, 0xab, 0x84, 0xbc, 0x70, 0xd6, 0xf5, 0x8a, 0xb3, 0x36, 0xcf, 0x75, 0x96, - 0x90, 0xaf, 0xbb, 0xeb, 0x5d, 0x13, 0x96, 0x38, 0x64, 0x78, 0x9f, 0x16, 0x1d, 0x51, 0x7e, 0x6c, - 0xce, 0xe1, 0xd2, 0xdf, 0x07, 0xe9, 0x4c, 0xeb, 0xf3, 0xb0, 0x8a, 0x0c, 0xf1, 0x9e, 0x44, 0x5e, - 0x50, 0xb6, 0x9d, 0xfa, 0x07, 0x7e, 0x03, 0x92, 0xa7, 0x19, 0x0d, 0x77, 0xdc, 0xcc, 0x2d, 0x2a, - 0xa3, 0x92, 0xa3, 0xde, 0x4f, 0xcd, 0xd5, 0x5e, 0x20, 0x26, 0x94, 0x86, 0xf2, 0xe2, 0x49, 0x50, - 0x4c, 0x22, 0xf3, 0x43, 0x42, 0xf3, 0x4c, 0x2c, 0x13, 0x05, 0x89, 0x77, 0xf8, 0x9e, 0xef, 0xf2, - 0x5b, 0x1d, 0x71, 0xc1, 0x2d, 0x19, 0x7c, 0x65, 0x2b, 0x6f, 0xa9, 0xc4, 0x0b, 0xc1, 0x92, 0x73, - 0xfe, 0x8d, 0x92, 0xfd, 0x0f, 0x03, 0x2e, 0x1d, 0xb8, 0x49, 0xe6, 0x0f, 0xfc, 0xd8, 0x8d, 0xb2, - 0x5d, 0x92, 0xb9, 0x7c, 0x0c, 0xda, 0x23, 0x21, 0xe3, 0xfd, 0x3d, 0x12, 0x3a, 0x80, 0xe5, 0xa1, - 0x5e, 0x84, 0xbf, 0xcf, 0xfa, 0xb9, 0x2a, 0xae, 0xbd, 0x78, 0x6a, 0xbc, 0xef, 0x17, 0x4f, 0xf6, - 0x4f, 0x4d, 0x58, 0xae, 0x2c, 0x9d, 0xac, 0x1c, 0xc5, 0x42, 0x43, 0xc6, 0x84, 0xa4, 0xad, 0x1b, - 0x00, 0xbe, 0x0c, 0xa3, 0x33, 0xce, 0xa8, 0xf5, 0x58, 0x73, 0x14, 0xa1, 0x71, 0x57, 0x55, 0x8d, - 0x99, 0xaf, 0xaa, 0xd8, 0x16, 0x21, 0x2e, 0x9d, 0x74, 0xc6, 0x16, 0x61, 0x8c, 0x2b, 0x1d, 0x55, - 0xd4, 0xfe, 0x2e, 0xac, 0xd6, 0x56, 0x28, 0x7e, 0x73, 0x45, 0x4f, 0x48, 0x24, 0x6f, 0xae, 0x18, - 0xa1, 0x04, 0xab, 0x59, 0x0d, 0xd6, 0xc0, 0x3f, 0x55, 0x9f, 0x54, 0x0a, 0xd2, 0xfe, 0x99, 0x09, - 0x6b, 0xe3, 0xb3, 0xcb, 0xb3, 0x0a, 0xf7, 0x21, 0xf4, 0x26, 0xad, 0xe4, 0x17, 0x86, 0x7a, 0x19, - 0xdd, 0x32, 0x0f, 0x3f, 0xab, 0x70, 0x5f, 0x2a, 0xa2, 0x5b, 0x49, 0x75, 0xf6, 0x1f, 0x24, 0x3e, - 0xb2, 0xd2, 0x78, 0x46, 0xf1, 0xb1, 0x5e, 0x84, 0x15, 0x1c, 0xa6, 0xf2, 0xb6, 0x01, 0x0b, 0xd7, - 0x1a, 0xbf, 0x5c, 0x29, 0x94, 0xb4, 0x7f, 0x61, 0x31, 0xfb, 0x27, 0xa3, 0xf0, 0x89, 0xac, 0xdf, - 0x3e, 0x54, 0x3e, 0x29, 0x23, 0x4d, 0x29, 0x6a, 0x94, 0x48, 0x93, 0x75, 0xe5, 0xff, 0x23, 0xed, - 0xfc, 0x48, 0x93, 0x58, 0x2a, 0x05, 0x9e, 0xfd, 0x43, 0xe8, 0xee, 0x90, 0x60, 0x37, 0x1d, 0x16, - 0xaf, 0xaa, 0xce, 0x02, 0x72, 0xd2, 0x3f, 0x3b, 0x26, 0xbe, 0xa7, 0xaa, 0xbe, 0xc5, 0x9a, 0xab, - 0xbd, 0xc5, 0xb2, 0xb7, 0x60, 0x49, 0x35, 0x60, 0x96, 0x47, 0x65, 0x5b, 0x57, 0xbe, 0xb3, 0x7e, - 0xed, 0x25, 0xfc, 0x0f, 0xd1, 0xab, 0x35, 0x10, 0x0f, 0x5b, 0xfc, 0x3f, 0x45, 0x5f, 0xfa, 0x5f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xd4, 0xff, 0x7e, 0x96, 0x66, 0x34, 0x00, 0x00, + 0x41, 0xdd, 0x70, 0x24, 0x6d, 0xbf, 0xd7, 0x84, 0x79, 0x01, 0x28, 0x8f, 0x57, 0x56, 0xc8, 0x4a, + 0xbc, 0x90, 0xc2, 0x94, 0x33, 0x38, 0x29, 0xf7, 0x6b, 0x48, 0xa9, 0x3b, 0xbc, 0x86, 0xbe, 0xc3, + 0xab, 0xd8, 0x34, 0x57, 0xb7, 0xa9, 0x32, 0xae, 0x66, 0x7d, 0x5c, 0x6c, 0x85, 0xe5, 0x8b, 0xce, + 0x7e, 0xe0, 0x66, 0x87, 0x34, 0x09, 0x45, 0x5d, 0xda, 0x74, 0x6a, 0x7c, 0xb6, 0xaa, 0x23, 0x4f, + 0xa6, 0x65, 0x9c, 0x5d, 0x15, 0x2e, 0x4b, 0x82, 0xc8, 0x29, 0xd2, 0x33, 0x6e, 0x08, 0x74, 0x26, + 0xda, 0x96, 0xa6, 0x3e, 0x8d, 0x78, 0x82, 0xc0, 0x2c, 0xac, 0xb2, 0xd8, 0xc8, 0xc3, 0x74, 0x78, + 0x2b, 0xa1, 0xa1, 0xd8, 0x16, 0x14, 0x24, 0x1f, 0x39, 0x8d, 0xb2, 0x22, 0xb9, 0x74, 0x50, 0x56, + 0x61, 0x31, 0x59, 0x41, 0xf2, 0x14, 0xbc, 0xe8, 0x14, 0xa4, 0xb5, 0x02, 0x8d, 0x94, 0x8c, 0x44, + 0x5e, 0x65, 0x3f, 0x35, 0xcf, 0x2d, 0xeb, 0x9e, 0xab, 0x2c, 0x94, 0x2b, 0xfc, 0xab, 0xba, 0x50, + 0x96, 0xab, 0xcf, 0xaa, 0xb6, 0xfa, 0xdc, 0x80, 0x79, 0x1a, 0xb3, 0x38, 0x4f, 0x7b, 0x16, 0x9f, + 0x63, 0x9f, 0x99, 0x3c, 0xc7, 0xae, 0xdd, 0xc7, 0x96, 0x37, 0xa3, 0x2c, 0x39, 0x75, 0x0a, 0x39, + 0xeb, 0x1e, 0x2c, 0xd3, 0xc3, 0xc3, 0xc0, 0x8f, 0xc8, 0x7e, 0x9e, 0x1e, 0xf1, 0xfa, 0xf5, 0x12, + 0x5f, 0x9a, 0xec, 0x71, 0x4b, 0x93, 0xde, 0xd2, 0xa9, 0x8a, 0xae, 0xbf, 0x02, 0x8b, 0x6a, 0x37, + 0x0c, 0x86, 0x63, 0x72, 0x2a, 0x62, 0x90, 0xfd, 0x64, 0x4b, 0xf2, 0x89, 0x1b, 0xe4, 0x98, 0xe2, + 0x16, 0x1c, 0x24, 0x5e, 0x31, 0xbf, 0x62, 0xd8, 0x3f, 0x37, 0x60, 0xb9, 0xd2, 0x01, 0x6b, 0x9d, + 0xf9, 0x59, 0x40, 0x84, 0x06, 0x24, 0x58, 0xf9, 0xe0, 0x91, 0x74, 0x20, 0x42, 0x98, 0xff, 0x16, + 0x0b, 0x71, 0x43, 0x6e, 0x0a, 0x6d, 0x58, 0xf4, 0xef, 0xf7, 0x99, 0xa2, 0x3e, 0xcd, 0x23, 0x4f, + 0x1e, 0xec, 0x28, 0x3c, 0x16, 0x42, 0xfe, 0xfd, 0xfe, 0x96, 0xeb, 0x0d, 0x09, 0x1e, 0xbf, 0x34, + 0xb9, 0x4d, 0x3a, 0xd3, 0xf6, 0x60, 0xe1, 0x81, 0x1f, 0xa7, 0xdb, 0x34, 0x0c, 0x99, 0x23, 0x3c, + 0x92, 0xb1, 0x44, 0x67, 0x70, 0x7f, 0x0b, 0x8a, 0x85, 0x8a, 0x47, 0x0e, 0xdd, 0x3c, 0xc8, 0x58, + 0xd3, 0x62, 0xe2, 0x2a, 0x2c, 0x7e, 0xf0, 0x90, 0xd2, 0x68, 0x07, 0xa5, 0xd1, 0x4e, 0x85, 0x63, + 0xff, 0xc5, 0x84, 0x15, 0xbe, 0x3d, 0xd8, 0xe6, 0x6e, 0xf7, 0xb8, 0xd0, 0xcb, 0xd0, 0xe4, 0xd3, + 0x50, 0x64, 0x8b, 0xb3, 0xb7, 0x14, 0xd8, 0xd4, 0xba, 0x0e, 0x2d, 0x1a, 0xf3, 0x14, 0x83, 0xfb, + 0x90, 0xe7, 0x27, 0x09, 0xe9, 0x67, 0x3c, 0x8e, 0x90, 0xb2, 0x6e, 0x01, 0x84, 0x65, 0x46, 0xc1, + 0xa5, 0x7b, 0x5a, 0x1d, 0x8a, 0x24, 0x03, 0x57, 0x2e, 0xc3, 0xf2, 0xa0, 0xa7, 0xe1, 0xe8, 0x4c, + 0x6b, 0x0f, 0x96, 0xb8, 0xd9, 0xf7, 0x8b, 0xbd, 0x25, 0xf7, 0xc1, 0xf4, 0x3d, 0x56, 0xa4, 0xed, + 0x5f, 0x1b, 0x02, 0x46, 0xf6, 0xb5, 0x4f, 0x10, 0xfb, 0x12, 0x12, 0x63, 0x26, 0x48, 0xd6, 0x61, + 0x21, 0xcc, 0x95, 0xad, 0x6e, 0xc3, 0x91, 0x74, 0xe9, 0xa2, 0xc6, 0xd4, 0x2e, 0xb2, 0x7f, 0x63, + 0x40, 0xef, 0x35, 0xea, 0x47, 0xfc, 0xc3, 0x8d, 0x38, 0x0e, 0xc4, 0x69, 0xe4, 0xcc, 0x3e, 0xff, + 0x06, 0xb4, 0x5d, 0x54, 0x13, 0x65, 0xc2, 0xed, 0x53, 0x6c, 0x5f, 0x4b, 0x19, 0x65, 0x27, 0xd2, + 0x50, 0x77, 0x22, 0xf6, 0x3b, 0x06, 0x2c, 0x21, 0x28, 0xaf, 0xe7, 0x7e, 0x36, 0xb3, 0x7d, 0x5b, + 0xb0, 0x30, 0xca, 0xfd, 0x6c, 0x86, 0xa8, 0x94, 0x72, 0xf5, 0x78, 0x6a, 0x8c, 0x89, 0x27, 0xfb, + 0x5d, 0x03, 0xae, 0x54, 0x61, 0xbd, 0x31, 0x18, 0x90, 0xf8, 0x49, 0x4e, 0x29, 0x6d, 0x27, 0x36, + 0x57, 0xd9, 0x89, 0x8d, 0x35, 0xd9, 0x21, 0x6f, 0x91, 0xc1, 0xd3, 0x6b, 0xf2, 0x8f, 0x4d, 0xf8, + 0xf8, 0x6d, 0x39, 0xf1, 0x1e, 0x24, 0x6e, 0x94, 0x1e, 0x92, 0x24, 0x79, 0x82, 0xf6, 0xde, 0x83, + 0x6e, 0x44, 0x1e, 0x95, 0x36, 0x89, 0xe9, 0x38, 0xad, 0x1a, 0x5d, 0x78, 0xba, 0xb5, 0xcb, 0xfe, + 0x8f, 0x01, 0x2b, 0xa8, 0xe7, 0x9b, 0xfe, 0xe0, 0xf8, 0x09, 0x0e, 0x7e, 0x0f, 0x96, 0x8e, 0xb9, + 0x05, 0x8c, 0x9a, 0x61, 0xd9, 0xae, 0x48, 0x4f, 0x39, 0xfc, 0xff, 0x1a, 0xb0, 0x8a, 0x8a, 0xee, + 0x46, 0x27, 0xfe, 0x93, 0x0c, 0xd6, 0x7d, 0x58, 0xf6, 0xd1, 0x84, 0x19, 0x01, 0xa8, 0x8a, 0x4f, + 0x89, 0xc0, 0x1f, 0x0d, 0x58, 0x46, 0x4d, 0x37, 0xa3, 0x8c, 0x24, 0x33, 0x8f, 0xff, 0x0e, 0xdb, + 0xdd, 0x67, 0x89, 0x1b, 0xcd, 0xb2, 0x42, 0xaa, 0xa2, 0x53, 0x2e, 0x92, 0xef, 0x18, 0x60, 0x71, + 0x55, 0x3b, 0x7e, 0x1a, 0xfa, 0x69, 0xfa, 0x04, 0x5d, 0x37, 0x9d, 0xc1, 0xbf, 0x34, 0xe1, 0xb2, + 0xa2, 0x65, 0x37, 0xcf, 0x9e, 0x76, 0x93, 0xad, 0x1d, 0x68, 0xb3, 0x1a, 0x41, 0x3d, 0xe2, 0x9f, + 0xb6, 0xa3, 0x52, 0x90, 0x55, 0xb1, 0x9c, 0xe8, 0x93, 0x01, 0x8d, 0xbc, 0x94, 0x17, 0x47, 0x5d, + 0x47, 0xe3, 0xb1, 0x65, 0x68, 0x5d, 0x51, 0xb3, 0xed, 0x46, 0x03, 0x12, 0x3c, 0x33, 0x10, 0xd9, + 0xbf, 0x33, 0x60, 0x09, 0x9b, 0x3c, 0xfd, 0x43, 0x66, 0xb9, 0x1e, 0x03, 0xf9, 0x43, 0xe3, 0x25, + 0x16, 0x5e, 0x6b, 0x8a, 0x16, 0xb5, 0xae, 0x7e, 0x7a, 0x43, 0xeb, 0x0e, 0x74, 0x06, 0x47, 0x6e, + 0x34, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0xfb, 0x18, 0x56, 0xf1, 0x52, 0x43, 0xa9, 0xce, 0xd8, 0xbe, + 0xdf, 0xf5, 0x70, 0x2b, 0x6f, 0xf0, 0xee, 0x0b, 0x52, 0xbf, 0xae, 0x12, 0x2f, 0x12, 0xca, 0xeb, + 0xaa, 0xab, 0x00, 0xae, 0xe7, 0xbd, 0x41, 0x13, 0xcf, 0x8f, 0x8a, 0x52, 0x5b, 0xe1, 0xd8, 0xaf, + 0xc1, 0xe2, 0xad, 0x84, 0x86, 0x0f, 0x94, 0xeb, 0x89, 0x33, 0x2f, 0x50, 0xd4, 0xab, 0x0d, 0x53, + 0xbf, 0xda, 0xb0, 0xbf, 0x07, 0x1f, 0xad, 0x19, 0xce, 0xbd, 0xb6, 0x8d, 0xb7, 0x2e, 0x45, 0x27, + 0xc2, 0x79, 0x9f, 0x1c, 0x03, 0x8e, 0x6a, 0x8b, 0xa3, 0x09, 0xd9, 0x3f, 0x32, 0xe0, 0xb9, 0x9a, + 0xfa, 0x1b, 0x71, 0x9c, 0xd0, 0x13, 0x11, 0xd1, 0x17, 0xd1, 0x8d, 0x5e, 0x86, 0x9a, 0xd5, 0x32, + 0x74, 0xac, 0x11, 0x5a, 0xe9, 0xfc, 0x01, 0x18, 0xf1, 0x5b, 0x03, 0x96, 0x85, 0x11, 0x9e, 0x27, + 0xba, 0xfd, 0x32, 0xb4, 0xf0, 0xc6, 0x56, 0x74, 0xf8, 0xdc, 0xd8, 0x0e, 0x8b, 0x9b, 0x66, 0x47, + 0x34, 0xae, 0xc7, 0xb6, 0x39, 0x2e, 0xb6, 0xbf, 0x2a, 0x67, 0xd0, 0xd4, 0x77, 0xaa, 0x42, 0xc0, + 0xfe, 0x76, 0x11, 0xcc, 0x3b, 0x24, 0x20, 0x17, 0x89, 0x91, 0xfd, 0x10, 0x96, 0xf8, 0xf5, 0x71, + 0x89, 0xc1, 0x85, 0xa8, 0x7d, 0x03, 0x56, 0xb8, 0xda, 0x0b, 0xb7, 0x57, 0xce, 0x0e, 0x86, 0xcf, + 0x36, 0xce, 0xf7, 0x8b, 0xd3, 0xfe, 0x05, 0xb8, 0x54, 0x60, 0xff, 0x30, 0xf6, 0xe4, 0x71, 0xce, + 0x84, 0x43, 0x6c, 0xfb, 0x8b, 0xb0, 0xb6, 0x4d, 0xa3, 0x13, 0x92, 0xa4, 0x78, 0xc4, 0xcf, 0x45, + 0x0a, 0x09, 0x6d, 0xf2, 0x0b, 0xca, 0x7e, 0x0b, 0xd6, 0x55, 0x89, 0x3e, 0xc9, 0xf6, 0x13, 0xff, + 0x44, 0x91, 0x12, 0x87, 0xbc, 0x86, 0x76, 0xc8, 0x5b, 0x1e, 0x0a, 0x9b, 0xda, 0xa1, 0xf0, 0x15, + 0x68, 0xfb, 0xa9, 0x50, 0xc0, 0x83, 0x6a, 0xc1, 0x29, 0x19, 0x76, 0x1f, 0x56, 0xc5, 0x85, 0xee, + 0xbe, 0x3b, 0xf4, 0x23, 0x5c, 0x01, 0xaf, 0x02, 0xc4, 0xee, 0xb0, 0x78, 0xd0, 0x81, 0xf7, 0x01, + 0x0a, 0x87, 0x7d, 0x4f, 0x8f, 0xe8, 0x23, 0xf1, 0xdd, 0xc4, 0xef, 0x25, 0xc7, 0xfe, 0x16, 0x58, + 0x0e, 0x49, 0x63, 0x1a, 0xa5, 0x44, 0xd1, 0xba, 0x01, 0x9d, 0xed, 0x3c, 0x49, 0x48, 0xc4, 0xba, + 0x2a, 0x5e, 0x37, 0xa8, 0x2c, 0xa6, 0xb7, 0x5f, 0xea, 0xc5, 0x33, 0x64, 0x85, 0x63, 0xff, 0xaa, + 0x01, 0xed, 0xbe, 0x3f, 0x8c, 0xdc, 0xc0, 0x21, 0x23, 0xeb, 0x6b, 0xd0, 0xc2, 0xca, 0x5e, 0xb8, + 0x71, 0xdc, 0x99, 0x26, 0xb6, 0xc6, 0x2d, 0x8c, 0x43, 0x46, 0x77, 0x3e, 0xe2, 0x08, 0x19, 0xeb, + 0x75, 0xe8, 0xe2, 0xaf, 0xbb, 0x78, 0x52, 0x23, 0x32, 0xd6, 0x67, 0xcf, 0x51, 0x22, 0x5a, 0xa3, + 0x2e, 0x5d, 0x03, 0x33, 0x68, 0xc0, 0x33, 0xbf, 0x98, 0xbb, 0x93, 0x0d, 0xc2, 0x02, 0x41, 0x18, + 0x84, 0x32, 0x4c, 0xda, 0xe5, 0x67, 0x19, 0x22, 0xa1, 0x4d, 0x96, 0xc6, 0x23, 0x0f, 0x21, 0x8d, + 0x32, 0x4c, 0xfa, 0x28, 0x8f, 0x86, 0x0f, 0x63, 0x71, 0xc4, 0x36, 0x59, 0xfa, 0x0e, 0x6f, 0x26, + 0xa4, 0x51, 0x86, 0x49, 0x27, 0x7c, 0x65, 0xe5, 0xa0, 0x9f, 0x25, 0x8d, 0x0b, 0xb0, 0x90, 0x46, + 0x99, 0xad, 0x36, 0xcc, 0xc7, 0xee, 0x69, 0x40, 0x5d, 0xcf, 0x7e, 0xbb, 0x01, 0x50, 0x34, 0x4c, + 0x79, 0x3d, 0xa0, 0xb9, 0x68, 0xf3, 0x5c, 0x17, 0xc5, 0xc1, 0xa9, 0xe2, 0xa4, 0xfe, 0x78, 0x27, + 0x7d, 0x6e, 0x5a, 0x27, 0xa1, 0xb6, 0x8a, 0x9b, 0xae, 0x57, 0xdc, 0xb4, 0x79, 0xae, 0x9b, 0x84, + 0x51, 0xc2, 0x51, 0xd7, 0x2b, 0x8e, 0xda, 0x3c, 0xd7, 0x51, 0x42, 0x5e, 0xb8, 0xea, 0x7a, 0xc5, + 0x55, 0x9b, 0xe7, 0xba, 0x4a, 0xc8, 0x0b, 0x67, 0x5d, 0xaf, 0x38, 0x6b, 0xf3, 0x5c, 0x67, 0x09, + 0xf9, 0xba, 0xbb, 0xde, 0x35, 0x61, 0x89, 0x43, 0x86, 0xf7, 0x69, 0xd1, 0x21, 0xe5, 0xc7, 0xe6, + 0x1c, 0x2e, 0xfd, 0x7d, 0x90, 0xce, 0xb4, 0x3e, 0x0f, 0xab, 0xc8, 0x10, 0xef, 0x49, 0xe4, 0x05, + 0x65, 0xdb, 0xa9, 0x7f, 0xe0, 0x37, 0x20, 0x79, 0x9a, 0xd1, 0x70, 0xc7, 0xcd, 0xdc, 0xa2, 0x32, + 0x2a, 0x39, 0xea, 0xfd, 0xd4, 0x5c, 0xed, 0x05, 0x62, 0x42, 0x69, 0x28, 0x2f, 0x9e, 0x04, 0xc5, + 0x24, 0x32, 0x3f, 0x24, 0x34, 0xcf, 0xc4, 0x32, 0x51, 0x90, 0x78, 0x87, 0xef, 0xf9, 0x2e, 0xbf, + 0xd5, 0x11, 0x17, 0xdc, 0x92, 0xc1, 0x57, 0xb6, 0xf2, 0x96, 0x4a, 0xbc, 0x10, 0x2c, 0x39, 0xe7, + 0xdf, 0x28, 0xd9, 0xff, 0x30, 0xe0, 0xd2, 0xbe, 0x9b, 0x64, 0xfe, 0xc0, 0x8f, 0xdd, 0x28, 0xdb, + 0x25, 0x99, 0xcb, 0xc7, 0xa0, 0x3d, 0x12, 0x32, 0xde, 0xdf, 0x23, 0xa1, 0x7d, 0x58, 0x1e, 0xea, + 0x45, 0xf8, 0xfb, 0xac, 0x9f, 0xab, 0xe2, 0xda, 0x8b, 0xa7, 0xc6, 0xfb, 0x7e, 0xf1, 0x64, 0xff, + 0xd4, 0x84, 0xe5, 0xca, 0xd2, 0xc9, 0xca, 0x51, 0x2c, 0x34, 0x64, 0x4c, 0x48, 0xda, 0xba, 0x01, + 0xe0, 0xcb, 0x30, 0x3a, 0xe3, 0x8c, 0x5a, 0x8f, 0x35, 0x47, 0x11, 0x1a, 0x77, 0x55, 0xd5, 0x98, + 0xf9, 0xaa, 0x8a, 0x6d, 0x11, 0xe2, 0xd2, 0x49, 0x67, 0x6c, 0x11, 0xc6, 0xb8, 0xd2, 0x51, 0x45, + 0xed, 0xef, 0xc2, 0x6a, 0x6d, 0x85, 0xe2, 0x37, 0x57, 0xf4, 0x98, 0x44, 0xf2, 0xe6, 0x8a, 0x11, + 0x4a, 0xb0, 0x9a, 0xd5, 0x60, 0x0d, 0xfc, 0x13, 0xf5, 0x49, 0xa5, 0x20, 0xed, 0x9f, 0x99, 0xb0, + 0x36, 0x3e, 0xbb, 0x3c, 0xab, 0x70, 0x1f, 0x40, 0x6f, 0xd2, 0x4a, 0x7e, 0x61, 0xa8, 0x97, 0xd1, + 0x2d, 0xf3, 0xf0, 0xb3, 0x0a, 0xf7, 0xa5, 0x22, 0xba, 0x95, 0x54, 0x67, 0xff, 0x41, 0xe2, 0x23, + 0x2b, 0x8d, 0x67, 0x14, 0x1f, 0xeb, 0x45, 0x58, 0xc1, 0x61, 0x2a, 0x6f, 0x1b, 0xb0, 0x70, 0xad, + 0xf1, 0xcb, 0x95, 0x42, 0x49, 0xfb, 0x17, 0x16, 0xb3, 0x7f, 0x32, 0x0a, 0x9f, 0xc8, 0xfa, 0xed, + 0x43, 0xe5, 0x93, 0x32, 0xd2, 0x94, 0xa2, 0x46, 0x89, 0x34, 0x59, 0x57, 0xfe, 0x3f, 0xd2, 0xce, + 0x8f, 0x34, 0x89, 0xa5, 0x52, 0xe0, 0xd9, 0x3f, 0x84, 0xee, 0x0e, 0x09, 0x76, 0xd3, 0x61, 0xf1, + 0xaa, 0xea, 0x2c, 0x20, 0x27, 0xfd, 0xb3, 0x63, 0xe2, 0x7b, 0xaa, 0xea, 0x5b, 0xac, 0xb9, 0xda, + 0x5b, 0x2c, 0x7b, 0x0b, 0x96, 0x54, 0x03, 0x66, 0x79, 0x54, 0xb6, 0x75, 0xe5, 0x3b, 0xeb, 0xd7, + 0x5e, 0xc2, 0xff, 0x10, 0xbd, 0x5a, 0x03, 0xf1, 0xa0, 0xc5, 0xff, 0x53, 0xf4, 0xa5, 0xff, 0x05, + 0x00, 0x00, 0xff, 0xff, 0x3c, 0x30, 0x52, 0xe6, 0x66, 0x34, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 60fdae9d7..b9aa6bf3d 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -138,12 +138,12 @@ message OrganizationUser { message DepartmentMember { string userID = 1; - string DepartmentID = 2; - int32 Order = 3; - string Position = 4; - int32 Leader = 5; - int32 Status = 6; - string Ex = 7; + string departmentID = 2; + int32 order = 3; + string position = 4; + int32 leader = 5; + int32 status = 6; + string ex = 7; } From 1f96b960ab6d427016607c694bee38c29e8f7e81 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 15:51:17 +0800 Subject: [PATCH 071/128] organization --- internal/api/organization/organization.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 4bcd140f4..eeaf49e1e 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -234,9 +234,9 @@ func CreateDepartmentMember(c *gin.Context) { return } - req := &rpc.CreateDepartmentMemberReq{UserInDepartment: &open_im_sdk.UserInDepartment{}} + req := &rpc.CreateDepartmentMemberReq{DepartmentMember: &open_im_sdk.DepartmentMember{}} utils.CopyStructFields(req, ¶ms) - utils.CopyStructFields(req.UserInDepartment, ¶ms) + utils.CopyStructFields(req.DepartmentMember, ¶ms) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) req.OpUserID = opUserID From 42242daf9bc18bac93bf302e488fd0e603fd8217 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 16:18:10 +0800 Subject: [PATCH 072/128] organization --- cmd/open_im_api/main.go | 2 +- internal/api/organization/organization.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index bbeb522e3..6d8f5d577 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -165,7 +165,7 @@ func main() { 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("/update_user_in_department", organization.UpdateUserInDepartment) organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index eeaf49e1e..5b7d1d437 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -299,7 +299,7 @@ func GetUserInDepartment(c *gin.Context) { } func UpdateUserInDepartment(c *gin.Context) { - params := api.UpdateUserInDepartmentReq{DepartmentMember: &open_im_sdk.DepartmentMember{}} + 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()}) From 6873bf384ef2cd9416fd3377521591e875b712fa Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 16:24:12 +0800 Subject: [PATCH 073/128] organization --- internal/api/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 5b7d1d437..986ff01c1 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -307,8 +307,8 @@ func UpdateUserInDepartment(c *gin.Context) { } 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 { From c11094a11e52e4655a5748ebb1c5c5300e52ca9a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 16:27:04 +0800 Subject: [PATCH 074/128] organization --- .../db/mysql_model/im_mysql_model/organization_model.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 index 0b7f1621e..76eb949a0 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -120,12 +120,12 @@ func UpdateUserInDepartment(departmentMember *db.DepartmentMember, args map[stri if err != nil { return err } - if err = dbConn.Table("department_members").Where("department_id=? ADN user_id=?", departmentMember.DepartmentID, departmentMember.UserID). + 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=? ADN user_id=?", departmentMember.DepartmentID, departmentMember.UserID). + return dbConn.Table("department_members").Where("department_id=? AND user_id=?", departmentMember.DepartmentID, departmentMember.UserID). Updates(args).Error } return nil @@ -136,7 +136,7 @@ func DeleteUserInDepartment(departmentID, userID string) error { if err != nil { return err } - return dbConn.Table("department_members").Where("department_id=? ADN user_id=?", departmentID, userID).Delete(db.DepartmentMember{}).Error + return dbConn.Table("department_members").Where("department_id=? AND user_id=?", departmentID, userID).Delete(db.DepartmentMember{}).Error } func DeleteUserInAllDepartment(userID string) error { From 5f22402761a79decccc8eb44406769d0d55de869 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 16:42:50 +0800 Subject: [PATCH 075/128] organization --- internal/rpc/organization/organization.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 014e2b710..5c1c3093b 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -236,7 +236,7 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp return resp, nil } -func (s *organizationServer) GetUserInDepartmentByUserID(userID string) (*open_im_sdk.UserInDepartment, error) { +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") @@ -245,11 +245,13 @@ func (s *organizationServer) GetUserInDepartmentByUserID(userID string) (*open_i 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 @@ -257,7 +259,7 @@ func (s *organizationServer) GetUserInDepartmentByUserID(userID string) (*open_i 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) + 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) @@ -342,7 +344,7 @@ func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.G resp := rpc.GetDepartmentMemberResp{} for _, v := range departmentMemberUserIDList { - r, err := s.GetUserInDepartmentByUserID(v) + r, err := s.GetUserInDepartmentByUserID(v, req.OperationID) if err != nil { log.Error(req.OperationID, "GetUserInDepartmentByUserID failed ", err.Error()) continue From ad1770ec95da69dbdbaf2b09866f5d1737c23803 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 16:46:03 +0800 Subject: [PATCH 076/128] organization --- pkg/common/db/mysql_model/im_mysql_model/organization_model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 76eb949a0..8a1006acb 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -111,7 +111,7 @@ func GetUserInDepartment(userID string) (error, []db.DepartmentMember) { return err, nil } var departmentMemberList []db.DepartmentMember - err = dbConn.Table("department_members").Where("user_id=?", userID).Take(&departmentMemberList).Error + err = dbConn.Table("department_members").Where("user_id=?", userID).Find(&departmentMemberList).Error return err, departmentMemberList } From 114ffd4667f6c5a220892c33ac41f47ca82254a4 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 16:58:41 +0800 Subject: [PATCH 077/128] organization --- internal/rpc/organization/organization.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 5c1c3093b..a56bdbf40 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -342,6 +342,7 @@ func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.G return &rpc.GetDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil } + log.Debug(req.OperationID, "GetDepartmentMemberUserIDList ", departmentMemberUserIDList) resp := rpc.GetDepartmentMemberResp{} for _, v := range departmentMemberUserIDList { r, err := s.GetUserInDepartmentByUserID(v, req.OperationID) @@ -349,7 +350,7 @@ func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.G log.Error(req.OperationID, "GetUserInDepartmentByUserID failed ", err.Error()) continue } - log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", *r) + log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", *r, "userID ", v) resp.UserInDepartmentList = append(resp.UserInDepartmentList, r) } From b1c66997cac9e4ddc0d5e327109e882822a2df0c Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 17:25:54 +0800 Subject: [PATCH 078/128] organization --- internal/api/organization/organization.go | 4 +- internal/rpc/organization/organization.go | 23 +- pkg/base_info/organization_api_struct.go | 4 +- .../im_mysql_model/organization_model.go | 19 +- pkg/proto/organization/organization.pb.go | 160 ++--- pkg/proto/organization/organization.proto | 2 +- pkg/proto/sdk_ws/ws.pb.go | 567 ++++++++++-------- pkg/proto/sdk_ws/ws.proto | 5 + 8 files changed, 426 insertions(+), 358 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 986ff01c1..240f3a848 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -398,8 +398,8 @@ func GetDepartmentMember(c *gin.Context) { return } - apiResp := api.GetDepartmentMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, UserInDepartmentList: RpcResp.UserInDepartmentList} - apiResp.Data = jsonData.JsonDataList(RpcResp.UserInDepartmentList) + 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) } diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index a56bdbf40..ae09d8915 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -335,23 +335,30 @@ func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rp func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.GetDepartmentMemberReq) (*rpc.GetDepartmentMemberResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) - err, departmentMemberUserIDList := imdb.GetDepartmentMemberUserIDList(req.DepartmentID) + err, departmentMemberList := imdb.GetDepartmentMemberList(req.DepartmentID) if err != nil { - errMsg := req.OperationID + " " + "GetDepartmentMemberUserIDList failed " + err.Error() + errMsg := req.OperationID + " " + "GetDepartmentMemberList failed " + err.Error() log.Error(req.OperationID, errMsg, req.DepartmentID) return &rpc.GetDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil } - log.Debug(req.OperationID, "GetDepartmentMemberUserIDList ", departmentMemberUserIDList) + log.Debug(req.OperationID, "GetDepartmentMemberList ", departmentMemberList) resp := rpc.GetDepartmentMemberResp{} - for _, v := range departmentMemberUserIDList { - r, err := s.GetUserInDepartmentByUserID(v, req.OperationID) + for _, v := range departmentMemberList { + err, organizationUser := imdb.GetOrganizationUser(v.UserID) if err != nil { - log.Error(req.OperationID, "GetUserInDepartmentByUserID failed ", err.Error()) + log.Error(req.OperationID, "GetOrganizationUser failed ", err.Error()) continue } - log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", *r, "userID ", v) - resp.UserInDepartmentList = append(resp.UserInDepartmentList, r) + 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) diff --git a/pkg/base_info/organization_api_struct.go b/pkg/base_info/organization_api_struct.go index 87d026f10..31a9c038b 100644 --- a/pkg/base_info/organization_api_struct.go +++ b/pkg/base_info/organization_api_struct.go @@ -96,8 +96,8 @@ type GetDepartmentMemberReq struct { } type GetDepartmentMemberResp struct { CommResp - UserInDepartmentList []*open_im_sdk.UserInDepartment `json:"-"` - Data []map[string]interface{} `json:"data"` + UserInDepartmentList []*open_im_sdk.UserDepartmentMember `json:"-"` + Data []map[string]interface{} `json:"data"` } type DeleteUserInDepartmentReq struct { 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 index 8a1006acb..180ea0ef3 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -159,12 +159,6 @@ func DeleteOrganizationUser(OrganizationUserID string) error { } func GetDepartmentMemberUserIDList(departmentID string) (error, []string) { - //dbConn, err := db.DB.MysqlDB.DefaultGormDB() - //if err != nil { - // return err - //} - //return dbConn.Table("department_members").Where("user_id=?", userID).Delete(db.DepartmentMember{}).Error - dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { return err, nil @@ -180,3 +174,16 @@ func GetDepartmentMemberUserIDList(departmentID string) (error, []string) { } 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 + err = dbConn.Table("department_members").Where("department_id=?", departmentID).Find(&departmentMemberList).Error + if err != nil { + return err, nil + } + return err, departmentMemberList +} diff --git a/pkg/proto/organization/organization.pb.go b/pkg/proto/organization/organization.pb.go index 7da1cd816..b91b96d1f 100644 --- a/pkg/proto/organization/organization.pb.go +++ b/pkg/proto/organization/organization.pb.go @@ -37,7 +37,7 @@ 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_4c9882c006c04fab, []int{0} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{0} } func (m *CreateDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentReq.Unmarshal(m, b) @@ -91,7 +91,7 @@ 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_4c9882c006c04fab, []int{1} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{1} } func (m *CreateDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentResp.Unmarshal(m, b) @@ -145,7 +145,7 @@ 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_4c9882c006c04fab, []int{2} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{2} } func (m *UpdateDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateDepartmentReq.Unmarshal(m, b) @@ -198,7 +198,7 @@ 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_4c9882c006c04fab, []int{3} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{3} } func (m *UpdateDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateDepartmentResp.Unmarshal(m, b) @@ -245,7 +245,7 @@ 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_4c9882c006c04fab, []int{4} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{4} } func (m *GetSubDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSubDepartmentReq.Unmarshal(m, b) @@ -299,7 +299,7 @@ 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_4c9882c006c04fab, []int{5} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{5} } func (m *GetSubDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSubDepartmentResp.Unmarshal(m, b) @@ -353,7 +353,7 @@ 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_4c9882c006c04fab, []int{6} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{6} } func (m *DeleteDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteDepartmentReq.Unmarshal(m, b) @@ -406,7 +406,7 @@ 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_4c9882c006c04fab, []int{7} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{7} } func (m *DeleteDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteDepartmentResp.Unmarshal(m, b) @@ -453,7 +453,7 @@ func (m *CreateOrganizationUserReq) Reset() { *m = CreateOrganizationUse func (m *CreateOrganizationUserReq) String() string { return proto.CompactTextString(m) } func (*CreateOrganizationUserReq) ProtoMessage() {} func (*CreateOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{8} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{8} } func (m *CreateOrganizationUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOrganizationUserReq.Unmarshal(m, b) @@ -506,7 +506,7 @@ func (m *CreateOrganizationUserResp) Reset() { *m = CreateOrganizationUs func (m *CreateOrganizationUserResp) String() string { return proto.CompactTextString(m) } func (*CreateOrganizationUserResp) ProtoMessage() {} func (*CreateOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{9} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{9} } func (m *CreateOrganizationUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOrganizationUserResp.Unmarshal(m, b) @@ -553,7 +553,7 @@ func (m *UpdateOrganizationUserReq) Reset() { *m = UpdateOrganizationUse func (m *UpdateOrganizationUserReq) String() string { return proto.CompactTextString(m) } func (*UpdateOrganizationUserReq) ProtoMessage() {} func (*UpdateOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{10} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{10} } func (m *UpdateOrganizationUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateOrganizationUserReq.Unmarshal(m, b) @@ -606,7 +606,7 @@ func (m *UpdateOrganizationUserResp) Reset() { *m = UpdateOrganizationUs func (m *UpdateOrganizationUserResp) String() string { return proto.CompactTextString(m) } func (*UpdateOrganizationUserResp) ProtoMessage() {} func (*UpdateOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{11} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{11} } func (m *UpdateOrganizationUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateOrganizationUserResp.Unmarshal(m, b) @@ -653,7 +653,7 @@ func (m *CreateDepartmentMemberReq) Reset() { *m = CreateDepartmentMembe func (m *CreateDepartmentMemberReq) String() string { return proto.CompactTextString(m) } func (*CreateDepartmentMemberReq) ProtoMessage() {} func (*CreateDepartmentMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{12} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{12} } func (m *CreateDepartmentMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentMemberReq.Unmarshal(m, b) @@ -706,7 +706,7 @@ func (m *CreateDepartmentMemberResp) Reset() { *m = CreateDepartmentMemb func (m *CreateDepartmentMemberResp) String() string { return proto.CompactTextString(m) } func (*CreateDepartmentMemberResp) ProtoMessage() {} func (*CreateDepartmentMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{13} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{13} } func (m *CreateDepartmentMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateDepartmentMemberResp.Unmarshal(m, b) @@ -753,7 +753,7 @@ 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_4c9882c006c04fab, []int{14} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{14} } func (m *GetUserInDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInDepartmentReq.Unmarshal(m, b) @@ -807,7 +807,7 @@ 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_4c9882c006c04fab, []int{15} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{15} } func (m *GetUserInDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserInDepartmentResp.Unmarshal(m, b) @@ -861,7 +861,7 @@ func (m *UpdateUserInDepartmentReq) Reset() { *m = UpdateUserInDepartmen func (m *UpdateUserInDepartmentReq) String() string { return proto.CompactTextString(m) } func (*UpdateUserInDepartmentReq) ProtoMessage() {} func (*UpdateUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{16} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{16} } func (m *UpdateUserInDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateUserInDepartmentReq.Unmarshal(m, b) @@ -914,7 +914,7 @@ func (m *UpdateUserInDepartmentResp) Reset() { *m = UpdateUserInDepartme func (m *UpdateUserInDepartmentResp) String() string { return proto.CompactTextString(m) } func (*UpdateUserInDepartmentResp) ProtoMessage() {} func (*UpdateUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{17} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{17} } func (m *UpdateUserInDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateUserInDepartmentResp.Unmarshal(m, b) @@ -962,7 +962,7 @@ func (m *DeleteUserInDepartmentReq) Reset() { *m = DeleteUserInDepartmen func (m *DeleteUserInDepartmentReq) String() string { return proto.CompactTextString(m) } func (*DeleteUserInDepartmentReq) ProtoMessage() {} func (*DeleteUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{18} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{18} } func (m *DeleteUserInDepartmentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUserInDepartmentReq.Unmarshal(m, b) @@ -1022,7 +1022,7 @@ func (m *DeleteUserInDepartmentResp) Reset() { *m = DeleteUserInDepartme func (m *DeleteUserInDepartmentResp) String() string { return proto.CompactTextString(m) } func (*DeleteUserInDepartmentResp) ProtoMessage() {} func (*DeleteUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{19} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{19} } func (m *DeleteUserInDepartmentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteUserInDepartmentResp.Unmarshal(m, b) @@ -1069,7 +1069,7 @@ func (m *DeleteOrganizationUserReq) Reset() { *m = DeleteOrganizationUse func (m *DeleteOrganizationUserReq) String() string { return proto.CompactTextString(m) } func (*DeleteOrganizationUserReq) ProtoMessage() {} func (*DeleteOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{20} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{20} } func (m *DeleteOrganizationUserReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOrganizationUserReq.Unmarshal(m, b) @@ -1122,7 +1122,7 @@ func (m *DeleteOrganizationUserResp) Reset() { *m = DeleteOrganizationUs func (m *DeleteOrganizationUserResp) String() string { return proto.CompactTextString(m) } func (*DeleteOrganizationUserResp) ProtoMessage() {} func (*DeleteOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_4c9882c006c04fab, []int{21} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{21} } func (m *DeleteOrganizationUserResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOrganizationUserResp.Unmarshal(m, b) @@ -1169,7 +1169,7 @@ 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_4c9882c006c04fab, []int{22} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{22} } func (m *GetDepartmentMemberReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetDepartmentMemberReq.Unmarshal(m, b) @@ -1211,19 +1211,19 @@ func (m *GetDepartmentMemberReq) GetOpUserID() string { } 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"` - UserInDepartmentList []*sdk_ws.UserInDepartment `protobuf:"bytes,3,rep,name=userInDepartmentList" json:"userInDepartmentList,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + 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_4c9882c006c04fab, []int{23} + return fileDescriptor_organization_f9b83a1db54ed9cf, []int{23} } func (m *GetDepartmentMemberResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetDepartmentMemberResp.Unmarshal(m, b) @@ -1257,9 +1257,9 @@ func (m *GetDepartmentMemberResp) GetErrMsg() string { return "" } -func (m *GetDepartmentMemberResp) GetUserInDepartmentList() []*sdk_ws.UserInDepartment { +func (m *GetDepartmentMemberResp) GetUserDepartmentMemberList() []*sdk_ws.UserDepartmentMember { if m != nil { - return m.UserInDepartmentList + return m.UserDepartmentMemberList } return nil } @@ -1727,54 +1727,54 @@ var _Organization_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_4c9882c006c04fab) + proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_f9b83a1db54ed9cf) } -var fileDescriptor_organization_4c9882c006c04fab = []byte{ - // 708 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4f, 0x6f, 0x12, 0x41, - 0x14, 0xcf, 0x8a, 0x56, 0x79, 0x6d, 0x0c, 0x99, 0x12, 0xa4, 0x6b, 0x1a, 0x29, 0xda, 0xc8, 0x09, - 0x92, 0x7a, 0xf4, 0x66, 0x31, 0x2d, 0x89, 0x48, 0x82, 0x69, 0x0c, 0x5e, 0xc8, 0x12, 0x46, 0x42, - 0x90, 0xdd, 0xe9, 0xcc, 0x22, 0x49, 0xbf, 0x84, 0x27, 0x2f, 0xc6, 0xa3, 0x27, 0x3f, 0x8d, 0x1f, - 0xc9, 0xec, 0x2e, 0xc5, 0xd9, 0x37, 0x6f, 0xe9, 0xba, 0x80, 0xa9, 0xc7, 0x19, 0x66, 0xde, 0xef, - 0xbd, 0xdf, 0xfb, 0x33, 0x3f, 0x16, 0x9e, 0x78, 0x72, 0xe4, 0xb8, 0xe3, 0x2b, 0xc7, 0x1f, 0x7b, - 0x6e, 0x43, 0x5f, 0xd4, 0x85, 0xf4, 0x7c, 0x8f, 0xed, 0xe9, 0x7b, 0xf6, 0x51, 0x47, 0x70, 0xb7, - 0xdf, 0x6a, 0x37, 0xc4, 0x64, 0xd4, 0x08, 0x0f, 0x34, 0xd4, 0x70, 0xd2, 0x9f, 0xab, 0xc6, 0x5c, - 0x45, 0x17, 0xaa, 0xdf, 0x2c, 0xd8, 0x3f, 0x95, 0xdc, 0xf1, 0x79, 0x93, 0x0b, 0x47, 0xfa, 0x53, - 0xee, 0xfa, 0x5d, 0x7e, 0xc9, 0x5e, 0xc3, 0xc3, 0xe1, 0x72, 0xa3, 0xe5, 0x7e, 0xf4, 0xca, 0x56, - 0xc5, 0xaa, 0xed, 0x9e, 0x1c, 0xd6, 0x15, 0x97, 0x9f, 0xb9, 0xec, 0x3b, 0x62, 0xdc, 0x17, 0x8e, - 0x74, 0xa6, 0xaa, 0xae, 0xdd, 0x44, 0x97, 0x58, 0x05, 0x76, 0x3d, 0xc1, 0x65, 0xe8, 0x4e, 0xab, - 0x59, 0xbe, 0x53, 0xb1, 0x6a, 0xf9, 0xae, 0xbe, 0xc5, 0x6c, 0x78, 0xe0, 0x89, 0x0b, 0xc5, 0x65, - 0xab, 0x59, 0xce, 0x85, 0x3f, 0x2f, 0xd7, 0xd5, 0x2f, 0x16, 0x14, 0x4d, 0xe7, 0x94, 0x60, 0x65, - 0xb8, 0xcf, 0xa5, 0x3c, 0xf5, 0x86, 0x3c, 0x74, 0xeb, 0x5e, 0xf7, 0x7a, 0xc9, 0x4a, 0xb0, 0xc3, - 0xa5, 0x6c, 0xab, 0xd1, 0x02, 0x6b, 0xb1, 0x22, 0xe2, 0xc9, 0x65, 0x88, 0x27, 0xa4, 0xeb, 0x42, - 0x0c, 0x6f, 0x27, 0x5d, 0xe7, 0x50, 0x34, 0x7d, 0xcb, 0xc2, 0x56, 0x75, 0x0e, 0xfb, 0x67, 0xdc, - 0x7f, 0x37, 0x1b, 0xc4, 0xa3, 0xac, 0xc2, 0x9e, 0xe6, 0x70, 0x33, 0xb4, 0x96, 0xef, 0xc6, 0xf6, - 0x36, 0x90, 0x71, 0x13, 0x79, 0xfd, 0x8c, 0xbf, 0x19, 0x2b, 0xbf, 0x9c, 0xab, 0xe4, 0xfe, 0x2a, - 0x25, 0xc1, 0xa5, 0x80, 0x8a, 0x26, 0xff, 0xc4, 0x71, 0xc2, 0xb7, 0x4f, 0xc5, 0x39, 0x14, 0x4d, - 0xe0, 0x4c, 0xd9, 0xfc, 0x69, 0xc1, 0x41, 0xd4, 0x46, 0x1d, 0x6d, 0x3a, 0x04, 0x30, 0x41, 0x24, - 0x1d, 0x28, 0x78, 0x68, 0x7b, 0x51, 0xbc, 0x4f, 0x09, 0xa6, 0x0c, 0x0b, 0xc6, 0xe5, 0x35, 0xc3, - 0x7e, 0x0b, 0x76, 0x92, 0xaf, 0x99, 0x83, 0x8f, 0xba, 0xe2, 0xff, 0x08, 0x3e, 0xc9, 0xd7, 0x35, - 0x33, 0xff, 0xa7, 0x88, 0xda, 0x7c, 0x3a, 0x58, 0x06, 0x3f, 0x44, 0xdb, 0x2b, 0x82, 0x37, 0x2c, - 0x18, 0x97, 0x37, 0x95, 0x79, 0xd3, 0xd7, 0x4c, 0xc1, 0xbb, 0x50, 0x3a, 0xe3, 0x7e, 0x68, 0xdc, - 0x8d, 0x37, 0x6f, 0x09, 0x76, 0x66, 0x91, 0x0f, 0x51, 0xdb, 0x2e, 0x56, 0x6b, 0xfa, 0xff, 0xdd, - 0x82, 0x47, 0x24, 0x60, 0xa6, 0xf1, 0xd5, 0x81, 0xc2, 0x0c, 0x59, 0x5a, 0x3c, 0x59, 0x54, 0x72, - 0x0c, 0x50, 0xe3, 0xb2, 0xd6, 0x08, 0x14, 0x25, 0xb7, 0xaf, 0x16, 0x92, 0x7c, 0xcd, 0x54, 0x0b, - 0x5f, 0x2d, 0x38, 0x88, 0xa6, 0xe9, 0x3f, 0xab, 0x07, 0xe3, 0x89, 0xb8, 0x6b, 0x3e, 0x11, 0x41, - 0x9c, 0x49, 0x6e, 0x65, 0x8a, 0xf3, 0xf2, 0x3a, 0x4c, 0x6a, 0xd8, 0x6d, 0xa7, 0xec, 0x97, 0x21, - 0x6c, 0x68, 0x66, 0x5d, 0x85, 0x6d, 0x4b, 0xcd, 0xab, 0xed, 0xbf, 0xb9, 0x3f, 0xa2, 0x16, 0xde, - 0xcc, 0x00, 0x62, 0xef, 0xa1, 0x88, 0xbb, 0x50, 0xd3, 0x21, 0xa9, 0xda, 0x98, 0x34, 0x70, 0xf2, - 0x2b, 0x0f, 0x31, 0xa1, 0xcf, 0x7a, 0x50, 0xc0, 0xa3, 0x93, 0x1d, 0xd5, 0x63, 0xff, 0x0f, 0x08, - 0x91, 0x6f, 0x57, 0x6f, 0x3a, 0xa2, 0x44, 0x60, 0x1a, 0x8b, 0x4a, 0x6c, 0x9a, 0x10, 0xc4, 0xd8, - 0x34, 0xa9, 0x4b, 0x7b, 0x50, 0xc0, 0x5a, 0x0f, 0x9b, 0x26, 0x54, 0x28, 0x36, 0x4d, 0xca, 0xc5, - 0x1e, 0x14, 0xb0, 0x78, 0xc2, 0xa6, 0x09, 0x55, 0x87, 0x4d, 0x93, 0xfa, 0x6b, 0x02, 0x25, 0x5a, - 0xa0, 0xb0, 0xe7, 0x14, 0x9d, 0x44, 0x23, 0xda, 0xb5, 0x74, 0x07, 0x23, 0x30, 0x5a, 0x10, 0x60, - 0xb0, 0x44, 0x89, 0x83, 0xc1, 0x56, 0xe8, 0x8b, 0x09, 0x94, 0xe8, 0x4e, 0xc6, 0x60, 0x89, 0x23, - 0x06, 0x83, 0xad, 0x18, 0x0c, 0x4b, 0x1a, 0x71, 0xb3, 0xd1, 0x34, 0x12, 0xf3, 0x80, 0xa6, 0x91, - 0xec, 0xdd, 0x41, 0xf8, 0x7f, 0x06, 0x77, 0x17, 0x7b, 0x66, 0x54, 0x12, 0xf1, 0x3a, 0xd8, 0xc7, - 0x29, 0x4e, 0xe9, 0xec, 0x19, 0x30, 0x24, 0x7b, 0x14, 0x52, 0x2d, 0xdd, 0x41, 0xbd, 0x2e, 0x6e, - 0x02, 0x4b, 0x7c, 0xf1, 0xe9, 0xba, 0x20, 0xc1, 0x22, 0xf6, 0x8c, 0x3c, 0x99, 0xec, 0x51, 0x49, - 0x3a, 0x4e, 0x71, 0x4a, 0x89, 0x57, 0x87, 0x1f, 0x1e, 0xd7, 0x63, 0x1f, 0x34, 0x5e, 0xea, 0x8b, - 0xc1, 0x4e, 0xf8, 0xb5, 0xe2, 0xc5, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x53, 0xac, 0x82, - 0x01, 0x11, 0x00, 0x00, +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 index 3a8f2f8c9..6e7165723 100644 --- a/pkg/proto/organization/organization.proto +++ b/pkg/proto/organization/organization.proto @@ -145,7 +145,7 @@ message GetDepartmentMemberReq{ message GetDepartmentMemberResp{ int32 errCode = 1; string errMsg = 2; - repeated server_api_params.UserInDepartment userInDepartmentList = 3; + repeated server_api_params.UserDepartmentMember userDepartmentMemberList = 3; } diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index 3825fb262..45874a3a4 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_f7386a43c650fa79, []int{0} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{1} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{2} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{3} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{4} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{5} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{6} + return fileDescriptor_ws_879c1413df9d19e3, []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_f7386a43c650fa79, []int{7} + return fileDescriptor_ws_879c1413df9d19e3, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -878,7 +878,7 @@ 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_f7386a43c650fa79, []int{8} + return fileDescriptor_ws_879c1413df9d19e3, []int{8} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -989,7 +989,7 @@ 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_f7386a43c650fa79, []int{9} + return fileDescriptor_ws_879c1413df9d19e3, []int{9} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1103,7 +1103,7 @@ 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_f7386a43c650fa79, []int{10} + return fileDescriptor_ws_879c1413df9d19e3, []int{10} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1172,6 +1172,52 @@ func (m *DepartmentMember) GetEx() string { 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_879c1413df9d19e3, []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"` @@ -1184,7 +1230,7 @@ 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_f7386a43c650fa79, []int{11} + return fileDescriptor_ws_879c1413df9d19e3, []int{12} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1231,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_f7386a43c650fa79, []int{12} + return fileDescriptor_ws_879c1413df9d19e3, []int{13} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1285,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_f7386a43c650fa79, []int{13} + return fileDescriptor_ws_879c1413df9d19e3, []int{14} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1336,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_f7386a43c650fa79, []int{14} + return fileDescriptor_ws_879c1413df9d19e3, []int{15} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1368,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_f7386a43c650fa79, []int{15} + return fileDescriptor_ws_879c1413df9d19e3, []int{16} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1415,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_f7386a43c650fa79, []int{16} + return fileDescriptor_ws_879c1413df9d19e3, []int{17} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1484,7 +1530,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_f7386a43c650fa79, []int{17} + return fileDescriptor_ws_879c1413df9d19e3, []int{18} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1645,7 +1691,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_f7386a43c650fa79, []int{18} + return fileDescriptor_ws_879c1413df9d19e3, []int{19} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1713,7 +1759,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_f7386a43c650fa79, []int{19} + return fileDescriptor_ws_879c1413df9d19e3, []int{20} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1770,7 +1816,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_f7386a43c650fa79, []int{20} + return fileDescriptor_ws_879c1413df9d19e3, []int{21} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1839,7 +1885,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_f7386a43c650fa79, []int{21} + return fileDescriptor_ws_879c1413df9d19e3, []int{22} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1894,7 +1940,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_f7386a43c650fa79, []int{22} + return fileDescriptor_ws_879c1413df9d19e3, []int{23} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1950,7 +1996,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_f7386a43c650fa79, []int{23} + return fileDescriptor_ws_879c1413df9d19e3, []int{24} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2005,7 +2051,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_f7386a43c650fa79, []int{24} + return fileDescriptor_ws_879c1413df9d19e3, []int{25} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2060,7 +2106,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_f7386a43c650fa79, []int{25} + return fileDescriptor_ws_879c1413df9d19e3, []int{26} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2116,7 +2162,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_f7386a43c650fa79, []int{26} + return fileDescriptor_ws_879c1413df9d19e3, []int{27} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2179,7 +2225,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_f7386a43c650fa79, []int{27} + return fileDescriptor_ws_879c1413df9d19e3, []int{28} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2242,7 +2288,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_f7386a43c650fa79, []int{28} + return fileDescriptor_ws_879c1413df9d19e3, []int{29} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2304,7 +2350,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_f7386a43c650fa79, []int{29} + return fileDescriptor_ws_879c1413df9d19e3, []int{30} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2358,7 +2404,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_f7386a43c650fa79, []int{30} + return fileDescriptor_ws_879c1413df9d19e3, []int{31} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2414,7 +2460,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_f7386a43c650fa79, []int{31} + return fileDescriptor_ws_879c1413df9d19e3, []int{32} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2483,7 +2529,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_f7386a43c650fa79, []int{32} + return fileDescriptor_ws_879c1413df9d19e3, []int{33} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2544,7 +2590,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_f7386a43c650fa79, []int{33} + return fileDescriptor_ws_879c1413df9d19e3, []int{34} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2598,7 +2644,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_f7386a43c650fa79, []int{34} + return fileDescriptor_ws_879c1413df9d19e3, []int{35} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2653,7 +2699,7 @@ 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_f7386a43c650fa79, []int{35} + return fileDescriptor_ws_879c1413df9d19e3, []int{36} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -2714,7 +2760,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_f7386a43c650fa79, []int{36} + return fileDescriptor_ws_879c1413df9d19e3, []int{37} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2767,7 +2813,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_f7386a43c650fa79, []int{37} + return fileDescriptor_ws_879c1413df9d19e3, []int{38} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2813,7 +2859,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_f7386a43c650fa79, []int{38} + return fileDescriptor_ws_879c1413df9d19e3, []int{39} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2853,7 +2899,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_f7386a43c650fa79, []int{39} + return fileDescriptor_ws_879c1413df9d19e3, []int{40} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2900,7 +2946,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_f7386a43c650fa79, []int{40} + return fileDescriptor_ws_879c1413df9d19e3, []int{41} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2948,7 +2994,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_f7386a43c650fa79, []int{41} + return fileDescriptor_ws_879c1413df9d19e3, []int{42} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3001,7 +3047,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_f7386a43c650fa79, []int{42} + return fileDescriptor_ws_879c1413df9d19e3, []int{43} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3039,7 +3085,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_f7386a43c650fa79, []int{43} + return fileDescriptor_ws_879c1413df9d19e3, []int{44} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3077,7 +3123,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_f7386a43c650fa79, []int{44} + return fileDescriptor_ws_879c1413df9d19e3, []int{45} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3115,7 +3161,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_f7386a43c650fa79, []int{45} + return fileDescriptor_ws_879c1413df9d19e3, []int{46} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3154,7 +3200,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_f7386a43c650fa79, []int{46} + return fileDescriptor_ws_879c1413df9d19e3, []int{47} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3193,7 +3239,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_f7386a43c650fa79, []int{47} + return fileDescriptor_ws_879c1413df9d19e3, []int{48} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3233,7 +3279,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_f7386a43c650fa79, []int{48} + return fileDescriptor_ws_879c1413df9d19e3, []int{49} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3287,7 +3333,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_f7386a43c650fa79, []int{49} + return fileDescriptor_ws_879c1413df9d19e3, []int{50} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3333,7 +3379,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_f7386a43c650fa79, []int{50} + return fileDescriptor_ws_879c1413df9d19e3, []int{51} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3386,7 +3432,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_f7386a43c650fa79, []int{51} + return fileDescriptor_ws_879c1413df9d19e3, []int{52} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3653,7 +3699,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_f7386a43c650fa79, []int{52} + return fileDescriptor_ws_879c1413df9d19e3, []int{53} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3921,7 +3967,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_f7386a43c650fa79, []int{53} + return fileDescriptor_ws_879c1413df9d19e3, []int{54} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4017,7 +4063,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_f7386a43c650fa79, []int{54} + return fileDescriptor_ws_879c1413df9d19e3, []int{55} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4072,7 +4118,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_f7386a43c650fa79, []int{55} + return fileDescriptor_ws_879c1413df9d19e3, []int{56} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4133,7 +4179,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_f7386a43c650fa79, []int{56} + return fileDescriptor_ws_879c1413df9d19e3, []int{57} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4188,7 +4234,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_f7386a43c650fa79, []int{57} + return fileDescriptor_ws_879c1413df9d19e3, []int{58} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4249,7 +4295,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_f7386a43c650fa79, []int{58} + return fileDescriptor_ws_879c1413df9d19e3, []int{59} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4304,7 +4350,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_f7386a43c650fa79, []int{59} + return fileDescriptor_ws_879c1413df9d19e3, []int{60} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4362,7 +4408,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_f7386a43c650fa79, []int{60} + return fileDescriptor_ws_879c1413df9d19e3, []int{61} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4397,7 +4443,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_f7386a43c650fa79, []int{61} + return fileDescriptor_ws_879c1413df9d19e3, []int{62} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4465,7 +4511,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_f7386a43c650fa79, []int{62} + return fileDescriptor_ws_879c1413df9d19e3, []int{63} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4519,7 +4565,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_f7386a43c650fa79, []int{63} + return fileDescriptor_ws_879c1413df9d19e3, []int{64} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4570,7 +4616,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_f7386a43c650fa79, []int{64} + return fileDescriptor_ws_879c1413df9d19e3, []int{65} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4605,7 +4651,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_f7386a43c650fa79, []int{65} + return fileDescriptor_ws_879c1413df9d19e3, []int{66} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4670,7 +4716,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_f7386a43c650fa79, []int{66} + return fileDescriptor_ws_879c1413df9d19e3, []int{67} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4704,7 +4750,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_f7386a43c650fa79, []int{67} + return fileDescriptor_ws_879c1413df9d19e3, []int{68} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4764,7 +4810,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_f7386a43c650fa79, []int{68} + return fileDescriptor_ws_879c1413df9d19e3, []int{69} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4810,6 +4856,7 @@ func init() { 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") @@ -4871,195 +4918,197 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_f7386a43c650fa79) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_879c1413df9d19e3) } -var fileDescriptor_ws_f7386a43c650fa79 = []byte{ - // 2988 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x24, 0x47, - 0x15, 0xa7, 0x7b, 0x3c, 0x63, 0xcf, 0x1b, 0x8f, 0x3f, 0x7a, 0x17, 0x33, 0x98, 0xcd, 0x62, 0x1a, - 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0x5a, 0xdb, 0xfb, 0x15, 0xd6, 0x5e, 0xa7, - 0x67, 0x97, 0x20, 0x40, 0x8a, 0xda, 0xd3, 0xe5, 0x71, 0xc7, 0xdd, 0x5d, 0x3d, 0xfd, 0xe1, 0x5d, - 0x23, 0x24, 0x24, 0x90, 0x10, 0x37, 0x4e, 0x70, 0xe0, 0x82, 0xc4, 0x05, 0x81, 0xa2, 0x28, 0x42, - 0x70, 0x8b, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x1b, 0x67, 0xae, 0x1c, 0x90, 0x90, 0x40, 0x55, - 0xaf, 0xba, 0xba, 0xaa, 0x7b, 0xc6, 0x9e, 0x8c, 0xac, 0xec, 0x46, 0xcb, 0x6d, 0xde, 0xeb, 0x7a, - 0xaf, 0x5e, 0xfd, 0xde, 0xab, 0x7a, 0xaf, 0x3e, 0x06, 0x96, 0x53, 0xef, 0xf8, 0xcd, 0x47, 0xe9, - 0x4b, 0x8f, 0xd2, 0x6b, 0x71, 0x42, 0x33, 0x6a, 0xad, 0xa6, 0x24, 0x39, 0x21, 0xc9, 0x9b, 0x6e, - 0xec, 0xbf, 0x19, 0xbb, 0x89, 0x1b, 0xa6, 0xf6, 0xbf, 0x4c, 0x68, 0xdf, 0x4e, 0x68, 0x1e, 0xdf, - 0x8d, 0x0e, 0xa9, 0xd5, 0x83, 0xf9, 0x21, 0x27, 0x76, 0x7a, 0xc6, 0x86, 0xf1, 0x42, 0xdb, 0x29, - 0x48, 0xeb, 0x0a, 0xb4, 0xf9, 0xcf, 0x3d, 0x37, 0x24, 0x3d, 0x93, 0x7f, 0x2b, 0x19, 0x96, 0x0d, - 0x8b, 0x11, 0xcd, 0xfc, 0x43, 0x7f, 0xe0, 0x66, 0x3e, 0x8d, 0x7a, 0x0d, 0xde, 0x40, 0xe3, 0xb1, - 0x36, 0x7e, 0x94, 0x25, 0xd4, 0xcb, 0x07, 0xbc, 0xcd, 0x1c, 0xb6, 0x51, 0x79, 0xac, 0xff, 0x43, - 0x77, 0x40, 0x1e, 0x3a, 0xf7, 0x7a, 0x4d, 0xec, 0x5f, 0x90, 0xd6, 0x06, 0x74, 0xe8, 0xa3, 0x88, - 0x24, 0x0f, 0x53, 0x92, 0xdc, 0xdd, 0xe9, 0xb5, 0xf8, 0x57, 0x95, 0x65, 0x5d, 0x05, 0x18, 0x24, - 0xc4, 0xcd, 0xc8, 0x03, 0x3f, 0x24, 0xbd, 0xf9, 0x0d, 0xe3, 0x85, 0xae, 0xa3, 0x70, 0x98, 0x86, - 0x90, 0x84, 0x07, 0x24, 0xd9, 0xa6, 0x79, 0x94, 0xf5, 0x16, 0x78, 0x03, 0x95, 0x65, 0x2d, 0x81, - 0x49, 0x1e, 0xf7, 0xda, 0x5c, 0xb5, 0x49, 0x1e, 0x5b, 0x6b, 0xd0, 0x4a, 0x33, 0x37, 0xcb, 0xd3, - 0x1e, 0x6c, 0x18, 0x2f, 0x34, 0x1d, 0x41, 0x59, 0x9b, 0xd0, 0xe5, 0x7a, 0x69, 0x61, 0x4d, 0x87, - 0x8b, 0xe8, 0x4c, 0x89, 0xd8, 0x83, 0xd3, 0x98, 0xf4, 0x16, 0xb9, 0x82, 0x92, 0x61, 0xff, 0xcd, - 0x84, 0x4b, 0x1c, 0xf7, 0x5d, 0x6e, 0xc0, 0xad, 0x3c, 0x08, 0xce, 0xf1, 0xc0, 0x1a, 0xb4, 0x72, - 0xec, 0x0e, 0xe1, 0x17, 0x14, 0xeb, 0x27, 0xa1, 0x01, 0xb9, 0x47, 0x4e, 0x48, 0xc0, 0x81, 0x6f, - 0x3a, 0x25, 0xc3, 0x5a, 0x87, 0x85, 0xb7, 0xa8, 0x1f, 0x71, 0x4c, 0xe6, 0xf8, 0x47, 0x49, 0xb3, - 0x6f, 0x91, 0x3f, 0x38, 0x8e, 0x98, 0x4b, 0x11, 0x6e, 0x49, 0xab, 0x9e, 0x68, 0xe9, 0x9e, 0x78, - 0x1e, 0x96, 0xdc, 0x38, 0xde, 0x75, 0xa3, 0x21, 0x49, 0xb0, 0xd3, 0x79, 0xae, 0xb7, 0xc2, 0x65, - 0xfe, 0x60, 0x3d, 0xf5, 0x69, 0x9e, 0x0c, 0x08, 0x87, 0xbb, 0xe9, 0x28, 0x1c, 0xa6, 0x87, 0xc6, - 0x24, 0x51, 0x60, 0x44, 0xe4, 0x2b, 0x5c, 0xe1, 0x15, 0x90, 0x5e, 0x61, 0x7e, 0xcc, 0x33, 0x72, - 0x33, 0xf2, 0xf8, 0xa0, 0x3a, 0xc2, 0x8f, 0x25, 0xcb, 0xfe, 0x89, 0x01, 0x4b, 0xfb, 0xf9, 0x41, - 0xe0, 0x0f, 0xb8, 0x0a, 0x06, 0x6b, 0x09, 0x9e, 0xa1, 0x81, 0xa7, 0x42, 0x60, 0x4e, 0x86, 0xa0, - 0xa1, 0x43, 0xb0, 0x06, 0xad, 0x21, 0x89, 0x3c, 0x92, 0x08, 0x48, 0x05, 0x25, 0x4c, 0x6d, 0x16, - 0xa6, 0xda, 0xbf, 0x30, 0x61, 0xe1, 0x03, 0x36, 0x61, 0x03, 0x3a, 0xf1, 0x11, 0x8d, 0xc8, 0x5e, - 0xce, 0xc2, 0x4a, 0xd8, 0xa2, 0xb2, 0xac, 0xcb, 0xd0, 0x3c, 0xf0, 0x93, 0xec, 0x88, 0xfb, 0xb5, - 0xeb, 0x20, 0xc1, 0xb8, 0x24, 0x74, 0x7d, 0x74, 0x66, 0xdb, 0x41, 0x42, 0x0c, 0x68, 0x41, 0x62, - 0xaf, 0xcf, 0xb1, 0x76, 0x6d, 0x8e, 0xd5, 0x63, 0x03, 0xc6, 0xc5, 0x86, 0xfd, 0x6f, 0x03, 0xe0, - 0x56, 0xe2, 0x93, 0xc8, 0xe3, 0xd0, 0x54, 0x26, 0xb7, 0x51, 0x9f, 0xdc, 0x6b, 0xd0, 0x4a, 0x48, - 0xe8, 0x26, 0xc7, 0x45, 0xf0, 0x23, 0x55, 0x31, 0xa8, 0x51, 0x33, 0xe8, 0x55, 0x80, 0x43, 0xde, - 0x0f, 0xd3, 0xc3, 0xa1, 0xea, 0xbc, 0xfc, 0x89, 0x6b, 0xb5, 0x65, 0xf0, 0x5a, 0xe1, 0x25, 0x47, - 0x69, 0xce, 0x66, 0x96, 0xeb, 0x79, 0x22, 0x80, 0x9b, 0x38, 0xb3, 0x24, 0x63, 0x4c, 0xfc, 0xb6, - 0xce, 0x88, 0xdf, 0x79, 0x19, 0x14, 0xff, 0x34, 0xa0, 0xbd, 0x15, 0xb8, 0x83, 0xe3, 0x29, 0x87, - 0xae, 0x0f, 0xd1, 0xac, 0x0d, 0xf1, 0x36, 0x74, 0x0f, 0x98, 0xba, 0x62, 0x08, 0x1c, 0x85, 0xce, - 0xcb, 0x9f, 0x1a, 0x33, 0x4a, 0x7d, 0x52, 0x38, 0xba, 0x9c, 0x3e, 0xdc, 0xb9, 0xf3, 0x87, 0xdb, - 0x3c, 0x63, 0xb8, 0x2d, 0x39, 0xdc, 0xbf, 0x9a, 0xb0, 0xc8, 0x17, 0x3a, 0x87, 0x8c, 0x72, 0x92, - 0x66, 0xd6, 0xd7, 0x61, 0x21, 0x2f, 0x4c, 0x35, 0xa6, 0x35, 0x55, 0x8a, 0x58, 0xaf, 0x88, 0x65, - 0x95, 0xcb, 0x9b, 0x5c, 0xfe, 0xca, 0x18, 0x79, 0x99, 0xd3, 0x9c, 0xb2, 0x39, 0x4b, 0x41, 0x47, - 0x6e, 0xe4, 0x05, 0xc4, 0x21, 0x69, 0x1e, 0x64, 0x62, 0xb5, 0xd4, 0x78, 0x18, 0x69, 0xa3, 0xdd, - 0x74, 0x28, 0x12, 0x94, 0xa0, 0x18, 0x3a, 0xd8, 0x8e, 0x7d, 0xc2, 0xa1, 0x97, 0x0c, 0x36, 0x51, - 0x13, 0x32, 0xe2, 0x1e, 0xc2, 0x69, 0x55, 0x90, 0x65, 0x9f, 0x02, 0x35, 0x0c, 0x04, 0x8d, 0xc7, - 0x5c, 0x8c, 0x34, 0x57, 0x80, 0x99, 0x49, 0xe1, 0x54, 0x13, 0x93, 0xfd, 0xf7, 0x06, 0x74, 0x71, - 0xfa, 0x14, 0xa0, 0x5e, 0x65, 0x71, 0x4e, 0x43, 0x2d, 0x8a, 0x14, 0x0e, 0xb3, 0x82, 0x51, 0x7b, - 0xfa, 0x42, 0xa3, 0xf1, 0x58, 0x28, 0x32, 0xfa, 0x96, 0xb6, 0xe0, 0xa8, 0xac, 0xa2, 0x97, 0xdb, - 0xea, 0xc2, 0xa3, 0x70, 0xd8, 0x52, 0x96, 0x51, 0x2d, 0x3a, 0x24, 0xcd, 0x64, 0x33, 0x2a, 0xfb, - 0xc7, 0xf8, 0x50, 0x38, 0x0c, 0xdf, 0x8c, 0x16, 0x7d, 0x23, 0x48, 0x25, 0x03, 0x35, 0x8b, 0x7e, - 0x31, 0x95, 0x48, 0xba, 0xe6, 0xd5, 0xf6, 0x99, 0x5e, 0x05, 0xcd, 0xab, 0xfa, 0xe4, 0xea, 0xd4, - 0x26, 0xd7, 0x26, 0x74, 0x51, 0x4f, 0x11, 0xf4, 0x8b, 0x98, 0xea, 0x35, 0xa6, 0x1e, 0x1b, 0xdd, - 0x6a, 0x6c, 0xe8, 0xde, 0x5d, 0x9a, 0xe0, 0xdd, 0x65, 0xe9, 0xdd, 0xdf, 0x9b, 0x00, 0x3b, 0x24, - 0x76, 0x93, 0x2c, 0x24, 0x51, 0xc6, 0x86, 0xe7, 0x49, 0x4a, 0x3a, 0x57, 0xe3, 0xa9, 0x79, 0xc2, - 0xd4, 0xf3, 0x84, 0x05, 0x73, 0x1c, 0x70, 0xf4, 0x26, 0xff, 0xcd, 0xc0, 0x8c, 0xdd, 0x04, 0xb5, - 0x61, 0x90, 0x4b, 0x9a, 0xe5, 0x01, 0x9a, 0x78, 0x22, 0x73, 0x34, 0x1d, 0x24, 0xd8, 0xe4, 0x2f, - 0xfb, 0xe3, 0x05, 0x4d, 0x0b, 0xd7, 0x75, 0x9d, 0x7b, 0x6e, 0x0d, 0xf6, 0x22, 0xac, 0xa4, 0xf9, - 0x41, 0x39, 0xb8, 0xbd, 0x3c, 0x14, 0xe1, 0x5e, 0xe3, 0x33, 0x50, 0xb1, 0x38, 0x63, 0x8d, 0x30, - 0xd5, 0x94, 0x8c, 0x6a, 0x55, 0x60, 0xbf, 0x6d, 0xc2, 0xca, 0xfd, 0x64, 0xe8, 0x46, 0xfe, 0xf7, - 0x79, 0xb9, 0xc9, 0x17, 0xf0, 0x59, 0x52, 0xee, 0x06, 0x74, 0x48, 0x34, 0x0c, 0xfc, 0xf4, 0x68, - 0xaf, 0xc4, 0x4d, 0x65, 0xa9, 0x60, 0xcf, 0x4d, 0x4a, 0xca, 0x4d, 0x2d, 0x29, 0xaf, 0x41, 0x2b, - 0xa4, 0x07, 0x7e, 0x50, 0xc4, 0xbd, 0xa0, 0x78, 0xcc, 0x93, 0x80, 0xf0, 0xec, 0x2c, 0x63, 0xbe, - 0x60, 0x94, 0x89, 0x7a, 0x61, 0x6c, 0xa2, 0x6e, 0xab, 0x89, 0x5a, 0x07, 0x1e, 0x6a, 0xc0, 0x23, - 0x5c, 0x1d, 0x09, 0xd7, 0x9f, 0x0d, 0x58, 0x29, 0xe1, 0xc6, 0x1a, 0x74, 0x22, 0x5c, 0xd5, 0x08, - 0x34, 0xc7, 0x44, 0xa0, 0x8c, 0x9b, 0x86, 0x1a, 0x37, 0x2c, 0xd2, 0x68, 0xea, 0x2b, 0xf5, 0xbe, - 0xa4, 0x59, 0x6f, 0x01, 0x71, 0x15, 0xb0, 0x90, 0x52, 0xaa, 0xee, 0x96, 0x56, 0x75, 0x57, 0xf3, - 0xe8, 0x7b, 0x06, 0xac, 0x60, 0x7e, 0x50, 0x26, 0xcb, 0x7d, 0x58, 0xa1, 0x95, 0x28, 0x10, 0x49, - 0xe6, 0xd3, 0x63, 0x92, 0x44, 0x35, 0x60, 0x9c, 0x9a, 0xb0, 0xf5, 0x06, 0x5c, 0xf6, 0x2a, 0x38, - 0xdd, 0xf3, 0xd3, 0xac, 0x67, 0x6e, 0x34, 0x26, 0x28, 0xad, 0xc2, 0xea, 0x8c, 0x55, 0x60, 0xff, - 0x00, 0x7a, 0xfb, 0x79, 0x10, 0xec, 0x92, 0x34, 0x75, 0x87, 0x64, 0xeb, 0xb4, 0x4f, 0x46, 0x8c, - 0xef, 0x90, 0x34, 0x66, 0x11, 0x46, 0x92, 0x64, 0x9b, 0x7a, 0x84, 0x1b, 0xdf, 0x74, 0x0a, 0x92, - 0x81, 0x43, 0x92, 0x84, 0x2d, 0x33, 0xa2, 0x0e, 0x42, 0xca, 0xba, 0x06, 0x73, 0x01, 0x33, 0xab, - 0xc1, 0xcd, 0x5a, 0x1f, 0x63, 0xd6, 0x6e, 0x3a, 0xdc, 0x71, 0x33, 0xd7, 0xe1, 0xed, 0xec, 0x10, - 0x3e, 0x36, 0xbe, 0xf7, 0xd1, 0xc4, 0x28, 0x60, 0x95, 0x0a, 0x4f, 0xf5, 0x3e, 0x8d, 0x64, 0x10, - 0xa8, 0x2c, 0x66, 0x76, 0x8a, 0x7a, 0xb8, 0x1d, 0x5d, 0xa7, 0x20, 0xed, 0xcb, 0x60, 0xdd, 0x26, - 0xd9, 0xae, 0xfb, 0xf8, 0x46, 0xe4, 0xed, 0xfa, 0x51, 0x9f, 0x8c, 0x1c, 0x32, 0xb2, 0x6f, 0xc2, - 0xa5, 0x1a, 0x37, 0x8d, 0xf9, 0x6c, 0x71, 0x1f, 0xf7, 0xc9, 0x88, 0x1b, 0xd0, 0x75, 0x04, 0xc5, - 0xf9, 0xbc, 0x95, 0x28, 0x82, 0x04, 0x65, 0x8f, 0x60, 0x99, 0xb9, 0xaa, 0x4f, 0x22, 0x6f, 0x37, - 0x1d, 0x72, 0x15, 0x1b, 0xd0, 0x41, 0x04, 0x76, 0xd3, 0x61, 0x59, 0x55, 0x29, 0x2c, 0xd6, 0x62, - 0x10, 0xf8, 0xcc, 0x25, 0xbc, 0x85, 0x18, 0x8d, 0xc2, 0x62, 0xb1, 0x9b, 0x12, 0xb1, 0xc9, 0x60, - 0x41, 0xdd, 0x70, 0x24, 0x6d, 0xbf, 0xd7, 0x84, 0x79, 0x01, 0x28, 0x8f, 0x57, 0x56, 0xc8, 0x4a, - 0xbc, 0x90, 0xc2, 0x94, 0x33, 0x38, 0x29, 0xf7, 0x6b, 0x48, 0xa9, 0x3b, 0xbc, 0x86, 0xbe, 0xc3, - 0xab, 0xd8, 0x34, 0x57, 0xb7, 0xa9, 0x32, 0xae, 0x66, 0x7d, 0x5c, 0x6c, 0x85, 0xe5, 0x8b, 0xce, - 0x7e, 0xe0, 0x66, 0x87, 0x34, 0x09, 0x45, 0x5d, 0xda, 0x74, 0x6a, 0x7c, 0xb6, 0xaa, 0x23, 0x4f, - 0xa6, 0x65, 0x9c, 0x5d, 0x15, 0x2e, 0x4b, 0x82, 0xc8, 0x29, 0xd2, 0x33, 0x6e, 0x08, 0x74, 0x26, - 0xda, 0x96, 0xa6, 0x3e, 0x8d, 0x78, 0x82, 0xc0, 0x2c, 0xac, 0xb2, 0xd8, 0xc8, 0xc3, 0x74, 0x78, - 0x2b, 0xa1, 0xa1, 0xd8, 0x16, 0x14, 0x24, 0x1f, 0x39, 0x8d, 0xb2, 0x22, 0xb9, 0x74, 0x50, 0x56, - 0x61, 0x31, 0x59, 0x41, 0xf2, 0x14, 0xbc, 0xe8, 0x14, 0xa4, 0xb5, 0x02, 0x8d, 0x94, 0x8c, 0x44, - 0x5e, 0x65, 0x3f, 0x35, 0xcf, 0x2d, 0xeb, 0x9e, 0xab, 0x2c, 0x94, 0x2b, 0xfc, 0xab, 0xba, 0x50, - 0x96, 0xab, 0xcf, 0xaa, 0xb6, 0xfa, 0xdc, 0x80, 0x79, 0x1a, 0xb3, 0x38, 0x4f, 0x7b, 0x16, 0x9f, - 0x63, 0x9f, 0x99, 0x3c, 0xc7, 0xae, 0xdd, 0xc7, 0x96, 0x37, 0xa3, 0x2c, 0x39, 0x75, 0x0a, 0x39, - 0xeb, 0x1e, 0x2c, 0xd3, 0xc3, 0xc3, 0xc0, 0x8f, 0xc8, 0x7e, 0x9e, 0x1e, 0xf1, 0xfa, 0xf5, 0x12, - 0x5f, 0x9a, 0xec, 0x71, 0x4b, 0x93, 0xde, 0xd2, 0xa9, 0x8a, 0xae, 0xbf, 0x02, 0x8b, 0x6a, 0x37, - 0x0c, 0x86, 0x63, 0x72, 0x2a, 0x62, 0x90, 0xfd, 0x64, 0x4b, 0xf2, 0x89, 0x1b, 0xe4, 0x98, 0xe2, - 0x16, 0x1c, 0x24, 0x5e, 0x31, 0xbf, 0x62, 0xd8, 0x3f, 0x37, 0x60, 0xb9, 0xd2, 0x01, 0x6b, 0x9d, - 0xf9, 0x59, 0x40, 0x84, 0x06, 0x24, 0x58, 0xf9, 0xe0, 0x91, 0x74, 0x20, 0x42, 0x98, 0xff, 0x16, - 0x0b, 0x71, 0x43, 0x6e, 0x0a, 0x6d, 0x58, 0xf4, 0xef, 0xf7, 0x99, 0xa2, 0x3e, 0xcd, 0x23, 0x4f, - 0x1e, 0xec, 0x28, 0x3c, 0x16, 0x42, 0xfe, 0xfd, 0xfe, 0x96, 0xeb, 0x0d, 0x09, 0x1e, 0xbf, 0x34, - 0xb9, 0x4d, 0x3a, 0xd3, 0xf6, 0x60, 0xe1, 0x81, 0x1f, 0xa7, 0xdb, 0x34, 0x0c, 0x99, 0x23, 0x3c, - 0x92, 0xb1, 0x44, 0x67, 0x70, 0x7f, 0x0b, 0x8a, 0x85, 0x8a, 0x47, 0x0e, 0xdd, 0x3c, 0xc8, 0x58, - 0xd3, 0x62, 0xe2, 0x2a, 0x2c, 0x7e, 0xf0, 0x90, 0xd2, 0x68, 0x07, 0xa5, 0xd1, 0x4e, 0x85, 0x63, - 0xff, 0xc5, 0x84, 0x15, 0xbe, 0x3d, 0xd8, 0xe6, 0x6e, 0xf7, 0xb8, 0xd0, 0xcb, 0xd0, 0xe4, 0xd3, - 0x50, 0x64, 0x8b, 0xb3, 0xb7, 0x14, 0xd8, 0xd4, 0xba, 0x0e, 0x2d, 0x1a, 0xf3, 0x14, 0x83, 0xfb, - 0x90, 0xe7, 0x27, 0x09, 0xe9, 0x67, 0x3c, 0x8e, 0x90, 0xb2, 0x6e, 0x01, 0x84, 0x65, 0x46, 0xc1, - 0xa5, 0x7b, 0x5a, 0x1d, 0x8a, 0x24, 0x03, 0x57, 0x2e, 0xc3, 0xf2, 0xa0, 0xa7, 0xe1, 0xe8, 0x4c, - 0x6b, 0x0f, 0x96, 0xb8, 0xd9, 0xf7, 0x8b, 0xbd, 0x25, 0xf7, 0xc1, 0xf4, 0x3d, 0x56, 0xa4, 0xed, - 0x5f, 0x1b, 0x02, 0x46, 0xf6, 0xb5, 0x4f, 0x10, 0xfb, 0x12, 0x12, 0x63, 0x26, 0x48, 0xd6, 0x61, - 0x21, 0xcc, 0x95, 0xad, 0x6e, 0xc3, 0x91, 0x74, 0xe9, 0xa2, 0xc6, 0xd4, 0x2e, 0xb2, 0x7f, 0x63, - 0x40, 0xef, 0x35, 0xea, 0x47, 0xfc, 0xc3, 0x8d, 0x38, 0x0e, 0xc4, 0x69, 0xe4, 0xcc, 0x3e, 0xff, - 0x06, 0xb4, 0x5d, 0x54, 0x13, 0x65, 0xc2, 0xed, 0x53, 0x6c, 0x5f, 0x4b, 0x19, 0x65, 0x27, 0xd2, - 0x50, 0x77, 0x22, 0xf6, 0x3b, 0x06, 0x2c, 0x21, 0x28, 0xaf, 0xe7, 0x7e, 0x36, 0xb3, 0x7d, 0x5b, - 0xb0, 0x30, 0xca, 0xfd, 0x6c, 0x86, 0xa8, 0x94, 0x72, 0xf5, 0x78, 0x6a, 0x8c, 0x89, 0x27, 0xfb, - 0x5d, 0x03, 0xae, 0x54, 0x61, 0xbd, 0x31, 0x18, 0x90, 0xf8, 0x49, 0x4e, 0x29, 0x6d, 0x27, 0x36, - 0x57, 0xd9, 0x89, 0x8d, 0x35, 0xd9, 0x21, 0x6f, 0x91, 0xc1, 0xd3, 0x6b, 0xf2, 0x8f, 0x4d, 0xf8, - 0xf8, 0x6d, 0x39, 0xf1, 0x1e, 0x24, 0x6e, 0x94, 0x1e, 0x92, 0x24, 0x79, 0x82, 0xf6, 0xde, 0x83, - 0x6e, 0x44, 0x1e, 0x95, 0x36, 0x89, 0xe9, 0x38, 0xad, 0x1a, 0x5d, 0x78, 0xba, 0xb5, 0xcb, 0xfe, - 0x8f, 0x01, 0x2b, 0xa8, 0xe7, 0x9b, 0xfe, 0xe0, 0xf8, 0x09, 0x0e, 0x7e, 0x0f, 0x96, 0x8e, 0xb9, - 0x05, 0x8c, 0x9a, 0x61, 0xd9, 0xae, 0x48, 0x4f, 0x39, 0xfc, 0xff, 0x1a, 0xb0, 0x8a, 0x8a, 0xee, - 0x46, 0x27, 0xfe, 0x93, 0x0c, 0xd6, 0x7d, 0x58, 0xf6, 0xd1, 0x84, 0x19, 0x01, 0xa8, 0x8a, 0x4f, - 0x89, 0xc0, 0x1f, 0x0d, 0x58, 0x46, 0x4d, 0x37, 0xa3, 0x8c, 0x24, 0x33, 0x8f, 0xff, 0x0e, 0xdb, - 0xdd, 0x67, 0x89, 0x1b, 0xcd, 0xb2, 0x42, 0xaa, 0xa2, 0x53, 0x2e, 0x92, 0xef, 0x18, 0x60, 0x71, - 0x55, 0x3b, 0x7e, 0x1a, 0xfa, 0x69, 0xfa, 0x04, 0x5d, 0x37, 0x9d, 0xc1, 0xbf, 0x34, 0xe1, 0xb2, - 0xa2, 0x65, 0x37, 0xcf, 0x9e, 0x76, 0x93, 0xad, 0x1d, 0x68, 0xb3, 0x1a, 0x41, 0x3d, 0xe2, 0x9f, - 0xb6, 0xa3, 0x52, 0x90, 0x55, 0xb1, 0x9c, 0xe8, 0x93, 0x01, 0x8d, 0xbc, 0x94, 0x17, 0x47, 0x5d, - 0x47, 0xe3, 0xb1, 0x65, 0x68, 0x5d, 0x51, 0xb3, 0xed, 0x46, 0x03, 0x12, 0x3c, 0x33, 0x10, 0xd9, - 0xbf, 0x33, 0x60, 0x09, 0x9b, 0x3c, 0xfd, 0x43, 0x66, 0xb9, 0x1e, 0x03, 0xf9, 0x43, 0xe3, 0x25, - 0x16, 0x5e, 0x6b, 0x8a, 0x16, 0xb5, 0xae, 0x7e, 0x7a, 0x43, 0xeb, 0x0e, 0x74, 0x06, 0x47, 0x6e, - 0x34, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0xfb, 0x18, 0x56, 0xf1, 0x52, 0x43, 0xa9, 0xce, 0xd8, 0xbe, - 0xdf, 0xf5, 0x70, 0x2b, 0x6f, 0xf0, 0xee, 0x0b, 0x52, 0xbf, 0xae, 0x12, 0x2f, 0x12, 0xca, 0xeb, - 0xaa, 0xab, 0x00, 0xae, 0xe7, 0xbd, 0x41, 0x13, 0xcf, 0x8f, 0x8a, 0x52, 0x5b, 0xe1, 0xd8, 0xaf, - 0xc1, 0xe2, 0xad, 0x84, 0x86, 0x0f, 0x94, 0xeb, 0x89, 0x33, 0x2f, 0x50, 0xd4, 0xab, 0x0d, 0x53, - 0xbf, 0xda, 0xb0, 0xbf, 0x07, 0x1f, 0xad, 0x19, 0xce, 0xbd, 0xb6, 0x8d, 0xb7, 0x2e, 0x45, 0x27, - 0xc2, 0x79, 0x9f, 0x1c, 0x03, 0x8e, 0x6a, 0x8b, 0xa3, 0x09, 0xd9, 0x3f, 0x32, 0xe0, 0xb9, 0x9a, - 0xfa, 0x1b, 0x71, 0x9c, 0xd0, 0x13, 0x11, 0xd1, 0x17, 0xd1, 0x8d, 0x5e, 0x86, 0x9a, 0xd5, 0x32, - 0x74, 0xac, 0x11, 0x5a, 0xe9, 0xfc, 0x01, 0x18, 0xf1, 0x5b, 0x03, 0x96, 0x85, 0x11, 0x9e, 0x27, - 0xba, 0xfd, 0x32, 0xb4, 0xf0, 0xc6, 0x56, 0x74, 0xf8, 0xdc, 0xd8, 0x0e, 0x8b, 0x9b, 0x66, 0x47, - 0x34, 0xae, 0xc7, 0xb6, 0x39, 0x2e, 0xb6, 0xbf, 0x2a, 0x67, 0xd0, 0xd4, 0x77, 0xaa, 0x42, 0xc0, - 0xfe, 0x76, 0x11, 0xcc, 0x3b, 0x24, 0x20, 0x17, 0x89, 0x91, 0xfd, 0x10, 0x96, 0xf8, 0xf5, 0x71, - 0x89, 0xc1, 0x85, 0xa8, 0x7d, 0x03, 0x56, 0xb8, 0xda, 0x0b, 0xb7, 0x57, 0xce, 0x0e, 0x86, 0xcf, - 0x36, 0xce, 0xf7, 0x8b, 0xd3, 0xfe, 0x05, 0xb8, 0x54, 0x60, 0xff, 0x30, 0xf6, 0xe4, 0x71, 0xce, - 0x84, 0x43, 0x6c, 0xfb, 0x8b, 0xb0, 0xb6, 0x4d, 0xa3, 0x13, 0x92, 0xa4, 0x78, 0xc4, 0xcf, 0x45, - 0x0a, 0x09, 0x6d, 0xf2, 0x0b, 0xca, 0x7e, 0x0b, 0xd6, 0x55, 0x89, 0x3e, 0xc9, 0xf6, 0x13, 0xff, - 0x44, 0x91, 0x12, 0x87, 0xbc, 0x86, 0x76, 0xc8, 0x5b, 0x1e, 0x0a, 0x9b, 0xda, 0xa1, 0xf0, 0x15, - 0x68, 0xfb, 0xa9, 0x50, 0xc0, 0x83, 0x6a, 0xc1, 0x29, 0x19, 0x76, 0x1f, 0x56, 0xc5, 0x85, 0xee, - 0xbe, 0x3b, 0xf4, 0x23, 0x5c, 0x01, 0xaf, 0x02, 0xc4, 0xee, 0xb0, 0x78, 0xd0, 0x81, 0xf7, 0x01, - 0x0a, 0x87, 0x7d, 0x4f, 0x8f, 0xe8, 0x23, 0xf1, 0xdd, 0xc4, 0xef, 0x25, 0xc7, 0xfe, 0x16, 0x58, - 0x0e, 0x49, 0x63, 0x1a, 0xa5, 0x44, 0xd1, 0xba, 0x01, 0x9d, 0xed, 0x3c, 0x49, 0x48, 0xc4, 0xba, - 0x2a, 0x5e, 0x37, 0xa8, 0x2c, 0xa6, 0xb7, 0x5f, 0xea, 0xc5, 0x33, 0x64, 0x85, 0x63, 0xff, 0xaa, - 0x01, 0xed, 0xbe, 0x3f, 0x8c, 0xdc, 0xc0, 0x21, 0x23, 0xeb, 0x6b, 0xd0, 0xc2, 0xca, 0x5e, 0xb8, - 0x71, 0xdc, 0x99, 0x26, 0xb6, 0xc6, 0x2d, 0x8c, 0x43, 0x46, 0x77, 0x3e, 0xe2, 0x08, 0x19, 0xeb, - 0x75, 0xe8, 0xe2, 0xaf, 0xbb, 0x78, 0x52, 0x23, 0x32, 0xd6, 0x67, 0xcf, 0x51, 0x22, 0x5a, 0xa3, - 0x2e, 0x5d, 0x03, 0x33, 0x68, 0xc0, 0x33, 0xbf, 0x98, 0xbb, 0x93, 0x0d, 0xc2, 0x02, 0x41, 0x18, - 0x84, 0x32, 0x4c, 0xda, 0xe5, 0x67, 0x19, 0x22, 0xa1, 0x4d, 0x96, 0xc6, 0x23, 0x0f, 0x21, 0x8d, - 0x32, 0x4c, 0xfa, 0x28, 0x8f, 0x86, 0x0f, 0x63, 0x71, 0xc4, 0x36, 0x59, 0xfa, 0x0e, 0x6f, 0x26, - 0xa4, 0x51, 0x86, 0x49, 0x27, 0x7c, 0x65, 0xe5, 0xa0, 0x9f, 0x25, 0x8d, 0x0b, 0xb0, 0x90, 0x46, - 0x99, 0xad, 0x36, 0xcc, 0xc7, 0xee, 0x69, 0x40, 0x5d, 0xcf, 0x7e, 0xbb, 0x01, 0x50, 0x34, 0x4c, - 0x79, 0x3d, 0xa0, 0xb9, 0x68, 0xf3, 0x5c, 0x17, 0xc5, 0xc1, 0xa9, 0xe2, 0xa4, 0xfe, 0x78, 0x27, - 0x7d, 0x6e, 0x5a, 0x27, 0xa1, 0xb6, 0x8a, 0x9b, 0xae, 0x57, 0xdc, 0xb4, 0x79, 0xae, 0x9b, 0x84, - 0x51, 0xc2, 0x51, 0xd7, 0x2b, 0x8e, 0xda, 0x3c, 0xd7, 0x51, 0x42, 0x5e, 0xb8, 0xea, 0x7a, 0xc5, - 0x55, 0x9b, 0xe7, 0xba, 0x4a, 0xc8, 0x0b, 0x67, 0x5d, 0xaf, 0x38, 0x6b, 0xf3, 0x5c, 0x67, 0x09, - 0xf9, 0xba, 0xbb, 0xde, 0x35, 0x61, 0x89, 0x43, 0x86, 0xf7, 0x69, 0xd1, 0x21, 0xe5, 0xc7, 0xe6, - 0x1c, 0x2e, 0xfd, 0x7d, 0x90, 0xce, 0xb4, 0x3e, 0x0f, 0xab, 0xc8, 0x10, 0xef, 0x49, 0xe4, 0x05, - 0x65, 0xdb, 0xa9, 0x7f, 0xe0, 0x37, 0x20, 0x79, 0x9a, 0xd1, 0x70, 0xc7, 0xcd, 0xdc, 0xa2, 0x32, - 0x2a, 0x39, 0xea, 0xfd, 0xd4, 0x5c, 0xed, 0x05, 0x62, 0x42, 0x69, 0x28, 0x2f, 0x9e, 0x04, 0xc5, - 0x24, 0x32, 0x3f, 0x24, 0x34, 0xcf, 0xc4, 0x32, 0x51, 0x90, 0x78, 0x87, 0xef, 0xf9, 0x2e, 0xbf, - 0xd5, 0x11, 0x17, 0xdc, 0x92, 0xc1, 0x57, 0xb6, 0xf2, 0x96, 0x4a, 0xbc, 0x10, 0x2c, 0x39, 0xe7, - 0xdf, 0x28, 0xd9, 0xff, 0x30, 0xe0, 0xd2, 0xbe, 0x9b, 0x64, 0xfe, 0xc0, 0x8f, 0xdd, 0x28, 0xdb, - 0x25, 0x99, 0xcb, 0xc7, 0xa0, 0x3d, 0x12, 0x32, 0xde, 0xdf, 0x23, 0xa1, 0x7d, 0x58, 0x1e, 0xea, - 0x45, 0xf8, 0xfb, 0xac, 0x9f, 0xab, 0xe2, 0xda, 0x8b, 0xa7, 0xc6, 0xfb, 0x7e, 0xf1, 0x64, 0xff, - 0xd4, 0x84, 0xe5, 0xca, 0xd2, 0xc9, 0xca, 0x51, 0x2c, 0x34, 0x64, 0x4c, 0x48, 0xda, 0xba, 0x01, - 0xe0, 0xcb, 0x30, 0x3a, 0xe3, 0x8c, 0x5a, 0x8f, 0x35, 0x47, 0x11, 0x1a, 0x77, 0x55, 0xd5, 0x98, - 0xf9, 0xaa, 0x8a, 0x6d, 0x11, 0xe2, 0xd2, 0x49, 0x67, 0x6c, 0x11, 0xc6, 0xb8, 0xd2, 0x51, 0x45, - 0xed, 0xef, 0xc2, 0x6a, 0x6d, 0x85, 0xe2, 0x37, 0x57, 0xf4, 0x98, 0x44, 0xf2, 0xe6, 0x8a, 0x11, - 0x4a, 0xb0, 0x9a, 0xd5, 0x60, 0x0d, 0xfc, 0x13, 0xf5, 0x49, 0xa5, 0x20, 0xed, 0x9f, 0x99, 0xb0, - 0x36, 0x3e, 0xbb, 0x3c, 0xab, 0x70, 0x1f, 0x40, 0x6f, 0xd2, 0x4a, 0x7e, 0x61, 0xa8, 0x97, 0xd1, - 0x2d, 0xf3, 0xf0, 0xb3, 0x0a, 0xf7, 0xa5, 0x22, 0xba, 0x95, 0x54, 0x67, 0xff, 0x41, 0xe2, 0x23, - 0x2b, 0x8d, 0x67, 0x14, 0x1f, 0xeb, 0x45, 0x58, 0xc1, 0x61, 0x2a, 0x6f, 0x1b, 0xb0, 0x70, 0xad, - 0xf1, 0xcb, 0x95, 0x42, 0x49, 0xfb, 0x17, 0x16, 0xb3, 0x7f, 0x32, 0x0a, 0x9f, 0xc8, 0xfa, 0xed, - 0x43, 0xe5, 0x93, 0x32, 0xd2, 0x94, 0xa2, 0x46, 0x89, 0x34, 0x59, 0x57, 0xfe, 0x3f, 0xd2, 0xce, - 0x8f, 0x34, 0x89, 0xa5, 0x52, 0xe0, 0xd9, 0x3f, 0x84, 0xee, 0x0e, 0x09, 0x76, 0xd3, 0x61, 0xf1, - 0xaa, 0xea, 0x2c, 0x20, 0x27, 0xfd, 0xb3, 0x63, 0xe2, 0x7b, 0xaa, 0xea, 0x5b, 0xac, 0xb9, 0xda, - 0x5b, 0x2c, 0x7b, 0x0b, 0x96, 0x54, 0x03, 0x66, 0x79, 0x54, 0xb6, 0x75, 0xe5, 0x3b, 0xeb, 0xd7, - 0x5e, 0xc2, 0xff, 0x10, 0xbd, 0x5a, 0x03, 0xf1, 0xa0, 0xc5, 0xff, 0x53, 0xf4, 0xa5, 0xff, 0x05, - 0x00, 0x00, 0xff, 0xff, 0x3c, 0x30, 0x52, 0xe6, 0x66, 0x34, 0x00, 0x00, +var fileDescriptor_ws_879c1413df9d19e3 = []byte{ + // 3013 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, 0x34, 0x66, 0x76, 0x30, + 0x85, 0xb5, 0x2c, 0x0b, 0xcc, 0xa2, 0x45, 0x48, 0xb0, 0x0b, 0x83, 0xc6, 0xf6, 0xbc, 0x96, 0xb1, + 0xc7, 0x5b, 0x3d, 0xc3, 0x22, 0x40, 0x5a, 0x95, 0xbb, 0xd2, 0xed, 0x5a, 0x57, 0x65, 0x56, 0xd7, + 0xc3, 0x33, 0x46, 0x48, 0x48, 0x20, 0x21, 0x6e, 0x9c, 0xe0, 0xc0, 0x05, 0x89, 0x0b, 0x02, 0xad, + 0x56, 0x2b, 0x04, 0x12, 0x87, 0x15, 0xe2, 0xc0, 0x3f, 0xc0, 0x11, 0x71, 0xe3, 0xcc, 0x95, 0x03, + 0x12, 0x12, 0x28, 0x33, 0xb2, 0xaa, 0x32, 0xab, 0xba, 0xed, 0xde, 0x96, 0xb5, 0x33, 0xab, 0xe1, + 0xd6, 0x11, 0x95, 0x11, 0x19, 0xf9, 0x8b, 0xc8, 0x8c, 0xc8, 0x47, 0xc3, 0x72, 0xe2, 0x1d, 0xbf, + 0xf9, 0x28, 0x79, 0xe9, 0x51, 0x72, 0x2d, 0x8a, 0x59, 0xca, 0xac, 0xd5, 0x84, 0xc4, 0x27, 0x24, + 0x7e, 0xd3, 0x8d, 0xfc, 0x37, 0x23, 0x37, 0x76, 0xc3, 0xc4, 0xfe, 0xa7, 0x09, 0xed, 0xdb, 0x31, + 0xcb, 0xa2, 0xbb, 0xf4, 0x90, 0x59, 0x3d, 0x98, 0x1f, 0x0a, 0x62, 0xa7, 0x67, 0x6c, 0x18, 0x2f, + 0xb4, 0x9d, 0x9c, 0xb4, 0xae, 0x40, 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, 0x3c, 0x74, 0xee, 0xf5, 0x9a, 0xd8, 0xbf, 0x24, 0xad, 0x0d, 0xe8, 0xb0, + 0x47, 0x94, 0xc4, 0x0f, 0x13, 0x12, 0xdf, 0xdd, 0xe9, 0xb5, 0xc4, 0x57, 0x95, 0x65, 0x5d, 0x05, + 0x18, 0xc4, 0xc4, 0x4d, 0xc9, 0x03, 0x3f, 0x24, 0xbd, 0xf9, 0x0d, 0xe3, 0x85, 0xae, 0xa3, 0x70, + 0xb8, 0x86, 0x90, 0x84, 0x07, 0x24, 0xde, 0x66, 0x19, 0x4d, 0x7b, 0x0b, 0xa2, 0x81, 0xca, 0xb2, + 0x96, 0xc0, 0x24, 0x8f, 0x7b, 0x6d, 0xa1, 0xda, 0x24, 0x8f, 0xad, 0x35, 0x68, 0x25, 0xa9, 0x9b, + 0x66, 0x49, 0x0f, 0x36, 0x8c, 0x17, 0x9a, 0x8e, 0xa4, 0xac, 0x4d, 0xe8, 0x0a, 0xbd, 0x2c, 0xb7, + 0xa6, 0x23, 0x44, 0x74, 0x66, 0x81, 0xd8, 0x83, 0xd3, 0x88, 0xf4, 0x16, 0x85, 0x82, 0x92, 0x61, + 0xff, 0xd5, 0x84, 0x4b, 0x02, 0xf7, 0x5d, 0x61, 0xc0, 0xad, 0x2c, 0x08, 0xce, 0xf1, 0xc0, 0x1a, + 0xb4, 0x32, 0xec, 0x0e, 0xe1, 0x97, 0x14, 0xef, 0x27, 0x66, 0x01, 0xb9, 0x47, 0x4e, 0x48, 0x20, + 0x80, 0x6f, 0x3a, 0x25, 0xc3, 0x5a, 0x87, 0x85, 0xb7, 0x98, 0x4f, 0x05, 0x26, 0x73, 0xe2, 0x63, + 0x41, 0xf3, 0x6f, 0xd4, 0x1f, 0x1c, 0x53, 0xee, 0x52, 0x84, 0xbb, 0xa0, 0x55, 0x4f, 0xb4, 0x74, + 0x4f, 0x3c, 0x0f, 0x4b, 0x6e, 0x14, 0xed, 0xba, 0x74, 0x48, 0x62, 0xec, 0x74, 0x5e, 0xe8, 0xad, + 0x70, 0xb9, 0x3f, 0x78, 0x4f, 0x7d, 0x96, 0xc5, 0x03, 0x22, 0xe0, 0x6e, 0x3a, 0x0a, 0x87, 0xeb, + 0x61, 0x11, 0x89, 0x15, 0x18, 0x11, 0xf9, 0x0a, 0x57, 0x7a, 0x05, 0x0a, 0xaf, 0x70, 0x3f, 0x66, + 0x29, 0xb9, 0x49, 0x3d, 0x31, 0xa8, 0x8e, 0xf4, 0x63, 0xc9, 0xb2, 0x7f, 0x64, 0xc0, 0xd2, 0x7e, + 0x76, 0x10, 0xf8, 0x03, 0xa1, 0x82, 0xc3, 0x5a, 0x82, 0x67, 0x68, 0xe0, 0xa9, 0x10, 0x98, 0x93, + 0x21, 0x68, 0xe8, 0x10, 0xac, 0x41, 0x6b, 0x48, 0xa8, 0x47, 0x62, 0x09, 0xa9, 0xa4, 0xa4, 0xa9, + 0xcd, 0xdc, 0x54, 0xfb, 0x67, 0x26, 0x2c, 0x7c, 0xc0, 0x26, 0x6c, 0x40, 0x27, 0x3a, 0x62, 0x94, + 0xec, 0x65, 0x3c, 0xac, 0xa4, 0x2d, 0x2a, 0xcb, 0xba, 0x0c, 0xcd, 0x03, 0x3f, 0x4e, 0x8f, 0x84, + 0x5f, 0xbb, 0x0e, 0x12, 0x9c, 0x4b, 0x42, 0xd7, 0x47, 0x67, 0xb6, 0x1d, 0x24, 0xe4, 0x80, 0x16, + 0x0a, 0xec, 0xf5, 0x39, 0xd6, 0xae, 0xcd, 0xb1, 0x7a, 0x6c, 0xc0, 0xb8, 0xd8, 0xb0, 0xff, 0x65, + 0x00, 0xdc, 0x8a, 0x7d, 0x42, 0x3d, 0x01, 0x4d, 0x65, 0x72, 0x1b, 0xf5, 0xc9, 0xbd, 0x06, 0xad, + 0x98, 0x84, 0x6e, 0x7c, 0x9c, 0x07, 0x3f, 0x52, 0x15, 0x83, 0x1a, 0x35, 0x83, 0x5e, 0x05, 0x38, + 0x14, 0xfd, 0x70, 0x3d, 0x02, 0xaa, 0xce, 0xcb, 0x1f, 0xbb, 0x56, 0x5b, 0x06, 0xaf, 0xe5, 0x5e, + 0x72, 0x94, 0xe6, 0x7c, 0x66, 0xb9, 0x9e, 0x27, 0x03, 0xb8, 0x89, 0x33, 0xab, 0x60, 0x8c, 0x89, + 0xdf, 0xd6, 0x19, 0xf1, 0x3b, 0x5f, 0x04, 0xc5, 0x3f, 0x0c, 0x68, 0x6f, 0x05, 0xee, 0xe0, 0x78, + 0xca, 0xa1, 0xeb, 0x43, 0x34, 0x6b, 0x43, 0xbc, 0x0d, 0xdd, 0x03, 0xae, 0x2e, 0x1f, 0x82, 0x40, + 0xa1, 0xf3, 0xf2, 0x27, 0xc6, 0x8c, 0x52, 0x9f, 0x14, 0x8e, 0x2e, 0xa7, 0x0f, 0x77, 0xee, 0xfc, + 0xe1, 0x36, 0xcf, 0x18, 0x6e, 0xab, 0x18, 0xee, 0x5f, 0x4c, 0x58, 0x14, 0x0b, 0x9d, 0x43, 0x46, + 0x19, 0x49, 0x52, 0xeb, 0xab, 0xb0, 0x90, 0xe5, 0xa6, 0x1a, 0xd3, 0x9a, 0x5a, 0x88, 0x58, 0xaf, + 0xc8, 0x65, 0x55, 0xc8, 0x9b, 0x42, 0xfe, 0xca, 0x18, 0xf9, 0x22, 0xa7, 0x39, 0x65, 0x73, 0x9e, + 0x82, 0x8e, 0x5c, 0xea, 0x05, 0xc4, 0x21, 0x49, 0x16, 0xa4, 0x72, 0xb5, 0xd4, 0x78, 0x18, 0x69, + 0xa3, 0xdd, 0x64, 0x28, 0x13, 0x94, 0xa4, 0x38, 0x3a, 0xd8, 0x8e, 0x7f, 0xc2, 0xa1, 0x97, 0x0c, + 0x3e, 0x51, 0x63, 0x32, 0x12, 0x1e, 0xc2, 0x69, 0x95, 0x93, 0x65, 0x9f, 0x12, 0x35, 0x0c, 0x04, + 0x8d, 0xc7, 0x5d, 0x8c, 0xb4, 0x50, 0x80, 0x99, 0x49, 0xe1, 0x54, 0x13, 0x93, 0xfd, 0xb7, 0x06, + 0x74, 0x71, 0xfa, 0xe4, 0xa0, 0x5e, 0xe5, 0x71, 0xce, 0x42, 0x2d, 0x8a, 0x14, 0x0e, 0xb7, 0x82, + 0x53, 0x7b, 0xfa, 0x42, 0xa3, 0xf1, 0x78, 0x28, 0x72, 0xfa, 0x96, 0xb6, 0xe0, 0xa8, 0xac, 0xbc, + 0x97, 0xdb, 0xea, 0xc2, 0xa3, 0x70, 0xf8, 0x52, 0x96, 0x32, 0x2d, 0x3a, 0x0a, 0x9a, 0xcb, 0xa6, + 0xac, 0xe8, 0x1f, 0xe3, 0x43, 0xe1, 0x70, 0x7c, 0x53, 0x96, 0xf7, 0x8d, 0x20, 0x95, 0x0c, 0xd4, + 0x2c, 0xfb, 0xc5, 0x54, 0x52, 0xd0, 0x35, 0xaf, 0xb6, 0xcf, 0xf4, 0x2a, 0x68, 0x5e, 0xd5, 0x27, + 0x57, 0xa7, 0x36, 0xb9, 0x36, 0xa1, 0x8b, 0x7a, 0xf2, 0xa0, 0x5f, 0xc4, 0x54, 0xaf, 0x31, 0xf5, + 0xd8, 0xe8, 0x56, 0x63, 0x43, 0xf7, 0xee, 0xd2, 0x04, 0xef, 0x2e, 0x17, 0xde, 0xfd, 0xad, 0x09, + 0xb0, 0x43, 0x22, 0x37, 0x4e, 0x43, 0x42, 0x53, 0x3e, 0x3c, 0xaf, 0xa0, 0x0a, 0xe7, 0x6a, 0x3c, + 0x35, 0x4f, 0x98, 0x7a, 0x9e, 0xb0, 0x60, 0x4e, 0x00, 0x8e, 0xde, 0x14, 0xbf, 0x39, 0x98, 0x91, + 0x1b, 0xa3, 0x36, 0x0c, 0xf2, 0x82, 0xe6, 0x79, 0x80, 0xc5, 0x9e, 0xcc, 0x1c, 0x4d, 0x07, 0x09, + 0x3e, 0xf9, 0xcb, 0xfe, 0x44, 0x41, 0xd3, 0xc2, 0x75, 0x5d, 0xe7, 0x9e, 0x5b, 0x83, 0xbd, 0x08, + 0x2b, 0x49, 0x76, 0x50, 0x0e, 0x6e, 0x2f, 0x0b, 0x65, 0xb8, 0xd7, 0xf8, 0x1c, 0x54, 0x2c, 0xce, + 0x78, 0x23, 0x4c, 0x35, 0x25, 0xa3, 0x5a, 0x15, 0xd8, 0x6f, 0x9b, 0xb0, 0x72, 0x3f, 0x1e, 0xba, + 0xd4, 0xff, 0xae, 0x28, 0x37, 0xc5, 0x02, 0x3e, 0x4b, 0xca, 0xdd, 0x80, 0x0e, 0xa1, 0xc3, 0xc0, + 0x4f, 0x8e, 0xf6, 0x4a, 0xdc, 0x54, 0x96, 0x0a, 0xf6, 0xdc, 0xa4, 0xa4, 0xdc, 0xd4, 0x92, 0xf2, + 0x1a, 0xb4, 0x42, 0x76, 0xe0, 0x07, 0x79, 0xdc, 0x4b, 0x4a, 0xc4, 0x3c, 0x09, 0x88, 0xc8, 0xce, + 0x45, 0xcc, 0xe7, 0x8c, 0x32, 0x51, 0x2f, 0x8c, 0x4d, 0xd4, 0x6d, 0x35, 0x51, 0xeb, 0xc0, 0x43, + 0x0d, 0x78, 0x84, 0xab, 0x53, 0xc0, 0xf5, 0x27, 0x03, 0x56, 0x4a, 0xb8, 0xb1, 0x06, 0x9d, 0x08, + 0x57, 0x35, 0x02, 0xcd, 0x31, 0x11, 0x58, 0xc4, 0x4d, 0x43, 0x8d, 0x1b, 0x1e, 0x69, 0x2c, 0xf1, + 0x95, 0x7a, 0xbf, 0xa0, 0x79, 0x6f, 0x01, 0x71, 0x15, 0xb0, 0x90, 0x52, 0xaa, 0xee, 0x96, 0x56, + 0x75, 0x57, 0xf3, 0xe8, 0x1f, 0x0c, 0xb8, 0xcc, 0xbd, 0x5c, 0x1b, 0xc6, 0x7d, 0x58, 0x61, 0x95, + 0x48, 0x90, 0x89, 0xe6, 0x93, 0x63, 0x12, 0x45, 0x35, 0x68, 0x9c, 0x9a, 0x30, 0x57, 0xe8, 0x55, + 0x3a, 0x91, 0x99, 0x67, 0x9c, 0xc2, 0xaa, 0x3d, 0x4e, 0x4d, 0xd8, 0x7e, 0xcf, 0x80, 0x15, 0x4c, + 0x6d, 0xca, 0x3c, 0xbf, 0x70, 0xb3, 0xdf, 0x80, 0xcb, 0xd5, 0x9e, 0xef, 0xf9, 0x49, 0xda, 0x33, + 0x37, 0x1a, 0xd3, 0x9a, 0x3e, 0x56, 0x81, 0xfd, 0x3d, 0xe8, 0xed, 0x67, 0x41, 0xb0, 0x4b, 0x92, + 0xc4, 0x1d, 0x92, 0xad, 0xd3, 0x3e, 0x19, 0x71, 0xbe, 0x43, 0x92, 0x88, 0x4f, 0x0e, 0x12, 0xc7, + 0xdb, 0xcc, 0x23, 0xc2, 0xf8, 0xa6, 0x93, 0x93, 0xdc, 0xaf, 0x24, 0x8e, 0xf9, 0x0a, 0x29, 0x4b, + 0x38, 0xa4, 0xac, 0x6b, 0x30, 0x17, 0x70, 0xb3, 0x1a, 0xc2, 0xac, 0xf5, 0x31, 0x66, 0xed, 0x26, + 0xc3, 0x1d, 0x37, 0x75, 0x1d, 0xd1, 0xce, 0x0e, 0xe1, 0x23, 0xe3, 0x7b, 0x1f, 0x4d, 0x0c, 0x60, + 0x5e, 0x64, 0x89, 0x2a, 0xc5, 0x67, 0xb4, 0x88, 0x5f, 0x95, 0xc5, 0xcd, 0x4e, 0x50, 0x8f, 0xb0, + 0xa3, 0xeb, 0xe4, 0xa4, 0x7d, 0x19, 0xac, 0xdb, 0x24, 0xdd, 0x75, 0x1f, 0xdf, 0xa0, 0xde, 0xae, + 0x4f, 0xfb, 0x64, 0xe4, 0x90, 0x91, 0x7d, 0x13, 0x2e, 0xd5, 0xb8, 0x49, 0x24, 0x26, 0xba, 0xfb, + 0xb8, 0x4f, 0x46, 0xc2, 0x80, 0xae, 0x23, 0x29, 0xc1, 0x17, 0xad, 0x64, 0xfd, 0x26, 0x29, 0x7b, + 0x04, 0xcb, 0xdc, 0x55, 0x7d, 0x42, 0xbd, 0xdd, 0x64, 0x28, 0x54, 0x6c, 0x40, 0x07, 0x11, 0xd8, + 0x4d, 0x86, 0x65, 0x41, 0xa8, 0xb0, 0x78, 0x8b, 0x41, 0xe0, 0x73, 0x97, 0x88, 0x16, 0x72, 0x34, + 0x0a, 0x8b, 0x4f, 0xbb, 0x84, 0xc8, 0xfd, 0x11, 0x9f, 0x8f, 0x0d, 0xa7, 0xa0, 0xed, 0xf7, 0x9a, + 0x30, 0x2f, 0x01, 0x15, 0x53, 0x8d, 0xd7, 0xe0, 0x05, 0x5e, 0x48, 0x61, 0xb6, 0x1c, 0x9c, 0x94, + 0x5b, 0x4d, 0xa4, 0xd4, 0xcd, 0x69, 0x43, 0xdf, 0x9c, 0x56, 0x6c, 0x9a, 0xab, 0xdb, 0x54, 0x19, + 0x57, 0xb3, 0x3e, 0x2e, 0x9e, 0x1c, 0xc4, 0x7a, 0xb9, 0x1f, 0xb8, 0xe9, 0x21, 0x8b, 0x43, 0x59, + 0x52, 0x37, 0x9d, 0x1a, 0x9f, 0x27, 0x24, 0xe4, 0x15, 0x15, 0x05, 0x2e, 0x0c, 0x15, 0x2e, 0xcf, + 0xdf, 0xc8, 0xc9, 0x2b, 0x0b, 0xdc, 0xcb, 0xe8, 0x4c, 0xb4, 0x2d, 0x49, 0x7c, 0x46, 0x45, 0x6e, + 0xc3, 0x02, 0x42, 0x65, 0xf1, 0x91, 0x87, 0xc9, 0xf0, 0x56, 0xcc, 0x42, 0xb9, 0xa3, 0xc9, 0x49, + 0x31, 0x72, 0x46, 0xd3, 0x3c, 0x2f, 0x76, 0x50, 0x56, 0x61, 0x71, 0x59, 0x49, 0x8a, 0xea, 0x61, + 0xd1, 0xc9, 0x49, 0x6b, 0x05, 0x1a, 0x09, 0x19, 0xc9, 0x92, 0x80, 0xff, 0xd4, 0x3c, 0xb7, 0xac, + 0x7b, 0xae, 0xb2, 0xc6, 0xaf, 0x88, 0xaf, 0xea, 0x1a, 0x5f, 0x2e, 0x9c, 0xab, 0xda, 0xc2, 0x79, + 0x03, 0xe6, 0x59, 0xc4, 0xe3, 0x3c, 0xe9, 0x59, 0x62, 0x8e, 0x7d, 0x6a, 0xf2, 0x1c, 0xbb, 0x76, + 0x1f, 0x5b, 0xde, 0xa4, 0x69, 0x7c, 0xea, 0xe4, 0x72, 0xd6, 0x3d, 0x58, 0x66, 0x87, 0x87, 0x81, + 0x4f, 0xc9, 0x7e, 0x96, 0x1c, 0x89, 0xd2, 0xfb, 0x92, 0x58, 0x9a, 0xec, 0x71, 0x4b, 0x93, 0xde, + 0xd2, 0xa9, 0x8a, 0xae, 0xbf, 0x02, 0x8b, 0x6a, 0x37, 0x1c, 0x86, 0x63, 0x72, 0x2a, 0x63, 0x90, + 0xff, 0xe4, 0xd9, 0xe4, 0xc4, 0x0d, 0x32, 0xcc, 0xce, 0x0b, 0x0e, 0x12, 0xaf, 0x98, 0x5f, 0x32, + 0xec, 0x9f, 0x1a, 0xb0, 0x5c, 0xe9, 0x80, 0xb7, 0x4e, 0xfd, 0x34, 0x20, 0x52, 0x03, 0x12, 0xbc, + 0xf2, 0xf1, 0x48, 0x32, 0x90, 0x21, 0x2c, 0x7e, 0xcb, 0x1c, 0xd2, 0x28, 0xf6, 0xb3, 0x36, 0x2c, + 0xfa, 0xf7, 0xfb, 0x5c, 0x51, 0x9f, 0x65, 0xd4, 0x2b, 0xce, 0xa4, 0x14, 0x1e, 0x0f, 0x21, 0xff, + 0x7e, 0x7f, 0xcb, 0xf5, 0x86, 0x04, 0x4f, 0x8e, 0x9a, 0xc2, 0x26, 0x9d, 0x69, 0x7b, 0xb0, 0xf0, + 0xc0, 0x8f, 0x92, 0x6d, 0x16, 0x86, 0xdc, 0x11, 0x1e, 0x49, 0x79, 0x8e, 0x36, 0x84, 0xbf, 0x25, + 0xc5, 0x43, 0xc5, 0x23, 0x87, 0x6e, 0x16, 0xa4, 0xbc, 0x69, 0x3e, 0x71, 0x15, 0x96, 0x38, 0x33, + 0x49, 0x18, 0xdd, 0x41, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x36, 0x61, 0x45, 0xec, 0x6c, 0xb6, + 0x85, 0xdb, 0x3d, 0x21, 0xf4, 0x32, 0x34, 0xc5, 0x34, 0x94, 0xd9, 0xe2, 0xec, 0xdd, 0x10, 0x36, + 0xb5, 0xae, 0x43, 0x8b, 0x45, 0x22, 0xc5, 0x60, 0x22, 0x7b, 0x7e, 0x92, 0x90, 0x7e, 0x3c, 0xe5, + 0x48, 0x29, 0xeb, 0x16, 0x40, 0x58, 0x66, 0x14, 0x5c, 0xba, 0xa7, 0xd5, 0xa1, 0x48, 0x72, 0x70, + 0x8b, 0x65, 0xb8, 0x38, 0xa3, 0x6a, 0x38, 0x3a, 0xd3, 0xda, 0x83, 0x25, 0x61, 0xf6, 0xfd, 0x7c, + 0x5b, 0x2c, 0x7c, 0x30, 0x7d, 0x8f, 0x15, 0x69, 0xfb, 0x97, 0x86, 0x84, 0x91, 0x7f, 0xed, 0x13, + 0xc4, 0xbe, 0x84, 0xc4, 0x98, 0x09, 0x92, 0x75, 0x58, 0x08, 0x33, 0x65, 0x97, 0xde, 0x70, 0x0a, + 0xba, 0x74, 0x51, 0x63, 0x6a, 0x17, 0xd9, 0xbf, 0x32, 0xa0, 0xf7, 0x1a, 0xf3, 0xa9, 0xf8, 0x70, + 0x23, 0x8a, 0x02, 0x79, 0x90, 0x3a, 0xb3, 0xcf, 0xbf, 0x06, 0x6d, 0x17, 0xd5, 0xd0, 0x54, 0xba, + 0x7d, 0x8a, 0x9d, 0x77, 0x29, 0xa3, 0x6c, 0xa2, 0x1a, 0xea, 0x26, 0xca, 0x7e, 0xc7, 0x80, 0x25, + 0x04, 0xe5, 0xf5, 0xcc, 0x4f, 0x67, 0xb6, 0x6f, 0x0b, 0x16, 0x46, 0x99, 0x9f, 0xce, 0x10, 0x95, + 0x85, 0x5c, 0x3d, 0x9e, 0x1a, 0x63, 0xe2, 0xc9, 0x7e, 0xd7, 0x80, 0x2b, 0x55, 0x58, 0x6f, 0x0c, + 0x06, 0x24, 0x7a, 0x92, 0x53, 0x4a, 0xdb, 0x44, 0xce, 0x55, 0x36, 0x91, 0x63, 0x4d, 0x76, 0xc8, + 0x5b, 0x64, 0xf0, 0xf4, 0x9a, 0xfc, 0x43, 0x13, 0x3e, 0x7a, 0xbb, 0x98, 0x78, 0x0f, 0x62, 0x97, + 0x26, 0x87, 0x24, 0x8e, 0x9f, 0xa0, 0xbd, 0xf7, 0xa0, 0x4b, 0xc9, 0xa3, 0xd2, 0x26, 0x39, 0x1d, + 0xa7, 0x55, 0xa3, 0x0b, 0x4f, 0xb7, 0x76, 0xd9, 0xff, 0x36, 0x60, 0x05, 0xf5, 0x7c, 0xdd, 0x1f, + 0x1c, 0x3f, 0xc1, 0xc1, 0xef, 0xc1, 0xd2, 0xb1, 0xb0, 0x80, 0x53, 0x33, 0x2c, 0xdb, 0x15, 0xe9, + 0x29, 0x87, 0xff, 0x1f, 0x03, 0x56, 0x51, 0xd1, 0x5d, 0x7a, 0xe2, 0x3f, 0xc9, 0x60, 0xdd, 0x87, + 0x65, 0x1f, 0x4d, 0x98, 0x11, 0x80, 0xaa, 0xf8, 0x94, 0x08, 0xfc, 0xde, 0x80, 0x65, 0xd4, 0x74, + 0x93, 0xa6, 0x24, 0x9e, 0x79, 0xfc, 0x77, 0xa0, 0x43, 0x68, 0x1a, 0xbb, 0x74, 0x96, 0x15, 0x52, + 0x15, 0x9d, 0x72, 0x91, 0x7c, 0xc7, 0x00, 0x4b, 0xa8, 0xda, 0xf1, 0x93, 0xd0, 0x4f, 0x92, 0x27, + 0xe8, 0xba, 0xe9, 0x0c, 0xfe, 0xb9, 0x09, 0x97, 0x15, 0x2d, 0xbb, 0x59, 0xfa, 0xb4, 0x9b, 0x6c, + 0xed, 0x40, 0x9b, 0xd7, 0x08, 0xea, 0xed, 0xc4, 0xb4, 0x1d, 0x95, 0x82, 0xbc, 0x8a, 0x15, 0x44, + 0x9f, 0x0c, 0x18, 0xf5, 0x12, 0x51, 0x1c, 0x75, 0x1d, 0x8d, 0xc7, 0x97, 0xa1, 0x75, 0x45, 0xcd, + 0xb6, 0x4b, 0x07, 0x24, 0x78, 0x66, 0x20, 0xb2, 0x7f, 0x63, 0xc0, 0x12, 0x36, 0x79, 0xfa, 0x87, + 0xcc, 0x73, 0x3d, 0x06, 0xf2, 0x87, 0xc6, 0x4b, 0x3c, 0xbc, 0xd6, 0x14, 0x2d, 0x6a, 0x5d, 0xfd, + 0xf4, 0x86, 0xd6, 0x1d, 0xe8, 0x0c, 0x8e, 0x5c, 0x3a, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0xfb, 0x18, + 0x56, 0xf1, 0x3e, 0x46, 0xa9, 0xce, 0xf8, 0xbe, 0xdf, 0xf5, 0x70, 0x2b, 0x6f, 0x88, 0xee, 0x73, + 0x52, 0xbf, 0x69, 0x93, 0x8f, 0x29, 0xca, 0x9b, 0xb6, 0xab, 0x00, 0xae, 0xe7, 0xbd, 0xc1, 0x62, + 0xcf, 0xa7, 0x79, 0xa9, 0xad, 0x70, 0xec, 0xd7, 0x60, 0xf1, 0x56, 0xcc, 0xc2, 0x07, 0xca, 0xcd, + 0xca, 0x99, 0x77, 0x3f, 0xea, 0xad, 0x8c, 0xa9, 0xdf, 0xca, 0xd8, 0xdf, 0x81, 0xff, 0xaf, 0x19, + 0x2e, 0xbc, 0xb6, 0x8d, 0x17, 0x46, 0x79, 0x27, 0xd2, 0x79, 0x1f, 0x1f, 0x03, 0x8e, 0x6a, 0x8b, + 0xa3, 0x09, 0xd9, 0x3f, 0x30, 0xe0, 0xb9, 0x9a, 0xfa, 0x1b, 0x51, 0x14, 0xb3, 0x13, 0x19, 0xd1, + 0x17, 0xd1, 0x8d, 0x5e, 0x86, 0x9a, 0xd5, 0x32, 0x74, 0xac, 0x11, 0x5a, 0xe9, 0xfc, 0x01, 0x18, + 0xf1, 0x6b, 0x03, 0x96, 0xa5, 0x11, 0x9e, 0x27, 0xbb, 0xfd, 0x22, 0xb4, 0xf0, 0xb2, 0x59, 0x76, + 0xf8, 0xdc, 0xd8, 0x0e, 0xf3, 0x4b, 0x72, 0x47, 0x36, 0xae, 0xc7, 0xb6, 0x39, 0x2e, 0xb6, 0xbf, + 0x5c, 0xcc, 0xa0, 0xa9, 0xaf, 0x83, 0xa5, 0x80, 0xfd, 0xcd, 0x3c, 0x98, 0x77, 0x48, 0x40, 0x2e, + 0x12, 0x23, 0xfb, 0x21, 0x2c, 0x89, 0x9b, 0xef, 0x12, 0x83, 0x0b, 0x51, 0xfb, 0x06, 0xac, 0x08, + 0xb5, 0x17, 0x6e, 0x6f, 0x31, 0x3b, 0x38, 0x3e, 0xdb, 0x38, 0xdf, 0x2f, 0x4e, 0xfb, 0xe7, 0xe0, + 0x52, 0x8e, 0xfd, 0xc3, 0xc8, 0x2b, 0x8e, 0x73, 0x26, 0x1c, 0x62, 0xdb, 0x9f, 0x87, 0xb5, 0x6d, + 0x46, 0x4f, 0x48, 0x9c, 0xe0, 0x11, 0xbf, 0x10, 0xc9, 0x25, 0xb4, 0xc9, 0x2f, 0x29, 0xfb, 0x2d, + 0x58, 0x57, 0x25, 0xfa, 0x24, 0xdd, 0x8f, 0xfd, 0x13, 0x45, 0x4a, 0x1e, 0xf2, 0x1a, 0xda, 0x21, + 0x6f, 0x79, 0x28, 0x6c, 0x6a, 0x87, 0xc2, 0x57, 0xa0, 0xed, 0x27, 0x52, 0x81, 0x08, 0xaa, 0x05, + 0xa7, 0x64, 0xd8, 0x7d, 0x58, 0x95, 0x77, 0xd1, 0xfb, 0xee, 0xd0, 0xa7, 0xb8, 0x02, 0x5e, 0x05, + 0x88, 0xdc, 0x61, 0xfe, 0x16, 0x05, 0xef, 0x03, 0x14, 0x0e, 0xff, 0x9e, 0x1c, 0xb1, 0x47, 0xf2, + 0xbb, 0x89, 0xdf, 0x4b, 0x8e, 0xfd, 0x0d, 0xb0, 0x1c, 0x92, 0x44, 0x8c, 0x26, 0x44, 0xd1, 0xba, + 0x01, 0x9d, 0xed, 0x2c, 0x8e, 0x09, 0xe5, 0x5d, 0xe5, 0x0f, 0x33, 0x54, 0x16, 0xd7, 0xdb, 0x2f, + 0xf5, 0xe2, 0x19, 0xb2, 0xc2, 0xb1, 0x7f, 0xd1, 0x80, 0x76, 0xdf, 0x1f, 0x52, 0x37, 0x70, 0xc8, + 0xc8, 0xfa, 0x0a, 0xb4, 0xb0, 0xb2, 0x97, 0x6e, 0x1c, 0x77, 0xa6, 0x89, 0xad, 0x71, 0x0b, 0xe3, + 0x90, 0xd1, 0x9d, 0xff, 0x73, 0xa4, 0x8c, 0xf5, 0x3a, 0x74, 0xf1, 0xd7, 0x5d, 0x3c, 0xa9, 0x91, + 0x19, 0xeb, 0xd3, 0xe7, 0x28, 0x91, 0xad, 0x51, 0x97, 0xae, 0x81, 0x1b, 0x34, 0x10, 0x99, 0x5f, + 0xce, 0xdd, 0xc9, 0x06, 0x61, 0x81, 0x20, 0x0d, 0x42, 0x19, 0x2e, 0xed, 0x8a, 0xb3, 0x0c, 0x99, + 0xd0, 0x26, 0x4b, 0xe3, 0x91, 0x87, 0x94, 0x46, 0x19, 0x2e, 0x7d, 0x94, 0xd1, 0xe1, 0xc3, 0x48, + 0x1e, 0xb1, 0x4d, 0x96, 0xbe, 0x23, 0x9a, 0x49, 0x69, 0x94, 0xe1, 0xd2, 0xb1, 0x58, 0x59, 0x05, + 0xe8, 0x67, 0x49, 0xe3, 0x02, 0x2c, 0xa5, 0x51, 0x66, 0xab, 0x0d, 0xf3, 0x91, 0x7b, 0x1a, 0x30, + 0xd7, 0xb3, 0xdf, 0x6e, 0x00, 0xe4, 0x0d, 0x13, 0x51, 0x0f, 0x68, 0x2e, 0xda, 0x3c, 0xd7, 0x45, + 0x51, 0x70, 0xaa, 0x38, 0xa9, 0x3f, 0xde, 0x49, 0x9f, 0x99, 0xd6, 0x49, 0xa8, 0xad, 0xe2, 0xa6, + 0xeb, 0x15, 0x37, 0x6d, 0x9e, 0xeb, 0x26, 0x69, 0x94, 0x74, 0xd4, 0xf5, 0x8a, 0xa3, 0x36, 0xcf, + 0x75, 0x94, 0x94, 0x97, 0xae, 0xba, 0x5e, 0x71, 0xd5, 0xe6, 0xb9, 0xae, 0x92, 0xf2, 0xd2, 0x59, + 0xd7, 0x2b, 0xce, 0xda, 0x3c, 0xd7, 0x59, 0x52, 0xbe, 0xee, 0xae, 0x77, 0x4d, 0x58, 0x12, 0x90, + 0xe1, 0x7d, 0x1a, 0x3d, 0x64, 0xe2, 0xd8, 0x5c, 0xc0, 0xa5, 0x3f, 0x6d, 0xd2, 0x99, 0xd6, 0x67, + 0x61, 0x15, 0x19, 0xf2, 0x29, 0x4c, 0x71, 0x41, 0xd9, 0x76, 0xea, 0x1f, 0xc4, 0x0d, 0x48, 0x96, + 0xa4, 0x2c, 0xdc, 0x71, 0x53, 0x37, 0xaf, 0x8c, 0x4a, 0x8e, 0x7a, 0x3f, 0x35, 0x57, 0x7b, 0x3c, + 0x19, 0x33, 0x16, 0x16, 0x17, 0x4f, 0x92, 0xe2, 0x12, 0xa9, 0x1f, 0x12, 0x96, 0xa5, 0x72, 0x99, + 0xc8, 0x49, 0x7c, 0x7e, 0xe0, 0xf9, 0xae, 0xb8, 0xd5, 0x91, 0x77, 0xf3, 0x05, 0x43, 0xac, 0x6c, + 0xe5, 0x2d, 0x95, 0x7c, 0xdc, 0x58, 0x72, 0xce, 0xbf, 0x51, 0xb2, 0xff, 0x6e, 0xc0, 0xa5, 0x7d, + 0x37, 0x4e, 0xfd, 0x81, 0x1f, 0xb9, 0x34, 0xdd, 0x25, 0xa9, 0x2b, 0xc6, 0xa0, 0xbd, 0x6f, 0x32, + 0xde, 0xdf, 0xfb, 0xa6, 0x7d, 0x58, 0x1e, 0xea, 0x45, 0xf8, 0xfb, 0xac, 0x9f, 0xab, 0xe2, 0xda, + 0x63, 0xad, 0xc6, 0xfb, 0x7e, 0xac, 0x65, 0xff, 0xd8, 0x84, 0xe5, 0xca, 0xd2, 0xc9, 0xcb, 0x51, + 0x2c, 0x34, 0x8a, 0x98, 0x28, 0x68, 0xeb, 0x06, 0x80, 0x5f, 0x84, 0xd1, 0x19, 0x67, 0xd4, 0x7a, + 0xac, 0x39, 0x8a, 0xd0, 0xb8, 0xab, 0xaa, 0xc6, 0xcc, 0x57, 0x55, 0x7c, 0x8b, 0x10, 0x95, 0x4e, + 0x3a, 0x63, 0x8b, 0x30, 0xc6, 0x95, 0x8e, 0x2a, 0x6a, 0x7f, 0x1b, 0x56, 0x6b, 0x2b, 0x94, 0xb8, + 0xb9, 0x62, 0xc7, 0x84, 0x16, 0x37, 0x57, 0x9c, 0x50, 0x82, 0xd5, 0xac, 0x06, 0x6b, 0xe0, 0x9f, + 0xa8, 0xaf, 0x41, 0x25, 0x69, 0xff, 0xc4, 0x84, 0xb5, 0xf1, 0xd9, 0xe5, 0x59, 0x85, 0xfb, 0x00, + 0x7a, 0x93, 0x56, 0xf2, 0x0b, 0x43, 0xbd, 0x8c, 0xee, 0x22, 0x0f, 0x3f, 0xab, 0x70, 0x5f, 0xca, + 0xa3, 0x5b, 0x49, 0x75, 0xf6, 0xef, 0x0a, 0x7c, 0x8a, 0x4a, 0xe3, 0x19, 0xc5, 0xc7, 0x7a, 0x11, + 0x56, 0x70, 0x98, 0xca, 0xdb, 0x06, 0x2c, 0x5c, 0x6b, 0xfc, 0x72, 0xa5, 0x50, 0xd2, 0xfe, 0x85, + 0xc5, 0xec, 0x1f, 0x8d, 0xdc, 0x27, 0x45, 0xfd, 0xf6, 0xa1, 0xf2, 0x49, 0x19, 0x69, 0x4a, 0x51, + 0xa3, 0x44, 0x5a, 0x51, 0x57, 0xfe, 0x2f, 0xd2, 0xce, 0x8f, 0xb4, 0x02, 0x4b, 0xa5, 0xc0, 0xb3, + 0xbf, 0x0f, 0xdd, 0x1d, 0x12, 0xec, 0x26, 0xc3, 0xfc, 0x55, 0xd5, 0x59, 0x40, 0x4e, 0xfa, 0x53, + 0xca, 0xc4, 0xf7, 0x54, 0xd5, 0xb7, 0x58, 0x73, 0xb5, 0xb7, 0x58, 0xf6, 0x16, 0x2c, 0xa9, 0x06, + 0xcc, 0xf2, 0xa8, 0x6c, 0xeb, 0xca, 0xb7, 0xd6, 0xaf, 0xbd, 0x84, 0x7f, 0x7f, 0x7a, 0xb5, 0x06, + 0xe2, 0x41, 0x4b, 0xfc, 0x1d, 0xea, 0x0b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xda, 0xf1, 0xea, + 0xa1, 0x21, 0x35, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index b9aa6bf3d..1284d8a89 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -147,6 +147,11 @@ message DepartmentMember { } +message UserDepartmentMember { + OrganizationUser organizationUser = 1; + DepartmentMember departmentMember = 2; +} + message UserInDepartment { OrganizationUser organizationUser = 1; From 5664c34790afdb129f36a8adf862d69bb45c80e7 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 18:02:11 +0800 Subject: [PATCH 079/128] organization --- internal/api/organization/organization.go | 2 +- internal/rpc/organization/organization.go | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 240f3a848..9c6d53ace 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -433,7 +433,7 @@ func DeleteUserInDepartment(c *gin.Context) { return } - apiResp := api.GetDepartmentMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + 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/rpc/organization/organization.go b/internal/rpc/organization/organization.go index ae09d8915..b93fdc2b9 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -220,10 +220,17 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.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: constant.ErrAccess.ErrMsg}, nil + } + departmentMember := db.DepartmentMember{} utils.CopyStructFields(&departmentMember, req.DepartmentMember) log.Debug(req.OperationID, "src ", *req.DepartmentMember, "dst ", departmentMember) - err := imdb.CreateDepartmentMember(&departmentMember) + err = imdb.CreateDepartmentMember(&departmentMember) if err != nil { errMsg := req.OperationID + " " + "CreateDepartmentMember failed " + err.Error() log.Error(req.OperationID, errMsg, departmentMember) From 650495306f7303817ca20cccc12f30e111a498a6 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 18:06:47 +0800 Subject: [PATCH 080/128] organization --- internal/rpc/organization/organization.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index b93fdc2b9..28e763f59 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -190,7 +190,7 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp 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: constant.ErrAccess.ErrMsg}, nil + return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } organizationUser := db.OrganizationUser{} utils.CopyStructFields(&organizationUser, req.OrganizationUser) @@ -217,14 +217,14 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp 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: constant.ErrAccess.ErrMsg}, nil + 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: constant.ErrAccess.ErrMsg}, nil + return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } departmentMember := db.DepartmentMember{} From 3a8a0a541e3c3397adb306d437b81b472b394110 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 18:11:07 +0800 Subject: [PATCH 081/128] organization --- internal/rpc/organization/organization.go | 40 +++++++++++------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 28e763f59..ef1ca7bb6 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -71,9 +71,9 @@ func (s *organizationServer) Run() { 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.CreateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.CreateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } department := db.Department{} @@ -103,9 +103,9 @@ func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.Crea 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.UpdateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.UpdateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } department := db.Department{} @@ -146,9 +146,9 @@ func (s *organizationServer) GetSubDepartment(ctx context.Context, req *rpc.GetS 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.DeleteDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.DeleteDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } err := imdb.DeleteDepartment(req.DepartmentID) if err != nil { @@ -165,9 +165,9 @@ func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.Dele func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rpc.CreateOrganizationUserReq) (*rpc.CreateOrganizationUserResp, 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } organizationUser := db.OrganizationUser{} utils.CopyStructFields(&organizationUser, req.OrganizationUser) @@ -188,7 +188,7 @@ func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rp func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rpc.UpdateOrganizationUserReq) (*rpc.UpdateOrganizationUserResp, 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } @@ -215,14 +215,14 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp 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" + 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" + errMsg := req.OperationID + " " + req.DepartmentMember.UserID + " is not exist" log.Error(req.OperationID, errMsg) return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } @@ -283,9 +283,9 @@ func (s *organizationServer) GetUserInDepartment(ctx context.Context, req *rpc.G 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.UpdateUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.UpdateUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } departmentMember := &db.DepartmentMember{} utils.CopyStructFields(departmentMember, req.DepartmentMember) @@ -304,9 +304,9 @@ func (s *organizationServer) UpdateUserInDepartment(ctx context.Context, req *rp 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.DeleteUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.DeleteUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } err := imdb.DeleteUserInDepartment(req.DepartmentID, req.UserID) @@ -324,9 +324,9 @@ func (s *organizationServer) DeleteUserInDepartment(ctx context.Context, req *rp 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" + errMsg := req.OperationID + " " + req.OpUserID + " is not app manager" log.Error(req.OperationID, errMsg) - return &rpc.DeleteOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &rpc.DeleteOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}, nil } err := imdb.DeleteOrganizationUser(req.UserID) if err != nil { @@ -344,9 +344,9 @@ func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.G log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String()) err, departmentMemberList := imdb.GetDepartmentMemberList(req.DepartmentID) if err != nil { - errMsg := req.OperationID + " " + "GetDepartmentMemberList failed " + err.Error() - log.Error(req.OperationID, errMsg, req.DepartmentID) - return &rpc.GetDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, 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) From 6e6508aafdbd0feba2f2618475a21ac220ad4871 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 18 Apr 2022 19:24:36 +0800 Subject: [PATCH 082/128] workMoments --- cmd/open_im_api/main.go | 1 + internal/api/office/work_moments.go | 38 ++ internal/rpc/msg/work_moments_notification.go | 47 ++ internal/rpc/office/office.go | 82 +++- internal/rpc/user/user.go | 15 +- pkg/base_info/work_moments_struct.go | 11 + pkg/common/constant/constant.go | 3 + pkg/common/db/model.go | 91 ++-- pkg/common/db/mongoModel.go | 179 ++++++-- pkg/proto/office/office.pb.go | 419 ++++++++++++------ pkg/proto/office/office.proto | 13 +- 11 files changed, 678 insertions(+), 221 deletions(-) create mode 100644 internal/rpc/msg/work_moments_notification.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 18e31d9e3..ba98bc0ec 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -140,6 +140,7 @@ func main() { 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("/get_user_work_moments_comments_msg", office.GetUserWorkMomentsCommentsMsg) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index ac7619dda..d1be4cb4e 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -167,6 +167,44 @@ func CommentOneWorkMoment(c *gin.Context) { 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 + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + func GetUserWorkMoments(c *gin.Context) { var ( req apiStruct.GetUserWorkMomentsReq diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go new file mode 100644 index 000000000..8e55ece11 --- /dev/null +++ b/internal/rpc/msg/work_moments_notification.go @@ -0,0 +1,47 @@ +package msg + +import ( + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/db" + "Open_IM/pkg/common/log" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + pbChat "Open_IM/pkg/proto/chat" + pbCommon "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "encoding/json" + "strings" +) + +func CommentOneWorkMomentNotification(operationID, recvID string, comment db.CommentMsg, user db.User) { + log.NewInfo(operationID, utils.GetSelfFuncName(), "args: ", recvID, user, comment) + var req pbChat.SendMsgReq + var msgData pbCommon.MsgData + msgData.SendID = user.UserID + msgData.RecvID = recvID + msgData.ContentType = constant.WorkMomentNewCommentNotification + msgData.SessionType = constant.SingleChatType + msgData.MsgFrom = constant.UserMsgType + bytes, err := json.Marshal(comment) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "marshal failed", err.Error()) + } + msgData.Content = bytes + msgData.SenderFaceURL = user.FaceURL + msgData.SenderNickname = user.Nickname + msgData.CreateTime = utils.GetCurrentTimestampByMill() + msgData.ClientMsgID = utils.GetMsgID(user.UserID) + req.MsgData = &msgData + req.OperationID = operationID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) + client := pbChat.NewChatClient(etcdConn) + respPb, err := client.SendMsg(context.Background(), &req) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "send msg failed", err.Error()) + return + } + if respPb.ErrCode != 0 { + log.NewError(operationID, utils.GetSelfFuncName(), "send tag msg failed ", respPb) + } +} diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 53e58f223..9dc7d91db 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -287,6 +287,18 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea 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{} + 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 ", 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()) @@ -297,20 +309,24 @@ func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.Dele return resp, nil } +func isUserCanSeeWorkMoment(userID string, workMoment db.WorkMoment) bool { + if userID != workMoment.UserID { + if utils.IsContain(userID, workMoment.WhoCantSeeUserIDList) { + return false + } + if utils.IsContain(userID, workMoment.WhoCanSeeUserIDList) { + return true + } + if workMoment.IsPrivate { + 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{} - 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 - } - if workMoment.UserID != req.WorkMomentID { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoment.UserID != req.WorkMomentID ", workMoment, req.WorkMomentID) - resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg} - return resp, nil - } if err = db.DB.LikeOneWorkMoment(req.UserID, req.WorkMomentID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "LikeOneWorkMoment failed ", err.Error()) resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -323,9 +339,11 @@ func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOn 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{} - commentUserName, err := imdb.GetUserNameByUserID(req.UserID) + 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 != "" { @@ -338,18 +356,45 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com } comment := db.Comment{ UserID: req.UserID, - UserName: commentUserName, + UserName: commentUser.Nickname, ReplyUserID: req.ReplyUserID, ReplyUserName: replyUserName, - ContentID: "", Content: req.Content, CreateTime: int32(time.Now().Unix()), } - if err = db.DB.CommentOneWorkMoment(comment, req.WorkMomentID); err != nil { + 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 } + commentMsg := db.CommentMsg{ + Comment: comment, + WorkMomentID: workMoment.WorkMomentID, + WorkMomentContent: workMoment.Content, + } + msg.CommentOneWorkMomentNotification(req.OperationID, workMoment.UserID, commentMsg, *commentUser) + if req.ReplyUserID != "" { + msg.CommentOneWorkMomentNotification(req.OperationID, req.ReplyUserID, commentMsg, *commentUser) + } + 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, 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 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 } @@ -357,6 +402,7 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com 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{} + resp.WorkMoments = make([]*pbOffice.WorkMoment, req.Pagination.ShowNumber) workMoments, err := db.DB.GetUserWorkMoments(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err) @@ -374,6 +420,7 @@ func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUs 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{} + resp.WorkMoments = make([]*pbOffice.WorkMoment, req.Pagination.ShowNumber) friendIDList, err := imdb.GetFriendIDListByUserID(req.UserID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetFriendIDListByUserID", err.Error()) @@ -381,7 +428,7 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice return resp, nil } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "friendIDList: ", friendIDList) - workMoments, err := db.DB.GetUserFriendWorkMoments(friendIDList, req.Pagination.ShowNumber, req.Pagination.PageNumber) + 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} @@ -397,7 +444,8 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommentsMsgs: []*pbOffice.CommentsMsg{}} + resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{} + resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, req.Pagination.ShowNumber) workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 8e57ba2bf..f7a9874c8 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -206,10 +206,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 { + 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()) diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 22d38df37..c9feb5c0a 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -41,6 +41,17 @@ type WorkMomentsUserCommonReq struct { UserID string `json:"UserID" binding:"required"` } +type GetWorkMomentByIDReq struct { + office.GetWorkMomentByIDReq +} + +type GetWorkMomentByIDResp struct { + CommResp + Data struct { + WorkMoment *office.WorkMoment `json:"workMoment"` + } `json:"data"` +} + type GetUserWorkMomentsReq struct { WorkMomentsUserCommonReq } diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index fdee4f2b7..e6268ce3d 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -88,6 +88,9 @@ const ( ConversationPrivateChatNotification = 1701 + WorkMomentNotificationStart = 1800 + WorkMomentNewCommentNotification = 1801 + NotificationEnd = 2000 //status diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index bd465d6ff..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 @@ -66,39 +67,67 @@ func init() { } } 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) + 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()) + } + + 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()) + } + + 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 - //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()) - // } - //} - - //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()) - //} - // - // redis pool init DB.redisPool = &redis.Pool{ MaxIdle: config.Config.Redis.DBMaxIdle, diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 6d7ff3f7c..ff7cc0d35 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 { @@ -571,39 +573,68 @@ type WorkMoment struct { Comments []*Comment `bson:"comments"` WhoCanSeeUserIDList []string `bson:"who_can_see_user_id_list"` WhoCantSeeUserIDList []string `bson:"who_cant_see_user_id_list"` - IsPrivate bool - IsPublic bool - CreateTime int32 + IsPrivate bool `bson:"is_private"` + CreateTime int32 `bson:"create_time"` } type LikeUser struct { - UserID string - UserName string + UserID string `bson:"user_id"` + UserName string `bson:"user_name"` } type Comment struct { - UserID string - UserName string - ReplyUserID string - ReplyUserName string - ContentID string - Content string - CreateTime int32 + UserID string `bson:"user_id" json:"user_id"` + UserName string `bson:"user_id" 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 { - return nil + 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 { - return nil + 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) { - return nil, nil + 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, workMomentID string) error { + workMoment, err := d.GetWorkMomentByID(workMomentID) + if err != nil { + return err + } + for i, user := range workMoment.LikeUsers { + if likeUserID == user.UserID { + workMoment.LikeUsers = append(workMoment.LikeUsers[0:i], workMoment.LikeUsers[i+1:]...) + return nil + } + } + workMoment.LikeUsers = append(workMoment.LikeUsers, &LikeUser{UserID: likeUserID}) + 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_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUsers}}) + if err != nil { + return err + } return nil } @@ -611,30 +642,124 @@ func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { return nil } +func (d *DataBases) CreateUserWorkMomentsCommentsMsg(msg CommentMsg) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) + _, err := c.InsertOne(ctx, msg) + return err +} + func (d *DataBases) ClearUserWorkMomentsCommentsMsg(userID string) error { - return nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) + _, err := c.DeleteOne(ctx, bson.M{"user_id": userID}) + return err } type CommentMsg struct { - WorkMomentID string `bson:"workMoment"` - CommentContent string `bson:"content"` + WorkMomentID string `bson:"work_moment" json:"work_moment"` + WorkMomentContent string `bson:"work_moment_content" json:"work_moment_content"` Comment } func (d *DataBases) GetUserWorkMomentsCommentsMsg(userID string, showNumber, pageNumber int32) ([]CommentMsg, error) { - return nil, nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) + var commentMsgList []CommentMsg + 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 commentMsgList, err + } + err = result.All(ctx, &commentMsgList) + return commentMsgList, err } -func (d *DataBases) CommentOneWorkMoment(comment Comment, workMomentID string) 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) { - return nil, nil + 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) ([]WorkMoment, error) { - return nil, nil +// recursion +func (d *DataBases) GetUserFriendWorkMomentsRecursion(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, "is_private": false, "who_can_see_user_id_list": bson.M{"$elemMatch": bson.M{"$eq": userID}}, "who_cant_see_user_id_list": ""}, findOpts) + if err != nil { + return workMomentList, nil + } + err = result.All(ctx, &workMomentList) + //if len(workMomentList) == 0 { + // return workMomentList, nil + //} + //for i, workMoment := range workMomentList { + // if workMoment.IsPrivate { + // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) + // continue + // } + // + // var isContain bool + // for _, WhoCanSeeUserID := range workMoment.WhoCanSeeUserIDList { + // if WhoCanSeeUserID == userID { + // isContain = true + // break + // } + // } + // if !isContain { + // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) + // continue + // } + // + // for _, whoCantSeeUserID := range workMoment.WhoCantSeeUserIDList { + // if whoCantSeeUserID == userID { + // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) + // break + // } + // } + //} + // + //if len(workMomentList) < int(pageNumber) { + // workMomentListWorkMomentList, err := d.GetUserFriendWorkMomentsRecursion(friendIDList, showNumber, pageNumber, userID) + // workMomentList = append(workMomentList, workMomentListWorkMomentList...) + // if err != nil { + // return workMomentList, err + // } + //} + 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, "is_private": false, "$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, nil + } + err = result.All(ctx, &workMomentList) + return workMomentList, err } func generateTagID(tagName, userID string) string { @@ -645,6 +770,10 @@ 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 } @@ -666,9 +795,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/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index 32a6a004d..30eed4b2e 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_8a5f7d4f1783db20, []int{0} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{1} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{2} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{3} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{4} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{5} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{6} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{7} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{8} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{9} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{10} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{11} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{12} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{13} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{14} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{15} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{16} + return fileDescriptor_office_7066d9c5c43d9815, []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_8a5f7d4f1783db20, []int{17} + return fileDescriptor_office_7066d9c5c43d9815, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_8a5f7d4f1783db20, []int{18} + return fileDescriptor_office_7066d9c5c43d9815, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1019,7 +1019,7 @@ 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_8a5f7d4f1783db20, []int{19} + return fileDescriptor_office_7066d9c5c43d9815, []int{19} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1097,7 +1097,6 @@ type WorkMoment struct { WhoCanSeeUserIDList []string `protobuf:"bytes,6,rep,name=whoCanSeeUserIDList" json:"whoCanSeeUserIDList,omitempty"` WhoCantSeeUserIDList []string `protobuf:"bytes,7,rep,name=whoCantSeeUserIDList" json:"whoCantSeeUserIDList,omitempty"` IsPrivate bool `protobuf:"varint,8,opt,name=isPrivate" json:"isPrivate,omitempty"` - IsPublic bool `protobuf:"varint,9,opt,name=isPublic" json:"isPublic,omitempty"` CreateTime int32 `protobuf:"varint,10,opt,name=CreateTime" json:"CreateTime,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1108,7 +1107,7 @@ 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_8a5f7d4f1783db20, []int{20} + return fileDescriptor_office_7066d9c5c43d9815, []int{20} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1184,13 +1183,6 @@ func (m *WorkMoment) GetIsPrivate() bool { return false } -func (m *WorkMoment) GetIsPublic() bool { - if m != nil { - return m.IsPublic - } - return false -} - func (m *WorkMoment) GetCreateTime() int32 { if m != nil { return m.CreateTime @@ -1211,7 +1203,7 @@ 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_8a5f7d4f1783db20, []int{21} + return fileDescriptor_office_7066d9c5c43d9815, []int{21} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1263,7 +1255,7 @@ 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_8a5f7d4f1783db20, []int{22} + return fileDescriptor_office_7066d9c5c43d9815, []int{22} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1303,7 +1295,7 @@ 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_8a5f7d4f1783db20, []int{23} + return fileDescriptor_office_7066d9c5c43d9815, []int{23} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1355,7 +1347,7 @@ 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_8a5f7d4f1783db20, []int{24} + return fileDescriptor_office_7066d9c5c43d9815, []int{24} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1395,7 +1387,7 @@ 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_8a5f7d4f1783db20, []int{25} + return fileDescriptor_office_7066d9c5c43d9815, []int{25} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1447,7 +1439,7 @@ 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_8a5f7d4f1783db20, []int{26} + return fileDescriptor_office_7066d9c5c43d9815, []int{26} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1489,7 +1481,7 @@ 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_8a5f7d4f1783db20, []int{27} + return fileDescriptor_office_7066d9c5c43d9815, []int{27} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1555,7 +1547,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{28} + return fileDescriptor_office_7066d9c5c43d9815, []int{28} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1582,6 +1574,106 @@ func (m *CommentOneWorkMomentResp) GetCommonResp() *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_7066d9c5c43d9815, []int{29} +} +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_7066d9c5c43d9815, []int{30} +} +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 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"` @@ -1595,7 +1687,7 @@ 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_8a5f7d4f1783db20, []int{29} + return fileDescriptor_office_7066d9c5c43d9815, []int{31} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1649,7 +1741,7 @@ 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_8a5f7d4f1783db20, []int{30} + return fileDescriptor_office_7066d9c5c43d9815, []int{32} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1703,7 +1795,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{31} + return fileDescriptor_office_7066d9c5c43d9815, []int{33} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -1757,7 +1849,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{32} + return fileDescriptor_office_7066d9c5c43d9815, []int{34} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -1811,7 +1903,7 @@ func (m *CommentsMsg) Reset() { *m = CommentsMsg{} } func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } func (*CommentsMsg) ProtoMessage() {} func (*CommentsMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{33} + return fileDescriptor_office_7066d9c5c43d9815, []int{35} } func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) @@ -1865,7 +1957,7 @@ func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMom func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{34} + return fileDescriptor_office_7066d9c5c43d9815, []int{36} } func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -1919,7 +2011,7 @@ func (m *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMo func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{35} + return fileDescriptor_office_7066d9c5c43d9815, []int{37} } func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -1972,7 +2064,7 @@ func (m *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWor func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{36} + return fileDescriptor_office_7066d9c5c43d9815, []int{38} } func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2017,7 +2109,7 @@ func (m *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWo func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{37} + return fileDescriptor_office_7066d9c5c43d9815, []int{39} } func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2057,7 +2149,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{38} + return fileDescriptor_office_7066d9c5c43d9815, []int{40} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2109,7 +2201,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{39} + return fileDescriptor_office_7066d9c5c43d9815, []int{41} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2166,6 +2258,8 @@ func init() { 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((*GetUserWorkMomentsReq)(nil), "office.GetUserWorkMomentsReq") proto.RegisterType((*GetUserWorkMomentsResp)(nil), "office.GetUserWorkMomentsResp") proto.RegisterType((*GetUserFriendWorkMomentsReq)(nil), "office.GetUserFriendWorkMomentsReq") @@ -2201,6 +2295,7 @@ type OfficeServiceClient interface { 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) // / user self GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) // / users friend @@ -2317,6 +2412,15 @@ func (c *officeServiceClient) CommentOneWorkMoment(ctx context.Context, in *Comm 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) 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...) @@ -2376,6 +2480,7 @@ type OfficeServiceServer interface { DeleteOneWorkMoment(context.Context, *DeleteOneWorkMomentReq) (*DeleteOneWorkMomentResp, error) LikeOneWorkMoment(context.Context, *LikeOneWorkMomentReq) (*LikeOneWorkMomentResp, error) CommentOneWorkMoment(context.Context, *CommentOneWorkMomentReq) (*CommentOneWorkMomentResp, error) + GetWorkMomentByID(context.Context, *GetWorkMomentByIDReq) (*GetWorkMomentByIDResp, error) // / user self GetUserWorkMoments(context.Context, *GetUserWorkMomentsReq) (*GetUserWorkMomentsResp, error) // / users friend @@ -2587,6 +2692,24 @@ func _OfficeService_CommentOneWorkMoment_Handler(srv interface{}, ctx context.Co 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_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 { @@ -2725,6 +2848,10 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ MethodName: "CommentOneWorkMoment", Handler: _OfficeService_CommentOneWorkMoment_Handler, }, + { + MethodName: "GetWorkMomentByID", + Handler: _OfficeService_GetWorkMomentByID_Handler, + }, { MethodName: "GetUserWorkMoments", Handler: _OfficeService_GetUserWorkMoments_Handler, @@ -2750,102 +2877,104 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_8a5f7d4f1783db20) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_7066d9c5c43d9815) } -var fileDescriptor_office_8a5f7d4f1783db20 = []byte{ - // 1494 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6e, 0xdb, 0xc6, - 0x13, 0x07, 0x25, 0x4b, 0xb2, 0x46, 0x4e, 0x1c, 0xaf, 0x1d, 0x5b, 0x7f, 0x26, 0xb6, 0x15, 0x26, - 0x7f, 0xc0, 0x49, 0x00, 0xa9, 0x50, 0x03, 0xb4, 0x40, 0xd1, 0xa0, 0x88, 0x94, 0x1a, 0x6e, 0xad, - 0xc4, 0xa5, 0x9c, 0x06, 0xe9, 0x21, 0x06, 0x2d, 0xad, 0x59, 0xc2, 0x12, 0xc9, 0x70, 0x69, 0x09, - 0xe9, 0xb1, 0x87, 0xbe, 0x40, 0x0f, 0x3d, 0xf5, 0xd2, 0x57, 0x28, 0xfa, 0x08, 0x3d, 0xf4, 0x54, - 0xf4, 0xd4, 0x53, 0x6f, 0x7d, 0x8f, 0x16, 0xbb, 0xfc, 0xda, 0xe5, 0x87, 0xa4, 0xd0, 0x0d, 0xd0, - 0x9e, 0xc4, 0x99, 0x9d, 0x9d, 0x9d, 0xf9, 0xcd, 0xee, 0xcc, 0xee, 0x08, 0xd6, 0xad, 0xb3, 0x33, - 0x63, 0x80, 0x5b, 0xde, 0x4f, 0xd3, 0x76, 0x2c, 0xd7, 0x42, 0x65, 0x8f, 0x92, 0x6f, 0x3d, 0xb5, - 0xb1, 0x79, 0x72, 0xd0, 0x6b, 0xd9, 0xe7, 0x7a, 0x8b, 0x0d, 0xb5, 0xc8, 0xf0, 0xfc, 0x64, 0x4a, - 0x5a, 0x53, 0xe2, 0x89, 0x2a, 0x0f, 0x01, 0x3a, 0xd6, 0x78, 0x6c, 0x99, 0x2a, 0x26, 0x36, 0xaa, - 0x43, 0x05, 0x3b, 0x4e, 0xc7, 0x1a, 0xe2, 0xba, 0xd4, 0x90, 0xf6, 0x4a, 0x6a, 0x40, 0xa2, 0x4d, - 0x28, 0x63, 0xc7, 0xe9, 0x11, 0xbd, 0x5e, 0x68, 0x48, 0x7b, 0x55, 0xd5, 0xa7, 0x94, 0x0f, 0xa1, - 0x72, 0xac, 0xe9, 0xcf, 0x08, 0x76, 0xa8, 0xc8, 0x05, 0xc1, 0xce, 0x41, 0x97, 0xcd, 0xad, 0xaa, - 0x3e, 0x85, 0x64, 0x58, 0xa6, 0x5f, 0x4f, 0xb4, 0x31, 0xf6, 0x27, 0x87, 0xb4, 0x72, 0x0a, 0xc5, - 0x63, 0x4d, 0x47, 0x1b, 0x50, 0x72, 0x35, 0x3d, 0x9c, 0xe9, 0x11, 0xd4, 0x1a, 0x57, 0xd3, 0xb9, - 0x79, 0x01, 0x89, 0xee, 0x7b, 0x2a, 0x0f, 0x0d, 0xe2, 0xd6, 0x8b, 0x8d, 0xe2, 0x5e, 0xad, 0xbd, - 0xda, 0xf4, 0x11, 0xf0, 0xad, 0x51, 0x43, 0x01, 0xe5, 0x13, 0xb8, 0xba, 0x8f, 0x5d, 0xca, 0x3c, - 0xd6, 0x74, 0xa2, 0xe2, 0x57, 0x99, 0x96, 0x36, 0xa0, 0x66, 0xd9, 0xd8, 0xd1, 0x5c, 0xc3, 0x32, - 0x0f, 0xba, 0xfe, 0xa2, 0x3c, 0x4b, 0x39, 0x83, 0x55, 0x41, 0x17, 0xb1, 0x51, 0x1b, 0x60, 0x10, - 0x22, 0xc8, 0x14, 0xd6, 0xda, 0x28, 0xb0, 0x26, 0xc2, 0x56, 0xe5, 0xa4, 0xd0, 0x2e, 0x2c, 0xb9, - 0x9a, 0x4e, 0xea, 0x05, 0x66, 0x7b, 0x8d, 0xb3, 0x5d, 0x65, 0x03, 0xca, 0xd7, 0x12, 0xac, 0x74, - 0x1c, 0xac, 0xb9, 0x98, 0xf2, 0xf0, 0x2b, 0x1e, 0x0b, 0x49, 0xc4, 0x22, 0x72, 0xa6, 0x20, 0x38, - 0xb3, 0x03, 0xe0, 0x7d, 0x85, 0x28, 0x55, 0x55, 0x8e, 0x13, 0x77, 0x76, 0x29, 0xe9, 0x6c, 0x07, - 0xae, 0x70, 0x36, 0xe4, 0x73, 0x55, 0x79, 0x09, 0x2b, 0x5d, 0x3c, 0xc2, 0xa1, 0x23, 0x59, 0xd8, - 0x87, 0x5b, 0xa0, 0xc0, 0x6f, 0x81, 0x98, 0x91, 0xc5, 0x54, 0x23, 0x39, 0xfd, 0x39, 0x8d, 0xfc, - 0x4d, 0x82, 0x6a, 0x1f, 0xbb, 0xb9, 0x4c, 0xac, 0x43, 0xc5, 0xc4, 0x53, 0x16, 0x19, 0xcf, 0xbc, - 0x80, 0x44, 0x4d, 0x40, 0x86, 0x39, 0x70, 0xb0, 0x46, 0xf0, 0xb3, 0x28, 0x12, 0x4b, 0x2c, 0x12, - 0x29, 0x23, 0xe8, 0x1e, 0x5c, 0x73, 0xf0, 0xf0, 0x62, 0xc0, 0x4b, 0x97, 0x98, 0x74, 0x82, 0x1f, - 0x07, 0xa6, 0x9c, 0x04, 0xe6, 0x23, 0x80, 0xc0, 0xa5, 0x9c, 0xa8, 0xfc, 0x29, 0xc1, 0xd5, 0x3e, - 0x36, 0x87, 0x3d, 0xa2, 0xb7, 0x85, 0x6d, 0xc8, 0x2c, 0x93, 0x98, 0x65, 0x01, 0x49, 0x4f, 0xf9, - 0xb3, 0xe0, 0x48, 0x16, 0xd8, 0x50, 0x48, 0xa3, 0x9b, 0x50, 0xdd, 0x77, 0xac, 0x0b, 0x9b, 0xdb, - 0x89, 0x11, 0x83, 0xc2, 0x4d, 0xb0, 0x39, 0x0c, 0xf7, 0xa0, 0x4f, 0x51, 0x38, 0xe8, 0x17, 0x76, - 0x8e, 0x46, 0x9a, 0x7b, 0x66, 0x39, 0xe3, 0x83, 0x6e, 0xbd, 0xc4, 0xb2, 0x52, 0x82, 0x4f, 0xed, - 0x1a, 0x58, 0xa6, 0x8b, 0x4d, 0xd7, 0x87, 0x22, 0x20, 0xe3, 0x40, 0x55, 0x92, 0x40, 0x3d, 0x86, - 0x55, 0xc1, 0xcb, 0x9c, 0x68, 0x7d, 0x2b, 0xc1, 0xda, 0x3e, 0x03, 0x9c, 0x6a, 0x3b, 0xb4, 0xbc, - 0x54, 0xd3, 0x05, 0x38, 0xd2, 0x74, 0xc3, 0x64, 0x8b, 0xf9, 0x9a, 0xee, 0x34, 0x09, 0x76, 0x26, - 0xd8, 0x39, 0xd1, 0x6c, 0xe3, 0xc4, 0xd6, 0x1c, 0x6d, 0x4c, 0x9a, 0x2a, 0x7e, 0x75, 0x81, 0x89, - 0x1b, 0xc9, 0xaa, 0xdc, 0xbc, 0xcc, 0x33, 0x3e, 0xff, 0x78, 0x58, 0x00, 0x91, 0x45, 0x42, 0xde, - 0x94, 0xe6, 0xe4, 0x4d, 0x1e, 0xd3, 0x82, 0x88, 0xa9, 0x0c, 0xcb, 0x34, 0x02, 0xc7, 0x86, 0xbf, - 0xe7, 0x8b, 0x6a, 0x48, 0x2b, 0x3f, 0x4b, 0x80, 0xe2, 0x30, 0xe4, 0xcc, 0x92, 0x8f, 0x05, 0xec, - 0x0a, 0x6c, 0xce, 0xff, 0x53, 0xb1, 0x23, 0xb6, 0x65, 0x12, 0x9c, 0x01, 0xde, 0x03, 0xa8, 0xb9, - 0x91, 0x35, 0x7e, 0xbd, 0x40, 0x9c, 0xdf, 0xfe, 0x90, 0xca, 0x8b, 0x29, 0x03, 0x16, 0x4d, 0x3f, - 0xd3, 0x3f, 0x7a, 0x7d, 0xd0, 0x7d, 0x1b, 0xc9, 0x4b, 0x67, 0x58, 0x09, 0x8b, 0xe4, 0xc4, 0x6a, - 0x1b, 0x8a, 0xae, 0xa6, 0xfb, 0x20, 0x09, 0x05, 0x85, 0xf2, 0x95, 0x87, 0xb0, 0x7c, 0x68, 0x9c, - 0xe3, 0xdc, 0x75, 0xfa, 0x0f, 0x09, 0x2a, 0x74, 0x65, 0x1a, 0xfd, 0x1c, 0xf3, 0x29, 0x14, 0x0e, - 0xb6, 0x47, 0xaf, 0xbd, 0x0c, 0x16, 0x40, 0xc1, 0xb1, 0xd0, 0x1d, 0xb8, 0x12, 0x92, 0x4c, 0x85, - 0x97, 0x0c, 0x44, 0x26, 0xcd, 0x24, 0xfe, 0x26, 0xf4, 0x93, 0x41, 0x55, 0x8d, 0x18, 0x33, 0xb2, - 0xc0, 0x0e, 0xc0, 0xc0, 0x2b, 0x65, 0x74, 0xcf, 0x56, 0x58, 0x16, 0xe1, 0x38, 0xca, 0x5f, 0x05, - 0x80, 0xe7, 0x96, 0x73, 0xde, 0xb3, 0x98, 0x8b, 0x0a, 0xac, 0x4c, 0x43, 0x2a, 0x74, 0x54, 0xe0, - 0x65, 0x9e, 0x49, 0xce, 0x88, 0xa2, 0x68, 0x44, 0x13, 0xaa, 0x23, 0x3f, 0x08, 0x84, 0x95, 0x81, - 0x5a, 0xfb, 0x5a, 0x10, 0xa9, 0x20, 0x3a, 0x6a, 0x24, 0x42, 0x4f, 0xeb, 0xc0, 0xc3, 0x9c, 0xb0, - 0x3a, 0xc0, 0x9d, 0x56, 0x3f, 0x16, 0x6a, 0x28, 0x80, 0xde, 0x81, 0xf5, 0xe9, 0x97, 0x56, 0x47, - 0x33, 0xfb, 0x98, 0xaf, 0x1f, 0x65, 0x96, 0x6d, 0xd3, 0x86, 0x50, 0x1b, 0x36, 0x3c, 0xb6, 0x2b, - 0x4e, 0xa9, 0xb0, 0x29, 0xa9, 0x63, 0x14, 0x7f, 0x83, 0x1c, 0x39, 0xc6, 0x44, 0x73, 0x71, 0x7d, - 0xb9, 0x21, 0xed, 0x2d, 0xab, 0x11, 0x83, 0xee, 0x00, 0x83, 0x1c, 0x5d, 0x9c, 0x8e, 0x8c, 0x41, - 0xbd, 0xca, 0x06, 0x43, 0x9a, 0x46, 0xa0, 0x13, 0x45, 0x00, 0xbc, 0x08, 0x44, 0x1c, 0xe5, 0x1b, - 0x09, 0x36, 0x3d, 0xf2, 0xa9, 0x89, 0xa3, 0x50, 0xd0, 0x53, 0xd7, 0x06, 0x88, 0x90, 0x8f, 0x9f, - 0x07, 0x4e, 0x94, 0x93, 0xba, 0x44, 0xc6, 0xec, 0xc1, 0x56, 0xaa, 0x1d, 0x39, 0xcb, 0xc2, 0x04, - 0x36, 0xbd, 0xfb, 0x49, 0xc2, 0xad, 0xcb, 0x6c, 0xb2, 0x85, 0xdc, 0x48, 0x5d, 0x37, 0xa7, 0x1b, - 0x2e, 0x6c, 0xd0, 0x2d, 0x9a, 0x70, 0x22, 0x2b, 0x19, 0x28, 0xb0, 0xf2, 0x9c, 0x77, 0xce, 0x33, - 0x5f, 0xe0, 0x2d, 0xe0, 0xc4, 0xa7, 0x70, 0x3d, 0x65, 0xd5, 0x9c, 0x2e, 0xfc, 0x28, 0xc1, 0x96, - 0x7f, 0x6e, 0xde, 0xc4, 0x8d, 0x69, 0x8a, 0x1b, 0xd3, 0x98, 0x1b, 0x73, 0x72, 0x1b, 0x97, 0x12, - 0x96, 0x66, 0xde, 0x4e, 0x4a, 0x49, 0x08, 0x9e, 0x40, 0x3d, 0xdd, 0xe8, 0x9c, 0x28, 0x7c, 0x27, - 0xc1, 0x75, 0xbf, 0xe6, 0x44, 0xda, 0x66, 0xbe, 0x8a, 0xba, 0x29, 0x65, 0xf8, 0xcd, 0xaf, 0x30, - 0xf3, 0x83, 0xfd, 0x8b, 0x04, 0x9b, 0x69, 0x96, 0xe5, 0xac, 0x88, 0x0f, 0xa0, 0x16, 0x85, 0x29, - 0x78, 0x6a, 0xa5, 0xa5, 0x0d, 0x5e, 0x2c, 0x76, 0xe7, 0x28, 0xe6, 0xbc, 0x73, 0x28, 0xdf, 0x4b, - 0x70, 0xc3, 0xf7, 0xe5, 0x63, 0xc7, 0xc0, 0xe6, 0xf0, 0x5f, 0x86, 0xf5, 0xaf, 0x12, 0xdc, 0xcc, - 0xb6, 0xef, 0xbf, 0x88, 0xf8, 0x04, 0x6a, 0xfe, 0x39, 0x21, 0x3d, 0xa2, 0xa3, 0xbb, 0xf4, 0xc8, - 0x8d, 0xb9, 0x82, 0x91, 0x28, 0x9d, 0xc1, 0xf8, 0x42, 0x67, 0x3c, 0xb3, 0xa8, 0x2b, 0x3f, 0x48, - 0xd0, 0x48, 0xee, 0x5a, 0xce, 0x94, 0x4b, 0x35, 0x1c, 0x62, 0x1b, 0xa2, 0x98, 0x6f, 0x43, 0x28, - 0xbf, 0x4b, 0x70, 0x6b, 0x8e, 0x91, 0x39, 0x63, 0xfe, 0x1e, 0xac, 0x0c, 0x22, 0x35, 0x41, 0xd0, - 0xd7, 0x63, 0x60, 0xb3, 0x25, 0x04, 0xc1, 0x7f, 0x2a, 0xec, 0x2f, 0x41, 0xe9, 0x8c, 0xb0, 0xe6, - 0xbc, 0x25, 0xfc, 0x95, 0x17, 0x70, 0x7b, 0xae, 0xfe, 0x9c, 0x99, 0x78, 0x04, 0x72, 0x3f, 0x11, - 0x93, 0x43, 0x3c, 0xc1, 0xa3, 0x39, 0x4f, 0x8d, 0x11, 0x95, 0x61, 0xc6, 0x96, 0x54, 0x8f, 0x58, - 0xe0, 0xc4, 0x7f, 0x06, 0x37, 0x32, 0x57, 0xcb, 0xe7, 0x40, 0xfb, 0x27, 0x80, 0x2b, 0x4f, 0x99, - 0x44, 0x1f, 0x3b, 0x13, 0x63, 0x80, 0xd1, 0x43, 0xa8, 0x71, 0xed, 0x31, 0xb4, 0x19, 0x28, 0x10, - 0xfb, 0x6f, 0xf2, 0x56, 0x2a, 0x9f, 0xd8, 0xe8, 0x7d, 0xa8, 0x86, 0x1d, 0x27, 0xb4, 0x11, 0x2e, - 0xcf, 0x35, 0xc2, 0xe4, 0xeb, 0x29, 0x5c, 0x6f, 0x66, 0xd8, 0x06, 0x8a, 0x66, 0xf2, 0x9d, 0xa7, - 0x68, 0xa6, 0xd8, 0x2f, 0x6a, 0x41, 0xd9, 0xeb, 0x93, 0xa0, 0xb5, 0x40, 0x20, 0x6c, 0x05, 0xc9, - 0x28, 0xce, 0x22, 0x36, 0x75, 0x92, 0xeb, 0x17, 0x44, 0x4e, 0x8a, 0xad, 0x92, 0xc8, 0xc9, 0x78, - 0x73, 0x61, 0x9f, 0xf5, 0x23, 0xb9, 0x07, 0x32, 0xfa, 0x1f, 0x87, 0x87, 0xd8, 0x3f, 0x90, 0xe5, - 0xac, 0xa1, 0x50, 0x11, 0xf7, 0x7a, 0x14, 0x14, 0x89, 0x4f, 0x57, 0x41, 0x51, 0xfc, 0xc1, 0xf9, - 0x39, 0xac, 0xa7, 0x5c, 0x79, 0xd1, 0x8e, 0x08, 0x75, 0xfc, 0xd2, 0x24, 0xef, 0xce, 0x1c, 0xf7, - 0xf4, 0xa6, 0xdc, 0x41, 0x23, 0xbd, 0xe9, 0x17, 0xe3, 0x48, 0x6f, 0xd6, 0x05, 0xf6, 0x08, 0xd6, - 0x12, 0xd7, 0x42, 0x74, 0x93, 0x7f, 0x4a, 0x25, 0x74, 0x6e, 0xcf, 0x18, 0x25, 0x36, 0x7a, 0x01, - 0x1b, 0x69, 0xb7, 0x2c, 0xb4, 0x1b, 0x4b, 0x64, 0x09, 0xbd, 0x8d, 0xd9, 0x02, 0xc4, 0x46, 0xfd, - 0xf0, 0x8d, 0xcf, 0x1d, 0x3c, 0xb4, 0x1d, 0x0b, 0x87, 0x78, 0x3f, 0x90, 0x77, 0x66, 0x0d, 0x13, - 0x1b, 0x61, 0xa8, 0x67, 0x95, 0x6f, 0x74, 0x3b, 0x36, 0x37, 0xed, 0x02, 0x22, 0xdf, 0x99, 0x2f, - 0x44, 0x6c, 0xe4, 0xc2, 0xf6, 0xcc, 0xb2, 0x81, 0xf6, 0xb2, 0xed, 0x14, 0x53, 0xb0, 0x7c, 0x77, - 0x41, 0x49, 0x62, 0xa3, 0xaf, 0x60, 0x77, 0x4e, 0xce, 0x45, 0xf7, 0x42, 0xd8, 0xe7, 0x26, 0x7f, - 0xf9, 0xfe, 0xc2, 0xb2, 0xc4, 0x46, 0xa7, 0xb0, 0x95, 0x91, 0x26, 0x91, 0xc2, 0xe5, 0x82, 0x8c, - 0xac, 0x2d, 0xdf, 0x9e, 0x2b, 0x43, 0xec, 0x47, 0x6b, 0x5f, 0xac, 0x36, 0xfd, 0x3f, 0x6c, 0x3e, - 0xf0, 0x7e, 0x4e, 0xcb, 0xec, 0xdf, 0x98, 0x77, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xc1, - 0x31, 0xd6, 0xcf, 0x19, 0x00, 0x00, +var fileDescriptor_office_7066d9c5c43d9815 = []byte{ + // 1531 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0x7f, 0xb7, 0x4d, 0xe2, 0x6e, + 0xfb, 0x95, 0xd2, 0x56, 0x72, 0x90, 0xa9, 0x04, 0x12, 0xa2, 0x42, 0xb5, 0x4b, 0x14, 0x48, 0xda, + 0xb0, 0x4e, 0xa8, 0xca, 0xa1, 0xd1, 0xd6, 0x9e, 0x2c, 0xab, 0xd8, 0xbb, 0xdb, 0x9d, 0x8d, 0x4d, + 0xb9, 0x20, 0x71, 0x80, 0x3f, 0x80, 0x03, 0x27, 0x2e, 0xfc, 0x0b, 0xfc, 0x0d, 0x1c, 0x38, 0x21, + 0x4e, 0x9c, 0x38, 0xc1, 0x1f, 0x82, 0x66, 0xf6, 0xc7, 0xcc, 0xec, 0x0f, 0xdb, 0xdd, 0x52, 0x09, + 0x4e, 0xf1, 0x7b, 0xf3, 0xe6, 0xcd, 0xe7, 0x7d, 0xde, 0xcc, 0x9b, 0xb7, 0x13, 0x58, 0x75, 0xce, + 0xce, 0xac, 0x1e, 0xde, 0x0d, 0xfe, 0x34, 0x5d, 0xcf, 0xf1, 0x1d, 0xb4, 0x10, 0x48, 0xea, 0x8d, + 0xc7, 0x2e, 0xb6, 0x4f, 0xf7, 0x0f, 0x77, 0xdd, 0x73, 0x73, 0x97, 0x0d, 0xed, 0x92, 0xfe, 0xf9, + 0xe9, 0x98, 0xec, 0x8e, 0x49, 0x60, 0xaa, 0xdd, 0x07, 0x68, 0x3b, 0xc3, 0xa1, 0x63, 0xeb, 0x98, + 0xb8, 0xa8, 0x0e, 0x15, 0xec, 0x79, 0x6d, 0xa7, 0x8f, 0xeb, 0x4a, 0x43, 0xd9, 0x99, 0xd7, 0x23, + 0x11, 0xad, 0xc3, 0x02, 0xf6, 0xbc, 0x43, 0x62, 0xd6, 0x4b, 0x0d, 0x65, 0xa7, 0xaa, 0x87, 0x92, + 0xf6, 0x3e, 0x54, 0x8e, 0x0d, 0xf3, 0x84, 0x60, 0x8f, 0x9a, 0x5c, 0x10, 0xec, 0xed, 0x77, 0xd8, + 0xdc, 0xaa, 0x1e, 0x4a, 0x48, 0x85, 0x45, 0xfa, 0xeb, 0x91, 0x31, 0xc4, 0xe1, 0xe4, 0x58, 0xd6, + 0x9e, 0x43, 0xf9, 0xd8, 0x30, 0xd1, 0x1a, 0xcc, 0xfb, 0x86, 0x19, 0xcf, 0x0c, 0x04, 0x8a, 0xc6, + 0x37, 0x4c, 0x61, 0x5e, 0x24, 0xa2, 0xbb, 0x81, 0xcb, 0x03, 0x8b, 0xf8, 0xf5, 0x72, 0xa3, 0xbc, + 0x53, 0x6b, 0x2d, 0x37, 0x43, 0x06, 0x42, 0x34, 0x7a, 0x6c, 0xa0, 0x7d, 0x04, 0x97, 0xf7, 0xb0, + 0x4f, 0x95, 0xc7, 0x86, 0x49, 0x74, 0xfc, 0x22, 0x17, 0x69, 0x03, 0x6a, 0x8e, 0x8b, 0x3d, 0xc3, + 0xb7, 0x1c, 0x7b, 0xbf, 0x13, 0x2e, 0x2a, 0xaa, 0xb4, 0x33, 0x58, 0x96, 0x7c, 0x11, 0x17, 0xb5, + 0x00, 0x7a, 0x31, 0x83, 0xcc, 0x61, 0xad, 0x85, 0x22, 0x34, 0x9c, 0x5b, 0x5d, 0xb0, 0x42, 0xdb, + 0x30, 0xe7, 0x1b, 0x26, 0xa9, 0x97, 0x18, 0xf6, 0x9a, 0x80, 0x5d, 0x67, 0x03, 0xda, 0xd7, 0x0a, + 0x2c, 0xb5, 0x3d, 0x6c, 0xf8, 0x98, 0xea, 0xf0, 0x0b, 0x91, 0x0b, 0x45, 0xe6, 0x82, 0x07, 0x53, + 0x92, 0x82, 0xd9, 0x02, 0x08, 0x7e, 0xc5, 0x2c, 0x55, 0x75, 0x41, 0x93, 0x0c, 0x76, 0x2e, 0x1d, + 0x6c, 0x1b, 0x2e, 0x09, 0x18, 0x8a, 0x85, 0xaa, 0x3d, 0x83, 0xa5, 0x0e, 0x1e, 0xe0, 0x38, 0x90, + 0x3c, 0xee, 0xe3, 0x2d, 0x50, 0x12, 0xb7, 0x40, 0x02, 0x64, 0x39, 0x13, 0xa4, 0xe0, 0xbf, 0x20, + 0xc8, 0xdf, 0x14, 0xa8, 0x76, 0xb1, 0x5f, 0x08, 0x62, 0x1d, 0x2a, 0x36, 0x1e, 0xb3, 0xcc, 0x04, + 0xf0, 0x22, 0x11, 0x35, 0x01, 0x59, 0x76, 0xcf, 0xc3, 0x06, 0xc1, 0x27, 0x3c, 0x13, 0x73, 0x2c, + 0x13, 0x19, 0x23, 0xe8, 0x0e, 0x5c, 0xf1, 0x70, 0xff, 0xa2, 0x27, 0x5a, 0xcf, 0x33, 0xeb, 0x94, + 0x3e, 0x49, 0xcc, 0x42, 0x9a, 0x98, 0x0f, 0x00, 0xa2, 0x90, 0x0a, 0xb2, 0xf2, 0x97, 0x02, 0x97, + 0xbb, 0xd8, 0xee, 0x1f, 0x12, 0xb3, 0x25, 0x6d, 0x43, 0x86, 0x4c, 0x61, 0xc8, 0x22, 0x91, 0x9e, + 0xf2, 0x93, 0xe8, 0x48, 0x96, 0xd8, 0x50, 0x2c, 0xa3, 0xeb, 0x50, 0xdd, 0xf3, 0x9c, 0x0b, 0x57, + 0xd8, 0x89, 0x5c, 0x41, 0xe9, 0x26, 0xd8, 0xee, 0xc7, 0x7b, 0x30, 0x94, 0x28, 0x1d, 0xf4, 0x17, + 0xf6, 0x8e, 0x06, 0x86, 0x7f, 0xe6, 0x78, 0xc3, 0xfd, 0x4e, 0x7d, 0x9e, 0x55, 0xa5, 0x94, 0x9e, + 0xe2, 0xea, 0x39, 0xb6, 0x8f, 0x6d, 0x3f, 0xa4, 0x22, 0x12, 0x93, 0x44, 0x55, 0xd2, 0x44, 0x3d, + 0x84, 0x65, 0x29, 0xca, 0x82, 0x6c, 0x7d, 0xa7, 0xc0, 0xca, 0x1e, 0x23, 0x9c, 0x7a, 0x3b, 0x70, + 0x82, 0x52, 0xd3, 0x01, 0x38, 0x32, 0x4c, 0xcb, 0x66, 0x8b, 0x85, 0x9e, 0x6e, 0x35, 0x09, 0xf6, + 0x46, 0xd8, 0x3b, 0x35, 0x5c, 0xeb, 0xd4, 0x35, 0x3c, 0x63, 0x48, 0x9a, 0x3a, 0x7e, 0x71, 0x81, + 0x89, 0xcf, 0x6d, 0x75, 0x61, 0x5e, 0xee, 0x19, 0x9f, 0x7e, 0x3c, 0x1c, 0x00, 0x8e, 0x48, 0xaa, + 0x9b, 0xca, 0x94, 0xba, 0x29, 0x72, 0x5a, 0x92, 0x39, 0x55, 0x61, 0x91, 0x66, 0xe0, 0xd8, 0x0a, + 0xf7, 0x7c, 0x59, 0x8f, 0x65, 0xed, 0x67, 0x05, 0x50, 0x92, 0x86, 0x82, 0x55, 0xf2, 0xa1, 0xc4, + 0x5d, 0x89, 0xcd, 0xf9, 0x7f, 0x26, 0x77, 0xc4, 0x75, 0x6c, 0x82, 0x73, 0xc8, 0xbb, 0x07, 0x35, + 0x9f, 0xa3, 0x09, 0xef, 0x0b, 0x24, 0xc4, 0x1d, 0x0e, 0xe9, 0xa2, 0x99, 0xd6, 0x63, 0xd9, 0x0c, + 0x2b, 0xfd, 0x83, 0x97, 0xfb, 0x9d, 0x37, 0x51, 0xbc, 0x4c, 0xc6, 0x95, 0xb4, 0x48, 0x41, 0xae, + 0x36, 0xa1, 0xec, 0x1b, 0x66, 0x48, 0x92, 0x74, 0xa1, 0x50, 0xbd, 0x76, 0x1f, 0x16, 0x0f, 0xac, + 0x73, 0x5c, 0xf8, 0x9e, 0xfe, 0x43, 0x81, 0x0a, 0x5d, 0x99, 0x66, 0xbf, 0xc0, 0x7c, 0x4a, 0x85, + 0x87, 0xdd, 0xc1, 0xcb, 0xa0, 0x82, 0x45, 0x54, 0x08, 0x2a, 0x74, 0x0b, 0x2e, 0xc5, 0x22, 0x73, + 0x11, 0x14, 0x03, 0x59, 0x49, 0x2b, 0x49, 0xb8, 0x09, 0xc3, 0x62, 0x50, 0xd5, 0xb9, 0x62, 0x42, + 0x15, 0xd8, 0x02, 0xe8, 0x05, 0x57, 0x19, 0xdd, 0xb3, 0x15, 0x56, 0x45, 0x04, 0x8d, 0xf6, 0x67, + 0x09, 0xe0, 0x89, 0xe3, 0x9d, 0x1f, 0x3a, 0x2c, 0x44, 0x0d, 0x96, 0xc6, 0xb1, 0x14, 0x07, 0x2a, + 0xe9, 0x72, 0xcf, 0xa4, 0x00, 0xa2, 0x2c, 0x83, 0x68, 0x42, 0x75, 0x10, 0x26, 0x81, 0xb0, 0x6b, + 0xa0, 0xd6, 0xba, 0x12, 0x65, 0x2a, 0xca, 0x8e, 0xce, 0x4d, 0xe8, 0x69, 0xed, 0x05, 0x9c, 0x13, + 0x76, 0x0f, 0x08, 0xa7, 0x35, 0xcc, 0x85, 0x1e, 0x1b, 0xa0, 0xb7, 0x60, 0x75, 0xfc, 0xb9, 0xd3, + 0x36, 0xec, 0x2e, 0x16, 0xef, 0x8f, 0x05, 0x56, 0x6d, 0xb3, 0x86, 0x50, 0x0b, 0xd6, 0x02, 0xb5, + 0x2f, 0x4f, 0xa9, 0xb0, 0x29, 0x99, 0x63, 0x94, 0x7f, 0x8b, 0x1c, 0x79, 0xd6, 0xc8, 0xf0, 0x71, + 0x7d, 0xb1, 0xa1, 0xec, 0x2c, 0xea, 0x5c, 0x41, 0x59, 0x6e, 0x73, 0x96, 0x21, 0x60, 0x99, 0x6b, + 0xb4, 0x6f, 0x14, 0x58, 0x0f, 0xc4, 0xc7, 0x36, 0xe6, 0x74, 0xd3, 0x93, 0xd5, 0x02, 0xe0, 0xec, + 0x26, 0xf7, 0xbc, 0x60, 0x2a, 0x58, 0xbd, 0x46, 0x55, 0x3c, 0x84, 0x8d, 0x4c, 0x1c, 0x05, 0x4b, + 0xff, 0x08, 0xd6, 0x83, 0x1e, 0x24, 0x15, 0xd6, 0xeb, 0x6c, 0xa4, 0x99, 0xc2, 0xc8, 0x5c, 0xb7, + 0x60, 0x18, 0x3e, 0xac, 0xd1, 0x6d, 0x98, 0x0a, 0x22, 0xef, 0xc0, 0x6b, 0xb0, 0xf4, 0x44, 0x0c, + 0x2e, 0x80, 0x2f, 0xe9, 0x66, 0x08, 0xe2, 0x63, 0xb8, 0x9a, 0xb1, 0x6a, 0xc1, 0x10, 0x7e, 0x52, + 0x60, 0x23, 0x3c, 0x1b, 0xaf, 0x12, 0xc6, 0x38, 0x23, 0x8c, 0x71, 0x22, 0x8c, 0x29, 0xf5, 0x4b, + 0x38, 0xf6, 0x73, 0x13, 0x3b, 0x90, 0xf9, 0x34, 0x05, 0x8f, 0xa0, 0x9e, 0x0d, 0xba, 0x20, 0x0b, + 0x5f, 0xc0, 0xda, 0x1e, 0xf6, 0xb9, 0xa3, 0xe8, 0xfa, 0x9a, 0x65, 0x37, 0xaa, 0xb0, 0xe8, 0xb8, + 0x27, 0xe2, 0x7e, 0x8c, 0xe5, 0x19, 0x92, 0xf9, 0x15, 0x5c, 0xcd, 0x58, 0xb9, 0xe0, 0x9d, 0x26, + 0xd7, 0x84, 0xd2, 0x2c, 0x35, 0x41, 0xfb, 0x5e, 0x61, 0x08, 0x28, 0x60, 0x6e, 0x31, 0xf1, 0xa3, + 0xaf, 0x93, 0xd1, 0x65, 0xbc, 0x7a, 0x87, 0x36, 0x9d, 0x9a, 0x5f, 0x14, 0x58, 0xcf, 0x42, 0x56, + 0x90, 0x9c, 0x7b, 0x50, 0xe3, 0x61, 0x47, 0x5f, 0x92, 0x59, 0xec, 0x88, 0x66, 0x89, 0x96, 0xaa, + 0x5c, 0xb0, 0xa5, 0xd2, 0x7e, 0x50, 0xe0, 0x5a, 0x18, 0xcb, 0x87, 0x9e, 0x85, 0xed, 0xfe, 0xbf, + 0x8c, 0xeb, 0x5f, 0x15, 0xb8, 0x9e, 0x8f, 0xef, 0xbf, 0xc8, 0xf8, 0x08, 0x6a, 0x61, 0x89, 0x20, + 0x87, 0xc4, 0x44, 0xb7, 0x69, 0xb5, 0x19, 0x0a, 0x77, 0x65, 0xaa, 0x33, 0x88, 0xc6, 0x67, 0x2a, + 0x6f, 0xb9, 0x3d, 0x8b, 0xf6, 0xa3, 0x02, 0x8d, 0xf4, 0xae, 0x15, 0xa0, 0xbc, 0xd6, 0x7b, 0x4a, + 0x62, 0x43, 0x94, 0x8b, 0x6d, 0x08, 0xed, 0x77, 0x05, 0x6e, 0x4c, 0x01, 0x59, 0x30, 0xe7, 0xef, + 0xc0, 0x52, 0x8f, 0xbb, 0x89, 0x92, 0xbe, 0x9a, 0x20, 0x9b, 0x2d, 0x21, 0x19, 0xfe, 0x53, 0x69, + 0x7f, 0x06, 0x5a, 0x7b, 0x80, 0x0d, 0xef, 0x0d, 0xf1, 0xaf, 0x3d, 0x85, 0x9b, 0x53, 0xfd, 0x17, + 0xbc, 0x84, 0x06, 0xa0, 0x76, 0x53, 0x39, 0x39, 0xc0, 0x23, 0x3c, 0x98, 0xf2, 0x25, 0x35, 0xa0, + 0x36, 0x0c, 0xec, 0xbc, 0x1e, 0x08, 0x33, 0x9c, 0xf8, 0x4f, 0xe0, 0x5a, 0xee, 0x6a, 0xc5, 0x02, + 0x68, 0x7d, 0x5b, 0x83, 0x4b, 0x8f, 0x99, 0x45, 0x17, 0x7b, 0x23, 0xab, 0x87, 0xd1, 0x7d, 0xa8, + 0x09, 0xaf, 0x7f, 0x68, 0x3d, 0x72, 0x20, 0x3f, 0x2f, 0xaa, 0x1b, 0x99, 0x7a, 0xe2, 0xa2, 0x77, + 0xa1, 0x1a, 0x3f, 0xa8, 0xa1, 0xb5, 0x78, 0x79, 0xe1, 0x9d, 0x4f, 0xbd, 0x9a, 0xa1, 0x0d, 0x66, + 0xc6, 0xaf, 0x5c, 0x7c, 0xa6, 0xf8, 0xb0, 0xc6, 0x67, 0xca, 0xcf, 0x61, 0xbb, 0xb0, 0x10, 0x3c, + 0x03, 0xa1, 0x95, 0xc8, 0x20, 0x7e, 0xe9, 0x52, 0x51, 0x52, 0x45, 0x5c, 0x1a, 0xa4, 0xf0, 0x1c, + 0xc2, 0x83, 0x94, 0x5f, 0x82, 0x78, 0x90, 0xc9, 0xb7, 0x93, 0x3d, 0xf6, 0xdc, 0x2a, 0x7c, 0xff, + 0xa3, 0xff, 0x09, 0x7c, 0xc8, 0xcf, 0x23, 0xaa, 0x9a, 0x37, 0x14, 0x3b, 0x12, 0x3e, 0x8e, 0x25, + 0x47, 0xf2, 0x97, 0xb9, 0xe4, 0x28, 0xf9, 0x3d, 0xfd, 0x29, 0xac, 0x66, 0x74, 0xfb, 0x68, 0x4b, + 0xa6, 0x3a, 0xd9, 0x2f, 0xaa, 0xdb, 0x13, 0xc7, 0x03, 0xbf, 0x19, 0xed, 0x37, 0xf7, 0x9b, 0xfd, + 0x4d, 0xc0, 0xfd, 0xe6, 0xf5, 0xee, 0x47, 0xb0, 0x92, 0xea, 0x88, 0xd1, 0x75, 0xf1, 0x4b, 0x31, + 0xe5, 0x73, 0x73, 0xc2, 0x28, 0x71, 0xd1, 0x53, 0x58, 0xcb, 0x6a, 0x30, 0xd1, 0x76, 0xa2, 0x90, + 0xa5, 0xfc, 0x36, 0x26, 0x1b, 0x04, 0x60, 0x53, 0x1d, 0x1f, 0x07, 0x9b, 0xd5, 0x86, 0x72, 0xb0, + 0xd9, 0xad, 0x62, 0x37, 0x7e, 0x14, 0x11, 0x8e, 0x32, 0xda, 0x4c, 0x24, 0x58, 0xee, 0x38, 0xd4, + 0xad, 0x49, 0xc3, 0xc4, 0x45, 0x18, 0xea, 0x79, 0x0d, 0x01, 0xba, 0x99, 0x98, 0x9b, 0xd5, 0xd2, + 0xa8, 0xb7, 0xa6, 0x1b, 0x11, 0x17, 0xf9, 0xb0, 0x39, 0xf1, 0x22, 0x42, 0x3b, 0xf9, 0x38, 0xe5, + 0xa2, 0xae, 0xde, 0x9e, 0xd1, 0x92, 0xb8, 0xe8, 0x4b, 0xd8, 0x9e, 0x52, 0xc5, 0xd1, 0x9d, 0x38, + 0x91, 0x53, 0xaf, 0x13, 0xf5, 0xee, 0xcc, 0xb6, 0xc4, 0x45, 0xcf, 0x61, 0x23, 0xa7, 0xf0, 0x22, + 0x4d, 0xa8, 0x2e, 0x39, 0xf7, 0x80, 0x7a, 0x73, 0xaa, 0x0d, 0x71, 0x1f, 0xac, 0x7c, 0xb6, 0xdc, + 0x0c, 0xff, 0xc3, 0xf5, 0x5e, 0xf0, 0xe7, 0xf9, 0x02, 0xfb, 0xf7, 0xd5, 0xdb, 0x7f, 0x07, 0x00, + 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x93, 0x9b, 0x00, 0x1b, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index 6642f674f..c57c72f2e 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -132,7 +132,6 @@ message WorkMoment { repeated string whoCanSeeUserIDList = 6; repeated string whoCantSeeUserIDList = 7; bool isPrivate = 8; - bool isPublic = 9; int32 CreateTime = 10; } @@ -178,6 +177,17 @@ 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 GetUserWorkMomentsReq { string userID = 1; server_api_params.RequestPagination Pagination = 2; @@ -252,6 +262,7 @@ service OfficeService { rpc DeleteOneWorkMoment(DeleteOneWorkMomentReq) returns(DeleteOneWorkMomentResp); rpc LikeOneWorkMoment(LikeOneWorkMomentReq) returns(LikeOneWorkMomentResp); rpc CommentOneWorkMoment(CommentOneWorkMomentReq) returns(CommentOneWorkMomentResp); + rpc GetWorkMomentByID(GetWorkMomentByIDReq) returns(GetWorkMomentByIDResp); /// user self rpc GetUserWorkMoments(GetUserWorkMomentsReq) returns(GetUserWorkMomentsResp); /// users friend From fe3bd2a1f1c283568a37abd9e23a42da297e4b9f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:16:23 +0800 Subject: [PATCH 083/128] add operationID when ws connecting --- internal/msg_gateway/gate/ws_server.go | 14 +++++++++----- pkg/common/token_verify/jwt_token.go | 6 +++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 7c602a5fc..7686b6cab 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -262,19 +262,23 @@ 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)) + http.Error(w, err.Error(), 2001) 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") http.Error(w, http.StatusText(status), status) return false diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index bfff43116..16eb5e8d0 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -218,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" } 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" } 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" } log.NewDebug("", claims.UID, claims.Platform) return true, nil, "" From 97fd107f474e682ba953ad0426809a9b0ceffb2a Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:29:48 +0800 Subject: [PATCH 084/128] add operationID when ws connecting --- cmd/Open-IM-SDK-Core | 2 +- internal/msg_gateway/gate/ws_server.go | 2 +- pkg/common/token_verify/jwt_token.go | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 3ecd23203..fd87b4bfc 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 3ecd23203cd6bd746b1fcb0c70755bd2cbf5361c +Subproject commit fd87b4bfc3ee7e9f4c50140b884eb4505d00bc44 diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 7686b6cab..18f507c42 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -271,7 +271,7 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { // 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, err.Error(), 2001) + http.Error(w, err.Error(), status) return false } else { log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 16eb5e8d0..e58424623 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -218,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, utils.Wrap(err, ""), "parse token err" + return false, utils.Wrap(err, "parse token err"), "parse token err" } if claims.UID != uid { - return false, utils.Wrap(&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, utils.Wrap(&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, "" From f7b5a86a09bd1314aa5827754b1539c6cca93436 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:34:58 +0800 Subject: [PATCH 085/128] add operationID when ws connecting --- internal/msg_gateway/gate/ws_server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 18f507c42..130daf7af 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -271,7 +271,7 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { // 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, err.Error(), status) + http.Error(w, err.Error(), 1222212) return false } else { log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) From bd6e8d093acb8b91fa74d645b7346f47b54bb71e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 18 Apr 2022 21:39:46 +0800 Subject: [PATCH 086/128] add operationID when ws connecting --- internal/msg_gateway/gate/ws_server.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 130daf7af..dd18f7bc8 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -271,7 +271,8 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { // 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, err.Error(), 1222212) + w.Header().Set("ws_err_msg", err.Error()) + http.Error(w, err.Error(), status) return false } else { log.Info(operationID, "Connection Authentication Success", "", "token", query["token"][0], "userID", query["sendID"][0]) @@ -280,6 +281,7 @@ func (ws *WServer) headerCheck(w http.ResponseWriter, r *http.Request) bool { } else { 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 } From 957e11eff0fbc4b3dba53bd36767181fb99ea23b Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 13:05:54 +0800 Subject: [PATCH 087/128] workMoments --- internal/api/office/work_moments.go | 7 +- internal/rpc/office/office.go | 39 ++-- pkg/base_info/work_moments_struct.go | 1 - pkg/common/db/mongoModel.go | 14 +- pkg/proto/office/office.pb.go | 292 +++++++++++++-------------- pkg/proto/office/office.proto | 3 +- 6 files changed, 178 insertions(+), 178 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index d1be4cb4e..108ab5858 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -37,7 +37,7 @@ func CreateOneWorkMoment(c *gin.Context) { if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - reqPb.UserID = userID + 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) @@ -46,8 +46,9 @@ func CreateOneWorkMoment(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "CreateOneWorkMoment 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.CommResp = apiStruct.CommResp{ + ErrCode: respPb.CommonResp.ErrCode, + ErrMsg: respPb.CommonResp.ErrMsg, } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) c.JSON(http.StatusOK, resp) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 9dc7d91db..1fd328650 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -269,7 +269,7 @@ func (s *officeServer) GetUserTagByID(_ context.Context, req *pbOffice.GetUserTa 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{} + resp = &pbOffice.CreateOneWorkMomentResp{CommonResp: &pbOffice.CommonResp{}} workMoment := db.WorkMoment{} if err := utils.CopyStructFields(&workMoment, req.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) @@ -286,7 +286,7 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea 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{} + 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()) @@ -326,8 +326,14 @@ func isUserCanSeeWorkMoment(userID string, workMoment db.WorkMoment) bool { 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{} - if err = db.DB.LikeOneWorkMoment(req.UserID, req.WorkMomentID); err != nil { + 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 + } + if err = db.DB.LikeOneWorkMoment(req.UserID, userName, req.WorkMomentID); 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 @@ -338,7 +344,7 @@ func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOn 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{} + 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()) @@ -383,7 +389,10 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com 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{} + 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()) @@ -391,7 +400,7 @@ func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWor return resp, nil } canSee := isUserCanSeeWorkMoment(req.OpUserID, *workMoment) - log.Debug(req.OperationID, utils.GetSelfFuncName(), canSee, req.OpUserID, workMoment) + log.Debug(req.OperationID, utils.GetSelfFuncName(), canSee, req.OpUserID, *workMoment) if err := utils.CopyStructFields(resp.WorkMoment, workMoment); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) } @@ -401,8 +410,8 @@ func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWor 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{} - resp.WorkMoments = make([]*pbOffice.WorkMoment, req.Pagination.ShowNumber) + resp = &pbOffice.GetUserWorkMomentsResp{CommonResp: &pbOffice.CommonResp{}} + 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) @@ -419,8 +428,8 @@ func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUs 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{} - resp.WorkMoments = make([]*pbOffice.WorkMoment, req.Pagination.ShowNumber) + resp = &pbOffice.GetUserFriendWorkMomentsResp{CommonResp: &pbOffice.CommonResp{}} + resp.WorkMoments = make([]*pbOffice.WorkMoment, 0) friendIDList, err := imdb.GetFriendIDListByUserID(req.UserID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetFriendIDListByUserID", err.Error()) @@ -444,8 +453,8 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{} - resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, req.Pagination.ShowNumber) + resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}} + resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, 0) workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) @@ -470,7 +479,7 @@ func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbO 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{} + 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} @@ -482,7 +491,7 @@ func (s *officeServer) SetUserWorkMomentsLevel(_ context.Context, req *pbOffice. func (s *officeServer) ClearUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.ClearUserWorkMomentsCommentsMsgReq) (resp *pbOffice.ClearUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.ClearUserWorkMomentsCommentsMsgResp{} + resp = &pbOffice.ClearUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}} if err := db.DB.ClearUserWorkMomentsCommentsMsg(req.UserID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "ClearUserWorkMomentsCommentsMsg", err.Error()) resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index c9feb5c0a..107b74b70 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -38,7 +38,6 @@ type WorkMomentsUserCommonReq struct { PageNumber int32 `json:"pageNumber" binding:"required"` ShowNumber int32 `json:"showNumber" binding:"required"` OperationID string `json:"operationID" binding:"required"` - UserID string `json:"UserID" binding:"required"` } type GetWorkMomentByIDReq struct { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index ff7cc0d35..4d75da427 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -617,25 +617,25 @@ func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) return workMoment, err } -func (d *DataBases) LikeOneWorkMoment(likeUserID, workMomentID string) error { +func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) error { workMoment, err := d.GetWorkMomentByID(workMomentID) if err != nil { return err } + var isAlreadyLike bool for i, user := range workMoment.LikeUsers { if likeUserID == user.UserID { + isAlreadyLike = true workMoment.LikeUsers = append(workMoment.LikeUsers[0:i], workMoment.LikeUsers[i+1:]...) - return nil } } - workMoment.LikeUsers = append(workMoment.LikeUsers, &LikeUser{UserID: likeUserID}) + if !isAlreadyLike { + workMoment.LikeUsers = append(workMoment.LikeUsers, &LikeUser{UserID: likeUserID, UserName: userName}) + } 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_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUsers}}) - if err != nil { - return err - } - return nil + return err } func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index 30eed4b2e..a9c0a2fc7 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_7066d9c5c43d9815, []int{0} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{1} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{2} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{3} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{4} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{5} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{6} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{7} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{8} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{9} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{10} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{11} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{12} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{13} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{14} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{15} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{16} + return fileDescriptor_office_373be750de153751, []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_7066d9c5c43d9815, []int{17} + return fileDescriptor_office_373be750de153751, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_7066d9c5c43d9815, []int{18} + return fileDescriptor_office_373be750de153751, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1019,7 +1019,7 @@ 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_7066d9c5c43d9815, []int{19} + return fileDescriptor_office_373be750de153751, []int{19} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1107,7 +1107,7 @@ 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_7066d9c5c43d9815, []int{20} + return fileDescriptor_office_373be750de153751, []int{20} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1192,8 +1192,7 @@ func (m *WorkMoment) GetCreateTime() int32 { type CreateOneWorkMomentReq struct { WorkMoment *WorkMoment `protobuf:"bytes,1,opt,name=workMoment" json:"workMoment,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1203,7 +1202,7 @@ 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_7066d9c5c43d9815, []int{21} + return fileDescriptor_office_373be750de153751, []int{21} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1230,13 +1229,6 @@ func (m *CreateOneWorkMomentReq) GetWorkMoment() *WorkMoment { return nil } -func (m *CreateOneWorkMomentReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - func (m *CreateOneWorkMomentReq) GetOperationID() string { if m != nil { return m.OperationID @@ -1255,7 +1247,7 @@ 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_7066d9c5c43d9815, []int{22} + return fileDescriptor_office_373be750de153751, []int{22} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1295,7 +1287,7 @@ 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_7066d9c5c43d9815, []int{23} + return fileDescriptor_office_373be750de153751, []int{23} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1347,7 +1339,7 @@ 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_7066d9c5c43d9815, []int{24} + return fileDescriptor_office_373be750de153751, []int{24} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1387,7 +1379,7 @@ 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_7066d9c5c43d9815, []int{25} + return fileDescriptor_office_373be750de153751, []int{25} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1439,7 +1431,7 @@ 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_7066d9c5c43d9815, []int{26} + return fileDescriptor_office_373be750de153751, []int{26} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1481,7 +1473,7 @@ 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_7066d9c5c43d9815, []int{27} + return fileDescriptor_office_373be750de153751, []int{27} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1547,7 +1539,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{28} + return fileDescriptor_office_373be750de153751, []int{28} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1587,7 +1579,7 @@ 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_7066d9c5c43d9815, []int{29} + return fileDescriptor_office_373be750de153751, []int{29} } func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) @@ -1640,7 +1632,7 @@ 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_7066d9c5c43d9815, []int{30} + return fileDescriptor_office_373be750de153751, []int{30} } func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) @@ -1687,7 +1679,7 @@ 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_7066d9c5c43d9815, []int{31} + return fileDescriptor_office_373be750de153751, []int{31} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1741,7 +1733,7 @@ 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_7066d9c5c43d9815, []int{32} + return fileDescriptor_office_373be750de153751, []int{32} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1795,7 +1787,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{33} + return fileDescriptor_office_373be750de153751, []int{33} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -1849,7 +1841,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{34} + return fileDescriptor_office_373be750de153751, []int{34} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -1903,7 +1895,7 @@ func (m *CommentsMsg) Reset() { *m = CommentsMsg{} } func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } func (*CommentsMsg) ProtoMessage() {} func (*CommentsMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{35} + return fileDescriptor_office_373be750de153751, []int{35} } func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) @@ -1957,7 +1949,7 @@ func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMom func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{36} + return fileDescriptor_office_373be750de153751, []int{36} } func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2011,7 +2003,7 @@ func (m *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMo func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{37} + return fileDescriptor_office_373be750de153751, []int{37} } func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2064,7 +2056,7 @@ func (m *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWor func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{38} + return fileDescriptor_office_373be750de153751, []int{38} } func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2109,7 +2101,7 @@ func (m *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWo func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{39} + return fileDescriptor_office_373be750de153751, []int{39} } func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2149,7 +2141,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{40} + return fileDescriptor_office_373be750de153751, []int{40} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2201,7 +2193,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_7066d9c5c43d9815, []int{41} + return fileDescriptor_office_373be750de153751, []int{41} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2877,104 +2869,104 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_7066d9c5c43d9815) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_373be750de153751) } -var fileDescriptor_office_7066d9c5c43d9815 = []byte{ - // 1531 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0x7f, 0xb7, 0x4d, 0xe2, 0x6e, - 0xfb, 0x95, 0xd2, 0x56, 0x72, 0x90, 0xa9, 0x04, 0x12, 0xa2, 0x42, 0xb5, 0x4b, 0x14, 0x48, 0xda, - 0xb0, 0x4e, 0xa8, 0xca, 0xa1, 0xd1, 0xd6, 0x9e, 0x2c, 0xab, 0xd8, 0xbb, 0xdb, 0x9d, 0x8d, 0x4d, - 0xb9, 0x20, 0x71, 0x80, 0x3f, 0x80, 0x03, 0x27, 0x2e, 0xfc, 0x0b, 0xfc, 0x0d, 0x1c, 0x38, 0x21, - 0x4e, 0x9c, 0x38, 0xc1, 0x1f, 0x82, 0x66, 0xf6, 0xc7, 0xcc, 0xec, 0x0f, 0xdb, 0xdd, 0x52, 0x09, - 0x4e, 0xf1, 0x7b, 0xf3, 0xe6, 0xcd, 0xe7, 0x7d, 0xde, 0xcc, 0x9b, 0xb7, 0x13, 0x58, 0x75, 0xce, - 0xce, 0xac, 0x1e, 0xde, 0x0d, 0xfe, 0x34, 0x5d, 0xcf, 0xf1, 0x1d, 0xb4, 0x10, 0x48, 0xea, 0x8d, - 0xc7, 0x2e, 0xb6, 0x4f, 0xf7, 0x0f, 0x77, 0xdd, 0x73, 0x73, 0x97, 0x0d, 0xed, 0x92, 0xfe, 0xf9, - 0xe9, 0x98, 0xec, 0x8e, 0x49, 0x60, 0xaa, 0xdd, 0x07, 0x68, 0x3b, 0xc3, 0xa1, 0x63, 0xeb, 0x98, - 0xb8, 0xa8, 0x0e, 0x15, 0xec, 0x79, 0x6d, 0xa7, 0x8f, 0xeb, 0x4a, 0x43, 0xd9, 0x99, 0xd7, 0x23, - 0x11, 0xad, 0xc3, 0x02, 0xf6, 0xbc, 0x43, 0x62, 0xd6, 0x4b, 0x0d, 0x65, 0xa7, 0xaa, 0x87, 0x92, - 0xf6, 0x3e, 0x54, 0x8e, 0x0d, 0xf3, 0x84, 0x60, 0x8f, 0x9a, 0x5c, 0x10, 0xec, 0xed, 0x77, 0xd8, - 0xdc, 0xaa, 0x1e, 0x4a, 0x48, 0x85, 0x45, 0xfa, 0xeb, 0x91, 0x31, 0xc4, 0xe1, 0xe4, 0x58, 0xd6, - 0x9e, 0x43, 0xf9, 0xd8, 0x30, 0xd1, 0x1a, 0xcc, 0xfb, 0x86, 0x19, 0xcf, 0x0c, 0x04, 0x8a, 0xc6, - 0x37, 0x4c, 0x61, 0x5e, 0x24, 0xa2, 0xbb, 0x81, 0xcb, 0x03, 0x8b, 0xf8, 0xf5, 0x72, 0xa3, 0xbc, - 0x53, 0x6b, 0x2d, 0x37, 0x43, 0x06, 0x42, 0x34, 0x7a, 0x6c, 0xa0, 0x7d, 0x04, 0x97, 0xf7, 0xb0, - 0x4f, 0x95, 0xc7, 0x86, 0x49, 0x74, 0xfc, 0x22, 0x17, 0x69, 0x03, 0x6a, 0x8e, 0x8b, 0x3d, 0xc3, - 0xb7, 0x1c, 0x7b, 0xbf, 0x13, 0x2e, 0x2a, 0xaa, 0xb4, 0x33, 0x58, 0x96, 0x7c, 0x11, 0x17, 0xb5, - 0x00, 0x7a, 0x31, 0x83, 0xcc, 0x61, 0xad, 0x85, 0x22, 0x34, 0x9c, 0x5b, 0x5d, 0xb0, 0x42, 0xdb, - 0x30, 0xe7, 0x1b, 0x26, 0xa9, 0x97, 0x18, 0xf6, 0x9a, 0x80, 0x5d, 0x67, 0x03, 0xda, 0xd7, 0x0a, - 0x2c, 0xb5, 0x3d, 0x6c, 0xf8, 0x98, 0xea, 0xf0, 0x0b, 0x91, 0x0b, 0x45, 0xe6, 0x82, 0x07, 0x53, - 0x92, 0x82, 0xd9, 0x02, 0x08, 0x7e, 0xc5, 0x2c, 0x55, 0x75, 0x41, 0x93, 0x0c, 0x76, 0x2e, 0x1d, - 0x6c, 0x1b, 0x2e, 0x09, 0x18, 0x8a, 0x85, 0xaa, 0x3d, 0x83, 0xa5, 0x0e, 0x1e, 0xe0, 0x38, 0x90, - 0x3c, 0xee, 0xe3, 0x2d, 0x50, 0x12, 0xb7, 0x40, 0x02, 0x64, 0x39, 0x13, 0xa4, 0xe0, 0xbf, 0x20, - 0xc8, 0xdf, 0x14, 0xa8, 0x76, 0xb1, 0x5f, 0x08, 0x62, 0x1d, 0x2a, 0x36, 0x1e, 0xb3, 0xcc, 0x04, - 0xf0, 0x22, 0x11, 0x35, 0x01, 0x59, 0x76, 0xcf, 0xc3, 0x06, 0xc1, 0x27, 0x3c, 0x13, 0x73, 0x2c, - 0x13, 0x19, 0x23, 0xe8, 0x0e, 0x5c, 0xf1, 0x70, 0xff, 0xa2, 0x27, 0x5a, 0xcf, 0x33, 0xeb, 0x94, - 0x3e, 0x49, 0xcc, 0x42, 0x9a, 0x98, 0x0f, 0x00, 0xa2, 0x90, 0x0a, 0xb2, 0xf2, 0x97, 0x02, 0x97, - 0xbb, 0xd8, 0xee, 0x1f, 0x12, 0xb3, 0x25, 0x6d, 0x43, 0x86, 0x4c, 0x61, 0xc8, 0x22, 0x91, 0x9e, - 0xf2, 0x93, 0xe8, 0x48, 0x96, 0xd8, 0x50, 0x2c, 0xa3, 0xeb, 0x50, 0xdd, 0xf3, 0x9c, 0x0b, 0x57, - 0xd8, 0x89, 0x5c, 0x41, 0xe9, 0x26, 0xd8, 0xee, 0xc7, 0x7b, 0x30, 0x94, 0x28, 0x1d, 0xf4, 0x17, - 0xf6, 0x8e, 0x06, 0x86, 0x7f, 0xe6, 0x78, 0xc3, 0xfd, 0x4e, 0x7d, 0x9e, 0x55, 0xa5, 0x94, 0x9e, - 0xe2, 0xea, 0x39, 0xb6, 0x8f, 0x6d, 0x3f, 0xa4, 0x22, 0x12, 0x93, 0x44, 0x55, 0xd2, 0x44, 0x3d, - 0x84, 0x65, 0x29, 0xca, 0x82, 0x6c, 0x7d, 0xa7, 0xc0, 0xca, 0x1e, 0x23, 0x9c, 0x7a, 0x3b, 0x70, - 0x82, 0x52, 0xd3, 0x01, 0x38, 0x32, 0x4c, 0xcb, 0x66, 0x8b, 0x85, 0x9e, 0x6e, 0x35, 0x09, 0xf6, - 0x46, 0xd8, 0x3b, 0x35, 0x5c, 0xeb, 0xd4, 0x35, 0x3c, 0x63, 0x48, 0x9a, 0x3a, 0x7e, 0x71, 0x81, - 0x89, 0xcf, 0x6d, 0x75, 0x61, 0x5e, 0xee, 0x19, 0x9f, 0x7e, 0x3c, 0x1c, 0x00, 0x8e, 0x48, 0xaa, - 0x9b, 0xca, 0x94, 0xba, 0x29, 0x72, 0x5a, 0x92, 0x39, 0x55, 0x61, 0x91, 0x66, 0xe0, 0xd8, 0x0a, - 0xf7, 0x7c, 0x59, 0x8f, 0x65, 0xed, 0x67, 0x05, 0x50, 0x92, 0x86, 0x82, 0x55, 0xf2, 0xa1, 0xc4, - 0x5d, 0x89, 0xcd, 0xf9, 0x7f, 0x26, 0x77, 0xc4, 0x75, 0x6c, 0x82, 0x73, 0xc8, 0xbb, 0x07, 0x35, - 0x9f, 0xa3, 0x09, 0xef, 0x0b, 0x24, 0xc4, 0x1d, 0x0e, 0xe9, 0xa2, 0x99, 0xd6, 0x63, 0xd9, 0x0c, - 0x2b, 0xfd, 0x83, 0x97, 0xfb, 0x9d, 0x37, 0x51, 0xbc, 0x4c, 0xc6, 0x95, 0xb4, 0x48, 0x41, 0xae, - 0x36, 0xa1, 0xec, 0x1b, 0x66, 0x48, 0x92, 0x74, 0xa1, 0x50, 0xbd, 0x76, 0x1f, 0x16, 0x0f, 0xac, - 0x73, 0x5c, 0xf8, 0x9e, 0xfe, 0x43, 0x81, 0x0a, 0x5d, 0x99, 0x66, 0xbf, 0xc0, 0x7c, 0x4a, 0x85, - 0x87, 0xdd, 0xc1, 0xcb, 0xa0, 0x82, 0x45, 0x54, 0x08, 0x2a, 0x74, 0x0b, 0x2e, 0xc5, 0x22, 0x73, - 0x11, 0x14, 0x03, 0x59, 0x49, 0x2b, 0x49, 0xb8, 0x09, 0xc3, 0x62, 0x50, 0xd5, 0xb9, 0x62, 0x42, - 0x15, 0xd8, 0x02, 0xe8, 0x05, 0x57, 0x19, 0xdd, 0xb3, 0x15, 0x56, 0x45, 0x04, 0x8d, 0xf6, 0x67, - 0x09, 0xe0, 0x89, 0xe3, 0x9d, 0x1f, 0x3a, 0x2c, 0x44, 0x0d, 0x96, 0xc6, 0xb1, 0x14, 0x07, 0x2a, - 0xe9, 0x72, 0xcf, 0xa4, 0x00, 0xa2, 0x2c, 0x83, 0x68, 0x42, 0x75, 0x10, 0x26, 0x81, 0xb0, 0x6b, - 0xa0, 0xd6, 0xba, 0x12, 0x65, 0x2a, 0xca, 0x8e, 0xce, 0x4d, 0xe8, 0x69, 0xed, 0x05, 0x9c, 0x13, - 0x76, 0x0f, 0x08, 0xa7, 0x35, 0xcc, 0x85, 0x1e, 0x1b, 0xa0, 0xb7, 0x60, 0x75, 0xfc, 0xb9, 0xd3, - 0x36, 0xec, 0x2e, 0x16, 0xef, 0x8f, 0x05, 0x56, 0x6d, 0xb3, 0x86, 0x50, 0x0b, 0xd6, 0x02, 0xb5, - 0x2f, 0x4f, 0xa9, 0xb0, 0x29, 0x99, 0x63, 0x94, 0x7f, 0x8b, 0x1c, 0x79, 0xd6, 0xc8, 0xf0, 0x71, - 0x7d, 0xb1, 0xa1, 0xec, 0x2c, 0xea, 0x5c, 0x41, 0x59, 0x6e, 0x73, 0x96, 0x21, 0x60, 0x99, 0x6b, - 0xb4, 0x6f, 0x14, 0x58, 0x0f, 0xc4, 0xc7, 0x36, 0xe6, 0x74, 0xd3, 0x93, 0xd5, 0x02, 0xe0, 0xec, - 0x26, 0xf7, 0xbc, 0x60, 0x2a, 0x58, 0xbd, 0x46, 0x55, 0x3c, 0x84, 0x8d, 0x4c, 0x1c, 0x05, 0x4b, - 0xff, 0x08, 0xd6, 0x83, 0x1e, 0x24, 0x15, 0xd6, 0xeb, 0x6c, 0xa4, 0x99, 0xc2, 0xc8, 0x5c, 0xb7, - 0x60, 0x18, 0x3e, 0xac, 0xd1, 0x6d, 0x98, 0x0a, 0x22, 0xef, 0xc0, 0x6b, 0xb0, 0xf4, 0x44, 0x0c, - 0x2e, 0x80, 0x2f, 0xe9, 0x66, 0x08, 0xe2, 0x63, 0xb8, 0x9a, 0xb1, 0x6a, 0xc1, 0x10, 0x7e, 0x52, - 0x60, 0x23, 0x3c, 0x1b, 0xaf, 0x12, 0xc6, 0x38, 0x23, 0x8c, 0x71, 0x22, 0x8c, 0x29, 0xf5, 0x4b, - 0x38, 0xf6, 0x73, 0x13, 0x3b, 0x90, 0xf9, 0x34, 0x05, 0x8f, 0xa0, 0x9e, 0x0d, 0xba, 0x20, 0x0b, - 0x5f, 0xc0, 0xda, 0x1e, 0xf6, 0xb9, 0xa3, 0xe8, 0xfa, 0x9a, 0x65, 0x37, 0xaa, 0xb0, 0xe8, 0xb8, - 0x27, 0xe2, 0x7e, 0x8c, 0xe5, 0x19, 0x92, 0xf9, 0x15, 0x5c, 0xcd, 0x58, 0xb9, 0xe0, 0x9d, 0x26, - 0xd7, 0x84, 0xd2, 0x2c, 0x35, 0x41, 0xfb, 0x5e, 0x61, 0x08, 0x28, 0x60, 0x6e, 0x31, 0xf1, 0xa3, - 0xaf, 0x93, 0xd1, 0x65, 0xbc, 0x7a, 0x87, 0x36, 0x9d, 0x9a, 0x5f, 0x14, 0x58, 0xcf, 0x42, 0x56, - 0x90, 0x9c, 0x7b, 0x50, 0xe3, 0x61, 0x47, 0x5f, 0x92, 0x59, 0xec, 0x88, 0x66, 0x89, 0x96, 0xaa, - 0x5c, 0xb0, 0xa5, 0xd2, 0x7e, 0x50, 0xe0, 0x5a, 0x18, 0xcb, 0x87, 0x9e, 0x85, 0xed, 0xfe, 0xbf, - 0x8c, 0xeb, 0x5f, 0x15, 0xb8, 0x9e, 0x8f, 0xef, 0xbf, 0xc8, 0xf8, 0x08, 0x6a, 0x61, 0x89, 0x20, - 0x87, 0xc4, 0x44, 0xb7, 0x69, 0xb5, 0x19, 0x0a, 0x77, 0x65, 0xaa, 0x33, 0x88, 0xc6, 0x67, 0x2a, - 0x6f, 0xb9, 0x3d, 0x8b, 0xf6, 0xa3, 0x02, 0x8d, 0xf4, 0xae, 0x15, 0xa0, 0xbc, 0xd6, 0x7b, 0x4a, - 0x62, 0x43, 0x94, 0x8b, 0x6d, 0x08, 0xed, 0x77, 0x05, 0x6e, 0x4c, 0x01, 0x59, 0x30, 0xe7, 0xef, - 0xc0, 0x52, 0x8f, 0xbb, 0x89, 0x92, 0xbe, 0x9a, 0x20, 0x9b, 0x2d, 0x21, 0x19, 0xfe, 0x53, 0x69, - 0x7f, 0x06, 0x5a, 0x7b, 0x80, 0x0d, 0xef, 0x0d, 0xf1, 0xaf, 0x3d, 0x85, 0x9b, 0x53, 0xfd, 0x17, - 0xbc, 0x84, 0x06, 0xa0, 0x76, 0x53, 0x39, 0x39, 0xc0, 0x23, 0x3c, 0x98, 0xf2, 0x25, 0x35, 0xa0, - 0x36, 0x0c, 0xec, 0xbc, 0x1e, 0x08, 0x33, 0x9c, 0xf8, 0x4f, 0xe0, 0x5a, 0xee, 0x6a, 0xc5, 0x02, - 0x68, 0x7d, 0x5b, 0x83, 0x4b, 0x8f, 0x99, 0x45, 0x17, 0x7b, 0x23, 0xab, 0x87, 0xd1, 0x7d, 0xa8, - 0x09, 0xaf, 0x7f, 0x68, 0x3d, 0x72, 0x20, 0x3f, 0x2f, 0xaa, 0x1b, 0x99, 0x7a, 0xe2, 0xa2, 0x77, - 0xa1, 0x1a, 0x3f, 0xa8, 0xa1, 0xb5, 0x78, 0x79, 0xe1, 0x9d, 0x4f, 0xbd, 0x9a, 0xa1, 0x0d, 0x66, - 0xc6, 0xaf, 0x5c, 0x7c, 0xa6, 0xf8, 0xb0, 0xc6, 0x67, 0xca, 0xcf, 0x61, 0xbb, 0xb0, 0x10, 0x3c, - 0x03, 0xa1, 0x95, 0xc8, 0x20, 0x7e, 0xe9, 0x52, 0x51, 0x52, 0x45, 0x5c, 0x1a, 0xa4, 0xf0, 0x1c, - 0xc2, 0x83, 0x94, 0x5f, 0x82, 0x78, 0x90, 0xc9, 0xb7, 0x93, 0x3d, 0xf6, 0xdc, 0x2a, 0x7c, 0xff, - 0xa3, 0xff, 0x09, 0x7c, 0xc8, 0xcf, 0x23, 0xaa, 0x9a, 0x37, 0x14, 0x3b, 0x12, 0x3e, 0x8e, 0x25, - 0x47, 0xf2, 0x97, 0xb9, 0xe4, 0x28, 0xf9, 0x3d, 0xfd, 0x29, 0xac, 0x66, 0x74, 0xfb, 0x68, 0x4b, - 0xa6, 0x3a, 0xd9, 0x2f, 0xaa, 0xdb, 0x13, 0xc7, 0x03, 0xbf, 0x19, 0xed, 0x37, 0xf7, 0x9b, 0xfd, - 0x4d, 0xc0, 0xfd, 0xe6, 0xf5, 0xee, 0x47, 0xb0, 0x92, 0xea, 0x88, 0xd1, 0x75, 0xf1, 0x4b, 0x31, - 0xe5, 0x73, 0x73, 0xc2, 0x28, 0x71, 0xd1, 0x53, 0x58, 0xcb, 0x6a, 0x30, 0xd1, 0x76, 0xa2, 0x90, - 0xa5, 0xfc, 0x36, 0x26, 0x1b, 0x04, 0x60, 0x53, 0x1d, 0x1f, 0x07, 0x9b, 0xd5, 0x86, 0x72, 0xb0, - 0xd9, 0xad, 0x62, 0x37, 0x7e, 0x14, 0x11, 0x8e, 0x32, 0xda, 0x4c, 0x24, 0x58, 0xee, 0x38, 0xd4, - 0xad, 0x49, 0xc3, 0xc4, 0x45, 0x18, 0xea, 0x79, 0x0d, 0x01, 0xba, 0x99, 0x98, 0x9b, 0xd5, 0xd2, - 0xa8, 0xb7, 0xa6, 0x1b, 0x11, 0x17, 0xf9, 0xb0, 0x39, 0xf1, 0x22, 0x42, 0x3b, 0xf9, 0x38, 0xe5, - 0xa2, 0xae, 0xde, 0x9e, 0xd1, 0x92, 0xb8, 0xe8, 0x4b, 0xd8, 0x9e, 0x52, 0xc5, 0xd1, 0x9d, 0x38, - 0x91, 0x53, 0xaf, 0x13, 0xf5, 0xee, 0xcc, 0xb6, 0xc4, 0x45, 0xcf, 0x61, 0x23, 0xa7, 0xf0, 0x22, - 0x4d, 0xa8, 0x2e, 0x39, 0xf7, 0x80, 0x7a, 0x73, 0xaa, 0x0d, 0x71, 0x1f, 0xac, 0x7c, 0xb6, 0xdc, - 0x0c, 0xff, 0xc3, 0xf5, 0x5e, 0xf0, 0xe7, 0xf9, 0x02, 0xfb, 0xf7, 0xd5, 0xdb, 0x7f, 0x07, 0x00, - 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x93, 0x9b, 0x00, 0x1b, 0x00, 0x00, +var fileDescriptor_office_373be750de153751 = []byte{ + // 1530 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0xb3, 0x6d, 0x12, 0x77, 0x5b, + 0xa4, 0xb4, 0x95, 0x1c, 0x64, 0x2a, 0x81, 0x84, 0xa8, 0x50, 0xed, 0x12, 0x05, 0xe2, 0x36, 0x6c, + 0x12, 0xaa, 0x72, 0x68, 0xb4, 0x75, 0x26, 0xcb, 0x2a, 0xce, 0xee, 0x76, 0x67, 0x63, 0x53, 0x2e, + 0x48, 0x5c, 0xf8, 0x00, 0x1c, 0x38, 0x71, 0xe1, 0x2b, 0xf0, 0x19, 0x38, 0x70, 0x42, 0x9c, 0x38, + 0x71, 0x82, 0x0f, 0x82, 0x66, 0xf6, 0xcf, 0xcc, 0xec, 0x1f, 0xaf, 0xbb, 0xa5, 0x12, 0x9c, 0xe2, + 0xf7, 0xe6, 0xcd, 0x9b, 0xdf, 0xfb, 0xbd, 0x99, 0x37, 0x6f, 0x27, 0xb0, 0xec, 0x9c, 0x9e, 0x5a, + 0x03, 0xbc, 0x1d, 0xfc, 0x69, 0xbb, 0x9e, 0xe3, 0x3b, 0x68, 0x2e, 0x90, 0xd4, 0x1b, 0x8f, 0x5d, + 0x6c, 0x1f, 0xef, 0xf6, 0xb7, 0xdd, 0x33, 0x73, 0x9b, 0x0d, 0x6d, 0x93, 0x93, 0xb3, 0xe3, 0x31, + 0xd9, 0x1e, 0x93, 0xc0, 0x54, 0xbb, 0x0f, 0xd0, 0x75, 0xce, 0xcf, 0x1d, 0x5b, 0xc7, 0xc4, 0x45, + 0x4d, 0xa8, 0x61, 0xcf, 0xeb, 0x3a, 0x27, 0xb8, 0xa9, 0xb4, 0x94, 0xad, 0x59, 0x3d, 0x12, 0xd1, + 0x2a, 0xcc, 0x61, 0xcf, 0xeb, 0x13, 0xb3, 0x59, 0x69, 0x29, 0x5b, 0x75, 0x3d, 0x94, 0xb4, 0x0f, + 0xa1, 0x76, 0x68, 0x98, 0x47, 0x04, 0x7b, 0xd4, 0xe4, 0x82, 0x60, 0x6f, 0xb7, 0xc7, 0xe6, 0xd6, + 0xf5, 0x50, 0x42, 0x2a, 0xcc, 0xd3, 0x5f, 0x8f, 0x8c, 0x73, 0x1c, 0x4e, 0x8e, 0x65, 0xed, 0x39, + 0x54, 0x0f, 0x0d, 0x13, 0xad, 0xc0, 0xac, 0x6f, 0x98, 0xf1, 0xcc, 0x40, 0xa0, 0x68, 0x7c, 0xc3, + 0x14, 0xe6, 0x45, 0x22, 0xba, 0x1b, 0xb8, 0xdc, 0xb3, 0x88, 0xdf, 0xac, 0xb6, 0xaa, 0x5b, 0x8d, + 0xce, 0x62, 0x3b, 0x64, 0x20, 0x44, 0xa3, 0xc7, 0x06, 0xda, 0x27, 0x70, 0x79, 0x07, 0xfb, 0x54, + 0x79, 0x68, 0x98, 0x44, 0xc7, 0x2f, 0x72, 0x91, 0xb6, 0xa0, 0xe1, 0xb8, 0xd8, 0x33, 0x7c, 0xcb, + 0xb1, 0x77, 0x7b, 0xe1, 0xa2, 0xa2, 0x4a, 0x3b, 0x85, 0x45, 0xc9, 0x17, 0x71, 0x51, 0x07, 0x60, + 0x10, 0x33, 0xc8, 0x1c, 0x36, 0x3a, 0x28, 0x42, 0xc3, 0xb9, 0xd5, 0x05, 0x2b, 0xb4, 0x09, 0x33, + 0xbe, 0x61, 0x92, 0x66, 0x85, 0x61, 0x6f, 0x08, 0xd8, 0x75, 0x36, 0xa0, 0x7d, 0xab, 0xc0, 0x42, + 0xd7, 0xc3, 0x86, 0x8f, 0xa9, 0x0e, 0xbf, 0x10, 0xb9, 0x50, 0x64, 0x2e, 0x78, 0x30, 0x15, 0x29, + 0x98, 0x0d, 0x80, 0xe0, 0x57, 0xcc, 0x52, 0x5d, 0x17, 0x34, 0xc9, 0x60, 0x67, 0xd2, 0xc1, 0x76, + 0xe1, 0x92, 0x80, 0xa1, 0x5c, 0xa8, 0xda, 0x33, 0x58, 0xe8, 0xe1, 0x21, 0x8e, 0x03, 0xc9, 0xe3, + 0x3e, 0xde, 0x02, 0x15, 0x71, 0x0b, 0x24, 0x40, 0x56, 0x33, 0x41, 0x0a, 0xfe, 0x4b, 0x82, 0xfc, + 0x5d, 0x81, 0xfa, 0x01, 0xf6, 0x4b, 0x41, 0x6c, 0x42, 0xcd, 0xc6, 0x63, 0x96, 0x99, 0x00, 0x5e, + 0x24, 0xa2, 0x36, 0x20, 0xcb, 0x1e, 0x78, 0xd8, 0x20, 0xf8, 0x88, 0x67, 0x62, 0x86, 0x65, 0x22, + 0x63, 0x04, 0xdd, 0x81, 0x2b, 0x1e, 0x3e, 0xb9, 0x18, 0x88, 0xd6, 0xb3, 0xcc, 0x3a, 0xa5, 0x4f, + 0x12, 0x33, 0x97, 0x26, 0xe6, 0x23, 0x80, 0x28, 0xa4, 0x92, 0xac, 0xfc, 0xad, 0xc0, 0xe5, 0x03, + 0x6c, 0x9f, 0xf4, 0x89, 0xd9, 0x91, 0xb6, 0x21, 0x43, 0xa6, 0x30, 0x64, 0x91, 0x48, 0x4f, 0xf9, + 0x51, 0x74, 0x24, 0x2b, 0x6c, 0x28, 0x96, 0xd1, 0x75, 0xa8, 0xef, 0x78, 0xce, 0x85, 0x2b, 0xec, + 0x44, 0xae, 0xa0, 0x74, 0x13, 0x6c, 0x9f, 0xc4, 0x7b, 0x30, 0x94, 0x28, 0x1d, 0xf4, 0x17, 0xf6, + 0xf6, 0x87, 0x86, 0x7f, 0xea, 0x78, 0xe7, 0xbb, 0xbd, 0xe6, 0x2c, 0xab, 0x4a, 0x29, 0x3d, 0xc5, + 0x35, 0x70, 0x6c, 0x1f, 0xdb, 0x7e, 0x48, 0x45, 0x24, 0x26, 0x89, 0xaa, 0xa5, 0x89, 0x7a, 0x08, + 0x8b, 0x52, 0x94, 0x25, 0xd9, 0xfa, 0x5e, 0x81, 0xa5, 0x1d, 0x46, 0x38, 0xf5, 0xb6, 0xe7, 0x04, + 0xa5, 0xa6, 0x07, 0xb0, 0x6f, 0x98, 0x96, 0xcd, 0x16, 0x0b, 0x3d, 0xdd, 0x6a, 0x13, 0xec, 0x8d, + 0xb0, 0x77, 0x6c, 0xb8, 0xd6, 0xb1, 0x6b, 0x78, 0xc6, 0x39, 0x69, 0xeb, 0xf8, 0xc5, 0x05, 0x26, + 0x3e, 0xb7, 0xd5, 0x85, 0x79, 0xb9, 0x67, 0xbc, 0xf8, 0x78, 0x38, 0x00, 0x1c, 0x91, 0x54, 0x37, + 0x95, 0x82, 0xba, 0x29, 0x72, 0x5a, 0x91, 0x39, 0x55, 0x61, 0x9e, 0x66, 0xe0, 0xd0, 0x0a, 0xf7, + 0x7c, 0x55, 0x8f, 0x65, 0xed, 0x17, 0x05, 0x50, 0x92, 0x86, 0x92, 0x55, 0xf2, 0xa1, 0xc4, 0x5d, + 0x85, 0xcd, 0x79, 0x3b, 0x93, 0x3b, 0xe2, 0x3a, 0x36, 0xc1, 0x39, 0xe4, 0xdd, 0x83, 0x86, 0xcf, + 0xd1, 0x84, 0xf7, 0x05, 0x12, 0xe2, 0x0e, 0x87, 0x74, 0xd1, 0x4c, 0x1b, 0xb0, 0x6c, 0x86, 0x95, + 0xfe, 0xc1, 0xcb, 0xdd, 0xde, 0x9b, 0x28, 0x5e, 0x26, 0xe3, 0x4a, 0x5a, 0xa4, 0x24, 0x57, 0xeb, + 0x50, 0xf5, 0x0d, 0x33, 0x24, 0x49, 0xba, 0x50, 0xa8, 0x5e, 0xbb, 0x0f, 0xf3, 0x7b, 0xd6, 0x19, + 0x2e, 0x7d, 0x4f, 0xff, 0xa9, 0x40, 0x8d, 0xae, 0x4c, 0xb3, 0x5f, 0x62, 0x3e, 0xa5, 0xc2, 0xc3, + 0xee, 0xf0, 0x65, 0x50, 0xc1, 0x22, 0x2a, 0x04, 0x15, 0xba, 0x05, 0x97, 0x62, 0x91, 0xb9, 0x08, + 0x8a, 0x81, 0xac, 0xa4, 0x95, 0x24, 0xdc, 0x84, 0x61, 0x31, 0xa8, 0xeb, 0x5c, 0x31, 0xa1, 0x0a, + 0x6c, 0x00, 0x0c, 0x82, 0xab, 0x8c, 0xee, 0xd9, 0x1a, 0xab, 0x22, 0x82, 0x46, 0xfb, 0xab, 0x02, + 0xf0, 0xc4, 0xf1, 0xce, 0xfa, 0x0e, 0x0b, 0x51, 0x83, 0x85, 0x71, 0x2c, 0xc5, 0x81, 0x4a, 0xba, + 0xdc, 0x33, 0x29, 0x80, 0xa8, 0xca, 0x20, 0xda, 0x50, 0x1f, 0x86, 0x49, 0x20, 0xec, 0x1a, 0x68, + 0x74, 0xae, 0x44, 0x99, 0x8a, 0xb2, 0xa3, 0x73, 0x13, 0x7a, 0x5a, 0x07, 0x01, 0xe7, 0x84, 0xdd, + 0x03, 0xc2, 0x69, 0x0d, 0x73, 0xa1, 0xc7, 0x06, 0xe8, 0x1d, 0x58, 0x1e, 0x7f, 0xe9, 0x74, 0x0d, + 0xfb, 0x00, 0x8b, 0xf7, 0xc7, 0x1c, 0xab, 0xb6, 0x59, 0x43, 0xa8, 0x03, 0x2b, 0x81, 0xda, 0x97, + 0xa7, 0xd4, 0xd8, 0x94, 0xcc, 0x31, 0xca, 0xbf, 0x45, 0xf6, 0x3d, 0x6b, 0x64, 0xf8, 0xb8, 0x39, + 0xdf, 0x52, 0xb6, 0xe6, 0x75, 0xae, 0xa0, 0x2c, 0x77, 0x39, 0xcb, 0x10, 0xb0, 0xcc, 0x35, 0x9a, + 0x0d, 0xab, 0x81, 0xf4, 0xd8, 0xc6, 0x9c, 0x6d, 0x7a, 0xb0, 0x3a, 0x00, 0x9c, 0xdc, 0xe4, 0x96, + 0x17, 0x4c, 0x05, 0xab, 0x29, 0xba, 0xb5, 0x3e, 0xac, 0x65, 0xae, 0x57, 0xb2, 0xc2, 0x8f, 0x60, + 0x35, 0x68, 0x35, 0x52, 0xf0, 0x5f, 0x67, 0xbf, 0x14, 0x57, 0x89, 0x3e, 0xac, 0x65, 0xae, 0x5b, + 0x32, 0x0c, 0x1f, 0x56, 0xe8, 0x6e, 0x4b, 0x05, 0x91, 0x77, 0xae, 0x35, 0x58, 0x78, 0x22, 0x06, + 0x17, 0xc0, 0x97, 0x74, 0x53, 0x04, 0xf1, 0x29, 0x5c, 0xcd, 0x58, 0xb5, 0x64, 0x08, 0x3f, 0x2b, + 0xb0, 0x16, 0x1e, 0x81, 0x57, 0x09, 0x63, 0x9c, 0x11, 0xc6, 0x38, 0x11, 0x46, 0x41, 0x99, 0x12, + 0x4e, 0xf7, 0xcc, 0xc4, 0x46, 0x63, 0x36, 0x4d, 0xc1, 0x23, 0x68, 0x66, 0x83, 0x2e, 0xc9, 0xc2, + 0x57, 0xb0, 0xb2, 0x83, 0x7d, 0xee, 0x28, 0xba, 0xa5, 0xa6, 0xd9, 0x8d, 0x2a, 0xcc, 0x3b, 0xee, + 0x91, 0xb8, 0x1f, 0x63, 0x79, 0x8a, 0x64, 0x7e, 0x03, 0x57, 0x33, 0x56, 0x2e, 0x79, 0x75, 0xc9, + 0x67, 0xbf, 0x32, 0xcd, 0xd9, 0xd7, 0x7e, 0x50, 0x18, 0x02, 0x0a, 0x98, 0x5b, 0x4c, 0xfc, 0xb6, + 0xeb, 0x65, 0x34, 0x13, 0xaf, 0xde, 0x88, 0x15, 0x53, 0xf3, 0xab, 0x02, 0xab, 0x59, 0xc8, 0x4a, + 0x92, 0x73, 0x0f, 0x1a, 0x3c, 0xec, 0xe8, 0x83, 0x31, 0x8b, 0x1d, 0xd1, 0x2c, 0xd1, 0x39, 0x55, + 0x4b, 0x76, 0x4e, 0xda, 0x8f, 0x0a, 0x5c, 0x0b, 0x63, 0xf9, 0xd8, 0xb3, 0xb0, 0x7d, 0xf2, 0x1f, + 0xe3, 0xfa, 0x37, 0x05, 0xae, 0xe7, 0xe3, 0xfb, 0x3f, 0x32, 0x3e, 0x82, 0x46, 0x58, 0x22, 0x48, + 0x9f, 0x98, 0xe8, 0x36, 0xad, 0x36, 0xe7, 0xc2, 0x9d, 0x98, 0x6a, 0x00, 0xa2, 0xf1, 0xa9, 0xca, + 0x5b, 0x6e, 0x6b, 0xa2, 0xfd, 0xa4, 0x40, 0x2b, 0xbd, 0x6b, 0x05, 0x28, 0xaf, 0xf5, 0x6c, 0x92, + 0xd8, 0x10, 0xd5, 0x72, 0x1b, 0x42, 0xfb, 0x43, 0x81, 0x1b, 0x05, 0x20, 0x4b, 0xe6, 0xfc, 0x3d, + 0x58, 0x18, 0x70, 0x37, 0x51, 0xd2, 0x97, 0x13, 0x64, 0xb3, 0x25, 0x24, 0xc3, 0x7f, 0x2b, 0xed, + 0xcf, 0x40, 0xeb, 0x0e, 0xb1, 0xe1, 0xbd, 0x21, 0xfe, 0xb5, 0xa7, 0x70, 0xb3, 0xd0, 0x7f, 0xc9, + 0x4b, 0x68, 0x08, 0xea, 0x41, 0x2a, 0x27, 0x7b, 0x78, 0x84, 0x87, 0x05, 0x1f, 0x4c, 0x43, 0x6a, + 0xc3, 0xc0, 0xce, 0xea, 0x81, 0x30, 0xc5, 0x89, 0xff, 0x0c, 0xae, 0xe5, 0xae, 0x56, 0x2e, 0x80, + 0xce, 0x77, 0x0d, 0xb8, 0xf4, 0x98, 0x59, 0x1c, 0x60, 0x6f, 0x64, 0x0d, 0x30, 0xba, 0x0f, 0x0d, + 0xe1, 0x91, 0x0f, 0xad, 0x46, 0x0e, 0xe4, 0x57, 0x44, 0x75, 0x2d, 0x53, 0x4f, 0x5c, 0xf4, 0x3e, + 0xd4, 0xe3, 0x77, 0x33, 0xb4, 0x12, 0x2f, 0x2f, 0x3c, 0xe7, 0xa9, 0x57, 0x33, 0xb4, 0xc1, 0xcc, + 0xf8, 0x31, 0x8b, 0xcf, 0x14, 0xdf, 0xcf, 0xf8, 0x4c, 0xf9, 0xd5, 0x6b, 0x1b, 0xe6, 0x82, 0xd7, + 0x1e, 0xb4, 0x14, 0x19, 0xc4, 0x0f, 0x5a, 0x2a, 0x4a, 0xaa, 0x88, 0x4b, 0x83, 0x14, 0x5e, 0x3d, + 0x78, 0x90, 0xf2, 0x83, 0x0f, 0x0f, 0x32, 0xf9, 0x44, 0xb2, 0xc3, 0x5e, 0x55, 0x85, 0xcf, 0x7c, + 0xf4, 0x96, 0xc0, 0x87, 0xfc, 0x0a, 0xa2, 0xaa, 0x79, 0x43, 0xb1, 0x23, 0xe1, 0x1b, 0x58, 0x72, + 0x24, 0x7f, 0x80, 0x4b, 0x8e, 0x92, 0x9f, 0xcd, 0x9f, 0xc3, 0x72, 0x46, 0xb7, 0x8f, 0x36, 0x64, + 0xaa, 0x93, 0xfd, 0xa2, 0xba, 0x39, 0x71, 0x3c, 0xf0, 0x9b, 0xd1, 0x7e, 0x73, 0xbf, 0xd9, 0xdf, + 0x04, 0xdc, 0x6f, 0x5e, 0xef, 0xbe, 0x0f, 0x4b, 0xa9, 0x8e, 0x18, 0x5d, 0x17, 0x3f, 0x08, 0x53, + 0x3e, 0xd7, 0x27, 0x8c, 0x12, 0x17, 0x3d, 0x85, 0x95, 0xac, 0x06, 0x13, 0x6d, 0x26, 0x0a, 0x59, + 0xca, 0x6f, 0x6b, 0xb2, 0x41, 0x00, 0x36, 0xd5, 0xf1, 0x71, 0xb0, 0x59, 0x6d, 0x28, 0x07, 0x9b, + 0xdd, 0x2a, 0x1e, 0xc4, 0x6f, 0x1f, 0xc2, 0x51, 0x46, 0xeb, 0x89, 0x04, 0xcb, 0x1d, 0x87, 0xba, + 0x31, 0x69, 0x98, 0xb8, 0x08, 0x43, 0x33, 0xaf, 0x21, 0x40, 0x37, 0x13, 0x73, 0xb3, 0x5a, 0x1a, + 0xf5, 0x56, 0xb1, 0x11, 0x71, 0x91, 0x0f, 0xeb, 0x13, 0x2f, 0x22, 0xb4, 0x95, 0x8f, 0x53, 0x2e, + 0xea, 0xea, 0xed, 0x29, 0x2d, 0x89, 0x8b, 0xbe, 0x86, 0xcd, 0x82, 0x2a, 0x8e, 0xee, 0xc4, 0x89, + 0x2c, 0xbc, 0x4e, 0xd4, 0xbb, 0x53, 0xdb, 0x12, 0x17, 0x3d, 0x87, 0xb5, 0x9c, 0xc2, 0x8b, 0x34, + 0xa1, 0xba, 0xe4, 0xdc, 0x03, 0xea, 0xcd, 0x42, 0x1b, 0xe2, 0x3e, 0x58, 0xfa, 0x62, 0xb1, 0x1d, + 0xfe, 0x23, 0xeb, 0x83, 0xe0, 0xcf, 0xf3, 0x39, 0xf6, 0x5f, 0xaa, 0x77, 0xff, 0x09, 0x00, 0x00, + 0xff, 0xff, 0x47, 0x04, 0x0d, 0x95, 0xe7, 0x1a, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index c57c72f2e..d5be34416 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -137,8 +137,7 @@ message WorkMoment { message CreateOneWorkMomentReq { WorkMoment workMoment = 1; - string userID = 2; - string operationID = 3; + string operationID = 2; } message CreateOneWorkMomentResp { From 50696d2e8844a4433740ba93cdc2e8b1f73b71bd Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 14:12:30 +0800 Subject: [PATCH 088/128] workMoments --- internal/rpc/office/office.go | 12 ++++++------ pkg/common/db/mongoModel.go | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 1fd328650..34a266897 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -410,8 +410,8 @@ func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWor 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{}} - resp.WorkMoments = make([]*pbOffice.WorkMoment, 0) + 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) @@ -428,8 +428,8 @@ func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUs 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{}} - resp.WorkMoments = make([]*pbOffice.WorkMoment, 0) + 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()) @@ -453,8 +453,8 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}} - resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, 0) + resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}, CommentsMsgs: []*pbOffice.CommentsMsg{}} + //resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, 0) workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 4d75da427..29ea41f1e 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -632,6 +632,7 @@ func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) if !isAlreadyLike { workMoment.LikeUsers = append(workMoment.LikeUsers, &LikeUser{UserID: likeUserID, UserName: userName}) } + log.Info("", 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_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUsers}}) From b5c11ece5709778f04537f41848af5fdebece4e6 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 14:33:48 +0800 Subject: [PATCH 089/128] workMoments --- internal/rpc/office/office.go | 4 ++-- pkg/common/db/mongoModel.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 34a266897..722cc9ce0 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -418,7 +418,7 @@ func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUs resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - if err := utils.CopyStructFields(resp.WorkMoments, workMoments); err != 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} @@ -443,7 +443,7 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - if err := utils.CopyStructFields(resp.WorkMoments, workMoments); err != 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} diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 29ea41f1e..29dd754ff 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -584,7 +584,7 @@ type LikeUser struct { type Comment struct { UserID string `bson:"user_id" json:"user_id"` - UserName string `bson:"user_id" json:"user_name"` + 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"` @@ -635,7 +635,7 @@ func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) log.Info("", 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_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUsers}}) + _, err = c.UpdateOne(ctx, bson.M{"work_moment_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUsers}}) return err } From 6c4acbad687a8474b680f399be4c5149aa3d7d7a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 14:54:43 +0800 Subject: [PATCH 090/128] workMoments --- internal/rpc/office/office.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 722cc9ce0..c12657f28 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -270,7 +270,7 @@ func (s *officeServer) GetUserTagByID(_ context.Context, req *pbOffice.GetUserTa 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{} + workMoment := db.WorkMoment{Comments: []*db.Comment{}, LikeUsers: []*db.LikeUser{}} if err := utils.CopyStructFields(&workMoment, req.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } @@ -453,8 +453,8 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}, CommentsMsgs: []*pbOffice.CommentsMsg{}} - //resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, 0) + resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}} + resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, 0) workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) From 040b1d9bc831e796fe0fd539866aac434e14e689 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 15:37:20 +0800 Subject: [PATCH 091/128] workMoments --- pkg/common/db/mysql_model/im_mysql_model/friend_model.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 a7b14f198..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,12 +49,12 @@ func GetFriendListByUserID(OwnerUserID string) ([]db.Friend, error) { return friends, nil } -func GetFriendIDListByUserID(OwnerUserID string) ([]string, error) { +func GetFriendIDListByUserID(OwnerUserID string) ([]*string, error) { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { return nil, err } - var friendIDList []string + 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 From 01c066419d533ad1c1c4db8296f8806fe9eaeed2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 15:38:16 +0800 Subject: [PATCH 092/128] workMoments --- pkg/common/db/mongoModel.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 29dd754ff..18406df36 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -748,7 +748,7 @@ func (d *DataBases) GetUserFriendWorkMomentsRecursion(friendIDList []string, sho return workMomentList, err } -func (d *DataBases) GetUserFriendWorkMoments(friendIDList []string, showNumber, pageNumber int32, userID string) ([]WorkMoment, error) { +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 From 3854c7bba2a061480ffa6032b940e063acae808c Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 15:52:44 +0800 Subject: [PATCH 093/128] workMoments --- internal/rpc/office/office.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index c12657f28..db5da07b7 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -379,6 +379,9 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com WorkMomentID: workMoment.WorkMomentID, WorkMomentContent: workMoment.Content, } + if err = db.DB.CreateUserWorkMomentsCommentsMsg(commentMsg); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + } msg.CommentOneWorkMomentNotification(req.OperationID, workMoment.UserID, commentMsg, *commentUser) if req.ReplyUserID != "" { msg.CommentOneWorkMomentNotification(req.OperationID, req.ReplyUserID, commentMsg, *commentUser) From dfe854a236f7f49b481a16e5ff65cafb7499d6e2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 16:15:41 +0800 Subject: [PATCH 094/128] workMoments --- internal/rpc/office/office.go | 1 + pkg/common/db/mongoModel.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index db5da07b7..4cf783194 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -464,6 +464,7 @@ func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbO resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMomentsCommentMsgs: ", workMomentsCommentMsgs) for _, commentMsg := range workMomentsCommentMsgs { comment := pbOffice.Comment{} if err := utils.CopyStructFields(&comment, commentMsg); err != nil { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 18406df36..2a9de60d3 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -668,7 +668,7 @@ func (d *DataBases) GetUserWorkMomentsCommentsMsg(userID string, showNumber, pag c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) var commentMsgList []CommentMsg 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) + result, err := c.Find(ctx, bson.M{"comment.user_id": userID}, findOpts) if err != nil { return commentMsgList, err } From 3f287eb148a67bbb1a281ec7b6f4ea50f14fbc5e Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 16:28:03 +0800 Subject: [PATCH 095/128] workMoments --- internal/rpc/office/office.go | 3 +- pkg/common/db/mongoModel.go | 1 + pkg/proto/office/office.pb.go | 293 ++++++++++++++++++---------------- pkg/proto/office/office.proto | 3 +- 4 files changed, 156 insertions(+), 144 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 4cf783194..91d12666f 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -376,6 +376,7 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com } commentMsg := db.CommentMsg{ Comment: comment, + UserID: workMoment.UserID, WorkMomentID: workMoment.WorkMomentID, WorkMomentContent: workMoment.Content, } @@ -473,7 +474,7 @@ func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbO resp.CommentsMsgs = append(resp.CommentsMsgs, &pbOffice.CommentsMsg{ Comment: &comment, WorkMomentID: commentMsg.WorkMomentID, - Content: commentMsg.Content, + Content: commentMsg.WorkMomentContent, }) } resp.Pagination = &pbCommon.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber} diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 2a9de60d3..1dbec46a7 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -660,6 +660,7 @@ func (d *DataBases) ClearUserWorkMomentsCommentsMsg(userID string) error { type CommentMsg struct { WorkMomentID string `bson:"work_moment" json:"work_moment"` WorkMomentContent string `bson:"work_moment_content" json:"work_moment_content"` + UserID string `bson:"user_id" json:"user_id"` Comment } diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index a9c0a2fc7..b9e3ad6c1 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_373be750de153751, []int{0} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{1} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{2} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{3} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{4} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{5} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{6} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{7} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{8} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{9} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{10} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{11} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{12} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{13} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{14} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{15} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{16} + return fileDescriptor_office_282f0d3c571a3eb6, []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_373be750de153751, []int{17} + return fileDescriptor_office_282f0d3c571a3eb6, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_373be750de153751, []int{18} + return fileDescriptor_office_282f0d3c571a3eb6, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1019,7 +1019,7 @@ 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_373be750de153751, []int{19} + return fileDescriptor_office_282f0d3c571a3eb6, []int{19} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1107,7 +1107,7 @@ 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_373be750de153751, []int{20} + return fileDescriptor_office_282f0d3c571a3eb6, []int{20} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1202,7 +1202,7 @@ 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_373be750de153751, []int{21} + return fileDescriptor_office_282f0d3c571a3eb6, []int{21} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1247,7 +1247,7 @@ 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_373be750de153751, []int{22} + return fileDescriptor_office_282f0d3c571a3eb6, []int{22} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1287,7 +1287,7 @@ 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_373be750de153751, []int{23} + return fileDescriptor_office_282f0d3c571a3eb6, []int{23} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1339,7 +1339,7 @@ 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_373be750de153751, []int{24} + return fileDescriptor_office_282f0d3c571a3eb6, []int{24} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1379,7 +1379,7 @@ 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_373be750de153751, []int{25} + return fileDescriptor_office_282f0d3c571a3eb6, []int{25} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1431,7 +1431,7 @@ 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_373be750de153751, []int{26} + return fileDescriptor_office_282f0d3c571a3eb6, []int{26} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1473,7 +1473,7 @@ 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_373be750de153751, []int{27} + return fileDescriptor_office_282f0d3c571a3eb6, []int{27} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1539,7 +1539,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{28} + return fileDescriptor_office_282f0d3c571a3eb6, []int{28} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1579,7 +1579,7 @@ 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_373be750de153751, []int{29} + return fileDescriptor_office_282f0d3c571a3eb6, []int{29} } func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) @@ -1632,7 +1632,7 @@ 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_373be750de153751, []int{30} + return fileDescriptor_office_282f0d3c571a3eb6, []int{30} } func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) @@ -1679,7 +1679,7 @@ 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_373be750de153751, []int{31} + return fileDescriptor_office_282f0d3c571a3eb6, []int{31} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1733,7 +1733,7 @@ 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_373be750de153751, []int{32} + return fileDescriptor_office_282f0d3c571a3eb6, []int{32} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1787,7 +1787,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{33} + return fileDescriptor_office_282f0d3c571a3eb6, []int{33} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -1841,7 +1841,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{34} + return fileDescriptor_office_282f0d3c571a3eb6, []int{34} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -1885,7 +1885,8 @@ func (m *GetUserFriendWorkMomentsResp) GetPagination() *sdk_ws.ResponsePaginatio type CommentsMsg struct { Comment *Comment `protobuf:"bytes,1,opt,name=comment" json:"comment,omitempty"` WorkMomentID string `protobuf:"bytes,2,opt,name=workMomentID" json:"workMomentID,omitempty"` - Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` + UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1895,7 +1896,7 @@ func (m *CommentsMsg) Reset() { *m = CommentsMsg{} } func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } func (*CommentsMsg) ProtoMessage() {} func (*CommentsMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{35} + return fileDescriptor_office_282f0d3c571a3eb6, []int{35} } func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) @@ -1929,6 +1930,13 @@ func (m *CommentsMsg) GetWorkMomentID() string { return "" } +func (m *CommentsMsg) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + func (m *CommentsMsg) GetContent() string { if m != nil { return m.Content @@ -1949,7 +1957,7 @@ func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMom func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{36} + return fileDescriptor_office_282f0d3c571a3eb6, []int{36} } func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2003,7 +2011,7 @@ func (m *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMo func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{37} + return fileDescriptor_office_282f0d3c571a3eb6, []int{37} } func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2056,7 +2064,7 @@ func (m *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWor func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{38} + return fileDescriptor_office_282f0d3c571a3eb6, []int{38} } func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2101,7 +2109,7 @@ func (m *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWo func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{39} + return fileDescriptor_office_282f0d3c571a3eb6, []int{39} } func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2141,7 +2149,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{40} + return fileDescriptor_office_282f0d3c571a3eb6, []int{40} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2193,7 +2201,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_373be750de153751, []int{41} + return fileDescriptor_office_282f0d3c571a3eb6, []int{41} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2869,104 +2877,105 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_373be750de153751) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_282f0d3c571a3eb6) } -var fileDescriptor_office_373be750de153751 = []byte{ - // 1530 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0xb3, 0x6d, 0x12, 0x77, 0x5b, - 0xa4, 0xb4, 0x95, 0x1c, 0x64, 0x2a, 0x81, 0x84, 0xa8, 0x50, 0xed, 0x12, 0x05, 0xe2, 0x36, 0x6c, - 0x12, 0xaa, 0x72, 0x68, 0xb4, 0x75, 0x26, 0xcb, 0x2a, 0xce, 0xee, 0x76, 0x67, 0x63, 0x53, 0x2e, - 0x48, 0x5c, 0xf8, 0x00, 0x1c, 0x38, 0x71, 0xe1, 0x2b, 0xf0, 0x19, 0x38, 0x70, 0x42, 0x9c, 0x38, - 0x71, 0x82, 0x0f, 0x82, 0x66, 0xf6, 0xcf, 0xcc, 0xec, 0x1f, 0xaf, 0xbb, 0xa5, 0x12, 0x9c, 0xe2, - 0xf7, 0xe6, 0xcd, 0x9b, 0xdf, 0xfb, 0xbd, 0x99, 0x37, 0x6f, 0x27, 0xb0, 0xec, 0x9c, 0x9e, 0x5a, - 0x03, 0xbc, 0x1d, 0xfc, 0x69, 0xbb, 0x9e, 0xe3, 0x3b, 0x68, 0x2e, 0x90, 0xd4, 0x1b, 0x8f, 0x5d, - 0x6c, 0x1f, 0xef, 0xf6, 0xb7, 0xdd, 0x33, 0x73, 0x9b, 0x0d, 0x6d, 0x93, 0x93, 0xb3, 0xe3, 0x31, - 0xd9, 0x1e, 0x93, 0xc0, 0x54, 0xbb, 0x0f, 0xd0, 0x75, 0xce, 0xcf, 0x1d, 0x5b, 0xc7, 0xc4, 0x45, - 0x4d, 0xa8, 0x61, 0xcf, 0xeb, 0x3a, 0x27, 0xb8, 0xa9, 0xb4, 0x94, 0xad, 0x59, 0x3d, 0x12, 0xd1, - 0x2a, 0xcc, 0x61, 0xcf, 0xeb, 0x13, 0xb3, 0x59, 0x69, 0x29, 0x5b, 0x75, 0x3d, 0x94, 0xb4, 0x0f, - 0xa1, 0x76, 0x68, 0x98, 0x47, 0x04, 0x7b, 0xd4, 0xe4, 0x82, 0x60, 0x6f, 0xb7, 0xc7, 0xe6, 0xd6, - 0xf5, 0x50, 0x42, 0x2a, 0xcc, 0xd3, 0x5f, 0x8f, 0x8c, 0x73, 0x1c, 0x4e, 0x8e, 0x65, 0xed, 0x39, - 0x54, 0x0f, 0x0d, 0x13, 0xad, 0xc0, 0xac, 0x6f, 0x98, 0xf1, 0xcc, 0x40, 0xa0, 0x68, 0x7c, 0xc3, - 0x14, 0xe6, 0x45, 0x22, 0xba, 0x1b, 0xb8, 0xdc, 0xb3, 0x88, 0xdf, 0xac, 0xb6, 0xaa, 0x5b, 0x8d, - 0xce, 0x62, 0x3b, 0x64, 0x20, 0x44, 0xa3, 0xc7, 0x06, 0xda, 0x27, 0x70, 0x79, 0x07, 0xfb, 0x54, - 0x79, 0x68, 0x98, 0x44, 0xc7, 0x2f, 0x72, 0x91, 0xb6, 0xa0, 0xe1, 0xb8, 0xd8, 0x33, 0x7c, 0xcb, - 0xb1, 0x77, 0x7b, 0xe1, 0xa2, 0xa2, 0x4a, 0x3b, 0x85, 0x45, 0xc9, 0x17, 0x71, 0x51, 0x07, 0x60, - 0x10, 0x33, 0xc8, 0x1c, 0x36, 0x3a, 0x28, 0x42, 0xc3, 0xb9, 0xd5, 0x05, 0x2b, 0xb4, 0x09, 0x33, - 0xbe, 0x61, 0x92, 0x66, 0x85, 0x61, 0x6f, 0x08, 0xd8, 0x75, 0x36, 0xa0, 0x7d, 0xab, 0xc0, 0x42, - 0xd7, 0xc3, 0x86, 0x8f, 0xa9, 0x0e, 0xbf, 0x10, 0xb9, 0x50, 0x64, 0x2e, 0x78, 0x30, 0x15, 0x29, - 0x98, 0x0d, 0x80, 0xe0, 0x57, 0xcc, 0x52, 0x5d, 0x17, 0x34, 0xc9, 0x60, 0x67, 0xd2, 0xc1, 0x76, - 0xe1, 0x92, 0x80, 0xa1, 0x5c, 0xa8, 0xda, 0x33, 0x58, 0xe8, 0xe1, 0x21, 0x8e, 0x03, 0xc9, 0xe3, - 0x3e, 0xde, 0x02, 0x15, 0x71, 0x0b, 0x24, 0x40, 0x56, 0x33, 0x41, 0x0a, 0xfe, 0x4b, 0x82, 0xfc, - 0x5d, 0x81, 0xfa, 0x01, 0xf6, 0x4b, 0x41, 0x6c, 0x42, 0xcd, 0xc6, 0x63, 0x96, 0x99, 0x00, 0x5e, - 0x24, 0xa2, 0x36, 0x20, 0xcb, 0x1e, 0x78, 0xd8, 0x20, 0xf8, 0x88, 0x67, 0x62, 0x86, 0x65, 0x22, - 0x63, 0x04, 0xdd, 0x81, 0x2b, 0x1e, 0x3e, 0xb9, 0x18, 0x88, 0xd6, 0xb3, 0xcc, 0x3a, 0xa5, 0x4f, - 0x12, 0x33, 0x97, 0x26, 0xe6, 0x23, 0x80, 0x28, 0xa4, 0x92, 0xac, 0xfc, 0xad, 0xc0, 0xe5, 0x03, - 0x6c, 0x9f, 0xf4, 0x89, 0xd9, 0x91, 0xb6, 0x21, 0x43, 0xa6, 0x30, 0x64, 0x91, 0x48, 0x4f, 0xf9, - 0x51, 0x74, 0x24, 0x2b, 0x6c, 0x28, 0x96, 0xd1, 0x75, 0xa8, 0xef, 0x78, 0xce, 0x85, 0x2b, 0xec, - 0x44, 0xae, 0xa0, 0x74, 0x13, 0x6c, 0x9f, 0xc4, 0x7b, 0x30, 0x94, 0x28, 0x1d, 0xf4, 0x17, 0xf6, - 0xf6, 0x87, 0x86, 0x7f, 0xea, 0x78, 0xe7, 0xbb, 0xbd, 0xe6, 0x2c, 0xab, 0x4a, 0x29, 0x3d, 0xc5, - 0x35, 0x70, 0x6c, 0x1f, 0xdb, 0x7e, 0x48, 0x45, 0x24, 0x26, 0x89, 0xaa, 0xa5, 0x89, 0x7a, 0x08, - 0x8b, 0x52, 0x94, 0x25, 0xd9, 0xfa, 0x5e, 0x81, 0xa5, 0x1d, 0x46, 0x38, 0xf5, 0xb6, 0xe7, 0x04, - 0xa5, 0xa6, 0x07, 0xb0, 0x6f, 0x98, 0x96, 0xcd, 0x16, 0x0b, 0x3d, 0xdd, 0x6a, 0x13, 0xec, 0x8d, - 0xb0, 0x77, 0x6c, 0xb8, 0xd6, 0xb1, 0x6b, 0x78, 0xc6, 0x39, 0x69, 0xeb, 0xf8, 0xc5, 0x05, 0x26, - 0x3e, 0xb7, 0xd5, 0x85, 0x79, 0xb9, 0x67, 0xbc, 0xf8, 0x78, 0x38, 0x00, 0x1c, 0x91, 0x54, 0x37, - 0x95, 0x82, 0xba, 0x29, 0x72, 0x5a, 0x91, 0x39, 0x55, 0x61, 0x9e, 0x66, 0xe0, 0xd0, 0x0a, 0xf7, - 0x7c, 0x55, 0x8f, 0x65, 0xed, 0x17, 0x05, 0x50, 0x92, 0x86, 0x92, 0x55, 0xf2, 0xa1, 0xc4, 0x5d, - 0x85, 0xcd, 0x79, 0x3b, 0x93, 0x3b, 0xe2, 0x3a, 0x36, 0xc1, 0x39, 0xe4, 0xdd, 0x83, 0x86, 0xcf, - 0xd1, 0x84, 0xf7, 0x05, 0x12, 0xe2, 0x0e, 0x87, 0x74, 0xd1, 0x4c, 0x1b, 0xb0, 0x6c, 0x86, 0x95, - 0xfe, 0xc1, 0xcb, 0xdd, 0xde, 0x9b, 0x28, 0x5e, 0x26, 0xe3, 0x4a, 0x5a, 0xa4, 0x24, 0x57, 0xeb, - 0x50, 0xf5, 0x0d, 0x33, 0x24, 0x49, 0xba, 0x50, 0xa8, 0x5e, 0xbb, 0x0f, 0xf3, 0x7b, 0xd6, 0x19, - 0x2e, 0x7d, 0x4f, 0xff, 0xa9, 0x40, 0x8d, 0xae, 0x4c, 0xb3, 0x5f, 0x62, 0x3e, 0xa5, 0xc2, 0xc3, - 0xee, 0xf0, 0x65, 0x50, 0xc1, 0x22, 0x2a, 0x04, 0x15, 0xba, 0x05, 0x97, 0x62, 0x91, 0xb9, 0x08, - 0x8a, 0x81, 0xac, 0xa4, 0x95, 0x24, 0xdc, 0x84, 0x61, 0x31, 0xa8, 0xeb, 0x5c, 0x31, 0xa1, 0x0a, - 0x6c, 0x00, 0x0c, 0x82, 0xab, 0x8c, 0xee, 0xd9, 0x1a, 0xab, 0x22, 0x82, 0x46, 0xfb, 0xab, 0x02, - 0xf0, 0xc4, 0xf1, 0xce, 0xfa, 0x0e, 0x0b, 0x51, 0x83, 0x85, 0x71, 0x2c, 0xc5, 0x81, 0x4a, 0xba, - 0xdc, 0x33, 0x29, 0x80, 0xa8, 0xca, 0x20, 0xda, 0x50, 0x1f, 0x86, 0x49, 0x20, 0xec, 0x1a, 0x68, - 0x74, 0xae, 0x44, 0x99, 0x8a, 0xb2, 0xa3, 0x73, 0x13, 0x7a, 0x5a, 0x07, 0x01, 0xe7, 0x84, 0xdd, - 0x03, 0xc2, 0x69, 0x0d, 0x73, 0xa1, 0xc7, 0x06, 0xe8, 0x1d, 0x58, 0x1e, 0x7f, 0xe9, 0x74, 0x0d, - 0xfb, 0x00, 0x8b, 0xf7, 0xc7, 0x1c, 0xab, 0xb6, 0x59, 0x43, 0xa8, 0x03, 0x2b, 0x81, 0xda, 0x97, - 0xa7, 0xd4, 0xd8, 0x94, 0xcc, 0x31, 0xca, 0xbf, 0x45, 0xf6, 0x3d, 0x6b, 0x64, 0xf8, 0xb8, 0x39, - 0xdf, 0x52, 0xb6, 0xe6, 0x75, 0xae, 0xa0, 0x2c, 0x77, 0x39, 0xcb, 0x10, 0xb0, 0xcc, 0x35, 0x9a, - 0x0d, 0xab, 0x81, 0xf4, 0xd8, 0xc6, 0x9c, 0x6d, 0x7a, 0xb0, 0x3a, 0x00, 0x9c, 0xdc, 0xe4, 0x96, - 0x17, 0x4c, 0x05, 0xab, 0x29, 0xba, 0xb5, 0x3e, 0xac, 0x65, 0xae, 0x57, 0xb2, 0xc2, 0x8f, 0x60, - 0x35, 0x68, 0x35, 0x52, 0xf0, 0x5f, 0x67, 0xbf, 0x14, 0x57, 0x89, 0x3e, 0xac, 0x65, 0xae, 0x5b, - 0x32, 0x0c, 0x1f, 0x56, 0xe8, 0x6e, 0x4b, 0x05, 0x91, 0x77, 0xae, 0x35, 0x58, 0x78, 0x22, 0x06, - 0x17, 0xc0, 0x97, 0x74, 0x53, 0x04, 0xf1, 0x29, 0x5c, 0xcd, 0x58, 0xb5, 0x64, 0x08, 0x3f, 0x2b, - 0xb0, 0x16, 0x1e, 0x81, 0x57, 0x09, 0x63, 0x9c, 0x11, 0xc6, 0x38, 0x11, 0x46, 0x41, 0x99, 0x12, - 0x4e, 0xf7, 0xcc, 0xc4, 0x46, 0x63, 0x36, 0x4d, 0xc1, 0x23, 0x68, 0x66, 0x83, 0x2e, 0xc9, 0xc2, - 0x57, 0xb0, 0xb2, 0x83, 0x7d, 0xee, 0x28, 0xba, 0xa5, 0xa6, 0xd9, 0x8d, 0x2a, 0xcc, 0x3b, 0xee, - 0x91, 0xb8, 0x1f, 0x63, 0x79, 0x8a, 0x64, 0x7e, 0x03, 0x57, 0x33, 0x56, 0x2e, 0x79, 0x75, 0xc9, - 0x67, 0xbf, 0x32, 0xcd, 0xd9, 0xd7, 0x7e, 0x50, 0x18, 0x02, 0x0a, 0x98, 0x5b, 0x4c, 0xfc, 0xb6, - 0xeb, 0x65, 0x34, 0x13, 0xaf, 0xde, 0x88, 0x15, 0x53, 0xf3, 0xab, 0x02, 0xab, 0x59, 0xc8, 0x4a, - 0x92, 0x73, 0x0f, 0x1a, 0x3c, 0xec, 0xe8, 0x83, 0x31, 0x8b, 0x1d, 0xd1, 0x2c, 0xd1, 0x39, 0x55, - 0x4b, 0x76, 0x4e, 0xda, 0x8f, 0x0a, 0x5c, 0x0b, 0x63, 0xf9, 0xd8, 0xb3, 0xb0, 0x7d, 0xf2, 0x1f, - 0xe3, 0xfa, 0x37, 0x05, 0xae, 0xe7, 0xe3, 0xfb, 0x3f, 0x32, 0x3e, 0x82, 0x46, 0x58, 0x22, 0x48, - 0x9f, 0x98, 0xe8, 0x36, 0xad, 0x36, 0xe7, 0xc2, 0x9d, 0x98, 0x6a, 0x00, 0xa2, 0xf1, 0xa9, 0xca, - 0x5b, 0x6e, 0x6b, 0xa2, 0xfd, 0xa4, 0x40, 0x2b, 0xbd, 0x6b, 0x05, 0x28, 0xaf, 0xf5, 0x6c, 0x92, - 0xd8, 0x10, 0xd5, 0x72, 0x1b, 0x42, 0xfb, 0x43, 0x81, 0x1b, 0x05, 0x20, 0x4b, 0xe6, 0xfc, 0x3d, - 0x58, 0x18, 0x70, 0x37, 0x51, 0xd2, 0x97, 0x13, 0x64, 0xb3, 0x25, 0x24, 0xc3, 0x7f, 0x2b, 0xed, - 0xcf, 0x40, 0xeb, 0x0e, 0xb1, 0xe1, 0xbd, 0x21, 0xfe, 0xb5, 0xa7, 0x70, 0xb3, 0xd0, 0x7f, 0xc9, - 0x4b, 0x68, 0x08, 0xea, 0x41, 0x2a, 0x27, 0x7b, 0x78, 0x84, 0x87, 0x05, 0x1f, 0x4c, 0x43, 0x6a, - 0xc3, 0xc0, 0xce, 0xea, 0x81, 0x30, 0xc5, 0x89, 0xff, 0x0c, 0xae, 0xe5, 0xae, 0x56, 0x2e, 0x80, - 0xce, 0x77, 0x0d, 0xb8, 0xf4, 0x98, 0x59, 0x1c, 0x60, 0x6f, 0x64, 0x0d, 0x30, 0xba, 0x0f, 0x0d, - 0xe1, 0x91, 0x0f, 0xad, 0x46, 0x0e, 0xe4, 0x57, 0x44, 0x75, 0x2d, 0x53, 0x4f, 0x5c, 0xf4, 0x3e, - 0xd4, 0xe3, 0x77, 0x33, 0xb4, 0x12, 0x2f, 0x2f, 0x3c, 0xe7, 0xa9, 0x57, 0x33, 0xb4, 0xc1, 0xcc, - 0xf8, 0x31, 0x8b, 0xcf, 0x14, 0xdf, 0xcf, 0xf8, 0x4c, 0xf9, 0xd5, 0x6b, 0x1b, 0xe6, 0x82, 0xd7, - 0x1e, 0xb4, 0x14, 0x19, 0xc4, 0x0f, 0x5a, 0x2a, 0x4a, 0xaa, 0x88, 0x4b, 0x83, 0x14, 0x5e, 0x3d, - 0x78, 0x90, 0xf2, 0x83, 0x0f, 0x0f, 0x32, 0xf9, 0x44, 0xb2, 0xc3, 0x5e, 0x55, 0x85, 0xcf, 0x7c, - 0xf4, 0x96, 0xc0, 0x87, 0xfc, 0x0a, 0xa2, 0xaa, 0x79, 0x43, 0xb1, 0x23, 0xe1, 0x1b, 0x58, 0x72, - 0x24, 0x7f, 0x80, 0x4b, 0x8e, 0x92, 0x9f, 0xcd, 0x9f, 0xc3, 0x72, 0x46, 0xb7, 0x8f, 0x36, 0x64, - 0xaa, 0x93, 0xfd, 0xa2, 0xba, 0x39, 0x71, 0x3c, 0xf0, 0x9b, 0xd1, 0x7e, 0x73, 0xbf, 0xd9, 0xdf, - 0x04, 0xdc, 0x6f, 0x5e, 0xef, 0xbe, 0x0f, 0x4b, 0xa9, 0x8e, 0x18, 0x5d, 0x17, 0x3f, 0x08, 0x53, - 0x3e, 0xd7, 0x27, 0x8c, 0x12, 0x17, 0x3d, 0x85, 0x95, 0xac, 0x06, 0x13, 0x6d, 0x26, 0x0a, 0x59, - 0xca, 0x6f, 0x6b, 0xb2, 0x41, 0x00, 0x36, 0xd5, 0xf1, 0x71, 0xb0, 0x59, 0x6d, 0x28, 0x07, 0x9b, - 0xdd, 0x2a, 0x1e, 0xc4, 0x6f, 0x1f, 0xc2, 0x51, 0x46, 0xeb, 0x89, 0x04, 0xcb, 0x1d, 0x87, 0xba, - 0x31, 0x69, 0x98, 0xb8, 0x08, 0x43, 0x33, 0xaf, 0x21, 0x40, 0x37, 0x13, 0x73, 0xb3, 0x5a, 0x1a, - 0xf5, 0x56, 0xb1, 0x11, 0x71, 0x91, 0x0f, 0xeb, 0x13, 0x2f, 0x22, 0xb4, 0x95, 0x8f, 0x53, 0x2e, - 0xea, 0xea, 0xed, 0x29, 0x2d, 0x89, 0x8b, 0xbe, 0x86, 0xcd, 0x82, 0x2a, 0x8e, 0xee, 0xc4, 0x89, - 0x2c, 0xbc, 0x4e, 0xd4, 0xbb, 0x53, 0xdb, 0x12, 0x17, 0x3d, 0x87, 0xb5, 0x9c, 0xc2, 0x8b, 0x34, - 0xa1, 0xba, 0xe4, 0xdc, 0x03, 0xea, 0xcd, 0x42, 0x1b, 0xe2, 0x3e, 0x58, 0xfa, 0x62, 0xb1, 0x1d, - 0xfe, 0x23, 0xeb, 0x83, 0xe0, 0xcf, 0xf3, 0x39, 0xf6, 0x5f, 0xaa, 0x77, 0xff, 0x09, 0x00, 0x00, - 0xff, 0xff, 0x47, 0x04, 0x0d, 0x95, 0xe7, 0x1a, 0x00, 0x00, +var fileDescriptor_office_282f0d3c571a3eb6 = []byte{ + // 1539 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0x7f, 0xb7, 0x4d, 0xe2, 0x6e, + 0xfb, 0x95, 0xd2, 0x56, 0x72, 0x90, 0xa9, 0x04, 0x12, 0xa2, 0x42, 0xb5, 0x4b, 0x14, 0x88, 0xdb, + 0xb0, 0x49, 0xa8, 0xca, 0xa1, 0xd1, 0xd6, 0x99, 0x2c, 0xab, 0xd8, 0xbb, 0xdb, 0x9d, 0x4d, 0x4c, + 0xb9, 0x20, 0x71, 0xe1, 0xc6, 0x85, 0x03, 0x27, 0x2e, 0xfc, 0x0b, 0xfc, 0x0d, 0x1c, 0x38, 0x21, + 0x4e, 0x9c, 0x38, 0xc1, 0x1f, 0x82, 0x66, 0xf6, 0xc7, 0xcc, 0xec, 0x0f, 0xaf, 0xbb, 0xa5, 0x12, + 0x9c, 0xe2, 0xf7, 0xe6, 0xcd, 0x9b, 0xcf, 0xfb, 0xcc, 0x9b, 0x37, 0x6f, 0x27, 0xb0, 0xec, 0x9c, + 0x9e, 0x5a, 0x03, 0xbc, 0x1d, 0xfc, 0x69, 0xbb, 0x9e, 0xe3, 0x3b, 0x68, 0x2e, 0x90, 0xd4, 0x1b, + 0x8f, 0x5d, 0x6c, 0x1f, 0xef, 0xf6, 0xb7, 0xdd, 0x33, 0x73, 0x9b, 0x0d, 0x6d, 0x93, 0x93, 0xb3, + 0xe3, 0x31, 0xd9, 0x1e, 0x93, 0xc0, 0x54, 0xbb, 0x0f, 0xd0, 0x75, 0x46, 0x23, 0xc7, 0xd6, 0x31, + 0x71, 0x51, 0x13, 0x6a, 0xd8, 0xf3, 0xba, 0xce, 0x09, 0x6e, 0x2a, 0x2d, 0x65, 0x6b, 0x56, 0x8f, + 0x44, 0xb4, 0x0a, 0x73, 0xd8, 0xf3, 0xfa, 0xc4, 0x6c, 0x56, 0x5a, 0xca, 0x56, 0x5d, 0x0f, 0x25, + 0xed, 0x7d, 0xa8, 0x1d, 0x1a, 0xe6, 0x11, 0xc1, 0x1e, 0x35, 0x39, 0x27, 0xd8, 0xdb, 0xed, 0xb1, + 0xb9, 0x75, 0x3d, 0x94, 0x90, 0x0a, 0xf3, 0xf4, 0xd7, 0x23, 0x63, 0x84, 0xc3, 0xc9, 0xb1, 0xac, + 0x3d, 0x87, 0xea, 0xa1, 0x61, 0xa2, 0x15, 0x98, 0xf5, 0x0d, 0x33, 0x9e, 0x19, 0x08, 0x14, 0x8d, + 0x6f, 0x98, 0xc2, 0xbc, 0x48, 0x44, 0x77, 0x03, 0x97, 0x7b, 0x16, 0xf1, 0x9b, 0xd5, 0x56, 0x75, + 0xab, 0xd1, 0x59, 0x6c, 0x87, 0x0c, 0x84, 0x68, 0xf4, 0xd8, 0x40, 0xfb, 0x08, 0x2e, 0xef, 0x60, + 0x9f, 0x2a, 0x0f, 0x0d, 0x93, 0xe8, 0xf8, 0x45, 0x2e, 0xd2, 0x16, 0x34, 0x1c, 0x17, 0x7b, 0x86, + 0x6f, 0x39, 0xf6, 0x6e, 0x2f, 0x5c, 0x54, 0x54, 0x69, 0xa7, 0xb0, 0x28, 0xf9, 0x22, 0x2e, 0xea, + 0x00, 0x0c, 0x62, 0x06, 0x99, 0xc3, 0x46, 0x07, 0x45, 0x68, 0x38, 0xb7, 0xba, 0x60, 0x85, 0x36, + 0x61, 0xc6, 0x37, 0x4c, 0xd2, 0xac, 0x30, 0xec, 0x0d, 0x01, 0xbb, 0xce, 0x06, 0xb4, 0xaf, 0x15, + 0x58, 0xe8, 0x7a, 0xd8, 0xf0, 0x31, 0xd5, 0xe1, 0x17, 0x22, 0x17, 0x8a, 0xcc, 0x05, 0x0f, 0xa6, + 0x22, 0x05, 0xb3, 0x01, 0x10, 0xfc, 0x8a, 0x59, 0xaa, 0xeb, 0x82, 0x26, 0x19, 0xec, 0x4c, 0x3a, + 0xd8, 0x2e, 0x5c, 0x12, 0x30, 0x94, 0x0b, 0x55, 0x7b, 0x06, 0x0b, 0x3d, 0x3c, 0xc4, 0x71, 0x20, + 0x79, 0xdc, 0xc7, 0x29, 0x50, 0x11, 0x53, 0x20, 0x01, 0xb2, 0x9a, 0x09, 0x52, 0xf0, 0x5f, 0x12, + 0xe4, 0x6f, 0x0a, 0xd4, 0x0f, 0xb0, 0x5f, 0x0a, 0x62, 0x13, 0x6a, 0x36, 0x1e, 0xb3, 0x9d, 0x09, + 0xe0, 0x45, 0x22, 0x6a, 0x03, 0xb2, 0xec, 0x81, 0x87, 0x0d, 0x82, 0x8f, 0xf8, 0x4e, 0xcc, 0xb0, + 0x9d, 0xc8, 0x18, 0x41, 0x77, 0xe0, 0x8a, 0x87, 0x4f, 0xce, 0x07, 0xa2, 0xf5, 0x2c, 0xb3, 0x4e, + 0xe9, 0x93, 0xc4, 0xcc, 0xa5, 0x89, 0xf9, 0x00, 0x20, 0x0a, 0xa9, 0x24, 0x2b, 0x7f, 0x29, 0x70, + 0xf9, 0x00, 0xdb, 0x27, 0x7d, 0x62, 0x76, 0xa4, 0x34, 0x64, 0xc8, 0x14, 0x86, 0x2c, 0x12, 0xe9, + 0x29, 0x3f, 0x8a, 0x8e, 0x64, 0x85, 0x0d, 0xc5, 0x32, 0xba, 0x0e, 0xf5, 0x1d, 0xcf, 0x39, 0x77, + 0x85, 0x4c, 0xe4, 0x0a, 0x4a, 0x37, 0xc1, 0xf6, 0x49, 0x9c, 0x83, 0xa1, 0x44, 0xe9, 0xa0, 0xbf, + 0xb0, 0xb7, 0x3f, 0x34, 0xfc, 0x53, 0xc7, 0x1b, 0xed, 0xf6, 0x9a, 0xb3, 0xac, 0x2a, 0xa5, 0xf4, + 0x14, 0xd7, 0xc0, 0xb1, 0x7d, 0x6c, 0xfb, 0x21, 0x15, 0x91, 0x98, 0x24, 0xaa, 0x96, 0x26, 0xea, + 0x21, 0x2c, 0x4a, 0x51, 0x96, 0x64, 0xeb, 0x3b, 0x05, 0x96, 0x76, 0x18, 0xe1, 0xd4, 0xdb, 0x9e, + 0x13, 0x94, 0x9a, 0x1e, 0xc0, 0xbe, 0x61, 0x5a, 0x36, 0x5b, 0x2c, 0xf4, 0x74, 0xab, 0x4d, 0xb0, + 0x77, 0x81, 0xbd, 0x63, 0xc3, 0xb5, 0x8e, 0x5d, 0xc3, 0x33, 0x46, 0xa4, 0xad, 0xe3, 0x17, 0xe7, + 0x98, 0xf8, 0xdc, 0x56, 0x17, 0xe6, 0xe5, 0x9e, 0xf1, 0xe2, 0xe3, 0xe1, 0x00, 0x70, 0x44, 0x52, + 0xdd, 0x54, 0x0a, 0xea, 0xa6, 0xc8, 0x69, 0x45, 0xe6, 0x54, 0x85, 0x79, 0xba, 0x03, 0x87, 0x56, + 0x98, 0xf3, 0x55, 0x3d, 0x96, 0xb5, 0x9f, 0x15, 0x40, 0x49, 0x1a, 0x4a, 0x56, 0xc9, 0x87, 0x12, + 0x77, 0x15, 0x36, 0xe7, 0xff, 0x99, 0xdc, 0x11, 0xd7, 0xb1, 0x09, 0xce, 0x21, 0xef, 0x1e, 0x34, + 0x7c, 0x8e, 0x26, 0xbc, 0x2f, 0x90, 0x10, 0x77, 0x38, 0xa4, 0x8b, 0x66, 0xda, 0x80, 0xed, 0x66, + 0x58, 0xe9, 0x1f, 0xbc, 0xdc, 0xed, 0xbd, 0x89, 0xe2, 0x65, 0x32, 0xae, 0xa4, 0x45, 0x4a, 0x72, + 0xb5, 0x0e, 0x55, 0xdf, 0x30, 0x43, 0x92, 0xa4, 0x0b, 0x85, 0xea, 0xb5, 0xfb, 0x30, 0xbf, 0x67, + 0x9d, 0xe1, 0xd2, 0xf7, 0xf4, 0x1f, 0x0a, 0xd4, 0xe8, 0xca, 0x74, 0xf7, 0x4b, 0xcc, 0xa7, 0x54, + 0x78, 0xd8, 0x1d, 0xbe, 0x0c, 0x2a, 0x58, 0x44, 0x85, 0xa0, 0x42, 0xb7, 0xe0, 0x52, 0x2c, 0x32, + 0x17, 0x41, 0x31, 0x90, 0x95, 0xb4, 0x92, 0x84, 0x49, 0x18, 0x16, 0x83, 0xba, 0xce, 0x15, 0x13, + 0xaa, 0xc0, 0x06, 0xc0, 0x20, 0xb8, 0xca, 0x68, 0xce, 0xd6, 0x58, 0x15, 0x11, 0x34, 0xda, 0x9f, + 0x15, 0x80, 0x27, 0x8e, 0x77, 0xd6, 0x77, 0x58, 0x88, 0x1a, 0x2c, 0x8c, 0x63, 0x29, 0x0e, 0x54, + 0xd2, 0xe5, 0x9e, 0x49, 0x01, 0x44, 0x55, 0x06, 0xd1, 0x86, 0xfa, 0x30, 0xdc, 0x04, 0xc2, 0xae, + 0x81, 0x46, 0xe7, 0x4a, 0xb4, 0x53, 0xd1, 0xee, 0xe8, 0xdc, 0x84, 0x9e, 0xd6, 0x41, 0xc0, 0x39, + 0x61, 0xf7, 0x80, 0x70, 0x5a, 0xc3, 0xbd, 0xd0, 0x63, 0x03, 0xf4, 0x16, 0x2c, 0x8f, 0x3f, 0x77, + 0xba, 0x86, 0x7d, 0x80, 0xc5, 0xfb, 0x63, 0x8e, 0x55, 0xdb, 0xac, 0x21, 0xd4, 0x81, 0x95, 0x40, + 0xed, 0xcb, 0x53, 0x6a, 0x6c, 0x4a, 0xe6, 0x18, 0xe5, 0xdf, 0x22, 0xfb, 0x9e, 0x75, 0x61, 0xf8, + 0xb8, 0x39, 0xdf, 0x52, 0xb6, 0xe6, 0x75, 0xae, 0xa0, 0x2c, 0x77, 0x39, 0xcb, 0x10, 0xb0, 0xcc, + 0x35, 0x9a, 0x0d, 0xab, 0x81, 0xf4, 0xd8, 0xc6, 0x9c, 0x6d, 0x7a, 0xb0, 0x3a, 0x00, 0x9c, 0xdc, + 0x64, 0xca, 0x0b, 0xa6, 0x82, 0xd5, 0x14, 0xdd, 0x5a, 0x1f, 0xd6, 0x32, 0xd7, 0x2b, 0x59, 0xe1, + 0x2f, 0x60, 0x35, 0x68, 0x35, 0x52, 0xf0, 0x5f, 0x27, 0x5f, 0x8a, 0xab, 0x44, 0x1f, 0xd6, 0x32, + 0xd7, 0x2d, 0x19, 0x86, 0x0f, 0x2b, 0x34, 0xdb, 0x52, 0x41, 0xe4, 0x9d, 0x6b, 0x0d, 0x16, 0x9e, + 0x88, 0xc1, 0x05, 0xf0, 0x25, 0xdd, 0x14, 0x41, 0x7c, 0x0c, 0x57, 0x33, 0x56, 0x2d, 0x19, 0xc2, + 0x4f, 0x0a, 0xac, 0x85, 0x47, 0xe0, 0x55, 0xc2, 0x18, 0x67, 0x84, 0x31, 0x4e, 0x84, 0x51, 0x50, + 0xa6, 0x84, 0xd3, 0x3d, 0x33, 0xb1, 0xd1, 0x98, 0x4d, 0x53, 0xf0, 0x08, 0x9a, 0xd9, 0xa0, 0x4b, + 0xb2, 0xf0, 0x05, 0xac, 0xec, 0x60, 0x9f, 0x3b, 0x8a, 0x6e, 0xa9, 0x69, 0xb2, 0x51, 0x85, 0x79, + 0xc7, 0x3d, 0x12, 0xf3, 0x31, 0x96, 0xa7, 0xd8, 0xcc, 0xaf, 0xe0, 0x6a, 0xc6, 0xca, 0x25, 0xaf, + 0x2e, 0xf9, 0xec, 0x57, 0xa6, 0x39, 0xfb, 0xda, 0xf7, 0x0a, 0x43, 0x40, 0x01, 0x73, 0x8b, 0x89, + 0xdf, 0x76, 0xbd, 0x8c, 0x66, 0xe2, 0xd5, 0x1b, 0xb1, 0x62, 0x6a, 0x7e, 0x51, 0x60, 0x35, 0x0b, + 0x59, 0x49, 0x72, 0xee, 0x41, 0x83, 0x87, 0x1d, 0x7d, 0x30, 0x66, 0xb1, 0x23, 0x9a, 0x25, 0x3a, + 0xa7, 0x6a, 0xc9, 0xce, 0x49, 0xfb, 0x41, 0x81, 0x6b, 0x61, 0x2c, 0x1f, 0x7a, 0x16, 0xb6, 0x4f, + 0xfe, 0x65, 0x5c, 0xff, 0xaa, 0xc0, 0xf5, 0x7c, 0x7c, 0xff, 0x45, 0xc6, 0xbf, 0x55, 0xa0, 0x11, + 0xd6, 0x08, 0xd2, 0x27, 0x26, 0xba, 0x4d, 0xcb, 0xcd, 0x48, 0xb8, 0x14, 0x53, 0x1d, 0x40, 0x34, + 0x3e, 0x55, 0x7d, 0xe3, 0x1b, 0x56, 0xcd, 0xeb, 0x59, 0xe4, 0xaa, 0xa6, 0xfd, 0xa8, 0x40, 0x2b, + 0x9d, 0xce, 0x02, 0xc4, 0xd7, 0x7a, 0x4f, 0x49, 0x64, 0x4a, 0xb5, 0x5c, 0xa6, 0x68, 0xbf, 0x2b, + 0x70, 0xa3, 0x00, 0x64, 0xc9, 0x64, 0x78, 0x07, 0x16, 0x06, 0xdc, 0x4d, 0x94, 0x0d, 0xcb, 0x89, + 0x4d, 0x60, 0x4b, 0x48, 0x86, 0xff, 0x54, 0x3e, 0x3c, 0x03, 0xad, 0x3b, 0xc4, 0x86, 0xf7, 0x86, + 0xf8, 0xd7, 0x9e, 0xc2, 0xcd, 0x42, 0xff, 0x25, 0x6f, 0xa7, 0x21, 0xa8, 0x07, 0xa9, 0x3d, 0xd9, + 0xc3, 0x17, 0x78, 0x58, 0xf0, 0x25, 0x35, 0xa4, 0x36, 0x0c, 0xec, 0xac, 0x1e, 0x08, 0x53, 0x94, + 0x82, 0x4f, 0xe0, 0x5a, 0xee, 0x6a, 0xe5, 0x02, 0xe8, 0x7c, 0xd3, 0x80, 0x4b, 0x8f, 0x99, 0xc5, + 0x01, 0xf6, 0x2e, 0xac, 0x01, 0x46, 0xf7, 0xa1, 0x21, 0xbc, 0xfe, 0xa1, 0xd5, 0xc8, 0x81, 0xfc, + 0xbc, 0xa8, 0xae, 0x65, 0xea, 0x89, 0x8b, 0xde, 0x85, 0x7a, 0xfc, 0xa0, 0x86, 0x56, 0xe2, 0xe5, + 0x85, 0x77, 0x3e, 0xf5, 0x6a, 0x86, 0x36, 0x98, 0x19, 0xbf, 0x72, 0xf1, 0x99, 0xe2, 0xc3, 0x1a, + 0x9f, 0x29, 0x3f, 0x87, 0x6d, 0xc3, 0x5c, 0xf0, 0x0c, 0x84, 0x96, 0x22, 0x83, 0xf8, 0xa5, 0x4b, + 0x45, 0x49, 0x15, 0x71, 0x69, 0x90, 0xc2, 0x73, 0x08, 0x0f, 0x52, 0x7e, 0x09, 0xe2, 0x41, 0x26, + 0xdf, 0x4e, 0x76, 0xd8, 0x73, 0xab, 0xf0, 0xfd, 0x8f, 0xfe, 0x27, 0xf0, 0x21, 0x3f, 0x8f, 0xa8, + 0x6a, 0xde, 0x50, 0xec, 0x48, 0xf8, 0x38, 0x96, 0x1c, 0xc9, 0x5f, 0xe6, 0x92, 0xa3, 0xe4, 0xf7, + 0xf4, 0xa7, 0xb0, 0x9c, 0xf1, 0x19, 0x80, 0x36, 0x64, 0xaa, 0x93, 0x8d, 0xa4, 0xba, 0x39, 0x71, + 0x3c, 0xf0, 0x9b, 0xd1, 0x97, 0x73, 0xbf, 0xd9, 0x1f, 0x0b, 0xdc, 0x6f, 0x5e, 0x53, 0xbf, 0x0f, + 0x4b, 0xa9, 0x56, 0x19, 0x5d, 0x17, 0xbf, 0x14, 0x53, 0x3e, 0xd7, 0x27, 0x8c, 0x12, 0x17, 0x3d, + 0x85, 0x95, 0xac, 0xce, 0x13, 0x6d, 0x26, 0x0a, 0x59, 0xca, 0x6f, 0x6b, 0xb2, 0x41, 0x00, 0x36, + 0xd5, 0x0a, 0x72, 0xb0, 0x59, 0xfd, 0x29, 0x07, 0x9b, 0xdd, 0x43, 0x1e, 0xc4, 0x8f, 0x22, 0xc2, + 0x51, 0x46, 0xeb, 0x89, 0x0d, 0x96, 0x5b, 0x11, 0x75, 0x63, 0xd2, 0x30, 0x71, 0x11, 0x86, 0x66, + 0x5e, 0xa7, 0x80, 0x6e, 0x26, 0xe6, 0x66, 0xf5, 0x3a, 0xea, 0xad, 0x62, 0x23, 0xe2, 0x22, 0x1f, + 0xd6, 0x27, 0x5e, 0x44, 0x68, 0x2b, 0x1f, 0xa7, 0x5c, 0xd4, 0xd5, 0xdb, 0x53, 0x5a, 0x12, 0x17, + 0x7d, 0x09, 0x9b, 0x05, 0x55, 0x1c, 0xdd, 0x89, 0x37, 0xb2, 0xf0, 0x3a, 0x51, 0xef, 0x4e, 0x6d, + 0x4b, 0x5c, 0xf4, 0x1c, 0xd6, 0x72, 0x0a, 0x2f, 0xd2, 0x84, 0xea, 0x92, 0x73, 0x0f, 0xa8, 0x37, + 0x0b, 0x6d, 0x88, 0xfb, 0x60, 0xe9, 0xb3, 0xc5, 0x76, 0xf8, 0x1f, 0xae, 0xf7, 0x82, 0x3f, 0xcf, + 0xe7, 0xd8, 0xbf, 0xaf, 0xde, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xd9, 0x76, 0xae, 0x00, + 0x1b, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index d5be34416..0aca5fe82 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -214,7 +214,8 @@ message GetUserFriendWorkMomentsResp { message CommentsMsg { Comment comment = 1; string workMomentID = 2; - string content = 3; + string userID = 3; + string content = 4; } message GetUserWorkMomentsCommentsMsgReq { From 3e5d9a394fbda890b9c21e33b7ebeb4ee10a5ef5 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 19 Apr 2022 16:33:44 +0800 Subject: [PATCH 096/128] workMoments --- internal/rpc/office/office.go | 1 + pkg/common/db/mongoModel.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 91d12666f..3849f17d2 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -475,6 +475,7 @@ func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbO Comment: &comment, WorkMomentID: commentMsg.WorkMomentID, Content: commentMsg.WorkMomentContent, + UserID: req.UserID, }) } resp.Pagination = &pbCommon.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber} diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 1dbec46a7..c0107dd65 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -669,7 +669,7 @@ func (d *DataBases) GetUserWorkMomentsCommentsMsg(userID string, showNumber, pag c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) var commentMsgList []CommentMsg 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{"comment.user_id": userID}, findOpts) + result, err := c.Find(ctx, bson.M{"user_id": userID}, findOpts) if err != nil { return commentMsgList, err } From f53f34559ae09dfc8f4266724c31ab1e9bdf4d53 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 16:40:57 +0800 Subject: [PATCH 097/128] organization --- cmd/open_im_api/main.go | 2 + internal/api/organization/organization.go | 4 + internal/rpc/msg/organization_notification.go | 75 +++ internal/rpc/msg/send_msg.go | 1 + internal/rpc/organization/organization.go | 10 + pkg/common/config/config.go | 5 + .../im_mysql_model/organization_model.go | 17 +- pkg/proto/sdk_ws/ws.pb.go | 572 ++++++++++-------- pkg/proto/sdk_ws/ws.proto | 7 + 9 files changed, 430 insertions(+), 263 deletions(-) create mode 100644 internal/rpc/msg/organization_notification.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 0370aa5d1..6f2d039da 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -159,6 +159,7 @@ func main() { 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) @@ -170,6 +171,7 @@ func main() { organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) + } go apiThird.MinioInit() diff --git a/internal/api/organization/organization.go b/internal/api/organization/organization.go index 9c6d53ace..9d134a253 100644 --- a/internal/api/organization/organization.go +++ b/internal/api/organization/organization.go @@ -122,6 +122,10 @@ func GetSubDepartment(c *gin.Context) { 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 { diff --git a/internal/rpc/msg/organization_notification.go b/internal/rpc/msg/organization_notification.go new file mode 100644 index 000000000..3040fe4a2 --- /dev/null +++ b/internal/rpc/msg/organization_notification.go @@ -0,0 +1,75 @@ +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 { + 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..70a8650dd 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -562,6 +562,7 @@ 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 + } switch reliabilityLevel { case constant.UnreliableNotification: diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index ef1ca7bb6..a6addcd81 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -1,6 +1,7 @@ package organization import ( + chat "Open_IM/internal/rpc/msg" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/db" @@ -97,6 +98,7 @@ func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.Crea 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 } @@ -120,6 +122,7 @@ func (s *organizationServer) UpdateDepartment(ctx context.Context, req *rpc.Upda resp := &rpc.UpdateDepartmentResp{} log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) return resp, nil } @@ -159,6 +162,7 @@ func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.Dele 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 } @@ -182,6 +186,7 @@ func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rp 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 } @@ -209,6 +214,7 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp 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 } @@ -240,6 +246,7 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp resp := &rpc.CreateDepartmentMemberResp{} log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) return resp, nil } @@ -298,6 +305,7 @@ func (s *organizationServer) UpdateUserInDepartment(ctx context.Context, req *rp } resp := &rpc.UpdateUserInDepartmentResp{} log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) + chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) return resp, nil } @@ -318,6 +326,7 @@ func (s *organizationServer) DeleteUserInDepartment(ctx context.Context, req *rp 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 } @@ -337,6 +346,7 @@ func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rp 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 } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 664ceadb8..9f51871f3 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -309,6 +309,11 @@ type config struct { 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 { 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 index 180ea0ef3..1bfb02038 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -44,7 +44,12 @@ func GetSubDepartmentList(departmentID string) (error, []db.Department) { return err, nil } var departmentList []db.Department - err = dbConn.Table("departments").Where("parent_id=?", departmentID).Find(&departmentList).Error + 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 } @@ -187,3 +192,13 @@ func GetDepartmentMemberList(departmentID string) (error, []db.DepartmentMember) } 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 +} diff --git a/pkg/proto/sdk_ws/ws.pb.go b/pkg/proto/sdk_ws/ws.pb.go index 45874a3a4..f53793083 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_879c1413df9d19e3, []int{0} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{1} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{2} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{3} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{4} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{5} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{6} + return fileDescriptor_ws_d729044b7cff282f, []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_879c1413df9d19e3, []int{7} + return fileDescriptor_ws_d729044b7cff282f, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -878,7 +878,7 @@ 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_879c1413df9d19e3, []int{8} + return fileDescriptor_ws_d729044b7cff282f, []int{8} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -989,7 +989,7 @@ 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_879c1413df9d19e3, []int{9} + return fileDescriptor_ws_d729044b7cff282f, []int{9} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1103,7 +1103,7 @@ 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_879c1413df9d19e3, []int{10} + return fileDescriptor_ws_d729044b7cff282f, []int{10} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1184,7 +1184,7 @@ 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_879c1413df9d19e3, []int{11} + return fileDescriptor_ws_d729044b7cff282f, []int{11} } func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) @@ -1230,7 +1230,7 @@ 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_879c1413df9d19e3, []int{12} + return fileDescriptor_ws_d729044b7cff282f, []int{12} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1277,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_879c1413df9d19e3, []int{13} + return fileDescriptor_ws_d729044b7cff282f, []int{13} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1331,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_879c1413df9d19e3, []int{14} + return fileDescriptor_ws_d729044b7cff282f, []int{14} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1382,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_879c1413df9d19e3, []int{15} + return fileDescriptor_ws_d729044b7cff282f, []int{15} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1414,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_879c1413df9d19e3, []int{16} + return fileDescriptor_ws_d729044b7cff282f, []int{16} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1461,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_879c1413df9d19e3, []int{17} + return fileDescriptor_ws_d729044b7cff282f, []int{17} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1530,7 +1530,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_879c1413df9d19e3, []int{18} + return fileDescriptor_ws_d729044b7cff282f, []int{18} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1691,7 +1691,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_879c1413df9d19e3, []int{19} + return fileDescriptor_ws_d729044b7cff282f, []int{19} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1759,7 +1759,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_879c1413df9d19e3, []int{20} + return fileDescriptor_ws_d729044b7cff282f, []int{20} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1816,7 +1816,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_879c1413df9d19e3, []int{21} + return fileDescriptor_ws_d729044b7cff282f, []int{21} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1885,7 +1885,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_879c1413df9d19e3, []int{22} + return fileDescriptor_ws_d729044b7cff282f, []int{22} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1940,7 +1940,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_879c1413df9d19e3, []int{23} + return fileDescriptor_ws_d729044b7cff282f, []int{23} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1996,7 +1996,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_879c1413df9d19e3, []int{24} + return fileDescriptor_ws_d729044b7cff282f, []int{24} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2051,7 +2051,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_879c1413df9d19e3, []int{25} + return fileDescriptor_ws_d729044b7cff282f, []int{25} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2106,7 +2106,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_879c1413df9d19e3, []int{26} + return fileDescriptor_ws_d729044b7cff282f, []int{26} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2162,7 +2162,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_879c1413df9d19e3, []int{27} + return fileDescriptor_ws_d729044b7cff282f, []int{27} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2225,7 +2225,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_879c1413df9d19e3, []int{28} + return fileDescriptor_ws_d729044b7cff282f, []int{28} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2288,7 +2288,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_879c1413df9d19e3, []int{29} + return fileDescriptor_ws_d729044b7cff282f, []int{29} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2350,7 +2350,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_879c1413df9d19e3, []int{30} + return fileDescriptor_ws_d729044b7cff282f, []int{30} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2404,7 +2404,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_879c1413df9d19e3, []int{31} + return fileDescriptor_ws_d729044b7cff282f, []int{31} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2460,7 +2460,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_879c1413df9d19e3, []int{32} + return fileDescriptor_ws_d729044b7cff282f, []int{32} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2529,7 +2529,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_879c1413df9d19e3, []int{33} + return fileDescriptor_ws_d729044b7cff282f, []int{33} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2590,7 +2590,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_879c1413df9d19e3, []int{34} + return fileDescriptor_ws_d729044b7cff282f, []int{34} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2644,7 +2644,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_879c1413df9d19e3, []int{35} + return fileDescriptor_ws_d729044b7cff282f, []int{35} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2699,7 +2699,7 @@ 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_879c1413df9d19e3, []int{36} + return fileDescriptor_ws_d729044b7cff282f, []int{36} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -2747,6 +2747,52 @@ func (m *GroupMemberInfoSetTips) GetChangedUser() *GroupMemberFullInfo { 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_d729044b7cff282f, []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"` @@ -2760,7 +2806,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_879c1413df9d19e3, []int{37} + return fileDescriptor_ws_d729044b7cff282f, []int{38} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2813,7 +2859,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_879c1413df9d19e3, []int{38} + return fileDescriptor_ws_d729044b7cff282f, []int{39} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2859,7 +2905,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_879c1413df9d19e3, []int{39} + return fileDescriptor_ws_d729044b7cff282f, []int{40} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2899,7 +2945,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_879c1413df9d19e3, []int{40} + return fileDescriptor_ws_d729044b7cff282f, []int{41} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2946,7 +2992,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_879c1413df9d19e3, []int{41} + return fileDescriptor_ws_d729044b7cff282f, []int{42} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -2994,7 +3040,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_879c1413df9d19e3, []int{42} + return fileDescriptor_ws_d729044b7cff282f, []int{43} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3047,7 +3093,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_879c1413df9d19e3, []int{43} + return fileDescriptor_ws_d729044b7cff282f, []int{44} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3085,7 +3131,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_879c1413df9d19e3, []int{44} + return fileDescriptor_ws_d729044b7cff282f, []int{45} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3123,7 +3169,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_879c1413df9d19e3, []int{45} + return fileDescriptor_ws_d729044b7cff282f, []int{46} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3161,7 +3207,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_879c1413df9d19e3, []int{46} + return fileDescriptor_ws_d729044b7cff282f, []int{47} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3200,7 +3246,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_879c1413df9d19e3, []int{47} + return fileDescriptor_ws_d729044b7cff282f, []int{48} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3239,7 +3285,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_879c1413df9d19e3, []int{48} + return fileDescriptor_ws_d729044b7cff282f, []int{49} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3279,7 +3325,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_879c1413df9d19e3, []int{49} + return fileDescriptor_ws_d729044b7cff282f, []int{50} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3333,7 +3379,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_879c1413df9d19e3, []int{50} + return fileDescriptor_ws_d729044b7cff282f, []int{51} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3379,7 +3425,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_879c1413df9d19e3, []int{51} + return fileDescriptor_ws_d729044b7cff282f, []int{52} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3432,7 +3478,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_879c1413df9d19e3, []int{52} + return fileDescriptor_ws_d729044b7cff282f, []int{53} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3699,7 +3745,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_879c1413df9d19e3, []int{53} + return fileDescriptor_ws_d729044b7cff282f, []int{54} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -3967,7 +4013,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_879c1413df9d19e3, []int{54} + return fileDescriptor_ws_d729044b7cff282f, []int{55} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4063,7 +4109,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_879c1413df9d19e3, []int{55} + return fileDescriptor_ws_d729044b7cff282f, []int{56} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4118,7 +4164,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_879c1413df9d19e3, []int{56} + return fileDescriptor_ws_d729044b7cff282f, []int{57} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4179,7 +4225,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_879c1413df9d19e3, []int{57} + return fileDescriptor_ws_d729044b7cff282f, []int{58} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4234,7 +4280,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_879c1413df9d19e3, []int{58} + return fileDescriptor_ws_d729044b7cff282f, []int{59} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4295,7 +4341,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_879c1413df9d19e3, []int{59} + return fileDescriptor_ws_d729044b7cff282f, []int{60} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4350,7 +4396,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_879c1413df9d19e3, []int{60} + return fileDescriptor_ws_d729044b7cff282f, []int{61} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4408,7 +4454,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_879c1413df9d19e3, []int{61} + return fileDescriptor_ws_d729044b7cff282f, []int{62} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4443,7 +4489,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_879c1413df9d19e3, []int{62} + return fileDescriptor_ws_d729044b7cff282f, []int{63} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4511,7 +4557,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_879c1413df9d19e3, []int{63} + return fileDescriptor_ws_d729044b7cff282f, []int{64} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4565,7 +4611,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_879c1413df9d19e3, []int{64} + return fileDescriptor_ws_d729044b7cff282f, []int{65} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4616,7 +4662,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_879c1413df9d19e3, []int{65} + return fileDescriptor_ws_d729044b7cff282f, []int{66} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4651,7 +4697,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_879c1413df9d19e3, []int{66} + return fileDescriptor_ws_d729044b7cff282f, []int{67} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4716,7 +4762,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_879c1413df9d19e3, []int{67} + return fileDescriptor_ws_d729044b7cff282f, []int{68} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4750,7 +4796,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_879c1413df9d19e3, []int{68} + return fileDescriptor_ws_d729044b7cff282f, []int{69} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4810,7 +4856,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_879c1413df9d19e3, []int{69} + return fileDescriptor_ws_d729044b7cff282f, []int{70} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4883,6 +4929,7 @@ func init() { 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") @@ -4918,197 +4965,198 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_879c1413df9d19e3) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_d729044b7cff282f) } -var fileDescriptor_ws_879c1413df9d19e3 = []byte{ - // 3013 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, 0x34, 0x66, 0x76, 0x30, - 0x85, 0xb5, 0x2c, 0x0b, 0xcc, 0xa2, 0x45, 0x48, 0xb0, 0x0b, 0x83, 0xc6, 0xf6, 0xbc, 0x96, 0xb1, - 0xc7, 0x5b, 0x3d, 0xc3, 0x22, 0x40, 0x5a, 0x95, 0xbb, 0xd2, 0xed, 0x5a, 0x57, 0x65, 0x56, 0xd7, - 0xc3, 0x33, 0x46, 0x48, 0x48, 0x20, 0x21, 0x6e, 0x9c, 0xe0, 0xc0, 0x05, 0x89, 0x0b, 0x02, 0xad, - 0x56, 0x2b, 0x04, 0x12, 0x87, 0x15, 0xe2, 0xc0, 0x3f, 0xc0, 0x11, 0x71, 0xe3, 0xcc, 0x95, 0x03, - 0x12, 0x12, 0x28, 0x33, 0xb2, 0xaa, 0x32, 0xab, 0xba, 0xed, 0xde, 0x96, 0xb5, 0x33, 0xab, 0xe1, - 0xd6, 0x11, 0x95, 0x11, 0x19, 0xf9, 0x8b, 0xc8, 0x8c, 0xc8, 0x47, 0xc3, 0x72, 0xe2, 0x1d, 0xbf, - 0xf9, 0x28, 0x79, 0xe9, 0x51, 0x72, 0x2d, 0x8a, 0x59, 0xca, 0xac, 0xd5, 0x84, 0xc4, 0x27, 0x24, - 0x7e, 0xd3, 0x8d, 0xfc, 0x37, 0x23, 0x37, 0x76, 0xc3, 0xc4, 0xfe, 0xa7, 0x09, 0xed, 0xdb, 0x31, - 0xcb, 0xa2, 0xbb, 0xf4, 0x90, 0x59, 0x3d, 0x98, 0x1f, 0x0a, 0x62, 0xa7, 0x67, 0x6c, 0x18, 0x2f, - 0xb4, 0x9d, 0x9c, 0xb4, 0xae, 0x40, 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, 0x3c, 0x74, 0xee, 0xf5, 0x9a, 0xd8, 0xbf, 0x24, 0xad, 0x0d, 0xe8, 0xb0, - 0x47, 0x94, 0xc4, 0x0f, 0x13, 0x12, 0xdf, 0xdd, 0xe9, 0xb5, 0xc4, 0x57, 0x95, 0x65, 0x5d, 0x05, - 0x18, 0xc4, 0xc4, 0x4d, 0xc9, 0x03, 0x3f, 0x24, 0xbd, 0xf9, 0x0d, 0xe3, 0x85, 0xae, 0xa3, 0x70, - 0xb8, 0x86, 0x90, 0x84, 0x07, 0x24, 0xde, 0x66, 0x19, 0x4d, 0x7b, 0x0b, 0xa2, 0x81, 0xca, 0xb2, - 0x96, 0xc0, 0x24, 0x8f, 0x7b, 0x6d, 0xa1, 0xda, 0x24, 0x8f, 0xad, 0x35, 0x68, 0x25, 0xa9, 0x9b, - 0x66, 0x49, 0x0f, 0x36, 0x8c, 0x17, 0x9a, 0x8e, 0xa4, 0xac, 0x4d, 0xe8, 0x0a, 0xbd, 0x2c, 0xb7, - 0xa6, 0x23, 0x44, 0x74, 0x66, 0x81, 0xd8, 0x83, 0xd3, 0x88, 0xf4, 0x16, 0x85, 0x82, 0x92, 0x61, - 0xff, 0xd5, 0x84, 0x4b, 0x02, 0xf7, 0x5d, 0x61, 0xc0, 0xad, 0x2c, 0x08, 0xce, 0xf1, 0xc0, 0x1a, - 0xb4, 0x32, 0xec, 0x0e, 0xe1, 0x97, 0x14, 0xef, 0x27, 0x66, 0x01, 0xb9, 0x47, 0x4e, 0x48, 0x20, - 0x80, 0x6f, 0x3a, 0x25, 0xc3, 0x5a, 0x87, 0x85, 0xb7, 0x98, 0x4f, 0x05, 0x26, 0x73, 0xe2, 0x63, - 0x41, 0xf3, 0x6f, 0xd4, 0x1f, 0x1c, 0x53, 0xee, 0x52, 0x84, 0xbb, 0xa0, 0x55, 0x4f, 0xb4, 0x74, - 0x4f, 0x3c, 0x0f, 0x4b, 0x6e, 0x14, 0xed, 0xba, 0x74, 0x48, 0x62, 0xec, 0x74, 0x5e, 0xe8, 0xad, - 0x70, 0xb9, 0x3f, 0x78, 0x4f, 0x7d, 0x96, 0xc5, 0x03, 0x22, 0xe0, 0x6e, 0x3a, 0x0a, 0x87, 0xeb, - 0x61, 0x11, 0x89, 0x15, 0x18, 0x11, 0xf9, 0x0a, 0x57, 0x7a, 0x05, 0x0a, 0xaf, 0x70, 0x3f, 0x66, - 0x29, 0xb9, 0x49, 0x3d, 0x31, 0xa8, 0x8e, 0xf4, 0x63, 0xc9, 0xb2, 0x7f, 0x64, 0xc0, 0xd2, 0x7e, - 0x76, 0x10, 0xf8, 0x03, 0xa1, 0x82, 0xc3, 0x5a, 0x82, 0x67, 0x68, 0xe0, 0xa9, 0x10, 0x98, 0x93, - 0x21, 0x68, 0xe8, 0x10, 0xac, 0x41, 0x6b, 0x48, 0xa8, 0x47, 0x62, 0x09, 0xa9, 0xa4, 0xa4, 0xa9, - 0xcd, 0xdc, 0x54, 0xfb, 0x67, 0x26, 0x2c, 0x7c, 0xc0, 0x26, 0x6c, 0x40, 0x27, 0x3a, 0x62, 0x94, - 0xec, 0x65, 0x3c, 0xac, 0xa4, 0x2d, 0x2a, 0xcb, 0xba, 0x0c, 0xcd, 0x03, 0x3f, 0x4e, 0x8f, 0x84, - 0x5f, 0xbb, 0x0e, 0x12, 0x9c, 0x4b, 0x42, 0xd7, 0x47, 0x67, 0xb6, 0x1d, 0x24, 0xe4, 0x80, 0x16, - 0x0a, 0xec, 0xf5, 0x39, 0xd6, 0xae, 0xcd, 0xb1, 0x7a, 0x6c, 0xc0, 0xb8, 0xd8, 0xb0, 0xff, 0x65, - 0x00, 0xdc, 0x8a, 0x7d, 0x42, 0x3d, 0x01, 0x4d, 0x65, 0x72, 0x1b, 0xf5, 0xc9, 0xbd, 0x06, 0xad, - 0x98, 0x84, 0x6e, 0x7c, 0x9c, 0x07, 0x3f, 0x52, 0x15, 0x83, 0x1a, 0x35, 0x83, 0x5e, 0x05, 0x38, - 0x14, 0xfd, 0x70, 0x3d, 0x02, 0xaa, 0xce, 0xcb, 0x1f, 0xbb, 0x56, 0x5b, 0x06, 0xaf, 0xe5, 0x5e, - 0x72, 0x94, 0xe6, 0x7c, 0x66, 0xb9, 0x9e, 0x27, 0x03, 0xb8, 0x89, 0x33, 0xab, 0x60, 0x8c, 0x89, - 0xdf, 0xd6, 0x19, 0xf1, 0x3b, 0x5f, 0x04, 0xc5, 0x3f, 0x0c, 0x68, 0x6f, 0x05, 0xee, 0xe0, 0x78, - 0xca, 0xa1, 0xeb, 0x43, 0x34, 0x6b, 0x43, 0xbc, 0x0d, 0xdd, 0x03, 0xae, 0x2e, 0x1f, 0x82, 0x40, - 0xa1, 0xf3, 0xf2, 0x27, 0xc6, 0x8c, 0x52, 0x9f, 0x14, 0x8e, 0x2e, 0xa7, 0x0f, 0x77, 0xee, 0xfc, - 0xe1, 0x36, 0xcf, 0x18, 0x6e, 0xab, 0x18, 0xee, 0x5f, 0x4c, 0x58, 0x14, 0x0b, 0x9d, 0x43, 0x46, - 0x19, 0x49, 0x52, 0xeb, 0xab, 0xb0, 0x90, 0xe5, 0xa6, 0x1a, 0xd3, 0x9a, 0x5a, 0x88, 0x58, 0xaf, - 0xc8, 0x65, 0x55, 0xc8, 0x9b, 0x42, 0xfe, 0xca, 0x18, 0xf9, 0x22, 0xa7, 0x39, 0x65, 0x73, 0x9e, - 0x82, 0x8e, 0x5c, 0xea, 0x05, 0xc4, 0x21, 0x49, 0x16, 0xa4, 0x72, 0xb5, 0xd4, 0x78, 0x18, 0x69, - 0xa3, 0xdd, 0x64, 0x28, 0x13, 0x94, 0xa4, 0x38, 0x3a, 0xd8, 0x8e, 0x7f, 0xc2, 0xa1, 0x97, 0x0c, - 0x3e, 0x51, 0x63, 0x32, 0x12, 0x1e, 0xc2, 0x69, 0x95, 0x93, 0x65, 0x9f, 0x12, 0x35, 0x0c, 0x04, - 0x8d, 0xc7, 0x5d, 0x8c, 0xb4, 0x50, 0x80, 0x99, 0x49, 0xe1, 0x54, 0x13, 0x93, 0xfd, 0xb7, 0x06, - 0x74, 0x71, 0xfa, 0xe4, 0xa0, 0x5e, 0xe5, 0x71, 0xce, 0x42, 0x2d, 0x8a, 0x14, 0x0e, 0xb7, 0x82, - 0x53, 0x7b, 0xfa, 0x42, 0xa3, 0xf1, 0x78, 0x28, 0x72, 0xfa, 0x96, 0xb6, 0xe0, 0xa8, 0xac, 0xbc, - 0x97, 0xdb, 0xea, 0xc2, 0xa3, 0x70, 0xf8, 0x52, 0x96, 0x32, 0x2d, 0x3a, 0x0a, 0x9a, 0xcb, 0xa6, - 0xac, 0xe8, 0x1f, 0xe3, 0x43, 0xe1, 0x70, 0x7c, 0x53, 0x96, 0xf7, 0x8d, 0x20, 0x95, 0x0c, 0xd4, - 0x2c, 0xfb, 0xc5, 0x54, 0x52, 0xd0, 0x35, 0xaf, 0xb6, 0xcf, 0xf4, 0x2a, 0x68, 0x5e, 0xd5, 0x27, - 0x57, 0xa7, 0x36, 0xb9, 0x36, 0xa1, 0x8b, 0x7a, 0xf2, 0xa0, 0x5f, 0xc4, 0x54, 0xaf, 0x31, 0xf5, - 0xd8, 0xe8, 0x56, 0x63, 0x43, 0xf7, 0xee, 0xd2, 0x04, 0xef, 0x2e, 0x17, 0xde, 0xfd, 0xad, 0x09, - 0xb0, 0x43, 0x22, 0x37, 0x4e, 0x43, 0x42, 0x53, 0x3e, 0x3c, 0xaf, 0xa0, 0x0a, 0xe7, 0x6a, 0x3c, - 0x35, 0x4f, 0x98, 0x7a, 0x9e, 0xb0, 0x60, 0x4e, 0x00, 0x8e, 0xde, 0x14, 0xbf, 0x39, 0x98, 0x91, - 0x1b, 0xa3, 0x36, 0x0c, 0xf2, 0x82, 0xe6, 0x79, 0x80, 0xc5, 0x9e, 0xcc, 0x1c, 0x4d, 0x07, 0x09, - 0x3e, 0xf9, 0xcb, 0xfe, 0x44, 0x41, 0xd3, 0xc2, 0x75, 0x5d, 0xe7, 0x9e, 0x5b, 0x83, 0xbd, 0x08, - 0x2b, 0x49, 0x76, 0x50, 0x0e, 0x6e, 0x2f, 0x0b, 0x65, 0xb8, 0xd7, 0xf8, 0x1c, 0x54, 0x2c, 0xce, - 0x78, 0x23, 0x4c, 0x35, 0x25, 0xa3, 0x5a, 0x15, 0xd8, 0x6f, 0x9b, 0xb0, 0x72, 0x3f, 0x1e, 0xba, - 0xd4, 0xff, 0xae, 0x28, 0x37, 0xc5, 0x02, 0x3e, 0x4b, 0xca, 0xdd, 0x80, 0x0e, 0xa1, 0xc3, 0xc0, - 0x4f, 0x8e, 0xf6, 0x4a, 0xdc, 0x54, 0x96, 0x0a, 0xf6, 0xdc, 0xa4, 0xa4, 0xdc, 0xd4, 0x92, 0xf2, - 0x1a, 0xb4, 0x42, 0x76, 0xe0, 0x07, 0x79, 0xdc, 0x4b, 0x4a, 0xc4, 0x3c, 0x09, 0x88, 0xc8, 0xce, - 0x45, 0xcc, 0xe7, 0x8c, 0x32, 0x51, 0x2f, 0x8c, 0x4d, 0xd4, 0x6d, 0x35, 0x51, 0xeb, 0xc0, 0x43, - 0x0d, 0x78, 0x84, 0xab, 0x53, 0xc0, 0xf5, 0x27, 0x03, 0x56, 0x4a, 0xb8, 0xb1, 0x06, 0x9d, 0x08, - 0x57, 0x35, 0x02, 0xcd, 0x31, 0x11, 0x58, 0xc4, 0x4d, 0x43, 0x8d, 0x1b, 0x1e, 0x69, 0x2c, 0xf1, - 0x95, 0x7a, 0xbf, 0xa0, 0x79, 0x6f, 0x01, 0x71, 0x15, 0xb0, 0x90, 0x52, 0xaa, 0xee, 0x96, 0x56, - 0x75, 0x57, 0xf3, 0xe8, 0x1f, 0x0c, 0xb8, 0xcc, 0xbd, 0x5c, 0x1b, 0xc6, 0x7d, 0x58, 0x61, 0x95, - 0x48, 0x90, 0x89, 0xe6, 0x93, 0x63, 0x12, 0x45, 0x35, 0x68, 0x9c, 0x9a, 0x30, 0x57, 0xe8, 0x55, - 0x3a, 0x91, 0x99, 0x67, 0x9c, 0xc2, 0xaa, 0x3d, 0x4e, 0x4d, 0xd8, 0x7e, 0xcf, 0x80, 0x15, 0x4c, - 0x6d, 0xca, 0x3c, 0xbf, 0x70, 0xb3, 0xdf, 0x80, 0xcb, 0xd5, 0x9e, 0xef, 0xf9, 0x49, 0xda, 0x33, - 0x37, 0x1a, 0xd3, 0x9a, 0x3e, 0x56, 0x81, 0xfd, 0x3d, 0xe8, 0xed, 0x67, 0x41, 0xb0, 0x4b, 0x92, - 0xc4, 0x1d, 0x92, 0xad, 0xd3, 0x3e, 0x19, 0x71, 0xbe, 0x43, 0x92, 0x88, 0x4f, 0x0e, 0x12, 0xc7, - 0xdb, 0xcc, 0x23, 0xc2, 0xf8, 0xa6, 0x93, 0x93, 0xdc, 0xaf, 0x24, 0x8e, 0xf9, 0x0a, 0x29, 0x4b, - 0x38, 0xa4, 0xac, 0x6b, 0x30, 0x17, 0x70, 0xb3, 0x1a, 0xc2, 0xac, 0xf5, 0x31, 0x66, 0xed, 0x26, - 0xc3, 0x1d, 0x37, 0x75, 0x1d, 0xd1, 0xce, 0x0e, 0xe1, 0x23, 0xe3, 0x7b, 0x1f, 0x4d, 0x0c, 0x60, - 0x5e, 0x64, 0x89, 0x2a, 0xc5, 0x67, 0xb4, 0x88, 0x5f, 0x95, 0xc5, 0xcd, 0x4e, 0x50, 0x8f, 0xb0, - 0xa3, 0xeb, 0xe4, 0xa4, 0x7d, 0x19, 0xac, 0xdb, 0x24, 0xdd, 0x75, 0x1f, 0xdf, 0xa0, 0xde, 0xae, - 0x4f, 0xfb, 0x64, 0xe4, 0x90, 0x91, 0x7d, 0x13, 0x2e, 0xd5, 0xb8, 0x49, 0x24, 0x26, 0xba, 0xfb, - 0xb8, 0x4f, 0x46, 0xc2, 0x80, 0xae, 0x23, 0x29, 0xc1, 0x17, 0xad, 0x64, 0xfd, 0x26, 0x29, 0x7b, - 0x04, 0xcb, 0xdc, 0x55, 0x7d, 0x42, 0xbd, 0xdd, 0x64, 0x28, 0x54, 0x6c, 0x40, 0x07, 0x11, 0xd8, - 0x4d, 0x86, 0x65, 0x41, 0xa8, 0xb0, 0x78, 0x8b, 0x41, 0xe0, 0x73, 0x97, 0x88, 0x16, 0x72, 0x34, - 0x0a, 0x8b, 0x4f, 0xbb, 0x84, 0xc8, 0xfd, 0x11, 0x9f, 0x8f, 0x0d, 0xa7, 0xa0, 0xed, 0xf7, 0x9a, - 0x30, 0x2f, 0x01, 0x15, 0x53, 0x8d, 0xd7, 0xe0, 0x05, 0x5e, 0x48, 0x61, 0xb6, 0x1c, 0x9c, 0x94, - 0x5b, 0x4d, 0xa4, 0xd4, 0xcd, 0x69, 0x43, 0xdf, 0x9c, 0x56, 0x6c, 0x9a, 0xab, 0xdb, 0x54, 0x19, - 0x57, 0xb3, 0x3e, 0x2e, 0x9e, 0x1c, 0xc4, 0x7a, 0xb9, 0x1f, 0xb8, 0xe9, 0x21, 0x8b, 0x43, 0x59, - 0x52, 0x37, 0x9d, 0x1a, 0x9f, 0x27, 0x24, 0xe4, 0x15, 0x15, 0x05, 0x2e, 0x0c, 0x15, 0x2e, 0xcf, - 0xdf, 0xc8, 0xc9, 0x2b, 0x0b, 0xdc, 0xcb, 0xe8, 0x4c, 0xb4, 0x2d, 0x49, 0x7c, 0x46, 0x45, 0x6e, - 0xc3, 0x02, 0x42, 0x65, 0xf1, 0x91, 0x87, 0xc9, 0xf0, 0x56, 0xcc, 0x42, 0xb9, 0xa3, 0xc9, 0x49, - 0x31, 0x72, 0x46, 0xd3, 0x3c, 0x2f, 0x76, 0x50, 0x56, 0x61, 0x71, 0x59, 0x49, 0x8a, 0xea, 0x61, - 0xd1, 0xc9, 0x49, 0x6b, 0x05, 0x1a, 0x09, 0x19, 0xc9, 0x92, 0x80, 0xff, 0xd4, 0x3c, 0xb7, 0xac, - 0x7b, 0xae, 0xb2, 0xc6, 0xaf, 0x88, 0xaf, 0xea, 0x1a, 0x5f, 0x2e, 0x9c, 0xab, 0xda, 0xc2, 0x79, - 0x03, 0xe6, 0x59, 0xc4, 0xe3, 0x3c, 0xe9, 0x59, 0x62, 0x8e, 0x7d, 0x6a, 0xf2, 0x1c, 0xbb, 0x76, - 0x1f, 0x5b, 0xde, 0xa4, 0x69, 0x7c, 0xea, 0xe4, 0x72, 0xd6, 0x3d, 0x58, 0x66, 0x87, 0x87, 0x81, - 0x4f, 0xc9, 0x7e, 0x96, 0x1c, 0x89, 0xd2, 0xfb, 0x92, 0x58, 0x9a, 0xec, 0x71, 0x4b, 0x93, 0xde, - 0xd2, 0xa9, 0x8a, 0xae, 0xbf, 0x02, 0x8b, 0x6a, 0x37, 0x1c, 0x86, 0x63, 0x72, 0x2a, 0x63, 0x90, - 0xff, 0xe4, 0xd9, 0xe4, 0xc4, 0x0d, 0x32, 0xcc, 0xce, 0x0b, 0x0e, 0x12, 0xaf, 0x98, 0x5f, 0x32, - 0xec, 0x9f, 0x1a, 0xb0, 0x5c, 0xe9, 0x80, 0xb7, 0x4e, 0xfd, 0x34, 0x20, 0x52, 0x03, 0x12, 0xbc, - 0xf2, 0xf1, 0x48, 0x32, 0x90, 0x21, 0x2c, 0x7e, 0xcb, 0x1c, 0xd2, 0x28, 0xf6, 0xb3, 0x36, 0x2c, - 0xfa, 0xf7, 0xfb, 0x5c, 0x51, 0x9f, 0x65, 0xd4, 0x2b, 0xce, 0xa4, 0x14, 0x1e, 0x0f, 0x21, 0xff, - 0x7e, 0x7f, 0xcb, 0xf5, 0x86, 0x04, 0x4f, 0x8e, 0x9a, 0xc2, 0x26, 0x9d, 0x69, 0x7b, 0xb0, 0xf0, - 0xc0, 0x8f, 0x92, 0x6d, 0x16, 0x86, 0xdc, 0x11, 0x1e, 0x49, 0x79, 0x8e, 0x36, 0x84, 0xbf, 0x25, - 0xc5, 0x43, 0xc5, 0x23, 0x87, 0x6e, 0x16, 0xa4, 0xbc, 0x69, 0x3e, 0x71, 0x15, 0x96, 0x38, 0x33, - 0x49, 0x18, 0xdd, 0x41, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x36, 0x61, 0x45, 0xec, 0x6c, 0xb6, - 0x85, 0xdb, 0x3d, 0x21, 0xf4, 0x32, 0x34, 0xc5, 0x34, 0x94, 0xd9, 0xe2, 0xec, 0xdd, 0x10, 0x36, - 0xb5, 0xae, 0x43, 0x8b, 0x45, 0x22, 0xc5, 0x60, 0x22, 0x7b, 0x7e, 0x92, 0x90, 0x7e, 0x3c, 0xe5, - 0x48, 0x29, 0xeb, 0x16, 0x40, 0x58, 0x66, 0x14, 0x5c, 0xba, 0xa7, 0xd5, 0xa1, 0x48, 0x72, 0x70, - 0x8b, 0x65, 0xb8, 0x38, 0xa3, 0x6a, 0x38, 0x3a, 0xd3, 0xda, 0x83, 0x25, 0x61, 0xf6, 0xfd, 0x7c, - 0x5b, 0x2c, 0x7c, 0x30, 0x7d, 0x8f, 0x15, 0x69, 0xfb, 0x97, 0x86, 0x84, 0x91, 0x7f, 0xed, 0x13, - 0xc4, 0xbe, 0x84, 0xc4, 0x98, 0x09, 0x92, 0x75, 0x58, 0x08, 0x33, 0x65, 0x97, 0xde, 0x70, 0x0a, - 0xba, 0x74, 0x51, 0x63, 0x6a, 0x17, 0xd9, 0xbf, 0x32, 0xa0, 0xf7, 0x1a, 0xf3, 0xa9, 0xf8, 0x70, - 0x23, 0x8a, 0x02, 0x79, 0x90, 0x3a, 0xb3, 0xcf, 0xbf, 0x06, 0x6d, 0x17, 0xd5, 0xd0, 0x54, 0xba, - 0x7d, 0x8a, 0x9d, 0x77, 0x29, 0xa3, 0x6c, 0xa2, 0x1a, 0xea, 0x26, 0xca, 0x7e, 0xc7, 0x80, 0x25, - 0x04, 0xe5, 0xf5, 0xcc, 0x4f, 0x67, 0xb6, 0x6f, 0x0b, 0x16, 0x46, 0x99, 0x9f, 0xce, 0x10, 0x95, - 0x85, 0x5c, 0x3d, 0x9e, 0x1a, 0x63, 0xe2, 0xc9, 0x7e, 0xd7, 0x80, 0x2b, 0x55, 0x58, 0x6f, 0x0c, - 0x06, 0x24, 0x7a, 0x92, 0x53, 0x4a, 0xdb, 0x44, 0xce, 0x55, 0x36, 0x91, 0x63, 0x4d, 0x76, 0xc8, - 0x5b, 0x64, 0xf0, 0xf4, 0x9a, 0xfc, 0x43, 0x13, 0x3e, 0x7a, 0xbb, 0x98, 0x78, 0x0f, 0x62, 0x97, - 0x26, 0x87, 0x24, 0x8e, 0x9f, 0xa0, 0xbd, 0xf7, 0xa0, 0x4b, 0xc9, 0xa3, 0xd2, 0x26, 0x39, 0x1d, - 0xa7, 0x55, 0xa3, 0x0b, 0x4f, 0xb7, 0x76, 0xd9, 0xff, 0x36, 0x60, 0x05, 0xf5, 0x7c, 0xdd, 0x1f, - 0x1c, 0x3f, 0xc1, 0xc1, 0xef, 0xc1, 0xd2, 0xb1, 0xb0, 0x80, 0x53, 0x33, 0x2c, 0xdb, 0x15, 0xe9, - 0x29, 0x87, 0xff, 0x1f, 0x03, 0x56, 0x51, 0xd1, 0x5d, 0x7a, 0xe2, 0x3f, 0xc9, 0x60, 0xdd, 0x87, - 0x65, 0x1f, 0x4d, 0x98, 0x11, 0x80, 0xaa, 0xf8, 0x94, 0x08, 0xfc, 0xde, 0x80, 0x65, 0xd4, 0x74, - 0x93, 0xa6, 0x24, 0x9e, 0x79, 0xfc, 0x77, 0xa0, 0x43, 0x68, 0x1a, 0xbb, 0x74, 0x96, 0x15, 0x52, - 0x15, 0x9d, 0x72, 0x91, 0x7c, 0xc7, 0x00, 0x4b, 0xa8, 0xda, 0xf1, 0x93, 0xd0, 0x4f, 0x92, 0x27, - 0xe8, 0xba, 0xe9, 0x0c, 0xfe, 0xb9, 0x09, 0x97, 0x15, 0x2d, 0xbb, 0x59, 0xfa, 0xb4, 0x9b, 0x6c, - 0xed, 0x40, 0x9b, 0xd7, 0x08, 0xea, 0xed, 0xc4, 0xb4, 0x1d, 0x95, 0x82, 0xbc, 0x8a, 0x15, 0x44, - 0x9f, 0x0c, 0x18, 0xf5, 0x12, 0x51, 0x1c, 0x75, 0x1d, 0x8d, 0xc7, 0x97, 0xa1, 0x75, 0x45, 0xcd, - 0xb6, 0x4b, 0x07, 0x24, 0x78, 0x66, 0x20, 0xb2, 0x7f, 0x63, 0xc0, 0x12, 0x36, 0x79, 0xfa, 0x87, - 0xcc, 0x73, 0x3d, 0x06, 0xf2, 0x87, 0xc6, 0x4b, 0x3c, 0xbc, 0xd6, 0x14, 0x2d, 0x6a, 0x5d, 0xfd, - 0xf4, 0x86, 0xd6, 0x1d, 0xe8, 0x0c, 0x8e, 0x5c, 0x3a, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0xfb, 0x18, - 0x56, 0xf1, 0x3e, 0x46, 0xa9, 0xce, 0xf8, 0xbe, 0xdf, 0xf5, 0x70, 0x2b, 0x6f, 0x88, 0xee, 0x73, - 0x52, 0xbf, 0x69, 0x93, 0x8f, 0x29, 0xca, 0x9b, 0xb6, 0xab, 0x00, 0xae, 0xe7, 0xbd, 0xc1, 0x62, - 0xcf, 0xa7, 0x79, 0xa9, 0xad, 0x70, 0xec, 0xd7, 0x60, 0xf1, 0x56, 0xcc, 0xc2, 0x07, 0xca, 0xcd, - 0xca, 0x99, 0x77, 0x3f, 0xea, 0xad, 0x8c, 0xa9, 0xdf, 0xca, 0xd8, 0xdf, 0x81, 0xff, 0xaf, 0x19, - 0x2e, 0xbc, 0xb6, 0x8d, 0x17, 0x46, 0x79, 0x27, 0xd2, 0x79, 0x1f, 0x1f, 0x03, 0x8e, 0x6a, 0x8b, - 0xa3, 0x09, 0xd9, 0x3f, 0x30, 0xe0, 0xb9, 0x9a, 0xfa, 0x1b, 0x51, 0x14, 0xb3, 0x13, 0x19, 0xd1, - 0x17, 0xd1, 0x8d, 0x5e, 0x86, 0x9a, 0xd5, 0x32, 0x74, 0xac, 0x11, 0x5a, 0xe9, 0xfc, 0x01, 0x18, - 0xf1, 0x6b, 0x03, 0x96, 0xa5, 0x11, 0x9e, 0x27, 0xbb, 0xfd, 0x22, 0xb4, 0xf0, 0xb2, 0x59, 0x76, - 0xf8, 0xdc, 0xd8, 0x0e, 0xf3, 0x4b, 0x72, 0x47, 0x36, 0xae, 0xc7, 0xb6, 0x39, 0x2e, 0xb6, 0xbf, - 0x5c, 0xcc, 0xa0, 0xa9, 0xaf, 0x83, 0xa5, 0x80, 0xfd, 0xcd, 0x3c, 0x98, 0x77, 0x48, 0x40, 0x2e, - 0x12, 0x23, 0xfb, 0x21, 0x2c, 0x89, 0x9b, 0xef, 0x12, 0x83, 0x0b, 0x51, 0xfb, 0x06, 0xac, 0x08, - 0xb5, 0x17, 0x6e, 0x6f, 0x31, 0x3b, 0x38, 0x3e, 0xdb, 0x38, 0xdf, 0x2f, 0x4e, 0xfb, 0xe7, 0xe0, - 0x52, 0x8e, 0xfd, 0xc3, 0xc8, 0x2b, 0x8e, 0x73, 0x26, 0x1c, 0x62, 0xdb, 0x9f, 0x87, 0xb5, 0x6d, - 0x46, 0x4f, 0x48, 0x9c, 0xe0, 0x11, 0xbf, 0x10, 0xc9, 0x25, 0xb4, 0xc9, 0x2f, 0x29, 0xfb, 0x2d, - 0x58, 0x57, 0x25, 0xfa, 0x24, 0xdd, 0x8f, 0xfd, 0x13, 0x45, 0x4a, 0x1e, 0xf2, 0x1a, 0xda, 0x21, - 0x6f, 0x79, 0x28, 0x6c, 0x6a, 0x87, 0xc2, 0x57, 0xa0, 0xed, 0x27, 0x52, 0x81, 0x08, 0xaa, 0x05, - 0xa7, 0x64, 0xd8, 0x7d, 0x58, 0x95, 0x77, 0xd1, 0xfb, 0xee, 0xd0, 0xa7, 0xb8, 0x02, 0x5e, 0x05, - 0x88, 0xdc, 0x61, 0xfe, 0x16, 0x05, 0xef, 0x03, 0x14, 0x0e, 0xff, 0x9e, 0x1c, 0xb1, 0x47, 0xf2, - 0xbb, 0x89, 0xdf, 0x4b, 0x8e, 0xfd, 0x0d, 0xb0, 0x1c, 0x92, 0x44, 0x8c, 0x26, 0x44, 0xd1, 0xba, - 0x01, 0x9d, 0xed, 0x2c, 0x8e, 0x09, 0xe5, 0x5d, 0xe5, 0x0f, 0x33, 0x54, 0x16, 0xd7, 0xdb, 0x2f, - 0xf5, 0xe2, 0x19, 0xb2, 0xc2, 0xb1, 0x7f, 0xd1, 0x80, 0x76, 0xdf, 0x1f, 0x52, 0x37, 0x70, 0xc8, - 0xc8, 0xfa, 0x0a, 0xb4, 0xb0, 0xb2, 0x97, 0x6e, 0x1c, 0x77, 0xa6, 0x89, 0xad, 0x71, 0x0b, 0xe3, - 0x90, 0xd1, 0x9d, 0xff, 0x73, 0xa4, 0x8c, 0xf5, 0x3a, 0x74, 0xf1, 0xd7, 0x5d, 0x3c, 0xa9, 0x91, - 0x19, 0xeb, 0xd3, 0xe7, 0x28, 0x91, 0xad, 0x51, 0x97, 0xae, 0x81, 0x1b, 0x34, 0x10, 0x99, 0x5f, - 0xce, 0xdd, 0xc9, 0x06, 0x61, 0x81, 0x20, 0x0d, 0x42, 0x19, 0x2e, 0xed, 0x8a, 0xb3, 0x0c, 0x99, - 0xd0, 0x26, 0x4b, 0xe3, 0x91, 0x87, 0x94, 0x46, 0x19, 0x2e, 0x7d, 0x94, 0xd1, 0xe1, 0xc3, 0x48, - 0x1e, 0xb1, 0x4d, 0x96, 0xbe, 0x23, 0x9a, 0x49, 0x69, 0x94, 0xe1, 0xd2, 0xb1, 0x58, 0x59, 0x05, - 0xe8, 0x67, 0x49, 0xe3, 0x02, 0x2c, 0xa5, 0x51, 0x66, 0xab, 0x0d, 0xf3, 0x91, 0x7b, 0x1a, 0x30, - 0xd7, 0xb3, 0xdf, 0x6e, 0x00, 0xe4, 0x0d, 0x13, 0x51, 0x0f, 0x68, 0x2e, 0xda, 0x3c, 0xd7, 0x45, - 0x51, 0x70, 0xaa, 0x38, 0xa9, 0x3f, 0xde, 0x49, 0x9f, 0x99, 0xd6, 0x49, 0xa8, 0xad, 0xe2, 0xa6, - 0xeb, 0x15, 0x37, 0x6d, 0x9e, 0xeb, 0x26, 0x69, 0x94, 0x74, 0xd4, 0xf5, 0x8a, 0xa3, 0x36, 0xcf, - 0x75, 0x94, 0x94, 0x97, 0xae, 0xba, 0x5e, 0x71, 0xd5, 0xe6, 0xb9, 0xae, 0x92, 0xf2, 0xd2, 0x59, - 0xd7, 0x2b, 0xce, 0xda, 0x3c, 0xd7, 0x59, 0x52, 0xbe, 0xee, 0xae, 0x77, 0x4d, 0x58, 0x12, 0x90, - 0xe1, 0x7d, 0x1a, 0x3d, 0x64, 0xe2, 0xd8, 0x5c, 0xc0, 0xa5, 0x3f, 0x6d, 0xd2, 0x99, 0xd6, 0x67, - 0x61, 0x15, 0x19, 0xf2, 0x29, 0x4c, 0x71, 0x41, 0xd9, 0x76, 0xea, 0x1f, 0xc4, 0x0d, 0x48, 0x96, - 0xa4, 0x2c, 0xdc, 0x71, 0x53, 0x37, 0xaf, 0x8c, 0x4a, 0x8e, 0x7a, 0x3f, 0x35, 0x57, 0x7b, 0x3c, - 0x19, 0x33, 0x16, 0x16, 0x17, 0x4f, 0x92, 0xe2, 0x12, 0xa9, 0x1f, 0x12, 0x96, 0xa5, 0x72, 0x99, - 0xc8, 0x49, 0x7c, 0x7e, 0xe0, 0xf9, 0xae, 0xb8, 0xd5, 0x91, 0x77, 0xf3, 0x05, 0x43, 0xac, 0x6c, - 0xe5, 0x2d, 0x95, 0x7c, 0xdc, 0x58, 0x72, 0xce, 0xbf, 0x51, 0xb2, 0xff, 0x6e, 0xc0, 0xa5, 0x7d, - 0x37, 0x4e, 0xfd, 0x81, 0x1f, 0xb9, 0x34, 0xdd, 0x25, 0xa9, 0x2b, 0xc6, 0xa0, 0xbd, 0x6f, 0x32, - 0xde, 0xdf, 0xfb, 0xa6, 0x7d, 0x58, 0x1e, 0xea, 0x45, 0xf8, 0xfb, 0xac, 0x9f, 0xab, 0xe2, 0xda, - 0x63, 0xad, 0xc6, 0xfb, 0x7e, 0xac, 0x65, 0xff, 0xd8, 0x84, 0xe5, 0xca, 0xd2, 0xc9, 0xcb, 0x51, - 0x2c, 0x34, 0x8a, 0x98, 0x28, 0x68, 0xeb, 0x06, 0x80, 0x5f, 0x84, 0xd1, 0x19, 0x67, 0xd4, 0x7a, - 0xac, 0x39, 0x8a, 0xd0, 0xb8, 0xab, 0xaa, 0xc6, 0xcc, 0x57, 0x55, 0x7c, 0x8b, 0x10, 0x95, 0x4e, - 0x3a, 0x63, 0x8b, 0x30, 0xc6, 0x95, 0x8e, 0x2a, 0x6a, 0x7f, 0x1b, 0x56, 0x6b, 0x2b, 0x94, 0xb8, - 0xb9, 0x62, 0xc7, 0x84, 0x16, 0x37, 0x57, 0x9c, 0x50, 0x82, 0xd5, 0xac, 0x06, 0x6b, 0xe0, 0x9f, - 0xa8, 0xaf, 0x41, 0x25, 0x69, 0xff, 0xc4, 0x84, 0xb5, 0xf1, 0xd9, 0xe5, 0x59, 0x85, 0xfb, 0x00, - 0x7a, 0x93, 0x56, 0xf2, 0x0b, 0x43, 0xbd, 0x8c, 0xee, 0x22, 0x0f, 0x3f, 0xab, 0x70, 0x5f, 0xca, - 0xa3, 0x5b, 0x49, 0x75, 0xf6, 0xef, 0x0a, 0x7c, 0x8a, 0x4a, 0xe3, 0x19, 0xc5, 0xc7, 0x7a, 0x11, - 0x56, 0x70, 0x98, 0xca, 0xdb, 0x06, 0x2c, 0x5c, 0x6b, 0xfc, 0x72, 0xa5, 0x50, 0xd2, 0xfe, 0x85, - 0xc5, 0xec, 0x1f, 0x8d, 0xdc, 0x27, 0x45, 0xfd, 0xf6, 0xa1, 0xf2, 0x49, 0x19, 0x69, 0x4a, 0x51, - 0xa3, 0x44, 0x5a, 0x51, 0x57, 0xfe, 0x2f, 0xd2, 0xce, 0x8f, 0xb4, 0x02, 0x4b, 0xa5, 0xc0, 0xb3, - 0xbf, 0x0f, 0xdd, 0x1d, 0x12, 0xec, 0x26, 0xc3, 0xfc, 0x55, 0xd5, 0x59, 0x40, 0x4e, 0xfa, 0x53, - 0xca, 0xc4, 0xf7, 0x54, 0xd5, 0xb7, 0x58, 0x73, 0xb5, 0xb7, 0x58, 0xf6, 0x16, 0x2c, 0xa9, 0x06, - 0xcc, 0xf2, 0xa8, 0x6c, 0xeb, 0xca, 0xb7, 0xd6, 0xaf, 0xbd, 0x84, 0x7f, 0x7f, 0x7a, 0xb5, 0x06, - 0xe2, 0x41, 0x4b, 0xfc, 0x1d, 0xea, 0x0b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xda, 0xf1, 0xea, - 0xa1, 0x21, 0x35, 0x00, 0x00, +var fileDescriptor_ws_d729044b7cff282f = []byte{ + // 3033 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcf, 0x6f, 0x24, 0x47, + 0xf5, 0xff, 0x76, 0x8f, 0x67, 0xec, 0x79, 0xe3, 0xf1, 0x8f, 0xde, 0xfd, 0x3a, 0x83, 0xd9, 0x2c, + 0xa6, 0xb1, 0x42, 0x08, 0xb0, 0x41, 0x89, 0x90, 0x20, 0x81, 0x45, 0x6b, 0x7b, 0x7f, 0x85, 0xb5, + 0xd7, 0xe9, 0xd9, 0x25, 0x08, 0x90, 0xa2, 0xf6, 0x74, 0x79, 0xdc, 0x71, 0x77, 0x55, 0x4f, 0xff, + 0xf0, 0xee, 0x22, 0x24, 0x24, 0x90, 0x10, 0x37, 0x4e, 0x70, 0xe0, 0x82, 0xc4, 0x05, 0x81, 0xa2, + 0x28, 0x42, 0x20, 0x71, 0x88, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x1b, 0x67, 0xae, 0x1c, 0x90, + 0x90, 0x40, 0x55, 0xaf, 0xba, 0xbb, 0xaa, 0x7b, 0xc6, 0x9e, 0x1d, 0x59, 0xd9, 0x8d, 0x96, 0xdb, + 0xbc, 0xd7, 0xf5, 0x5e, 0xbd, 0xfa, 0xbc, 0x57, 0xf5, 0x5e, 0xfd, 0x18, 0x58, 0x4e, 0xbc, 0xe3, + 0xb7, 0x1f, 0x24, 0x2f, 0x3f, 0x48, 0xae, 0x44, 0x31, 0x4b, 0x99, 0xb5, 0x9a, 0x90, 0xf8, 0x84, + 0xc4, 0x6f, 0xbb, 0x91, 0xff, 0x76, 0xe4, 0xc6, 0x6e, 0x98, 0xd8, 0xff, 0x34, 0xa1, 0x7d, 0x33, + 0x66, 0x59, 0x74, 0x9b, 0x1e, 0x32, 0xab, 0x07, 0xf3, 0x43, 0x41, 0xec, 0xf4, 0x8c, 0x0d, 0xe3, + 0xc5, 0xb6, 0x93, 0x93, 0xd6, 0x25, 0x68, 0x8b, 0x9f, 0x7b, 0x6e, 0x48, 0x7a, 0xa6, 0xf8, 0x56, + 0x32, 0x2c, 0x1b, 0x16, 0x29, 0x4b, 0xfd, 0x43, 0x7f, 0xe0, 0xa6, 0x3e, 0xa3, 0xbd, 0x86, 0x68, + 0xa0, 0xf1, 0x78, 0x1b, 0x9f, 0xa6, 0x31, 0xf3, 0xb2, 0x81, 0x68, 0x33, 0x87, 0x6d, 0x54, 0x1e, + 0xef, 0xff, 0xd0, 0x1d, 0x90, 0xfb, 0xce, 0x9d, 0x5e, 0x13, 0xfb, 0x97, 0xa4, 0xb5, 0x01, 0x1d, + 0xf6, 0x80, 0x92, 0xf8, 0x7e, 0x42, 0xe2, 0xdb, 0x3b, 0xbd, 0x96, 0xf8, 0xaa, 0xb2, 0xac, 0xcb, + 0x00, 0x83, 0x98, 0xb8, 0x29, 0xb9, 0xe7, 0x87, 0xa4, 0x37, 0xbf, 0x61, 0xbc, 0xd8, 0x75, 0x14, + 0x0e, 0xd7, 0x10, 0x92, 0xf0, 0x80, 0xc4, 0xdb, 0x2c, 0xa3, 0x69, 0x6f, 0x41, 0x34, 0x50, 0x59, + 0xd6, 0x12, 0x98, 0xe4, 0x61, 0xaf, 0x2d, 0x54, 0x9b, 0xe4, 0xa1, 0xb5, 0x06, 0xad, 0x24, 0x75, + 0xd3, 0x2c, 0xe9, 0xc1, 0x86, 0xf1, 0x62, 0xd3, 0x91, 0x94, 0xb5, 0x09, 0x5d, 0xa1, 0x97, 0xe5, + 0xd6, 0x74, 0x84, 0x88, 0xce, 0x2c, 0x10, 0xbb, 0xf7, 0x28, 0x22, 0xbd, 0x45, 0xa1, 0xa0, 0x64, + 0xd8, 0x7f, 0x35, 0xe1, 0x82, 0xc0, 0x7d, 0x57, 0x18, 0x70, 0x23, 0x0b, 0x82, 0x33, 0x3c, 0xb0, + 0x06, 0xad, 0x0c, 0xbb, 0x43, 0xf8, 0x25, 0xc5, 0xfb, 0x89, 0x59, 0x40, 0xee, 0x90, 0x13, 0x12, + 0x08, 0xe0, 0x9b, 0x4e, 0xc9, 0xb0, 0xd6, 0x61, 0xe1, 0x1d, 0xe6, 0x53, 0x81, 0xc9, 0x9c, 0xf8, + 0x58, 0xd0, 0xfc, 0x1b, 0xf5, 0x07, 0xc7, 0x94, 0xbb, 0x14, 0xe1, 0x2e, 0x68, 0xd5, 0x13, 0x2d, + 0xdd, 0x13, 0x2f, 0xc0, 0x92, 0x1b, 0x45, 0xbb, 0x2e, 0x1d, 0x92, 0x18, 0x3b, 0x9d, 0x17, 0x7a, + 0x2b, 0x5c, 0xee, 0x0f, 0xde, 0x53, 0x9f, 0x65, 0xf1, 0x80, 0x08, 0xb8, 0x9b, 0x8e, 0xc2, 0xe1, + 0x7a, 0x58, 0x44, 0x62, 0x05, 0x46, 0x44, 0xbe, 0xc2, 0x95, 0x5e, 0x81, 0xc2, 0x2b, 0xdc, 0x8f, + 0x59, 0x4a, 0xae, 0x53, 0x4f, 0x0c, 0xaa, 0x23, 0xfd, 0x58, 0xb2, 0xec, 0x1f, 0x19, 0xb0, 0xb4, + 0x9f, 0x1d, 0x04, 0xfe, 0x40, 0xa8, 0xe0, 0xb0, 0x96, 0xe0, 0x19, 0x1a, 0x78, 0x2a, 0x04, 0xe6, + 0x64, 0x08, 0x1a, 0x3a, 0x04, 0x6b, 0xd0, 0x1a, 0x12, 0xea, 0x91, 0x58, 0x42, 0x2a, 0x29, 0x69, + 0x6a, 0x33, 0x37, 0xd5, 0xfe, 0x99, 0x09, 0x0b, 0x1f, 0xb2, 0x09, 0x1b, 0xd0, 0x89, 0x8e, 0x18, + 0x25, 0x7b, 0x19, 0x0f, 0x2b, 0x69, 0x8b, 0xca, 0xb2, 0x2e, 0x42, 0xf3, 0xc0, 0x8f, 0xd3, 0x23, + 0xe1, 0xd7, 0xae, 0x83, 0x04, 0xe7, 0x92, 0xd0, 0xf5, 0xd1, 0x99, 0x6d, 0x07, 0x09, 0x39, 0xa0, + 0x85, 0x02, 0x7b, 0x7d, 0x8e, 0xb5, 0x6b, 0x73, 0xac, 0x1e, 0x1b, 0x30, 0x2e, 0x36, 0xec, 0x7f, + 0x19, 0x00, 0x37, 0x62, 0x9f, 0x50, 0x4f, 0x40, 0x53, 0x99, 0xdc, 0x46, 0x7d, 0x72, 0xaf, 0x41, + 0x2b, 0x26, 0xa1, 0x1b, 0x1f, 0xe7, 0xc1, 0x8f, 0x54, 0xc5, 0xa0, 0x46, 0xcd, 0xa0, 0xd7, 0x01, + 0x0e, 0x45, 0x3f, 0x5c, 0x8f, 0x80, 0xaa, 0xf3, 0xca, 0xc7, 0xaf, 0xd4, 0x96, 0xc1, 0x2b, 0xb9, + 0x97, 0x1c, 0xa5, 0x39, 0x9f, 0x59, 0xae, 0xe7, 0xc9, 0x00, 0x6e, 0xe2, 0xcc, 0x2a, 0x18, 0x63, + 0xe2, 0xb7, 0x75, 0x4a, 0xfc, 0xce, 0x17, 0x41, 0xf1, 0x0f, 0x03, 0xda, 0x5b, 0x81, 0x3b, 0x38, + 0x9e, 0x72, 0xe8, 0xfa, 0x10, 0xcd, 0xda, 0x10, 0x6f, 0x42, 0xf7, 0x80, 0xab, 0xcb, 0x87, 0x20, + 0x50, 0xe8, 0xbc, 0xf2, 0xc9, 0x31, 0xa3, 0xd4, 0x27, 0x85, 0xa3, 0xcb, 0xe9, 0xc3, 0x9d, 0x3b, + 0x7b, 0xb8, 0xcd, 0x53, 0x86, 0xdb, 0x2a, 0x86, 0xfb, 0x17, 0x13, 0x16, 0xc5, 0x42, 0xe7, 0x90, + 0x51, 0x46, 0x92, 0xd4, 0xfa, 0x2a, 0x2c, 0x64, 0xb9, 0xa9, 0xc6, 0xb4, 0xa6, 0x16, 0x22, 0xd6, + 0x6b, 0x72, 0x59, 0x15, 0xf2, 0xa6, 0x90, 0xbf, 0x34, 0x46, 0xbe, 0xc8, 0x69, 0x4e, 0xd9, 0x9c, + 0xa7, 0xa0, 0x23, 0x97, 0x7a, 0x01, 0x71, 0x48, 0x92, 0x05, 0xa9, 0x5c, 0x2d, 0x35, 0x1e, 0x46, + 0xda, 0x68, 0x37, 0x19, 0xca, 0x04, 0x25, 0x29, 0x8e, 0x0e, 0xb6, 0xe3, 0x9f, 0x70, 0xe8, 0x25, + 0x83, 0x4f, 0xd4, 0x98, 0x8c, 0x84, 0x87, 0x70, 0x5a, 0xe5, 0x64, 0xd9, 0xa7, 0x44, 0x0d, 0x03, + 0x41, 0xe3, 0x71, 0x17, 0x23, 0x2d, 0x14, 0x60, 0x66, 0x52, 0x38, 0xd5, 0xc4, 0x64, 0xff, 0xad, + 0x01, 0x5d, 0x9c, 0x3e, 0x39, 0xa8, 0x97, 0x79, 0x9c, 0xb3, 0x50, 0x8b, 0x22, 0x85, 0xc3, 0xad, + 0xe0, 0xd4, 0x9e, 0xbe, 0xd0, 0x68, 0x3c, 0x1e, 0x8a, 0x9c, 0xbe, 0xa1, 0x2d, 0x38, 0x2a, 0x2b, + 0xef, 0xe5, 0xa6, 0xba, 0xf0, 0x28, 0x1c, 0xbe, 0x94, 0xa5, 0x4c, 0x8b, 0x8e, 0x82, 0xe6, 0xb2, + 0x29, 0x2b, 0xfa, 0xc7, 0xf8, 0x50, 0x38, 0x1c, 0xdf, 0x94, 0xe5, 0x7d, 0x23, 0x48, 0x25, 0x03, + 0x35, 0xcb, 0x7e, 0x31, 0x95, 0x14, 0x74, 0xcd, 0xab, 0xed, 0x53, 0xbd, 0x0a, 0x9a, 0x57, 0xf5, + 0xc9, 0xd5, 0xa9, 0x4d, 0xae, 0x4d, 0xe8, 0xa2, 0x9e, 0x3c, 0xe8, 0x17, 0x31, 0xd5, 0x6b, 0x4c, + 0x3d, 0x36, 0xba, 0xd5, 0xd8, 0xd0, 0xbd, 0xbb, 0x34, 0xc1, 0xbb, 0xcb, 0x85, 0x77, 0x7f, 0x6b, + 0x02, 0xec, 0x90, 0xc8, 0x8d, 0xd3, 0x90, 0xd0, 0x94, 0x0f, 0xcf, 0x2b, 0xa8, 0xc2, 0xb9, 0x1a, + 0x4f, 0xcd, 0x13, 0xa6, 0x9e, 0x27, 0x2c, 0x98, 0x13, 0x80, 0xa3, 0x37, 0xc5, 0x6f, 0x0e, 0x66, + 0xe4, 0xc6, 0xa8, 0x0d, 0x83, 0xbc, 0xa0, 0x79, 0x1e, 0x60, 0xb1, 0x27, 0x33, 0x47, 0xd3, 0x41, + 0x82, 0x4f, 0xfe, 0xb2, 0x3f, 0x51, 0xd0, 0xb4, 0x70, 0x5d, 0xd7, 0xb9, 0x67, 0xd6, 0x60, 0x2f, + 0xc1, 0x4a, 0x92, 0x1d, 0x94, 0x83, 0xdb, 0xcb, 0x42, 0x19, 0xee, 0x35, 0x3e, 0x07, 0x15, 0x8b, + 0x33, 0xde, 0x08, 0x53, 0x4d, 0xc9, 0xa8, 0x56, 0x05, 0xf6, 0xbb, 0x26, 0xac, 0xdc, 0x8d, 0x87, + 0x2e, 0xf5, 0xbf, 0x2b, 0xca, 0x4d, 0xb1, 0x80, 0xcf, 0x92, 0x72, 0x37, 0xa0, 0x43, 0xe8, 0x30, + 0xf0, 0x93, 0xa3, 0xbd, 0x12, 0x37, 0x95, 0xa5, 0x82, 0x3d, 0x37, 0x29, 0x29, 0x37, 0xb5, 0xa4, + 0xbc, 0x06, 0xad, 0x90, 0x1d, 0xf8, 0x41, 0x1e, 0xf7, 0x92, 0x12, 0x31, 0x4f, 0x02, 0x22, 0xb2, + 0x73, 0x11, 0xf3, 0x39, 0xa3, 0x4c, 0xd4, 0x0b, 0x63, 0x13, 0x75, 0x5b, 0x4d, 0xd4, 0x3a, 0xf0, + 0x50, 0x03, 0x1e, 0xe1, 0xea, 0x14, 0x70, 0xfd, 0xc9, 0x80, 0x95, 0x12, 0x6e, 0xac, 0x41, 0x27, + 0xc2, 0x55, 0x8d, 0x40, 0x73, 0x4c, 0x04, 0x16, 0x71, 0xd3, 0x50, 0xe3, 0x86, 0x47, 0x1a, 0x4b, + 0x7c, 0xa5, 0xde, 0x2f, 0x68, 0xde, 0x5b, 0x40, 0x5c, 0x05, 0x2c, 0xa4, 0x94, 0xaa, 0xbb, 0xa5, + 0x55, 0xdd, 0xd5, 0x3c, 0xfa, 0x07, 0x03, 0x2e, 0x72, 0x2f, 0xd7, 0x86, 0x71, 0x17, 0x56, 0x58, + 0x25, 0x12, 0x64, 0xa2, 0xf9, 0xd4, 0x98, 0x44, 0x51, 0x0d, 0x1a, 0xa7, 0x26, 0xcc, 0x15, 0x7a, + 0x95, 0x4e, 0x64, 0xe6, 0x19, 0xa7, 0xb0, 0x6a, 0x8f, 0x53, 0x13, 0xb6, 0x3f, 0x30, 0x60, 0x05, + 0x53, 0x9b, 0x32, 0xcf, 0xcf, 0xdd, 0xec, 0xb7, 0xe0, 0x62, 0xb5, 0xe7, 0x3b, 0x7e, 0x92, 0xf6, + 0xcc, 0x8d, 0xc6, 0xb4, 0xa6, 0x8f, 0x55, 0x60, 0x7f, 0x0f, 0x7a, 0xfb, 0x59, 0x10, 0xec, 0x92, + 0x24, 0x71, 0x87, 0x64, 0xeb, 0x51, 0x9f, 0x8c, 0x38, 0xdf, 0x21, 0x49, 0xc4, 0x27, 0x07, 0x89, + 0xe3, 0x6d, 0xe6, 0x11, 0x61, 0x7c, 0xd3, 0xc9, 0x49, 0xee, 0x57, 0x12, 0xc7, 0x7c, 0x85, 0x94, + 0x25, 0x1c, 0x52, 0xd6, 0x15, 0x98, 0x0b, 0xb8, 0x59, 0x0d, 0x61, 0xd6, 0xfa, 0x18, 0xb3, 0x76, + 0x93, 0xe1, 0x8e, 0x9b, 0xba, 0x8e, 0x68, 0x67, 0x87, 0xf0, 0xdc, 0xf8, 0xde, 0x47, 0x13, 0x03, + 0x98, 0x17, 0x59, 0xa2, 0x4a, 0xf1, 0x19, 0x2d, 0xe2, 0x57, 0x65, 0x71, 0xb3, 0x13, 0xd4, 0x23, + 0xec, 0xe8, 0x3a, 0x39, 0x69, 0x5f, 0x04, 0xeb, 0x26, 0x49, 0x77, 0xdd, 0x87, 0xd7, 0xa8, 0xb7, + 0xeb, 0xd3, 0x3e, 0x19, 0x39, 0x64, 0x64, 0x5f, 0x87, 0x0b, 0x35, 0x6e, 0x12, 0x89, 0x89, 0xee, + 0x3e, 0xec, 0x93, 0x91, 0x30, 0xa0, 0xeb, 0x48, 0x4a, 0xf0, 0x45, 0x2b, 0x59, 0xbf, 0x49, 0xca, + 0x1e, 0xc1, 0x32, 0x77, 0x55, 0x9f, 0x50, 0x6f, 0x37, 0x19, 0x0a, 0x15, 0x1b, 0xd0, 0x41, 0x04, + 0x76, 0x93, 0x61, 0x59, 0x10, 0x2a, 0x2c, 0xde, 0x62, 0x10, 0xf8, 0xdc, 0x25, 0xa2, 0x85, 0x1c, + 0x8d, 0xc2, 0xe2, 0xd3, 0x2e, 0x21, 0x72, 0x7f, 0xc4, 0xe7, 0x63, 0xc3, 0x29, 0x68, 0xfb, 0x83, + 0x26, 0xcc, 0x4b, 0x40, 0xc5, 0x54, 0xe3, 0x35, 0x78, 0x81, 0x17, 0x52, 0x98, 0x2d, 0x07, 0x27, + 0xe5, 0x56, 0x13, 0x29, 0x75, 0x73, 0xda, 0xd0, 0x37, 0xa7, 0x15, 0x9b, 0xe6, 0xea, 0x36, 0x55, + 0xc6, 0xd5, 0xac, 0x8f, 0x8b, 0x27, 0x07, 0xb1, 0x5e, 0xee, 0x07, 0x6e, 0x7a, 0xc8, 0xe2, 0x50, + 0x96, 0xd4, 0x4d, 0xa7, 0xc6, 0xe7, 0x09, 0x09, 0x79, 0x45, 0x45, 0x81, 0x0b, 0x43, 0x85, 0xcb, + 0xf3, 0x37, 0x72, 0xf2, 0xca, 0x02, 0xf7, 0x32, 0x3a, 0x13, 0x6d, 0x4b, 0x12, 0x9f, 0x51, 0x91, + 0xdb, 0xb0, 0x80, 0x50, 0x59, 0x7c, 0xe4, 0x61, 0x32, 0xbc, 0x11, 0xb3, 0x50, 0xee, 0x68, 0x72, + 0x52, 0x8c, 0x9c, 0xd1, 0x34, 0xcf, 0x8b, 0x1d, 0x94, 0x55, 0x58, 0x5c, 0x56, 0x92, 0xa2, 0x7a, + 0x58, 0x74, 0x72, 0xd2, 0x5a, 0x81, 0x46, 0x42, 0x46, 0xb2, 0x24, 0xe0, 0x3f, 0x35, 0xcf, 0x2d, + 0xeb, 0x9e, 0xab, 0xac, 0xf1, 0x2b, 0xe2, 0xab, 0xba, 0xc6, 0x97, 0x0b, 0xe7, 0xaa, 0xb6, 0x70, + 0x5e, 0x83, 0x79, 0x16, 0xf1, 0x38, 0x4f, 0x7a, 0x96, 0x98, 0x63, 0x9f, 0x9e, 0x3c, 0xc7, 0xae, + 0xdc, 0xc5, 0x96, 0xd7, 0x69, 0x1a, 0x3f, 0x72, 0x72, 0x39, 0xeb, 0x0e, 0x2c, 0xb3, 0xc3, 0xc3, + 0xc0, 0xa7, 0x64, 0x3f, 0x4b, 0x8e, 0x44, 0xe9, 0x7d, 0x41, 0x2c, 0x4d, 0xf6, 0xb8, 0xa5, 0x49, + 0x6f, 0xe9, 0x54, 0x45, 0xd7, 0x5f, 0x83, 0x45, 0xb5, 0x1b, 0x0e, 0xc3, 0x31, 0x79, 0x24, 0x63, + 0x90, 0xff, 0xe4, 0xd9, 0xe4, 0xc4, 0x0d, 0x32, 0xcc, 0xce, 0x0b, 0x0e, 0x12, 0xaf, 0x99, 0x5f, + 0x32, 0xec, 0x9f, 0x1a, 0xb0, 0x5c, 0xe9, 0x80, 0xb7, 0x4e, 0xfd, 0x34, 0x20, 0x52, 0x03, 0x12, + 0xbc, 0xf2, 0xf1, 0x48, 0x32, 0x90, 0x21, 0x2c, 0x7e, 0xcb, 0x1c, 0xd2, 0x28, 0xf6, 0xb3, 0x36, + 0x2c, 0xfa, 0x77, 0xfb, 0x5c, 0x51, 0x9f, 0x65, 0xd4, 0x2b, 0xce, 0xa4, 0x14, 0x1e, 0x0f, 0x21, + 0xff, 0x6e, 0x7f, 0xcb, 0xf5, 0x86, 0x04, 0x4f, 0x8e, 0x9a, 0xc2, 0x26, 0x9d, 0x69, 0x7b, 0xb0, + 0x70, 0xcf, 0x8f, 0x92, 0x6d, 0x16, 0x86, 0xdc, 0x11, 0x1e, 0x49, 0x79, 0x8e, 0x36, 0x84, 0xbf, + 0x25, 0xc5, 0x43, 0xc5, 0x23, 0x87, 0x6e, 0x16, 0xa4, 0xbc, 0x69, 0x3e, 0x71, 0x15, 0x96, 0x38, + 0x33, 0x49, 0x18, 0xdd, 0x41, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x36, 0x61, 0x45, 0xec, 0x6c, + 0xb6, 0x85, 0xdb, 0x3d, 0x21, 0xf4, 0x0a, 0x34, 0xc5, 0x34, 0x94, 0xd9, 0xe2, 0xf4, 0xdd, 0x10, + 0x36, 0xb5, 0xae, 0x42, 0x8b, 0x45, 0x22, 0xc5, 0x60, 0x22, 0x7b, 0x61, 0x92, 0x90, 0x7e, 0x3c, + 0xe5, 0x48, 0x29, 0xeb, 0x06, 0x40, 0x58, 0x66, 0x14, 0x5c, 0xba, 0xa7, 0xd5, 0xa1, 0x48, 0x72, + 0x70, 0x8b, 0x65, 0xb8, 0x38, 0xa3, 0x6a, 0x38, 0x3a, 0xd3, 0xda, 0x83, 0x25, 0x61, 0xf6, 0xdd, + 0x7c, 0x5b, 0x2c, 0x7c, 0x30, 0x7d, 0x8f, 0x15, 0x69, 0xfb, 0x97, 0x86, 0x84, 0x91, 0x7f, 0xed, + 0x13, 0xc4, 0xbe, 0x84, 0xc4, 0x98, 0x09, 0x92, 0x75, 0x58, 0x08, 0x33, 0x65, 0x97, 0xde, 0x70, + 0x0a, 0xba, 0x74, 0x51, 0x63, 0x6a, 0x17, 0xd9, 0xbf, 0x32, 0xa0, 0xf7, 0x06, 0xf3, 0xa9, 0xf8, + 0x70, 0x2d, 0x8a, 0x02, 0x79, 0x90, 0x3a, 0xb3, 0xcf, 0xbf, 0x06, 0x6d, 0x17, 0xd5, 0xd0, 0x54, + 0xba, 0x7d, 0x8a, 0x9d, 0x77, 0x29, 0xa3, 0x6c, 0xa2, 0x1a, 0xea, 0x26, 0xca, 0x7e, 0xcf, 0x80, + 0x25, 0x04, 0xe5, 0xcd, 0xcc, 0x4f, 0x67, 0xb6, 0x6f, 0x0b, 0x16, 0x46, 0x99, 0x9f, 0xce, 0x10, + 0x95, 0x85, 0x5c, 0x3d, 0x9e, 0x1a, 0x63, 0xe2, 0xc9, 0x7e, 0xdf, 0x80, 0x4b, 0x55, 0x58, 0xaf, + 0x0d, 0x06, 0x24, 0x7a, 0x92, 0x53, 0x4a, 0xdb, 0x44, 0xce, 0x55, 0x36, 0x91, 0x63, 0x4d, 0x76, + 0xc8, 0x3b, 0x64, 0xf0, 0xf4, 0x9a, 0xfc, 0x43, 0x13, 0x3e, 0x76, 0xb3, 0x98, 0x78, 0xf7, 0x62, + 0x97, 0x26, 0x87, 0x24, 0x8e, 0x9f, 0xa0, 0xbd, 0x77, 0xa0, 0x4b, 0xc9, 0x83, 0xd2, 0x26, 0x39, + 0x1d, 0xa7, 0x55, 0xa3, 0x0b, 0x4f, 0xb7, 0x76, 0xd9, 0xff, 0x36, 0x60, 0x05, 0xf5, 0x7c, 0xdd, + 0x1f, 0x1c, 0x3f, 0xc1, 0xc1, 0xef, 0xc1, 0xd2, 0xb1, 0xb0, 0x80, 0x53, 0x33, 0x2c, 0xdb, 0x15, + 0xe9, 0x29, 0x87, 0xff, 0x1f, 0x03, 0x56, 0x51, 0xd1, 0x6d, 0x7a, 0xe2, 0x3f, 0xc9, 0x60, 0xdd, + 0x87, 0x65, 0x1f, 0x4d, 0x98, 0x11, 0x80, 0xaa, 0xf8, 0x94, 0x08, 0xfc, 0xde, 0x80, 0x65, 0xd4, + 0x74, 0x9d, 0xa6, 0x24, 0x9e, 0x79, 0xfc, 0xb7, 0xa0, 0x43, 0x68, 0x1a, 0xbb, 0x74, 0x96, 0x15, + 0x52, 0x15, 0x9d, 0x72, 0x91, 0x7c, 0xcf, 0x00, 0x4b, 0xa8, 0xda, 0xf1, 0x93, 0xd0, 0x4f, 0x92, + 0x27, 0xe8, 0xba, 0xe9, 0x0c, 0xfe, 0xb9, 0x09, 0x17, 0x15, 0x2d, 0xbb, 0x59, 0xfa, 0xb4, 0x9b, + 0x6c, 0xed, 0x40, 0x9b, 0xd7, 0x08, 0xea, 0xed, 0xc4, 0xb4, 0x1d, 0x95, 0x82, 0xbc, 0x8a, 0x15, + 0x44, 0x9f, 0x0c, 0x18, 0xf5, 0x12, 0x51, 0x1c, 0x75, 0x1d, 0x8d, 0xc7, 0x97, 0xa1, 0x75, 0x45, + 0xcd, 0xb6, 0x4b, 0x07, 0x24, 0x78, 0x66, 0x20, 0xb2, 0x7f, 0x63, 0xc0, 0x12, 0x36, 0x79, 0xfa, + 0x87, 0xcc, 0x73, 0x3d, 0x06, 0xf2, 0x47, 0xc6, 0x4b, 0x3c, 0xbc, 0xd6, 0x14, 0x2d, 0x6a, 0x5d, + 0xfd, 0xf4, 0x86, 0xd6, 0x2d, 0xe8, 0x0c, 0x8e, 0x5c, 0x3a, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0x3b, + 0x85, 0xe7, 0xd4, 0x03, 0xb9, 0x6d, 0xfc, 0x24, 0x86, 0xff, 0x6a, 0x65, 0x28, 0xa7, 0xde, 0x3e, + 0x3e, 0x1e, 0xe8, 0xc7, 0xb0, 0x8a, 0xb7, 0x40, 0x4a, 0x4d, 0x68, 0xf5, 0x60, 0xde, 0xf5, 0xf0, + 0x00, 0xc1, 0x10, 0x42, 0x39, 0xa9, 0xdf, 0xef, 0xc9, 0x27, 0x1c, 0xe5, 0xfd, 0xde, 0x65, 0x00, + 0xd7, 0xf3, 0xde, 0x62, 0xb1, 0xe7, 0xd3, 0xbc, 0xc0, 0x57, 0x38, 0xf6, 0x1b, 0xb0, 0x78, 0x23, + 0x66, 0xe1, 0x3d, 0xe5, 0x3e, 0xe7, 0xd4, 0x1b, 0x27, 0xf5, 0x2e, 0xc8, 0xd4, 0xef, 0x82, 0xec, + 0xef, 0xc0, 0xff, 0xd7, 0x0c, 0x17, 0x60, 0x6d, 0xe3, 0x35, 0x55, 0xde, 0x89, 0x0c, 0x99, 0x4f, + 0x8c, 0x81, 0x4c, 0xb5, 0xc5, 0xd1, 0x84, 0xec, 0x1f, 0x18, 0xf0, 0x7c, 0x4d, 0xfd, 0xb5, 0x28, + 0x8a, 0xd9, 0x89, 0xf4, 0xc9, 0x79, 0x74, 0xa3, 0x17, 0xbf, 0x66, 0xb5, 0xf8, 0x1d, 0x6b, 0x84, + 0x56, 0xb0, 0x7f, 0x08, 0x46, 0xfc, 0xda, 0x80, 0x65, 0x69, 0x84, 0xe7, 0xc9, 0x6e, 0xbf, 0x08, + 0x2d, 0xbc, 0xe2, 0x96, 0x1d, 0x3e, 0x3f, 0xb6, 0xc3, 0xfc, 0x6a, 0xde, 0x91, 0x8d, 0xeb, 0x11, + 0x69, 0x8e, 0x9b, 0x51, 0x5f, 0x2e, 0x82, 0x7d, 0xea, 0x4b, 0x68, 0x29, 0x60, 0x7f, 0x33, 0x0f, + 0xe6, 0x1d, 0x12, 0x90, 0xf3, 0xc4, 0xc8, 0xbe, 0x0f, 0x4b, 0xe2, 0xbe, 0xbd, 0xc4, 0xe0, 0x5c, + 0xd4, 0xbe, 0x05, 0x2b, 0x42, 0xed, 0xb9, 0xdb, 0x5b, 0xcc, 0x0e, 0x8e, 0x8f, 0xba, 0x94, 0x9c, + 0x8b, 0xf6, 0xcf, 0xc3, 0x85, 0x1c, 0xfb, 0xfb, 0x91, 0x57, 0x1c, 0x22, 0x4d, 0x38, 0x3a, 0xb7, + 0xbf, 0x00, 0x6b, 0xdb, 0x8c, 0x9e, 0x90, 0x38, 0xc1, 0x8b, 0x05, 0x21, 0x92, 0x4b, 0x68, 0x93, + 0x5f, 0x52, 0xf6, 0x3b, 0xb0, 0xae, 0x4a, 0xf4, 0x49, 0xba, 0x1f, 0xfb, 0x27, 0x8a, 0x94, 0x3c, + 0x5a, 0x36, 0xb4, 0xa3, 0xe5, 0xf2, 0x28, 0xda, 0xd4, 0x8e, 0xa2, 0x2f, 0x41, 0xdb, 0x4f, 0xa4, + 0x02, 0x11, 0x54, 0x0b, 0x4e, 0xc9, 0xb0, 0xfb, 0xb0, 0x2a, 0x6f, 0xc0, 0xf7, 0xdd, 0xa1, 0x4f, + 0x71, 0x05, 0xbc, 0x0c, 0x10, 0xb9, 0xc3, 0xfc, 0x05, 0x0c, 0xde, 0x42, 0x28, 0x1c, 0xfe, 0x3d, + 0x39, 0x62, 0x0f, 0xe4, 0x77, 0x13, 0xbf, 0x97, 0x1c, 0xfb, 0x1b, 0x60, 0x39, 0x24, 0x89, 0x18, + 0x4d, 0x88, 0xa2, 0x75, 0x03, 0x3a, 0xdb, 0x59, 0x1c, 0x13, 0xca, 0xbb, 0xca, 0x9f, 0x83, 0xa8, + 0x2c, 0xae, 0xb7, 0x5f, 0xea, 0xc5, 0x93, 0x6b, 0x85, 0x63, 0xff, 0xa2, 0x01, 0xed, 0xbe, 0x3f, + 0xa4, 0x6e, 0xe0, 0x90, 0x91, 0xf5, 0x15, 0x68, 0xe1, 0x7e, 0x42, 0xba, 0x71, 0xdc, 0x49, 0x2a, + 0xb6, 0xc6, 0x8d, 0x93, 0x43, 0x46, 0xb7, 0xfe, 0xcf, 0x91, 0x32, 0xd6, 0x9b, 0xd0, 0xc5, 0x5f, + 0xb7, 0xf1, 0x7c, 0x48, 0x26, 0x97, 0xcf, 0x9c, 0xa1, 0x44, 0xb6, 0x46, 0x5d, 0xba, 0x06, 0x6e, + 0xd0, 0x40, 0xd4, 0x1b, 0x72, 0xee, 0x4e, 0x36, 0x08, 0xcb, 0x12, 0x69, 0x10, 0xca, 0x70, 0x69, + 0x57, 0x9c, 0xa0, 0xc8, 0x34, 0x3a, 0x59, 0x1a, 0x0f, 0x5a, 0xa4, 0x34, 0xca, 0x70, 0xe9, 0xa3, + 0x8c, 0x0e, 0xef, 0x47, 0xf2, 0x60, 0x6f, 0xb2, 0xf4, 0x2d, 0xd1, 0x4c, 0x4a, 0xa3, 0x0c, 0x97, + 0x8e, 0xc5, 0xca, 0x2a, 0x40, 0x3f, 0x4d, 0x1a, 0x17, 0x60, 0x29, 0x8d, 0x32, 0x5b, 0x6d, 0x98, + 0x8f, 0xdc, 0x47, 0x01, 0x73, 0x3d, 0xfb, 0xdd, 0x06, 0x40, 0xde, 0x30, 0x11, 0x55, 0x88, 0xe6, + 0xa2, 0xcd, 0x33, 0x5d, 0x14, 0x05, 0x8f, 0x14, 0x27, 0xf5, 0xc7, 0x3b, 0xe9, 0xb3, 0xd3, 0x3a, + 0x09, 0xb5, 0x55, 0xdc, 0x74, 0xb5, 0xe2, 0xa6, 0xcd, 0x33, 0xdd, 0x24, 0x8d, 0x92, 0x8e, 0xba, + 0x5a, 0x71, 0xd4, 0xe6, 0x99, 0x8e, 0x92, 0xf2, 0xd2, 0x55, 0x57, 0x2b, 0xae, 0xda, 0x3c, 0xd3, + 0x55, 0x52, 0x5e, 0x3a, 0xeb, 0x6a, 0xc5, 0x59, 0x9b, 0x67, 0x3a, 0x4b, 0xca, 0xd7, 0xdd, 0xf5, + 0xbe, 0x09, 0x4b, 0x02, 0x32, 0xbc, 0xc5, 0xa3, 0x87, 0x4c, 0x1c, 0xd6, 0x0b, 0xb8, 0xf4, 0x07, + 0x55, 0x3a, 0xd3, 0xfa, 0x1c, 0xac, 0x22, 0x43, 0x3e, 0xc0, 0x29, 0xae, 0x45, 0xdb, 0x4e, 0xfd, + 0x83, 0xb8, 0x77, 0xc9, 0x92, 0x94, 0x85, 0x3b, 0x6e, 0xea, 0xe6, 0x95, 0x51, 0xc9, 0x51, 0x6f, + 0xc5, 0xe6, 0x6a, 0x4f, 0x36, 0x63, 0xc6, 0xc2, 0xe2, 0xba, 0x4b, 0x52, 0x5c, 0x22, 0xf5, 0x43, + 0xc2, 0xb2, 0x54, 0x2e, 0x13, 0x39, 0x89, 0x8f, 0x1e, 0x3c, 0xdf, 0x15, 0x77, 0x49, 0xf2, 0x45, + 0x40, 0xc1, 0x10, 0x2b, 0x5b, 0x79, 0x37, 0x26, 0x9f, 0x54, 0x96, 0x9c, 0xb3, 0xef, 0xb1, 0xec, + 0xbf, 0x1b, 0x70, 0x61, 0xdf, 0x8d, 0x53, 0x7f, 0xe0, 0x47, 0x2e, 0x4d, 0x77, 0x49, 0xea, 0x8a, + 0x31, 0x68, 0xaf, 0xaa, 0x8c, 0xc7, 0x7b, 0x55, 0xb5, 0x0f, 0xcb, 0x43, 0xbd, 0xf4, 0x7f, 0xcc, + 0xaa, 0xbd, 0x2a, 0xae, 0x3d, 0x11, 0x6b, 0x3c, 0xf6, 0x13, 0x31, 0xfb, 0xc7, 0x26, 0x2c, 0x57, + 0x96, 0x4e, 0x5e, 0x8e, 0x62, 0xa1, 0x51, 0xc4, 0x44, 0x41, 0x5b, 0xd7, 0x00, 0xfc, 0x22, 0x8c, + 0x4e, 0x39, 0x19, 0xd7, 0x63, 0xcd, 0x51, 0x84, 0xc6, 0x5d, 0x90, 0x35, 0x66, 0xbe, 0x20, 0xe3, + 0x1b, 0x93, 0xa8, 0x74, 0xd2, 0x29, 0x1b, 0x93, 0x31, 0xae, 0x74, 0x54, 0x51, 0xfb, 0xdb, 0xb0, + 0x5a, 0x5b, 0xa1, 0xc4, 0x7d, 0x19, 0x3b, 0x26, 0xb4, 0xb8, 0x2f, 0xe3, 0x84, 0x12, 0xac, 0x66, + 0x35, 0x58, 0x03, 0xff, 0x44, 0x7d, 0x83, 0x2a, 0x49, 0xfb, 0x27, 0x26, 0xac, 0x8d, 0xcf, 0x2e, + 0xcf, 0x2a, 0xdc, 0x07, 0xd0, 0x9b, 0xb4, 0x92, 0x9f, 0x1b, 0xea, 0x65, 0x74, 0x17, 0x79, 0xf8, + 0x59, 0x85, 0xfb, 0x42, 0x1e, 0xdd, 0x4a, 0xaa, 0xb3, 0x7f, 0x57, 0xe0, 0x53, 0x54, 0x1a, 0xcf, + 0x28, 0x3e, 0xd6, 0x4b, 0xb0, 0x82, 0xc3, 0x54, 0x5e, 0x54, 0x60, 0xe1, 0x5a, 0xe3, 0x97, 0x2b, + 0x85, 0x92, 0xf6, 0xcf, 0x2d, 0x66, 0xff, 0x68, 0xe4, 0x3e, 0x29, 0xea, 0xb7, 0x8f, 0x94, 0x4f, + 0xca, 0x48, 0x53, 0x8a, 0x1a, 0x25, 0xd2, 0x8a, 0xba, 0xf2, 0x7f, 0x91, 0x76, 0x76, 0xa4, 0x15, + 0x58, 0x2a, 0x05, 0x9e, 0xfd, 0x7d, 0xe8, 0xee, 0x90, 0x60, 0x37, 0x19, 0xe6, 0x6f, 0xb9, 0x4e, + 0x03, 0x72, 0xd2, 0x5f, 0x61, 0x26, 0xbe, 0xe2, 0xaa, 0xbe, 0x00, 0x9b, 0xab, 0xbd, 0x00, 0xb3, + 0xb7, 0x60, 0x49, 0x35, 0x60, 0x96, 0xa7, 0x6c, 0x5b, 0x97, 0xbe, 0xb5, 0x7e, 0xe5, 0x65, 0xfc, + 0xd3, 0xd5, 0xeb, 0x35, 0x10, 0x0f, 0x5a, 0xe2, 0x4f, 0x58, 0xaf, 0xfe, 0x37, 0x00, 0x00, 0xff, + 0xff, 0xda, 0x69, 0x8c, 0xa6, 0x97, 0x35, 0x00, 0x00, } diff --git a/pkg/proto/sdk_ws/ws.proto b/pkg/proto/sdk_ws/ws.proto index 1284d8a89..f8db4047c 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -358,6 +358,13 @@ message GroupMemberInfoSetTips{ GroupMemberFullInfo changedUser = 4; } + +message OrganizationChangedTips{ + UserInfo opUser = 2; + int64 operationTime = 3; +} + + //////////////////////friend///////////////////// //message FriendInfo{ // UserInfo OwnerUser = 1; From ab4a5e6719f9d210baa950cb7ecdab0cd9e49f33 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 18:46:02 +0800 Subject: [PATCH 098/128] OrganizationChangedNotification --- cmd/Open-IM-SDK-Core | 2 +- config/config.yaml | 14 ++++++++++++++ internal/rpc/msg/send_msg.go | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index fd87b4bfc..539290887 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit fd87b4bfc3ee7e9f4c50140b884eb4505d00bc44 +Subproject commit 539290887aff41515b291b7ecf174af25887f870 diff --git a/config/config.yaml b/config/config.yaml index dae8f7a2f..2aeee9caf 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -446,6 +446,20 @@ notification: tips: "group member info set" + organizationChanged: + conversation: + reliabilityLevel: 2 + unreadCount: false + offlinePush: + switch: false + title: "groupMemberInfoSet title" + desc: "groupMemberInfoSet desc" + ext: "groupMemberInfoSet ext" + defaultTips: + tips: "group member info set" + + + #############################friend################################# friendApplicationAdded: diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 70a8650dd..74d0e6ac7 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -563,6 +563,22 @@ func Notification(n *NotificationMsg) { 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 + } switch reliabilityLevel { case constant.UnreliableNotification: From fc07f851f7b0cc09b951491427e12a416c715125 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 18:46:33 +0800 Subject: [PATCH 099/128] OrganizationChangedNotification --- config/config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 2aeee9caf..efac38557 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -452,11 +452,11 @@ notification: unreadCount: false offlinePush: switch: false - title: "groupMemberInfoSet title" - desc: "groupMemberInfoSet desc" - ext: "groupMemberInfoSet ext" + title: "organizationChanged title" + desc: "organizationChanged desc" + ext: "organizationChanged ext" defaultTips: - tips: "group member info set" + tips: "organization changed" From c28c592c80c52675c1fc3efb07f311750e4975af Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 18:52:28 +0800 Subject: [PATCH 100/128] OrganizationChangedNotification --- internal/rpc/msg/organization_notification.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/rpc/msg/organization_notification.go b/internal/rpc/msg/organization_notification.go index 3040fe4a2..cfe4222b1 100644 --- a/internal/rpc/msg/organization_notification.go +++ b/internal/rpc/msg/organization_notification.go @@ -28,6 +28,7 @@ func OrganizationNotificationToAll(opUserID string, operationID string) { utils2.UserDBCopyOpenIM(tips.OpUser, user) for _, v := range userIDList { + log.Debug(operationID, opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) OrganizationNotification(opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) } } From 51c3a753a9a37421e0b3a502721528606b0439a1 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 20:57:59 +0800 Subject: [PATCH 101/128] Organization --- internal/rpc/msg/organization_notification.go | 2 +- .../db/mysql_model/im_mysql_model/organization_model.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/rpc/msg/organization_notification.go b/internal/rpc/msg/organization_notification.go index cfe4222b1..d9dd6fd52 100644 --- a/internal/rpc/msg/organization_notification.go +++ b/internal/rpc/msg/organization_notification.go @@ -28,7 +28,7 @@ func OrganizationNotificationToAll(opUserID string, operationID string) { utils2.UserDBCopyOpenIM(tips.OpUser, user) for _, v := range userIDList { - log.Debug(operationID, opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) + log.Debug(operationID, "OrganizationNotification", opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) OrganizationNotification(opUserID, v, constant.OrganizationChangedNotification, &tips, operationID) } } 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 index 1bfb02038..c3005fcec 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -186,7 +186,12 @@ func GetDepartmentMemberList(departmentID string) (error, []db.DepartmentMember) return err, nil } var departmentMemberList []db.DepartmentMember - err = dbConn.Table("department_members").Where("department_id=?", departmentID).Find(&departmentMemberList).Error + 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 } From cb6a040c4d4ff788b71d63cf3fbdcd29179de65e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 21:27:06 +0800 Subject: [PATCH 102/128] Organization --- internal/rpc/organization/organization.go | 40 +++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index a6addcd81..b092e0121 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -9,16 +9,16 @@ import ( "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" - "time" - "context" "google.golang.org/grpc" "net" "strconv" "strings" + "time" ) type organizationServer struct { @@ -167,6 +167,24 @@ func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.Dele } 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" @@ -191,6 +209,24 @@ func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rp } 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" From 31c954db0e1c1f4ac96f900134c80b25ac77ea3f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Tue, 19 Apr 2022 21:28:12 +0800 Subject: [PATCH 103/128] Organization --- internal/rpc/organization/organization.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index b092e0121..7f1de1cde 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -195,7 +195,7 @@ func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rp 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) + err = imdb.CreateOrganizationUser(&organizationUser) if err != nil { errMsg := req.OperationID + " " + "CreateOrganizationUser failed " + err.Error() log.Error(req.OperationID, errMsg, organizationUser) @@ -241,7 +241,7 @@ func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rp } log.Debug(req.OperationID, "src ", *req.OrganizationUser, "dst ", organizationUser) - err := imdb.UpdateOrganizationUser(&organizationUser, nil) + err = imdb.UpdateOrganizationUser(&organizationUser, nil) if err != nil { errMsg := req.OperationID + " " + "CreateOrganizationUser failed " + err.Error() log.Error(req.OperationID, errMsg, organizationUser) From c56fd399c1ae577fc5b007bf003eca81ab6d1a28 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 20 Apr 2022 09:07:35 +0800 Subject: [PATCH 104/128] Organization --- internal/api/manage/management_user.go | 7 +------ internal/api/user/user.go | 7 +++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/internal/api/manage/management_user.go b/internal/api/manage/management_user.go index 1ff802cc4..6fca39732 100644 --- a/internal/api/manage/management_user.go +++ b/internal/api/manage/management_user.go @@ -134,12 +134,7 @@ func GetUsersOnlineStatus(c *gin.Context) { 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 diff --git a/internal/api/user/user.go b/internal/api/user/user.go index b3abbbab4..4fbbcf5ef 100644 --- a/internal/api/user/user.go +++ b/internal/api/user/user.go @@ -145,6 +145,13 @@ func GetUsersOnlineStatus(c *gin.Context) { 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 From 030d619910ae0371f01c70430bc652bd01a1cbd1 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 20 Apr 2022 11:53:32 +0800 Subject: [PATCH 105/128] Organization --- internal/rpc/organization/organization.go | 10 +++++++ .../im_mysql_model/organization_model.go | 29 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 7f1de1cde..d9f503d69 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -140,6 +140,16 @@ func (s *organizationServer) GetSubDepartment(ctx context.Context, req *rpc.GetS 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) 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 index c3005fcec..2eacf7a44 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -2,6 +2,7 @@ package im_mysql_model import ( "Open_IM/pkg/common/db" + "Open_IM/pkg/utils" "time" ) @@ -207,3 +208,31 @@ func GetAllOrganizationUserID() (error, []string) { 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 + +} From 071dd46a4c0102a526d10f6224fc885d6e03a27d Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 20 Apr 2022 16:25:33 +0800 Subject: [PATCH 106/128] workMoments --- internal/api/office/work_moments.go | 79 -- internal/rpc/msg/work_moments_notification.go | 56 +- internal/rpc/office/office.go | 151 +-- pkg/base_info/work_moments_struct.go | 63 +- pkg/common/constant/constant.go | 15 +- pkg/common/db/mongoModel.go | 67 +- pkg/proto/office/office.pb.go | 865 +++++++++--------- pkg/proto/office/office.proto | 82 +- 8 files changed, 651 insertions(+), 727 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 108ab5858..df3bef8ca 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -292,49 +292,6 @@ func GetUserFriendWorkMoments(c *gin.Context) { c.JSON(http.StatusOK, resp) } -func GetUserWorkMomentsCommentsMsg(c *gin.Context) { - var ( - req apiStruct.GetUserWorkMomentsCommentsMsgReq - resp apiStruct.GetUserWorkMomentsCommentsMsgResp - reqPb pbOffice.GetUserWorkMomentsCommentsMsgReq - respPb *pbOffice.GetUserWorkMomentsCommentsMsgResp - ) - 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.GetUserWorkMomentsCommentsMsg(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg rpc failed", err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMomentsCommentsMsg 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.CurrentPage = respPb.Pagination.CurrentPage - resp.Data.ShowNumber = respPb.Pagination.ShowNumber - resp.Data.CommentMsgs = respPb.CommentsMsgs - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, resp) -} - func SetUserWorkMomentsLevel(c *gin.Context) { var ( req apiStruct.SetUserWorkMomentsLevelReq @@ -372,39 +329,3 @@ func SetUserWorkMomentsLevel(c *gin.Context) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) c.JSON(http.StatusOK, resp) } - -func ClearUserWorkMomentsCommentsMsg(c *gin.Context) { - var ( - req apiStruct.ClearUserWorkMomentsCommentsMsgReq - resp apiStruct.ClearUserWorkMomentsCommentsMsgResp - reqPb pbOffice.ClearUserWorkMomentsCommentsMsgReq - respPb *pbOffice.ClearUserWorkMomentsCommentsMsgResp - ) - 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.UserID = userID - reqPb.OperationID = req.OperationID - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) - client := pbOffice.NewOfficeServiceClient(etcdConn) - respPb, err := client.ClearUserWorkMomentsCommentsMsg(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "ClearUserWorkMomentsCommentsMsg rpc failed", err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "ClearUserWorkMomentsCommentsMsg 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/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go index 8e55ece11..7c33f7bb3 100644 --- a/internal/rpc/msg/work_moments_notification.go +++ b/internal/rpc/msg/work_moments_notification.go @@ -1,47 +1,31 @@ package msg import ( - "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/db" "Open_IM/pkg/common/log" - "Open_IM/pkg/grpc-etcdv3/getcdv3" - pbChat "Open_IM/pkg/proto/chat" - pbCommon "Open_IM/pkg/proto/sdk_ws" + pbOffice "Open_IM/pkg/proto/office" "Open_IM/pkg/utils" - "context" - "encoding/json" - "strings" + "github.com/golang/protobuf/proto" ) -func CommentOneWorkMomentNotification(operationID, recvID string, comment db.CommentMsg, user db.User) { - log.NewInfo(operationID, utils.GetSelfFuncName(), "args: ", recvID, user, comment) - var req pbChat.SendMsgReq - var msgData pbCommon.MsgData - msgData.SendID = user.UserID - msgData.RecvID = recvID - msgData.ContentType = constant.WorkMomentNewCommentNotification - msgData.SessionType = constant.SingleChatType - msgData.MsgFrom = constant.UserMsgType - bytes, err := json.Marshal(comment) +func WorkMomentSendNotification(operationID, sendID, recvID string, notificationMsg *pbOffice.WorkMomentNotificationMsg) { + log.NewInfo(operationID, utils.GetSelfFuncName(), recvID) + bytes, err := proto.Marshal(notificationMsg) if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), "marshal failed", err.Error()) - } - msgData.Content = bytes - msgData.SenderFaceURL = user.FaceURL - msgData.SenderNickname = user.Nickname - msgData.CreateTime = utils.GetCurrentTimestampByMill() - msgData.ClientMsgID = utils.GetMsgID(user.UserID) - req.MsgData = &msgData - req.OperationID = operationID - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) - client := pbChat.NewChatClient(etcdConn) - respPb, err := client.SendMsg(context.Background(), &req) - if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), "send msg failed", err.Error()) - return - } - if respPb.ErrCode != 0 { - log.NewError(operationID, utils.GetSelfFuncName(), "send tag msg failed ", respPb) + log.NewError(operationID, utils.GetSelfFuncName(), "proto marshal failed", err.Error()) } + WorkMomentNotification(operationID, sendID, recvID, bytes) +} + +func WorkMomentNotification(operationID, sendID, recvID string, content []byte) { + n := &NotificationMsg{ + SendID: sendID, + RecvID: recvID, + Content: content, + MsgFrom: constant.UserMsgType, + ContentType: constant.WorkMomentNotification, + SessionType: constant.UserMsgType, + OperationID: operationID, + } + Notification(n) } diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 3849f17d2..734c6a92e 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -270,20 +270,73 @@ func (s *officeServer) GetUserTagByID(_ context.Context, req *pbOffice.GetUserTa 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{}, LikeUsers: []*db.LikeUser{}} + 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 + } + workMoment.UserName = createUser.Nickname + workMoment.FaceURL = createUser.FaceURL if err := utils.CopyStructFields(&workMoment, req.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } + workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupIDList, req.WorkMoment.PermissionUserIDList) + for _, userID := range req.WorkMoment.AtUserIDList { + userName, err := imdb.GetUserNameByUserID(userID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", userID, err.Error()) + continue + } + workMoment.AtUserList = append(workMoment.AtUserList, &db.AtUser{ + UserID: userID, + UserName: userName, + }) + } + 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.AtUserIDList { + 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, workMomentNotificationMsg) + } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } +// count and distinct permission users +func (s *officeServer) getPermissionUserIDList(operationID string, groupIDList, userIDList []string) []string { + var permissionUserIDList []string + for _, groupID := range groupIDList { + GroupMemberIDList, err := imdb.GetGroupMemberIDListByGroupID(groupID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID failed", groupID, err.Error()) + continue + } + permissionUserIDList = append(permissionUserIDList, GroupMemberIDList...) + } + 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{}} @@ -295,7 +348,7 @@ func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.Dele } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment", workMoment) if workMoment.UserID != req.UserID { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoment.UserID != req.WorkMomentID ", workMoment, req.WorkMomentID) + 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 } @@ -311,15 +364,17 @@ func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.Dele func isUserCanSeeWorkMoment(userID string, workMoment db.WorkMoment) bool { if userID != workMoment.UserID { - if utils.IsContain(userID, workMoment.WhoCantSeeUserIDList) { - return false - } - if utils.IsContain(userID, workMoment.WhoCanSeeUserIDList) { + switch workMoment.Permission { + case constant.WorkMomentPublic: return true - } - if workMoment.IsPrivate { + 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 } @@ -333,11 +388,20 @@ func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOn resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - if err = db.DB.LikeOneWorkMoment(req.UserID, userName, req.WorkMomentID); err != nil { + workMoment, 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, + } + // send notification + msg.WorkMomentSendNotification(req.OperationID, req.UserID, workMoment.UserID, workMomentNotificationMsg) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -360,7 +424,7 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com return resp, nil } } - comment := db.Comment{ + comment := &db.Comment{ UserID: req.UserID, UserName: commentUser.Nickname, ReplyUserID: req.ReplyUserID, @@ -374,18 +438,25 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - commentMsg := db.CommentMsg{ - Comment: comment, - UserID: workMoment.UserID, - WorkMomentID: workMoment.WorkMomentID, - WorkMomentContent: workMoment.Content, + workMomentNotificationMsg := &pbOffice.WorkMomentNotificationMsg{ + NotificationMsgType: constant.WorkMomentCommentNotification, + WorkMomentID: workMoment.WorkMomentID, + WorkMomentContent: workMoment.Content, + UserID: workMoment.UserID, + 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, + }, } - if err = db.DB.CreateUserWorkMomentsCommentsMsg(commentMsg); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - } - msg.CommentOneWorkMomentNotification(req.OperationID, workMoment.UserID, commentMsg, *commentUser) + msg.WorkMomentSendNotification(req.OperationID, req.UserID, workMoment.UserID, workMomentNotificationMsg) if req.ReplyUserID != "" { - msg.CommentOneWorkMomentNotification(req.OperationID, req.ReplyUserID, commentMsg, *commentUser) + msg.WorkMomentSendNotification(req.OperationID, req.UserID, req.ReplyUserID, workMomentNotificationMsg) } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil @@ -405,6 +476,9 @@ func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWor } 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()) } @@ -455,34 +529,6 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice return resp, nil } -func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}} - resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, 0) - workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) - resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} - return resp, nil - } - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMomentsCommentMsgs: ", workMomentsCommentMsgs) - for _, commentMsg := range workMomentsCommentMsgs { - comment := pbOffice.Comment{} - if err := utils.CopyStructFields(&comment, commentMsg); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), err.Error()) - } - resp.CommentsMsgs = append(resp.CommentsMsgs, &pbOffice.CommentsMsg{ - Comment: &comment, - WorkMomentID: commentMsg.WorkMomentID, - Content: commentMsg.WorkMomentContent, - UserID: req.UserID, - }) - } - 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{}} @@ -495,14 +541,9 @@ func (s *officeServer) SetUserWorkMomentsLevel(_ context.Context, req *pbOffice. return resp, nil } -func (s *officeServer) ClearUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.ClearUserWorkMomentsCommentsMsgReq) (resp *pbOffice.ClearUserWorkMomentsCommentsMsgResp, err error) { +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.ClearUserWorkMomentsCommentsMsgResp{CommonResp: &pbOffice.CommonResp{}} - if err := db.DB.ClearUserWorkMomentsCommentsMsg(req.UserID); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "ClearUserWorkMomentsCommentsMsg", err.Error()) - resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} - return resp, nil - } + resp = &pbOffice.ChangeWorkMomentPermissionResp{CommonResp: &pbOffice.CommonResp{}} log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 107b74b70..d39f3f981 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -44,10 +44,38 @@ type GetWorkMomentByIDReq struct { office.GetWorkMomentByIDReq } +type WorkMoment struct { + WorkMomentID string `json:"workMomentID"` + UserID string `json:"userID"` + Content string `json:"content"` + LikeUsers []*LikeUser `json:"likeUsers"` + Comments []*Comment `json:"comments"` + Permission int32 `json:"permission"` + PermissionUserIDList []string `json:"permissionUserIDList"` + PermissionGroupIDList []string `json:"permissionGroupIDList"` + AtUserIDList []string `json:"atUserIDList"` + CreateTime int32 `json:"createTime,omitempty"` +} + +type LikeUser 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 *office.WorkMoment `json:"workMoment"` + WorkMoment *WorkMoment `json:"workMoment"` } `json:"data"` } @@ -58,9 +86,9 @@ type GetUserWorkMomentsReq struct { type GetUserWorkMomentsResp struct { CommResp Data struct { - WorkMoments []*office.WorkMoment `json:"workMoments"` - CurrentPage int32 `json:"currentPage"` - ShowNumber int32 `json:"showNumber"` + WorkMoments []*WorkMoment `json:"workMoments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` } `json:"data"` } @@ -71,22 +99,9 @@ type GetUserFriendWorkMomentsReq struct { type GetUserFriendWorkMomentsResp struct { CommResp Data struct { - WorkMoments []*office.WorkMoment `json:"workMoments"` - CurrentPage int32 `json:"currentPage"` - ShowNumber int32 `json:"showNumber"` - } `json:"data"` -} - -type GetUserWorkMomentsCommentsMsgReq struct { - WorkMomentsUserCommonReq -} - -type GetUserWorkMomentsCommentsMsgResp struct { - CommResp - Data struct { - CommentMsgs []*office.CommentsMsg `json:"comments"` - CurrentPage int32 `json:"currentPage"` - ShowNumber int32 `json:"showNumber"` + WorkMoments []*WorkMoment `json:"workMoments"` + CurrentPage int32 `json:"currentPage"` + ShowNumber int32 `json:"showNumber"` } `json:"data"` } @@ -97,11 +112,3 @@ type SetUserWorkMomentsLevelReq struct { type SetUserWorkMomentsLevelResp struct { CommResp } - -type ClearUserWorkMomentsCommentsMsgReq struct { - office.ClearUserWorkMomentsCommentsMsgReq -} - -type ClearUserWorkMomentsCommentsMsgResp struct { - CommResp -} diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index dcef201f5..9e2046b15 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -91,8 +91,8 @@ const ( OrganizationChangedNotification = 1801 - WorkMomentNotificationStart = 1900 - WorkMomentNewCommentNotification = 1901 + WorkMomentNotificationBegin = 1900 + WorkMomentNotification = 1901 NotificationEnd = 2000 @@ -183,6 +183,17 @@ 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 ) var ContentType2PushContent = map[int64]string{ diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index c0107dd65..20bf470f2 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -568,15 +568,22 @@ func (d *DataBases) GetTagSendLogs(userID string, showNumber, pageNumber int32) 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"` - LikeUsers []*LikeUser `bson:"like_users"` + LikeUserList []*LikeUser `bson:"like_user_list"` + AtUserList []*AtUser `bson:"at_user_list"` Comments []*Comment `bson:"comments"` - WhoCanSeeUserIDList []string `bson:"who_can_see_user_id_list"` - WhoCantSeeUserIDList []string `bson:"who_cant_see_user_id_list"` - IsPrivate bool `bson:"is_private"` + PermissionUserIDList []string `bson:"permission_user_id_list"` + Permission int32 `bson:"is_private"` 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"` @@ -617,67 +624,33 @@ func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) return workMoment, err } -func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) error { +func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) (*WorkMoment, error) { workMoment, err := d.GetWorkMomentByID(workMomentID) if err != nil { - return err + return nil, err } var isAlreadyLike bool - for i, user := range workMoment.LikeUsers { + for i, user := range workMoment.LikeUserList { if likeUserID == user.UserID { isAlreadyLike = true - workMoment.LikeUsers = append(workMoment.LikeUsers[0:i], workMoment.LikeUsers[i+1:]...) + workMoment.LikeUserList = append(workMoment.LikeUserList[0:i], workMoment.LikeUserList[i+1:]...) } } if !isAlreadyLike { - workMoment.LikeUsers = append(workMoment.LikeUsers, &LikeUser{UserID: likeUserID, UserName: userName}) + workMoment.LikeUserList = append(workMoment.LikeUserList, &LikeUser{UserID: likeUserID, UserName: userName}) } - log.Info("", utils.GetSelfFuncName(), workMoment) + 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_users": workMoment.LikeUsers}}) - return err + _, err = c.UpdateOne(ctx, bson.M{"work_moment_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUserList}}) + return workMoment, err } func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { return nil } -func (d *DataBases) CreateUserWorkMomentsCommentsMsg(msg CommentMsg) error { - ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) - c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) - _, err := c.InsertOne(ctx, msg) - return err -} - -func (d *DataBases) ClearUserWorkMomentsCommentsMsg(userID string) error { - ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) - c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) - _, err := c.DeleteOne(ctx, bson.M{"user_id": userID}) - return err -} - -type CommentMsg struct { - WorkMomentID string `bson:"work_moment" json:"work_moment"` - WorkMomentContent string `bson:"work_moment_content" json:"work_moment_content"` - UserID string `bson:"user_id" json:"user_id"` - Comment -} - -func (d *DataBases) GetUserWorkMomentsCommentsMsg(userID string, showNumber, pageNumber int32) ([]CommentMsg, error) { - ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) - c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) - var commentMsgList []CommentMsg - 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 commentMsgList, err - } - err = result.All(ctx, &commentMsgList) - return commentMsgList, err -} - -func (d *DataBases) CommentOneWorkMoment(comment Comment, workMomentID string) (WorkMoment, error) { +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) diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index b9e3ad6c1..8e4f76511 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_282f0d3c571a3eb6, []int{0} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{1} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{2} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{3} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{4} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{5} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{6} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{7} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{8} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{9} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{10} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{11} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{12} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{13} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{14} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{15} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{16} + return fileDescriptor_office_1d2fa21c23f88044, []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_282f0d3c571a3eb6, []int{17} + return fileDescriptor_office_1d2fa21c23f88044, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_282f0d3c571a3eb6, []int{18} + return fileDescriptor_office_1d2fa21c23f88044, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1002,14 +1002,61 @@ func (m *LikeUser) GetUserName() string { 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_1d2fa21c23f88044, []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"` - ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` - ReplyUserName string `protobuf:"bytes,4,opt,name=replyUserName" json:"replyUserName,omitempty"` - ContentID string `protobuf:"bytes,5,opt,name=contentID" json:"contentID,omitempty"` - Content string `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"` - CreateTime int32 `protobuf:"varint,7,opt,name=createTime" json:"createTime,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:"-"` @@ -1019,7 +1066,7 @@ 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_282f0d3c571a3eb6, []int{19} + return fileDescriptor_office_1d2fa21c23f88044, []int{20} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1053,6 +1100,13 @@ func (m *Comment) GetUserName() string { return "" } +func (m *Comment) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + func (m *Comment) GetReplyUserID() string { if m != nil { return m.ReplyUserID @@ -1089,25 +1143,28 @@ func (m *Comment) GetCreateTime() int32 { } 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"` - Content string `protobuf:"bytes,3,opt,name=content" json:"content,omitempty"` - LikeUsers []*LikeUser `protobuf:"bytes,4,rep,name=likeUsers" json:"likeUsers,omitempty"` - Comments []*Comment `protobuf:"bytes,5,rep,name=comments" json:"comments,omitempty"` - WhoCanSeeUserIDList []string `protobuf:"bytes,6,rep,name=whoCanSeeUserIDList" json:"whoCanSeeUserIDList,omitempty"` - WhoCantSeeUserIDList []string `protobuf:"bytes,7,rep,name=whoCantSeeUserIDList" json:"whoCantSeeUserIDList,omitempty"` - IsPrivate bool `protobuf:"varint,8,opt,name=isPrivate" json:"isPrivate,omitempty"` - CreateTime int32 `protobuf:"varint,10,opt,name=CreateTime" json:"CreateTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + 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"` + LikeUsers []*LikeUser `protobuf:"bytes,6,rep,name=likeUsers" json:"likeUsers,omitempty"` + Comments []*Comment `protobuf:"bytes,7,rep,name=comments" json:"comments,omitempty"` + Permission int32 `protobuf:"varint,8,opt,name=permission" json:"permission,omitempty"` + PermissionUserIDList []string `protobuf:"bytes,9,rep,name=permissionUserIDList" json:"permissionUserIDList,omitempty"` + PermissionGroupIDList []string `protobuf:"bytes,10,rep,name=permissionGroupIDList" json:"permissionGroupIDList,omitempty"` + AtUserIDList []string `protobuf:"bytes,11,rep,name=atUserIDList" json:"atUserIDList,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_282f0d3c571a3eb6, []int{20} + return fileDescriptor_office_1d2fa21c23f88044, []int{21} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1141,6 +1198,20 @@ func (m *WorkMoment) GetUserID() string { 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 @@ -1162,25 +1233,32 @@ func (m *WorkMoment) GetComments() []*Comment { return nil } -func (m *WorkMoment) GetWhoCanSeeUserIDList() []string { +func (m *WorkMoment) GetPermission() int32 { if m != nil { - return m.WhoCanSeeUserIDList + return m.Permission + } + return 0 +} + +func (m *WorkMoment) GetPermissionUserIDList() []string { + if m != nil { + return m.PermissionUserIDList } return nil } -func (m *WorkMoment) GetWhoCantSeeUserIDList() []string { +func (m *WorkMoment) GetPermissionGroupIDList() []string { if m != nil { - return m.WhoCantSeeUserIDList + return m.PermissionGroupIDList } return nil } -func (m *WorkMoment) GetIsPrivate() bool { +func (m *WorkMoment) GetAtUserIDList() []string { if m != nil { - return m.IsPrivate + return m.AtUserIDList } - return false + return nil } func (m *WorkMoment) GetCreateTime() int32 { @@ -1202,7 +1280,7 @@ 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_282f0d3c571a3eb6, []int{21} + return fileDescriptor_office_1d2fa21c23f88044, []int{22} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1247,7 +1325,7 @@ 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_282f0d3c571a3eb6, []int{22} + return fileDescriptor_office_1d2fa21c23f88044, []int{23} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1287,7 +1365,7 @@ 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_282f0d3c571a3eb6, []int{23} + return fileDescriptor_office_1d2fa21c23f88044, []int{24} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1339,7 +1417,7 @@ 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_282f0d3c571a3eb6, []int{24} + return fileDescriptor_office_1d2fa21c23f88044, []int{25} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1379,7 +1457,7 @@ 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_282f0d3c571a3eb6, []int{25} + return fileDescriptor_office_1d2fa21c23f88044, []int{26} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1431,7 +1509,7 @@ 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_282f0d3c571a3eb6, []int{26} + return fileDescriptor_office_1d2fa21c23f88044, []int{27} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1473,7 +1551,7 @@ 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_282f0d3c571a3eb6, []int{27} + return fileDescriptor_office_1d2fa21c23f88044, []int{28} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1539,7 +1617,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{28} + return fileDescriptor_office_1d2fa21c23f88044, []int{29} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1579,7 +1657,7 @@ 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_282f0d3c571a3eb6, []int{29} + return fileDescriptor_office_1d2fa21c23f88044, []int{30} } func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) @@ -1632,7 +1710,7 @@ 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_282f0d3c571a3eb6, []int{30} + return fileDescriptor_office_1d2fa21c23f88044, []int{31} } func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) @@ -1666,6 +1744,114 @@ func (m *GetWorkMomentByIDResp) GetWorkMoment() *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_1d2fa21c23f88044, []int{32} +} +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_1d2fa21c23f88044, []int{33} +} +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"` @@ -1679,7 +1865,7 @@ 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_282f0d3c571a3eb6, []int{31} + return fileDescriptor_office_1d2fa21c23f88044, []int{34} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1733,7 +1919,7 @@ 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_282f0d3c571a3eb6, []int{32} + return fileDescriptor_office_1d2fa21c23f88044, []int{35} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1787,7 +1973,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{33} + return fileDescriptor_office_1d2fa21c23f88044, []int{36} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -1841,7 +2027,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{34} + return fileDescriptor_office_1d2fa21c23f88044, []int{37} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -1882,260 +2068,92 @@ func (m *GetUserFriendWorkMomentsResp) GetPagination() *sdk_ws.ResponsePaginatio return nil } -type CommentsMsg struct { - Comment *Comment `protobuf:"bytes,1,opt,name=comment" json:"comment,omitempty"` - WorkMomentID string `protobuf:"bytes,2,opt,name=workMomentID" json:"workMomentID,omitempty"` - UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` +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 *CommentsMsg) Reset() { *m = CommentsMsg{} } -func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } -func (*CommentsMsg) ProtoMessage() {} -func (*CommentsMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{35} +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_1d2fa21c23f88044, []int{38} } -func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) +func (m *WorkMomentNotificationMsg) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMomentNotificationMsg.Unmarshal(m, b) } -func (m *CommentsMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommentsMsg.Marshal(b, m, deterministic) +func (m *WorkMomentNotificationMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMomentNotificationMsg.Marshal(b, m, deterministic) } -func (dst *CommentsMsg) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommentsMsg.Merge(dst, src) +func (dst *WorkMomentNotificationMsg) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMomentNotificationMsg.Merge(dst, src) } -func (m *CommentsMsg) XXX_Size() int { - return xxx_messageInfo_CommentsMsg.Size(m) +func (m *WorkMomentNotificationMsg) XXX_Size() int { + return xxx_messageInfo_WorkMomentNotificationMsg.Size(m) } -func (m *CommentsMsg) XXX_DiscardUnknown() { - xxx_messageInfo_CommentsMsg.DiscardUnknown(m) +func (m *WorkMomentNotificationMsg) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMomentNotificationMsg.DiscardUnknown(m) } -var xxx_messageInfo_CommentsMsg proto.InternalMessageInfo +var xxx_messageInfo_WorkMomentNotificationMsg proto.InternalMessageInfo -func (m *CommentsMsg) GetComment() *Comment { +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 *CommentsMsg) GetWorkMomentID() string { +func (m *WorkMomentNotificationMsg) GetWorkMomentID() string { if m != nil { return m.WorkMomentID } return "" } -func (m *CommentsMsg) GetUserID() string { +func (m *WorkMomentNotificationMsg) GetUserID() string { if m != nil { return m.UserID } return "" } -func (m *CommentsMsg) GetContent() string { +func (m *WorkMomentNotificationMsg) GetUserName() string { if m != nil { - return m.Content + return m.UserName } return "" } -type GetUserWorkMomentsCommentsMsgReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMomentsCommentsMsgReq{} } -func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } -func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} -func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{36} -} -func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) -} -func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Marshal(b, m, deterministic) -} -func (dst *GetUserWorkMomentsCommentsMsgReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Merge(dst, src) -} -func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Size() int { - return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Size(m) -} -func (m *GetUserWorkMomentsCommentsMsgReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq proto.InternalMessageInfo - -func (m *GetUserWorkMomentsCommentsMsgReq) GetUserID() string { +func (m *WorkMomentNotificationMsg) GetFaceURL() string { if m != nil { - return m.UserID + return m.FaceURL } return "" } -func (m *GetUserWorkMomentsCommentsMsgReq) GetOperationID() string { +func (m *WorkMomentNotificationMsg) GetWorkMomentContent() string { if m != nil { - return m.OperationID + return m.WorkMomentContent } return "" } -func (m *GetUserWorkMomentsCommentsMsgReq) GetPagination() *sdk_ws.RequestPagination { - if m != nil { - return m.Pagination - } - return nil -} - -type GetUserWorkMomentsCommentsMsgResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - CommentsMsgs []*CommentsMsg `protobuf:"bytes,2,rep,name=commentsMsgs" json:"commentsMsgs,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 *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMomentsCommentsMsgResp{} } -func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } -func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} -func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{37} -} -func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) -} -func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Marshal(b, m, deterministic) -} -func (dst *GetUserWorkMomentsCommentsMsgResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Merge(dst, src) -} -func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Size() int { - return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Size(m) -} -func (m *GetUserWorkMomentsCommentsMsgResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp proto.InternalMessageInfo - -func (m *GetUserWorkMomentsCommentsMsgResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetUserWorkMomentsCommentsMsgResp) GetCommentsMsgs() []*CommentsMsg { - if m != nil { - return m.CommentsMsgs - } - return nil -} - -func (m *GetUserWorkMomentsCommentsMsgResp) GetPagination() *sdk_ws.ResponsePagination { - if m != nil { - return m.Pagination - } - return nil -} - -type ClearUserWorkMomentsCommentsMsgReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,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 *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWorkMomentsCommentsMsgReq{} } -func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } -func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} -func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{38} -} -func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) -} -func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Marshal(b, m, deterministic) -} -func (dst *ClearUserWorkMomentsCommentsMsgReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Merge(dst, src) -} -func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Size() int { - return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Size(m) -} -func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_DiscardUnknown() { - xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.DiscardUnknown(m) -} - -var xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq proto.InternalMessageInfo - -func (m *ClearUserWorkMomentsCommentsMsgReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *ClearUserWorkMomentsCommentsMsgReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type ClearUserWorkMomentsCommentsMsgResp 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 *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWorkMomentsCommentsMsgResp{} } -func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } -func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} -func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{39} -} -func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) -} -func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Marshal(b, m, deterministic) -} -func (dst *ClearUserWorkMomentsCommentsMsgResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Merge(dst, src) -} -func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Size() int { - return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Size(m) -} -func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_DiscardUnknown() { - xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.DiscardUnknown(m) -} - -var xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp proto.InternalMessageInfo - -func (m *ClearUserWorkMomentsCommentsMsgResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - 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"` @@ -2149,7 +2167,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{40} + return fileDescriptor_office_1d2fa21c23f88044, []int{39} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2201,7 +2219,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_282f0d3c571a3eb6, []int{41} + return fileDescriptor_office_1d2fa21c23f88044, []int{40} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2248,6 +2266,7 @@ func init() { 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((*WorkMoment)(nil), "office.WorkMoment") proto.RegisterType((*CreateOneWorkMomentReq)(nil), "office.CreateOneWorkMomentReq") @@ -2260,15 +2279,13 @@ func init() { 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((*CommentsMsg)(nil), "office.CommentsMsg") - proto.RegisterType((*GetUserWorkMomentsCommentsMsgReq)(nil), "office.GetUserWorkMomentsCommentsMsgReq") - proto.RegisterType((*GetUserWorkMomentsCommentsMsgResp)(nil), "office.GetUserWorkMomentsCommentsMsgResp") - proto.RegisterType((*ClearUserWorkMomentsCommentsMsgReq)(nil), "office.ClearUserWorkMomentsCommentsMsgReq") - proto.RegisterType((*ClearUserWorkMomentsCommentsMsgResp)(nil), "office.ClearUserWorkMomentsCommentsMsgResp") + proto.RegisterType((*WorkMomentNotificationMsg)(nil), "office.WorkMomentNotificationMsg") proto.RegisterType((*SetUserWorkMomentsLevelReq)(nil), "office.SetUserWorkMomentsLevelReq") proto.RegisterType((*SetUserWorkMomentsLevelResp)(nil), "office.SetUserWorkMomentsLevelResp") } @@ -2296,12 +2313,11 @@ type OfficeServiceClient interface { 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) - GetUserWorkMomentsCommentsMsg(ctx context.Context, in *GetUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*GetUserWorkMomentsCommentsMsgResp, error) - ClearUserWorkMomentsCommentsMsg(ctx context.Context, in *ClearUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*ClearUserWorkMomentsCommentsMsgResp, error) SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) } @@ -2421,6 +2437,15 @@ func (c *officeServiceClient) GetWorkMomentByID(ctx context.Context, in *GetWork 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...) @@ -2439,24 +2464,6 @@ func (c *officeServiceClient) GetUserFriendWorkMoments(ctx context.Context, in * return out, nil } -func (c *officeServiceClient) GetUserWorkMomentsCommentsMsg(ctx context.Context, in *GetUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*GetUserWorkMomentsCommentsMsgResp, error) { - out := new(GetUserWorkMomentsCommentsMsgResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetUserWorkMomentsCommentsMsg", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) ClearUserWorkMomentsCommentsMsg(ctx context.Context, in *ClearUserWorkMomentsCommentsMsgReq, opts ...grpc.CallOption) (*ClearUserWorkMomentsCommentsMsgResp, error) { - out := new(ClearUserWorkMomentsCommentsMsgResp) - err := grpc.Invoke(ctx, "/office.OfficeService/ClearUserWorkMomentsCommentsMsg", 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...) @@ -2481,12 +2488,11 @@ type OfficeServiceServer interface { 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) - GetUserWorkMomentsCommentsMsg(context.Context, *GetUserWorkMomentsCommentsMsgReq) (*GetUserWorkMomentsCommentsMsgResp, error) - ClearUserWorkMomentsCommentsMsg(context.Context, *ClearUserWorkMomentsCommentsMsgReq) (*ClearUserWorkMomentsCommentsMsgResp, error) SetUserWorkMomentsLevel(context.Context, *SetUserWorkMomentsLevelReq) (*SetUserWorkMomentsLevelResp, error) } @@ -2710,6 +2716,24 @@ func _OfficeService_GetWorkMomentByID_Handler(srv interface{}, ctx context.Conte 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 { @@ -2746,42 +2770,6 @@ func _OfficeService_GetUserFriendWorkMoments_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } -func _OfficeService_GetUserWorkMomentsCommentsMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserWorkMomentsCommentsMsgReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetUserWorkMomentsCommentsMsg(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetUserWorkMomentsCommentsMsg", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetUserWorkMomentsCommentsMsg(ctx, req.(*GetUserWorkMomentsCommentsMsgReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_ClearUserWorkMomentsCommentsMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClearUserWorkMomentsCommentsMsgReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).ClearUserWorkMomentsCommentsMsg(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/ClearUserWorkMomentsCommentsMsg", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).ClearUserWorkMomentsCommentsMsg(ctx, req.(*ClearUserWorkMomentsCommentsMsgReq)) - } - 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 { @@ -2852,6 +2840,10 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetWorkMomentByID", Handler: _OfficeService_GetWorkMomentByID_Handler, }, + { + MethodName: "ChangeWorkMomentPermission", + Handler: _OfficeService_ChangeWorkMomentPermission_Handler, + }, { MethodName: "GetUserWorkMoments", Handler: _OfficeService_GetUserWorkMoments_Handler, @@ -2860,14 +2852,6 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetUserFriendWorkMoments", Handler: _OfficeService_GetUserFriendWorkMoments_Handler, }, - { - MethodName: "GetUserWorkMomentsCommentsMsg", - Handler: _OfficeService_GetUserWorkMomentsCommentsMsg_Handler, - }, - { - MethodName: "ClearUserWorkMomentsCommentsMsg", - Handler: _OfficeService_ClearUserWorkMomentsCommentsMsg_Handler, - }, { MethodName: "SetUserWorkMomentsLevel", Handler: _OfficeService_SetUserWorkMomentsLevel_Handler, @@ -2877,105 +2861,106 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_282f0d3c571a3eb6) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_1d2fa21c23f88044) } -var fileDescriptor_office_282f0d3c571a3eb6 = []byte{ - // 1539 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0x7f, 0xb7, 0x4d, 0xe2, 0x6e, - 0xfb, 0x95, 0xd2, 0x56, 0x72, 0x90, 0xa9, 0x04, 0x12, 0xa2, 0x42, 0xb5, 0x4b, 0x14, 0x88, 0xdb, - 0xb0, 0x49, 0xa8, 0xca, 0xa1, 0xd1, 0xd6, 0x99, 0x2c, 0xab, 0xd8, 0xbb, 0xdb, 0x9d, 0x4d, 0x4c, - 0xb9, 0x20, 0x71, 0xe1, 0xc6, 0x85, 0x03, 0x27, 0x2e, 0xfc, 0x0b, 0xfc, 0x0d, 0x1c, 0x38, 0x21, - 0x4e, 0x9c, 0x38, 0xc1, 0x1f, 0x82, 0x66, 0xf6, 0xc7, 0xcc, 0xec, 0x0f, 0xaf, 0xbb, 0xa5, 0x12, - 0x9c, 0xe2, 0xf7, 0xe6, 0xcd, 0x9b, 0xcf, 0xfb, 0xcc, 0x9b, 0x37, 0x6f, 0x27, 0xb0, 0xec, 0x9c, - 0x9e, 0x5a, 0x03, 0xbc, 0x1d, 0xfc, 0x69, 0xbb, 0x9e, 0xe3, 0x3b, 0x68, 0x2e, 0x90, 0xd4, 0x1b, - 0x8f, 0x5d, 0x6c, 0x1f, 0xef, 0xf6, 0xb7, 0xdd, 0x33, 0x73, 0x9b, 0x0d, 0x6d, 0x93, 0x93, 0xb3, - 0xe3, 0x31, 0xd9, 0x1e, 0x93, 0xc0, 0x54, 0xbb, 0x0f, 0xd0, 0x75, 0x46, 0x23, 0xc7, 0xd6, 0x31, - 0x71, 0x51, 0x13, 0x6a, 0xd8, 0xf3, 0xba, 0xce, 0x09, 0x6e, 0x2a, 0x2d, 0x65, 0x6b, 0x56, 0x8f, - 0x44, 0xb4, 0x0a, 0x73, 0xd8, 0xf3, 0xfa, 0xc4, 0x6c, 0x56, 0x5a, 0xca, 0x56, 0x5d, 0x0f, 0x25, - 0xed, 0x7d, 0xa8, 0x1d, 0x1a, 0xe6, 0x11, 0xc1, 0x1e, 0x35, 0x39, 0x27, 0xd8, 0xdb, 0xed, 0xb1, - 0xb9, 0x75, 0x3d, 0x94, 0x90, 0x0a, 0xf3, 0xf4, 0xd7, 0x23, 0x63, 0x84, 0xc3, 0xc9, 0xb1, 0xac, - 0x3d, 0x87, 0xea, 0xa1, 0x61, 0xa2, 0x15, 0x98, 0xf5, 0x0d, 0x33, 0x9e, 0x19, 0x08, 0x14, 0x8d, - 0x6f, 0x98, 0xc2, 0xbc, 0x48, 0x44, 0x77, 0x03, 0x97, 0x7b, 0x16, 0xf1, 0x9b, 0xd5, 0x56, 0x75, - 0xab, 0xd1, 0x59, 0x6c, 0x87, 0x0c, 0x84, 0x68, 0xf4, 0xd8, 0x40, 0xfb, 0x08, 0x2e, 0xef, 0x60, - 0x9f, 0x2a, 0x0f, 0x0d, 0x93, 0xe8, 0xf8, 0x45, 0x2e, 0xd2, 0x16, 0x34, 0x1c, 0x17, 0x7b, 0x86, - 0x6f, 0x39, 0xf6, 0x6e, 0x2f, 0x5c, 0x54, 0x54, 0x69, 0xa7, 0xb0, 0x28, 0xf9, 0x22, 0x2e, 0xea, - 0x00, 0x0c, 0x62, 0x06, 0x99, 0xc3, 0x46, 0x07, 0x45, 0x68, 0x38, 0xb7, 0xba, 0x60, 0x85, 0x36, - 0x61, 0xc6, 0x37, 0x4c, 0xd2, 0xac, 0x30, 0xec, 0x0d, 0x01, 0xbb, 0xce, 0x06, 0xb4, 0xaf, 0x15, - 0x58, 0xe8, 0x7a, 0xd8, 0xf0, 0x31, 0xd5, 0xe1, 0x17, 0x22, 0x17, 0x8a, 0xcc, 0x05, 0x0f, 0xa6, - 0x22, 0x05, 0xb3, 0x01, 0x10, 0xfc, 0x8a, 0x59, 0xaa, 0xeb, 0x82, 0x26, 0x19, 0xec, 0x4c, 0x3a, - 0xd8, 0x2e, 0x5c, 0x12, 0x30, 0x94, 0x0b, 0x55, 0x7b, 0x06, 0x0b, 0x3d, 0x3c, 0xc4, 0x71, 0x20, - 0x79, 0xdc, 0xc7, 0x29, 0x50, 0x11, 0x53, 0x20, 0x01, 0xb2, 0x9a, 0x09, 0x52, 0xf0, 0x5f, 0x12, - 0xe4, 0x6f, 0x0a, 0xd4, 0x0f, 0xb0, 0x5f, 0x0a, 0x62, 0x13, 0x6a, 0x36, 0x1e, 0xb3, 0x9d, 0x09, - 0xe0, 0x45, 0x22, 0x6a, 0x03, 0xb2, 0xec, 0x81, 0x87, 0x0d, 0x82, 0x8f, 0xf8, 0x4e, 0xcc, 0xb0, - 0x9d, 0xc8, 0x18, 0x41, 0x77, 0xe0, 0x8a, 0x87, 0x4f, 0xce, 0x07, 0xa2, 0xf5, 0x2c, 0xb3, 0x4e, - 0xe9, 0x93, 0xc4, 0xcc, 0xa5, 0x89, 0xf9, 0x00, 0x20, 0x0a, 0xa9, 0x24, 0x2b, 0x7f, 0x29, 0x70, - 0xf9, 0x00, 0xdb, 0x27, 0x7d, 0x62, 0x76, 0xa4, 0x34, 0x64, 0xc8, 0x14, 0x86, 0x2c, 0x12, 0xe9, - 0x29, 0x3f, 0x8a, 0x8e, 0x64, 0x85, 0x0d, 0xc5, 0x32, 0xba, 0x0e, 0xf5, 0x1d, 0xcf, 0x39, 0x77, - 0x85, 0x4c, 0xe4, 0x0a, 0x4a, 0x37, 0xc1, 0xf6, 0x49, 0x9c, 0x83, 0xa1, 0x44, 0xe9, 0xa0, 0xbf, - 0xb0, 0xb7, 0x3f, 0x34, 0xfc, 0x53, 0xc7, 0x1b, 0xed, 0xf6, 0x9a, 0xb3, 0xac, 0x2a, 0xa5, 0xf4, - 0x14, 0xd7, 0xc0, 0xb1, 0x7d, 0x6c, 0xfb, 0x21, 0x15, 0x91, 0x98, 0x24, 0xaa, 0x96, 0x26, 0xea, - 0x21, 0x2c, 0x4a, 0x51, 0x96, 0x64, 0xeb, 0x3b, 0x05, 0x96, 0x76, 0x18, 0xe1, 0xd4, 0xdb, 0x9e, - 0x13, 0x94, 0x9a, 0x1e, 0xc0, 0xbe, 0x61, 0x5a, 0x36, 0x5b, 0x2c, 0xf4, 0x74, 0xab, 0x4d, 0xb0, - 0x77, 0x81, 0xbd, 0x63, 0xc3, 0xb5, 0x8e, 0x5d, 0xc3, 0x33, 0x46, 0xa4, 0xad, 0xe3, 0x17, 0xe7, - 0x98, 0xf8, 0xdc, 0x56, 0x17, 0xe6, 0xe5, 0x9e, 0xf1, 0xe2, 0xe3, 0xe1, 0x00, 0x70, 0x44, 0x52, - 0xdd, 0x54, 0x0a, 0xea, 0xa6, 0xc8, 0x69, 0x45, 0xe6, 0x54, 0x85, 0x79, 0xba, 0x03, 0x87, 0x56, - 0x98, 0xf3, 0x55, 0x3d, 0x96, 0xb5, 0x9f, 0x15, 0x40, 0x49, 0x1a, 0x4a, 0x56, 0xc9, 0x87, 0x12, - 0x77, 0x15, 0x36, 0xe7, 0xff, 0x99, 0xdc, 0x11, 0xd7, 0xb1, 0x09, 0xce, 0x21, 0xef, 0x1e, 0x34, - 0x7c, 0x8e, 0x26, 0xbc, 0x2f, 0x90, 0x10, 0x77, 0x38, 0xa4, 0x8b, 0x66, 0xda, 0x80, 0xed, 0x66, - 0x58, 0xe9, 0x1f, 0xbc, 0xdc, 0xed, 0xbd, 0x89, 0xe2, 0x65, 0x32, 0xae, 0xa4, 0x45, 0x4a, 0x72, - 0xb5, 0x0e, 0x55, 0xdf, 0x30, 0x43, 0x92, 0xa4, 0x0b, 0x85, 0xea, 0xb5, 0xfb, 0x30, 0xbf, 0x67, - 0x9d, 0xe1, 0xd2, 0xf7, 0xf4, 0x1f, 0x0a, 0xd4, 0xe8, 0xca, 0x74, 0xf7, 0x4b, 0xcc, 0xa7, 0x54, - 0x78, 0xd8, 0x1d, 0xbe, 0x0c, 0x2a, 0x58, 0x44, 0x85, 0xa0, 0x42, 0xb7, 0xe0, 0x52, 0x2c, 0x32, - 0x17, 0x41, 0x31, 0x90, 0x95, 0xb4, 0x92, 0x84, 0x49, 0x18, 0x16, 0x83, 0xba, 0xce, 0x15, 0x13, - 0xaa, 0xc0, 0x06, 0xc0, 0x20, 0xb8, 0xca, 0x68, 0xce, 0xd6, 0x58, 0x15, 0x11, 0x34, 0xda, 0x9f, - 0x15, 0x80, 0x27, 0x8e, 0x77, 0xd6, 0x77, 0x58, 0x88, 0x1a, 0x2c, 0x8c, 0x63, 0x29, 0x0e, 0x54, - 0xd2, 0xe5, 0x9e, 0x49, 0x01, 0x44, 0x55, 0x06, 0xd1, 0x86, 0xfa, 0x30, 0xdc, 0x04, 0xc2, 0xae, - 0x81, 0x46, 0xe7, 0x4a, 0xb4, 0x53, 0xd1, 0xee, 0xe8, 0xdc, 0x84, 0x9e, 0xd6, 0x41, 0xc0, 0x39, - 0x61, 0xf7, 0x80, 0x70, 0x5a, 0xc3, 0xbd, 0xd0, 0x63, 0x03, 0xf4, 0x16, 0x2c, 0x8f, 0x3f, 0x77, - 0xba, 0x86, 0x7d, 0x80, 0xc5, 0xfb, 0x63, 0x8e, 0x55, 0xdb, 0xac, 0x21, 0xd4, 0x81, 0x95, 0x40, - 0xed, 0xcb, 0x53, 0x6a, 0x6c, 0x4a, 0xe6, 0x18, 0xe5, 0xdf, 0x22, 0xfb, 0x9e, 0x75, 0x61, 0xf8, - 0xb8, 0x39, 0xdf, 0x52, 0xb6, 0xe6, 0x75, 0xae, 0xa0, 0x2c, 0x77, 0x39, 0xcb, 0x10, 0xb0, 0xcc, - 0x35, 0x9a, 0x0d, 0xab, 0x81, 0xf4, 0xd8, 0xc6, 0x9c, 0x6d, 0x7a, 0xb0, 0x3a, 0x00, 0x9c, 0xdc, - 0x64, 0xca, 0x0b, 0xa6, 0x82, 0xd5, 0x14, 0xdd, 0x5a, 0x1f, 0xd6, 0x32, 0xd7, 0x2b, 0x59, 0xe1, - 0x2f, 0x60, 0x35, 0x68, 0x35, 0x52, 0xf0, 0x5f, 0x27, 0x5f, 0x8a, 0xab, 0x44, 0x1f, 0xd6, 0x32, - 0xd7, 0x2d, 0x19, 0x86, 0x0f, 0x2b, 0x34, 0xdb, 0x52, 0x41, 0xe4, 0x9d, 0x6b, 0x0d, 0x16, 0x9e, - 0x88, 0xc1, 0x05, 0xf0, 0x25, 0xdd, 0x14, 0x41, 0x7c, 0x0c, 0x57, 0x33, 0x56, 0x2d, 0x19, 0xc2, - 0x4f, 0x0a, 0xac, 0x85, 0x47, 0xe0, 0x55, 0xc2, 0x18, 0x67, 0x84, 0x31, 0x4e, 0x84, 0x51, 0x50, - 0xa6, 0x84, 0xd3, 0x3d, 0x33, 0xb1, 0xd1, 0x98, 0x4d, 0x53, 0xf0, 0x08, 0x9a, 0xd9, 0xa0, 0x4b, - 0xb2, 0xf0, 0x05, 0xac, 0xec, 0x60, 0x9f, 0x3b, 0x8a, 0x6e, 0xa9, 0x69, 0xb2, 0x51, 0x85, 0x79, - 0xc7, 0x3d, 0x12, 0xf3, 0x31, 0x96, 0xa7, 0xd8, 0xcc, 0xaf, 0xe0, 0x6a, 0xc6, 0xca, 0x25, 0xaf, - 0x2e, 0xf9, 0xec, 0x57, 0xa6, 0x39, 0xfb, 0xda, 0xf7, 0x0a, 0x43, 0x40, 0x01, 0x73, 0x8b, 0x89, - 0xdf, 0x76, 0xbd, 0x8c, 0x66, 0xe2, 0xd5, 0x1b, 0xb1, 0x62, 0x6a, 0x7e, 0x51, 0x60, 0x35, 0x0b, - 0x59, 0x49, 0x72, 0xee, 0x41, 0x83, 0x87, 0x1d, 0x7d, 0x30, 0x66, 0xb1, 0x23, 0x9a, 0x25, 0x3a, - 0xa7, 0x6a, 0xc9, 0xce, 0x49, 0xfb, 0x41, 0x81, 0x6b, 0x61, 0x2c, 0x1f, 0x7a, 0x16, 0xb6, 0x4f, - 0xfe, 0x65, 0x5c, 0xff, 0xaa, 0xc0, 0xf5, 0x7c, 0x7c, 0xff, 0x45, 0xc6, 0xbf, 0x55, 0xa0, 0x11, - 0xd6, 0x08, 0xd2, 0x27, 0x26, 0xba, 0x4d, 0xcb, 0xcd, 0x48, 0xb8, 0x14, 0x53, 0x1d, 0x40, 0x34, - 0x3e, 0x55, 0x7d, 0xe3, 0x1b, 0x56, 0xcd, 0xeb, 0x59, 0xe4, 0xaa, 0xa6, 0xfd, 0xa8, 0x40, 0x2b, - 0x9d, 0xce, 0x02, 0xc4, 0xd7, 0x7a, 0x4f, 0x49, 0x64, 0x4a, 0xb5, 0x5c, 0xa6, 0x68, 0xbf, 0x2b, - 0x70, 0xa3, 0x00, 0x64, 0xc9, 0x64, 0x78, 0x07, 0x16, 0x06, 0xdc, 0x4d, 0x94, 0x0d, 0xcb, 0x89, - 0x4d, 0x60, 0x4b, 0x48, 0x86, 0xff, 0x54, 0x3e, 0x3c, 0x03, 0xad, 0x3b, 0xc4, 0x86, 0xf7, 0x86, - 0xf8, 0xd7, 0x9e, 0xc2, 0xcd, 0x42, 0xff, 0x25, 0x6f, 0xa7, 0x21, 0xa8, 0x07, 0xa9, 0x3d, 0xd9, - 0xc3, 0x17, 0x78, 0x58, 0xf0, 0x25, 0x35, 0xa4, 0x36, 0x0c, 0xec, 0xac, 0x1e, 0x08, 0x53, 0x94, - 0x82, 0x4f, 0xe0, 0x5a, 0xee, 0x6a, 0xe5, 0x02, 0xe8, 0x7c, 0xd3, 0x80, 0x4b, 0x8f, 0x99, 0xc5, - 0x01, 0xf6, 0x2e, 0xac, 0x01, 0x46, 0xf7, 0xa1, 0x21, 0xbc, 0xfe, 0xa1, 0xd5, 0xc8, 0x81, 0xfc, - 0xbc, 0xa8, 0xae, 0x65, 0xea, 0x89, 0x8b, 0xde, 0x85, 0x7a, 0xfc, 0xa0, 0x86, 0x56, 0xe2, 0xe5, - 0x85, 0x77, 0x3e, 0xf5, 0x6a, 0x86, 0x36, 0x98, 0x19, 0xbf, 0x72, 0xf1, 0x99, 0xe2, 0xc3, 0x1a, - 0x9f, 0x29, 0x3f, 0x87, 0x6d, 0xc3, 0x5c, 0xf0, 0x0c, 0x84, 0x96, 0x22, 0x83, 0xf8, 0xa5, 0x4b, - 0x45, 0x49, 0x15, 0x71, 0x69, 0x90, 0xc2, 0x73, 0x08, 0x0f, 0x52, 0x7e, 0x09, 0xe2, 0x41, 0x26, - 0xdf, 0x4e, 0x76, 0xd8, 0x73, 0xab, 0xf0, 0xfd, 0x8f, 0xfe, 0x27, 0xf0, 0x21, 0x3f, 0x8f, 0xa8, - 0x6a, 0xde, 0x50, 0xec, 0x48, 0xf8, 0x38, 0x96, 0x1c, 0xc9, 0x5f, 0xe6, 0x92, 0xa3, 0xe4, 0xf7, - 0xf4, 0xa7, 0xb0, 0x9c, 0xf1, 0x19, 0x80, 0x36, 0x64, 0xaa, 0x93, 0x8d, 0xa4, 0xba, 0x39, 0x71, - 0x3c, 0xf0, 0x9b, 0xd1, 0x97, 0x73, 0xbf, 0xd9, 0x1f, 0x0b, 0xdc, 0x6f, 0x5e, 0x53, 0xbf, 0x0f, - 0x4b, 0xa9, 0x56, 0x19, 0x5d, 0x17, 0xbf, 0x14, 0x53, 0x3e, 0xd7, 0x27, 0x8c, 0x12, 0x17, 0x3d, - 0x85, 0x95, 0xac, 0xce, 0x13, 0x6d, 0x26, 0x0a, 0x59, 0xca, 0x6f, 0x6b, 0xb2, 0x41, 0x00, 0x36, - 0xd5, 0x0a, 0x72, 0xb0, 0x59, 0xfd, 0x29, 0x07, 0x9b, 0xdd, 0x43, 0x1e, 0xc4, 0x8f, 0x22, 0xc2, - 0x51, 0x46, 0xeb, 0x89, 0x0d, 0x96, 0x5b, 0x11, 0x75, 0x63, 0xd2, 0x30, 0x71, 0x11, 0x86, 0x66, - 0x5e, 0xa7, 0x80, 0x6e, 0x26, 0xe6, 0x66, 0xf5, 0x3a, 0xea, 0xad, 0x62, 0x23, 0xe2, 0x22, 0x1f, - 0xd6, 0x27, 0x5e, 0x44, 0x68, 0x2b, 0x1f, 0xa7, 0x5c, 0xd4, 0xd5, 0xdb, 0x53, 0x5a, 0x12, 0x17, - 0x7d, 0x09, 0x9b, 0x05, 0x55, 0x1c, 0xdd, 0x89, 0x37, 0xb2, 0xf0, 0x3a, 0x51, 0xef, 0x4e, 0x6d, - 0x4b, 0x5c, 0xf4, 0x1c, 0xd6, 0x72, 0x0a, 0x2f, 0xd2, 0x84, 0xea, 0x92, 0x73, 0x0f, 0xa8, 0x37, - 0x0b, 0x6d, 0x88, 0xfb, 0x60, 0xe9, 0xb3, 0xc5, 0x76, 0xf8, 0x1f, 0xae, 0xf7, 0x82, 0x3f, 0xcf, - 0xe7, 0xd8, 0xbf, 0xaf, 0xde, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xd9, 0x76, 0xae, 0x00, - 0x1b, 0x00, 0x00, +var fileDescriptor_office_1d2fa21c23f88044 = []byte{ + // 1559 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, 0x8e, 0x3f, 0x36, 0x93, 0xd8, 0xf1, 0x7f, 0x92, + 0xfc, 0x15, 0x3e, 0xb4, 0x46, 0x4b, 0x0e, 0x48, 0x88, 0x08, 0xc5, 0x9b, 0x58, 0x06, 0x6f, 0x62, + 0xc6, 0x36, 0x11, 0x1c, 0xb0, 0x26, 0xeb, 0xf6, 0x30, 0xf2, 0xee, 0xcc, 0x64, 0x7a, 0x6c, 0xe3, + 0x13, 0x52, 0x5e, 0x81, 0x03, 0x5c, 0x78, 0x0a, 0x1e, 0x01, 0x71, 0xe0, 0x84, 0x38, 0xf0, 0x06, + 0xbc, 0x03, 0x57, 0xd4, 0x3d, 0x1f, 0xdd, 0x3d, 0xd3, 0xb3, 0xbb, 0x19, 0x40, 0x82, 0x93, 0xb7, + 0xaa, 0xab, 0xab, 0xab, 0x7e, 0x5d, 0x55, 0x5d, 0x53, 0x86, 0xeb, 0xde, 0xc9, 0x89, 0x33, 0xc4, + 0x9b, 0xd1, 0x9f, 0xae, 0x1f, 0x78, 0xa1, 0x87, 0x1a, 0x11, 0xa5, 0xff, 0xef, 0x99, 0x8f, 0xdd, + 0xa3, 0x9d, 0xc1, 0xa6, 0x7f, 0x6a, 0x6f, 0xb2, 0xa5, 0x4d, 0x72, 0x7c, 0x7a, 0x74, 0x41, 0x36, + 0x2f, 0x48, 0x24, 0x6a, 0x3c, 0x04, 0xd8, 0xf2, 0xc6, 0x63, 0xcf, 0x35, 0x31, 0xf1, 0x51, 0x07, + 0x9a, 0x38, 0x08, 0xb6, 0xbc, 0x63, 0xdc, 0xd1, 0x36, 0xb4, 0xfb, 0x75, 0x33, 0x21, 0xd1, 0x0a, + 0x34, 0x70, 0x10, 0x0c, 0x88, 0xdd, 0xa9, 0x6c, 0x68, 0xf7, 0x5b, 0x66, 0x4c, 0x19, 0x1f, 0x40, + 0xf3, 0xc0, 0xb2, 0x0f, 0x09, 0x0e, 0xa8, 0xc8, 0x19, 0xc1, 0xc1, 0x4e, 0x9f, 0xed, 0x6d, 0x99, + 0x31, 0x85, 0x74, 0x98, 0xa3, 0xbf, 0x9e, 0x5a, 0x63, 0x1c, 0x6f, 0x4e, 0x69, 0xe3, 0x05, 0x54, + 0x0f, 0x2c, 0x1b, 0x2d, 0x41, 0x3d, 0xb4, 0xec, 0x74, 0x67, 0x44, 0x50, 0x6b, 0x42, 0xcb, 0x16, + 0xf6, 0x25, 0x24, 0x7a, 0x2b, 0x52, 0xb9, 0xeb, 0x90, 0xb0, 0x53, 0xdd, 0xa8, 0xde, 0x6f, 0xf7, + 0x16, 0xba, 0x31, 0x02, 0xb1, 0x35, 0x66, 0x2a, 0x60, 0x7c, 0x04, 0x57, 0xb7, 0x71, 0x48, 0x99, + 0x07, 0x96, 0x4d, 0x4c, 0xfc, 0xb2, 0xd0, 0xd2, 0x0d, 0x68, 0x7b, 0x3e, 0x0e, 0xac, 0xd0, 0xf1, + 0xdc, 0x9d, 0x7e, 0x7c, 0xa8, 0xc8, 0x32, 0x4e, 0x60, 0x41, 0xd2, 0x45, 0x7c, 0xd4, 0x03, 0x18, + 0xa6, 0x08, 0x32, 0x85, 0xed, 0x1e, 0x4a, 0xac, 0xe1, 0xd8, 0x9a, 0x82, 0x14, 0xba, 0x0d, 0xb5, + 0xd0, 0xb2, 0x49, 0xa7, 0xc2, 0x6c, 0x6f, 0x0b, 0xb6, 0x9b, 0x6c, 0xc1, 0x78, 0xa5, 0xc1, 0xfc, + 0x56, 0x80, 0xad, 0x10, 0x53, 0x1e, 0x7e, 0x29, 0x62, 0xa1, 0xc9, 0x58, 0x70, 0x67, 0x2a, 0x92, + 0x33, 0xeb, 0x00, 0xd1, 0xaf, 0x14, 0xa5, 0x96, 0x29, 0x70, 0xb2, 0xce, 0xd6, 0xf2, 0xce, 0x6e, + 0xc1, 0x15, 0xc1, 0x86, 0x72, 0xae, 0x1a, 0x5f, 0xc0, 0x7c, 0x1f, 0x8f, 0x70, 0xea, 0x48, 0x11, + 0xf6, 0x69, 0x08, 0x54, 0xc4, 0x10, 0xc8, 0x18, 0x59, 0x55, 0x1a, 0x29, 0xe8, 0x2f, 0x69, 0xe4, + 0xaf, 0x1a, 0xb4, 0xf6, 0x71, 0x58, 0xca, 0xc4, 0x0e, 0x34, 0x5d, 0x7c, 0xc1, 0x6e, 0x26, 0x32, + 0x2f, 0x21, 0x51, 0x17, 0x90, 0xe3, 0x0e, 0x03, 0x6c, 0x11, 0x7c, 0xc8, 0x6f, 0xa2, 0xc6, 0x6e, + 0x42, 0xb1, 0x82, 0xde, 0x84, 0x6b, 0x01, 0x3e, 0x3e, 0x1b, 0x8a, 0xd2, 0x75, 0x26, 0x9d, 0xe3, + 0x67, 0x81, 0x69, 0xe4, 0x81, 0xf9, 0x10, 0x20, 0x71, 0xa9, 0x24, 0x2a, 0xbf, 0x6b, 0x70, 0x75, + 0x1f, 0xbb, 0xc7, 0x03, 0x62, 0xf7, 0xa4, 0x30, 0x64, 0x96, 0x69, 0xcc, 0xb2, 0x84, 0xa4, 0x59, + 0x7e, 0x98, 0xa4, 0x64, 0x85, 0x2d, 0xa5, 0x34, 0xba, 0x05, 0xad, 0xed, 0xc0, 0x3b, 0xf3, 0x85, + 0x48, 0xe4, 0x0c, 0x0a, 0x37, 0xc1, 0xee, 0x71, 0x1a, 0x83, 0x31, 0x45, 0xe1, 0xa0, 0xbf, 0x70, + 0xb0, 0x37, 0xb2, 0xc2, 0x13, 0x2f, 0x18, 0xef, 0xf4, 0x3b, 0x75, 0x56, 0x95, 0x72, 0x7c, 0x6a, + 0xd7, 0xd0, 0x73, 0x43, 0xec, 0x86, 0x31, 0x14, 0x09, 0x99, 0x05, 0xaa, 0x99, 0x07, 0xea, 0x31, + 0x2c, 0x48, 0x5e, 0x96, 0x44, 0xeb, 0x1b, 0x0d, 0x16, 0xb7, 0x19, 0xe0, 0x54, 0xdb, 0xae, 0x17, + 0x95, 0x9a, 0x3e, 0xc0, 0x9e, 0x65, 0x3b, 0x2e, 0x3b, 0x2c, 0xd6, 0x74, 0xb7, 0x4b, 0x70, 0x70, + 0x8e, 0x83, 0x23, 0xcb, 0x77, 0x8e, 0x7c, 0x2b, 0xb0, 0xc6, 0xa4, 0x6b, 0xe2, 0x97, 0x67, 0x98, + 0x84, 0x5c, 0xd6, 0x14, 0xf6, 0x15, 0xe6, 0xf8, 0xf4, 0xf4, 0xf0, 0x00, 0xb8, 0x45, 0x52, 0xdd, + 0xd4, 0xa6, 0xd4, 0x4d, 0x11, 0xd3, 0x8a, 0x8c, 0xa9, 0x0e, 0x73, 0xf4, 0x06, 0x0e, 0x9c, 0x38, + 0xe6, 0xab, 0x66, 0x4a, 0x1b, 0x3f, 0x69, 0x80, 0xb2, 0x30, 0x94, 0xac, 0x92, 0x8f, 0x25, 0xec, + 0x2a, 0x6c, 0xcf, 0x3d, 0x25, 0x76, 0xc4, 0xf7, 0x5c, 0x82, 0x0b, 0xc0, 0x7b, 0x00, 0xed, 0x90, + 0x5b, 0x13, 0xbf, 0x17, 0x48, 0xf0, 0x3b, 0x5e, 0x32, 0x45, 0x31, 0x63, 0xc8, 0x6e, 0x33, 0xae, + 0xf4, 0x8f, 0x2e, 0x77, 0xfa, 0xff, 0x44, 0xf1, 0xb2, 0x19, 0x56, 0xd2, 0x21, 0x25, 0xb1, 0x5a, + 0x83, 0x6a, 0x68, 0xd9, 0x31, 0x48, 0xd2, 0x83, 0x42, 0xf9, 0xc6, 0x43, 0x98, 0xdb, 0x75, 0x4e, + 0x71, 0xe9, 0x77, 0xfa, 0x09, 0x5c, 0x7b, 0xea, 0x85, 0xce, 0x89, 0x33, 0x64, 0xa6, 0x97, 0xd6, + 0xf3, 0x87, 0x06, 0x4d, 0xea, 0x01, 0x8d, 0xa2, 0x12, 0xfb, 0x69, 0x4c, 0x9e, 0x58, 0x43, 0x7c, + 0x68, 0xee, 0x26, 0xc5, 0x36, 0x26, 0x29, 0xd8, 0x01, 0xf6, 0x47, 0x97, 0x51, 0x8d, 0x4c, 0x9e, + 0x33, 0x81, 0x85, 0xee, 0xc2, 0x95, 0x94, 0x64, 0xca, 0xeb, 0x4c, 0x46, 0x66, 0xd2, 0x5a, 0x15, + 0x87, 0x79, 0x5a, 0x56, 0x39, 0x43, 0xcc, 0x89, 0xa6, 0x9c, 0x13, 0xeb, 0x00, 0xc3, 0xe8, 0xb1, + 0xa4, 0x59, 0x31, 0xc7, 0xea, 0x94, 0xc0, 0x31, 0x7e, 0xac, 0x02, 0x3c, 0xf7, 0x82, 0xd3, 0x81, + 0xc7, 0x9c, 0x37, 0x60, 0xfe, 0x22, 0xa5, 0x52, 0x08, 0x24, 0x5e, 0x61, 0xd6, 0x8b, 0x00, 0x55, + 0x8b, 0x01, 0xaa, 0xc9, 0x00, 0x09, 0xa6, 0xd7, 0x65, 0xd3, 0xbb, 0xd0, 0x1a, 0xc5, 0xc1, 0x41, + 0x3a, 0x0d, 0x96, 0x1e, 0xd7, 0x92, 0x08, 0x4a, 0xa2, 0xc6, 0xe4, 0x22, 0xb4, 0x8a, 0x0c, 0xa3, + 0x3b, 0x24, 0x9d, 0xa6, 0x5c, 0x45, 0xe2, 0xbb, 0x35, 0x53, 0x01, 0x8a, 0x8b, 0x8f, 0x83, 0xb1, + 0x43, 0x08, 0x4d, 0xe2, 0x18, 0x17, 0xce, 0x41, 0x3d, 0x58, 0xe2, 0x94, 0xf0, 0xf0, 0xb5, 0xd8, + 0x33, 0xa1, 0x5c, 0x43, 0x0f, 0x60, 0x99, 0xf3, 0xd9, 0x43, 0x12, 0x6f, 0x02, 0xb6, 0x49, 0xbd, + 0x48, 0x21, 0xb7, 0x42, 0xe1, 0x84, 0x36, 0x13, 0x96, 0x78, 0x99, 0x5b, 0x9c, 0xcf, 0xdd, 0xa2, + 0x0b, 0x2b, 0x51, 0x4b, 0xf4, 0xcc, 0xc5, 0xfc, 0x36, 0x69, 0x69, 0xe8, 0x01, 0xf0, 0xcb, 0xcb, + 0x26, 0xad, 0x20, 0x2a, 0x48, 0xcd, 0xd0, 0x6f, 0x0e, 0x60, 0x55, 0x79, 0x5e, 0xc9, 0x37, 0xea, + 0x1c, 0x56, 0xa2, 0x66, 0x29, 0x67, 0xfe, 0x5f, 0x89, 0xc7, 0xe9, 0x75, 0x6e, 0x00, 0xab, 0xca, + 0x73, 0x4b, 0xba, 0x11, 0xc2, 0x12, 0x8d, 0xcb, 0x9c, 0x13, 0x45, 0x15, 0xc5, 0x80, 0xf9, 0xe7, + 0xa2, 0x73, 0x91, 0xf9, 0x12, 0x6f, 0x06, 0x27, 0x3e, 0x86, 0x65, 0xc5, 0xa9, 0x25, 0x5d, 0xf8, + 0x41, 0x83, 0xd5, 0x38, 0x59, 0x5e, 0xc7, 0x8d, 0x0b, 0x85, 0x1b, 0x17, 0x19, 0x37, 0xc4, 0x32, + 0x58, 0xcd, 0x97, 0x41, 0xa1, 0x0e, 0xd4, 0x26, 0xb6, 0x4a, 0xf5, 0x3c, 0x04, 0x4f, 0xa1, 0xa3, + 0x36, 0xba, 0x24, 0x0a, 0x5f, 0xc1, 0xd2, 0x36, 0x0e, 0xb9, 0xa2, 0xe4, 0x9d, 0x9d, 0x25, 0x1a, + 0x75, 0x98, 0xf3, 0xfc, 0x43, 0x31, 0x1e, 0x53, 0x7a, 0x86, 0xcb, 0xfc, 0x1a, 0x96, 0x15, 0x27, + 0x97, 0x7c, 0x7c, 0xe5, 0xdc, 0xaf, 0xcc, 0x92, 0xfb, 0xc6, 0x6f, 0x1a, 0xac, 0x6d, 0x7d, 0x69, + 0xb9, 0xb6, 0x80, 0xe3, 0x5e, 0x5a, 0xb7, 0xfe, 0x0e, 0x10, 0xe4, 0xca, 0x5b, 0x9d, 0xb9, 0xf2, + 0xd6, 0x26, 0x54, 0xde, 0xe9, 0x21, 0x72, 0x00, 0xeb, 0x93, 0xdc, 0x2a, 0x19, 0x28, 0xdf, 0x6a, + 0xec, 0xbe, 0xa8, 0x25, 0x5c, 0xef, 0xc4, 0x6f, 0xf9, 0xbe, 0xa2, 0x79, 0x7c, 0xfd, 0xc6, 0x7b, + 0x7a, 0x20, 0xfd, 0xac, 0xc1, 0x8a, 0xca, 0xb2, 0x92, 0xa1, 0xf4, 0x00, 0xda, 0xfc, 0x82, 0x93, + 0x01, 0x81, 0x2a, 0x96, 0x44, 0xb1, 0x4c, 0xa7, 0x5c, 0x2d, 0xd9, 0x29, 0x1b, 0xdf, 0x6b, 0x70, + 0x33, 0xf6, 0xe5, 0x49, 0xe0, 0x60, 0xf7, 0xf8, 0x5f, 0x86, 0xf5, 0x2f, 0x1a, 0xdc, 0x2a, 0xb6, + 0xef, 0xbf, 0x88, 0xf8, 0x77, 0x15, 0xb8, 0xc1, 0x8f, 0x10, 0x5b, 0xec, 0x01, 0xb1, 0xd1, 0x3b, + 0x70, 0xdd, 0x95, 0x59, 0x07, 0x97, 0x7e, 0x32, 0x9a, 0x53, 0x2d, 0xa1, 0x37, 0x68, 0x71, 0x1f, + 0x0b, 0x65, 0x28, 0xd7, 0x99, 0x25, 0xeb, 0xb9, 0xf2, 0x52, 0x9d, 0xf8, 0xe2, 0xd7, 0x0a, 0x3b, + 0xd0, 0x7a, 0x71, 0x07, 0xda, 0x90, 0x3b, 0xd0, 0xb7, 0x61, 0x91, 0x6b, 0xdf, 0x92, 0xda, 0xe8, + 0xfc, 0x82, 0x31, 0x02, 0x7d, 0x3f, 0x97, 0x57, 0xbb, 0xf8, 0x1c, 0x8f, 0xa6, 0x7c, 0x89, 0x8d, + 0xa8, 0x0c, 0x73, 0xbf, 0x6e, 0x46, 0xc4, 0x0c, 0xa1, 0xf5, 0x09, 0xdc, 0x2c, 0x3c, 0xad, 0x5c, + 0x60, 0xf5, 0x5e, 0x01, 0x5c, 0x79, 0xc6, 0x24, 0xf6, 0x71, 0x70, 0xee, 0x0c, 0x31, 0x7a, 0x08, + 0x6d, 0x61, 0x7a, 0x88, 0x56, 0x12, 0x05, 0xf2, 0x78, 0x52, 0x5f, 0x55, 0xf2, 0x89, 0x8f, 0xde, + 0x83, 0x56, 0x3a, 0x90, 0x43, 0x4b, 0xe9, 0xf1, 0xc2, 0x9c, 0x50, 0x5f, 0x56, 0x70, 0xa3, 0x9d, + 0xe9, 0x94, 0x8c, 0xef, 0x14, 0x07, 0x73, 0x7c, 0xa7, 0x3c, 0x4e, 0xdb, 0x84, 0x46, 0x34, 0x46, + 0x42, 0x8b, 0x89, 0x40, 0x3a, 0x29, 0xd3, 0x51, 0x96, 0x45, 0x7c, 0xea, 0xa4, 0x30, 0x4e, 0xe1, + 0x4e, 0xca, 0x93, 0x24, 0xee, 0x64, 0x76, 0xf6, 0xb2, 0xcd, 0xc6, 0xb5, 0xc2, 0xfc, 0x00, 0xdd, + 0x10, 0xf0, 0x90, 0xc7, 0x2b, 0xba, 0x5e, 0xb4, 0x94, 0x2a, 0x12, 0x3e, 0xae, 0x25, 0x45, 0xf2, + 0x97, 0xbd, 0xa4, 0x28, 0xfb, 0x3d, 0xfe, 0x29, 0x5c, 0x57, 0x34, 0xe1, 0x68, 0x5d, 0x86, 0x3a, + 0xdb, 0xc6, 0xe9, 0xb7, 0x27, 0xae, 0x47, 0x7a, 0x15, 0x5d, 0x31, 0xd7, 0xab, 0x6e, 0xd5, 0xb9, + 0xde, 0xa2, 0x96, 0x7a, 0x0f, 0x16, 0x73, 0x8d, 0x2a, 0xba, 0x25, 0x7e, 0xd1, 0xe5, 0x74, 0xae, + 0x4d, 0x58, 0x25, 0x3e, 0xfa, 0x0c, 0x96, 0x54, 0x7d, 0x1f, 0xba, 0x9d, 0xa9, 0x2e, 0x39, 0xbd, + 0x1b, 0x93, 0x05, 0x22, 0x63, 0x73, 0x8d, 0x18, 0x37, 0x56, 0xd5, 0x1d, 0x72, 0x63, 0xd5, 0x1d, + 0xdc, 0x29, 0xe8, 0xc5, 0x1d, 0x08, 0xba, 0x97, 0x5a, 0x34, 0xa9, 0xf9, 0xd2, 0xff, 0x3f, 0x8b, + 0x18, 0xf1, 0xd1, 0x7e, 0x3a, 0xc1, 0x11, 0xea, 0x06, 0x5a, 0xcb, 0x44, 0x93, 0xfc, 0x8e, 0xea, + 0xeb, 0x93, 0x96, 0x89, 0x8f, 0x30, 0x74, 0x8a, 0x9e, 0x39, 0x74, 0x27, 0xb3, 0x57, 0xf5, 0x50, + 0xeb, 0x77, 0xa7, 0x0b, 0x11, 0x1f, 0xbd, 0x80, 0xd5, 0x82, 0x9a, 0x87, 0x0c, 0x21, 0xb1, 0x0b, + 0x4a, 0xb0, 0x7e, 0x67, 0xaa, 0x0c, 0xf1, 0x1f, 0x2d, 0x7e, 0xbe, 0xd0, 0x8d, 0xff, 0x39, 0xf5, + 0x7e, 0xf4, 0xe7, 0x45, 0x83, 0xfd, 0xe7, 0xe9, 0xdd, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xaa, + 0xd5, 0x09, 0xd5, 0xbb, 0x1a, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index 0aca5fe82..0dd518e48 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -113,26 +113,35 @@ message LikeUser { string userName = 2; } +message NotificationUser { + string userID = 1; + string userName = 2; +} + message Comment { string userID = 1; string userName = 2; - string replyUserID = 3; - string replyUserName = 4; - string contentID = 5; - string content = 6; - int32 createTime = 7; + string faceURL = 3; + string replyUserID = 4; + string replyUserName = 5; + string contentID = 6; + string content = 7; + int32 createTime = 8; } message WorkMoment { string workMomentID = 1; string userID = 2; - string content = 3; - repeated LikeUser likeUsers = 4; - repeated Comment comments = 5; - repeated string whoCanSeeUserIDList = 6; - repeated string whoCantSeeUserIDList = 7; - bool isPrivate = 8; - int32 CreateTime = 10; + string userName = 3; + string faceURL = 4; + string content = 5; + repeated LikeUser likeUsers = 6; + repeated Comment comments = 7; + int32 permission = 8; + repeated string permissionUserIDList = 9; + repeated string permissionGroupIDList = 10; + repeated string atUserIDList = 11; + int32 createTime = 12; } message CreateOneWorkMomentReq { @@ -187,6 +196,18 @@ message GetWorkMomentByIDResp { 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; @@ -211,32 +232,14 @@ message GetUserFriendWorkMomentsResp { server_api_params.ResponsePagination Pagination = 3; } -message CommentsMsg { - Comment comment = 1; - string workMomentID = 2; - string userID = 3; - string content = 4; -} - -message GetUserWorkMomentsCommentsMsgReq { - string userID = 1; - string operationID = 2; - server_api_params.RequestPagination Pagination = 3; -} - -message GetUserWorkMomentsCommentsMsgResp { - CommonResp commonResp = 1; - repeated CommentsMsg commentsMsgs = 2; - server_api_params.ResponsePagination Pagination = 3; -} - -message ClearUserWorkMomentsCommentsMsgReq { - string userID = 1; - string operationID = 2; -} - -message ClearUserWorkMomentsCommentsMsgResp { - CommonResp commonResp = 1; +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 { @@ -263,12 +266,11 @@ service OfficeService { 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 GetUserWorkMomentsCommentsMsg(GetUserWorkMomentsCommentsMsgReq) returns(GetUserWorkMomentsCommentsMsgResp); - rpc ClearUserWorkMomentsCommentsMsg(ClearUserWorkMomentsCommentsMsgReq) returns(ClearUserWorkMomentsCommentsMsgResp); rpc SetUserWorkMomentsLevel(SetUserWorkMomentsLevelReq) returns(SetUserWorkMomentsLevelResp); } From 5757b86d3936080564105e11a6e2052a6fba4226 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 20 Apr 2022 16:32:22 +0800 Subject: [PATCH 107/128] workMoments --- internal/api/office/work_moments.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index df3bef8ca..e948992df 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -201,7 +201,10 @@ func GetWorkMomentByID(c *gin.Context) { 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 = respPb.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) } @@ -242,7 +245,9 @@ func GetUserWorkMoments(c *gin.Context) { if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - resp.Data.WorkMoments = respPb.WorkMoments + 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) @@ -285,7 +290,9 @@ func GetUserFriendWorkMoments(c *gin.Context) { if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - resp.Data.WorkMoments = respPb.WorkMoments + 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) From 2e6c42c8ac77e5932fc6fd2b0d1173b58d4d61b8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 20 Apr 2022 16:33:19 +0800 Subject: [PATCH 108/128] workMoments --- cmd/open_im_api/main.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 6f2d039da..cf1783117 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -148,8 +148,6 @@ func main() { 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("/get_user_work_moments_comments_msg", office.GetUserWorkMomentsCommentsMsg) - officeGroup.POST("/clear_user_work_moments_comments_msg", office.ClearUserWorkMomentsCommentsMsg) officeGroup.POST("/set_user_work_moments_level", office.SetUserWorkMomentsLevel) } From c32f5dd95113a227a49d6ef428f34d8290263b64 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 20 Apr 2022 18:06:24 +0800 Subject: [PATCH 109/128] pb file --- pkg/proto/user/user.proto | 44 ++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 21 deletions(-) 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; } From 54cb13ba62291e0e04c0dc7736f42214e627548f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 20 Apr 2022 18:06:43 +0800 Subject: [PATCH 110/128] pb file --- pkg/proto/user/user.pb.go | 354 ++++++++++++++++++++------------------ 1 file changed, 186 insertions(+), 168 deletions(-) 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) } +func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_e11c6a5241e13fcd) } -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, +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, } From 2b6ec1672c97cb5eec464a5480dbaf25c1b17b05 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 20 Apr 2022 18:39:12 +0800 Subject: [PATCH 111/128] Organization --- config/config.yaml | 3 +++ internal/api/auth/auth.go | 7 ++++--- .../msg_transfer/logic/persistent_msg_handler.go | 12 ++++++++---- pkg/common/config/config.go | 9 ++++++--- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index efac38557..598f8bfc2 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -204,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生成相关,默认即可 diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index fed744d4f..5e40298c2 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 } diff --git a/internal/msg_transfer/logic/persistent_msg_handler.go b/internal/msg_transfer/logic/persistent_msg_handler.go index 5400d54d6..0a815ca1a 100644 --- a/internal/msg_transfer/logic/persistent_msg_handler.go +++ b/internal/msg_transfer/logic/persistent_msg_handler.go @@ -56,10 +56,14 @@ func (pc *PersistentConsumerHandler) handleChatWs2Mysql(msg []byte, msgKey strin } } if tag { - log.NewInfo(msgFromMQ.OperationID, "msg_transfer msg persisting", string(msg)) - if err = im_mysql_msg_model.InsertMessageToChatLog(msgFromMQ); err != nil { - log.NewError(msgFromMQ.OperationID, "Message insert failed", "err", err.Error(), "msg", msgFromMQ.String()) - return + if config.Config.ChatPersistenceMysql == true { + log.NewInfo(msgFromMQ.OperationID, "msg_transfer msg persisting", string(msg)) + if err = im_mysql_msg_model.InsertMessageToChatLog(msgFromMQ); err != nil { + log.NewError(msgFromMQ.OperationID, "Message insert failed", "err", err.Error(), "msg", msgFromMQ.String()) + return + } + } else { + log.Debug(msgFromMQ.OperationID, "don't insert to db", string(msg)) } } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 9f51871f3..926ada32e 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -176,6 +176,7 @@ type config struct { AppManagerUid []string `yaml:"appManagerUid"` Secrets []string `yaml:"secrets"` } + Kafka struct { Ws2mschat struct { Addr []string `yaml:"addr"` @@ -191,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"` } From 00664822eccb2da8e8f848667c314d5b28e53f7f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 20 Apr 2022 18:47:21 +0800 Subject: [PATCH 112/128] conversation add fields --- internal/api/auth/auth.go | 2 +- internal/rpc/group/group.go | 41 ++++++++++++++++++- internal/rpc/user/user.go | 3 +- pkg/base_info/conversation_api_struct.go | 2 + pkg/common/db/model_struct.go | 2 + .../mysql_model/im_mysql_model/user_model.go | 3 +- pkg/utils/strings.go | 2 + 7 files changed, 51 insertions(+), 4 deletions(-) diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index fed744d4f..0211d8524 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -86,6 +86,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/rpc/group/group.go b/internal/rpc/group/group.go index e71647d55..a6a5dadbc 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" @@ -576,6 +577,22 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) } chat.MemberQuitNotification(req) + //modify quitter conversation info + var reqPb pbUser.SetConversationReq + reqPb.OperationID = req.OperationID + reqPb.Conversation.OwnerUserID = req.OpUserID + reqPb.Conversation.ConversationID = utils.GetConversationIDBySessionType(req.OpUserID, constant.GroupChatType) + reqPb.Conversation.ConversationType = constant.GroupChatType + reqPb.Conversation.GroupID = req.GroupID + reqPb.Conversation.IsNotInGroup = true + 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.OpUserID, utils.GetSelfFuncName(), respPb.String()) + } 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 } @@ -988,13 +1005,35 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } chat.GroupDismissedNotification(req) - + 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 + for _, v := range memberList { + reqPb.OperationID = req.OperationID + reqPb.Conversation.OwnerUserID = v.UserID + reqPb.Conversation.ConversationID = utils.GetConversationIDBySessionType(v.UserID, constant.GroupChatType) + reqPb.Conversation.ConversationType = constant.GroupChatType + reqPb.Conversation.GroupID = req.GroupID + reqPb.Conversation.IsNotInGroup = true + 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.OpUserID, utils.GetSelfFuncName(), respPb.String(), v.UserID) + } + } 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 } diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 6aaea1d78..11c635e90 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} 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/common/db/model_struct.go b/pkg/common/db/model_struct.go index 9591050e0..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"` } 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..5d1a08035 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 } } diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go index 49d883f7c..a05ba927a 100644 --- a/pkg/utils/strings.go +++ b/pkg/utils/strings.go @@ -85,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 "" } From bcad3c1ced07577b5dff449257fe24a26baf4b65 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 20 Apr 2022 18:53:23 +0800 Subject: [PATCH 113/128] add save message to mysql switch --- internal/msg_transfer/logic/init.go | 8 ++++++-- .../msg_transfer/logic/persistent_msg_handler.go | 12 ++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) 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/msg_transfer/logic/persistent_msg_handler.go b/internal/msg_transfer/logic/persistent_msg_handler.go index 0a815ca1a..5400d54d6 100644 --- a/internal/msg_transfer/logic/persistent_msg_handler.go +++ b/internal/msg_transfer/logic/persistent_msg_handler.go @@ -56,14 +56,10 @@ func (pc *PersistentConsumerHandler) handleChatWs2Mysql(msg []byte, msgKey strin } } if tag { - if config.Config.ChatPersistenceMysql == true { - log.NewInfo(msgFromMQ.OperationID, "msg_transfer msg persisting", string(msg)) - if err = im_mysql_msg_model.InsertMessageToChatLog(msgFromMQ); err != nil { - log.NewError(msgFromMQ.OperationID, "Message insert failed", "err", err.Error(), "msg", msgFromMQ.String()) - return - } - } else { - log.Debug(msgFromMQ.OperationID, "don't insert to db", string(msg)) + log.NewInfo(msgFromMQ.OperationID, "msg_transfer msg persisting", string(msg)) + if err = im_mysql_msg_model.InsertMessageToChatLog(msgFromMQ); err != nil { + log.NewError(msgFromMQ.OperationID, "Message insert failed", "err", err.Error(), "msg", msgFromMQ.String()) + return } } From 62e605a443d0256448f0b085e8b6dde2629a59fd Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 21 Apr 2022 10:43:31 +0800 Subject: [PATCH 114/128] workMoments --- internal/api/office/work_moments.go | 1 + internal/rpc/msg/work_moments_notification.go | 24 +- internal/rpc/office/office.go | 35 +- pkg/base_info/work_moments_struct.go | 20 +- pkg/common/db/mongoModel.go | 38 +- pkg/proto/office/office.pb.go | 425 +++++++++++------- pkg/proto/office/office.proto | 18 +- 7 files changed, 325 insertions(+), 236 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index e948992df..fcea9a1a0 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -202,6 +202,7 @@ func GetWorkMomentByID(c *gin.Context) { 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()) } diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go index 7c33f7bb3..4631abf06 100644 --- a/internal/rpc/msg/work_moments_notification.go +++ b/internal/rpc/msg/work_moments_notification.go @@ -4,28 +4,38 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" pbOffice "Open_IM/pkg/proto/office" + open_im_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(), recvID) - bytes, err := proto.Marshal(notificationMsg) - if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), "proto marshal failed", err.Error()) - } - WorkMomentNotification(operationID, sendID, recvID, bytes) + WorkMomentNotification(operationID, sendID, recvID, notificationMsg) } -func WorkMomentNotification(operationID, sendID, recvID string, content []byte) { +func WorkMomentNotification(operationID, sendID, recvID string, m proto.Message) { + marshaler := jsonpb.Marshaler{ + OrigName: true, + EnumsAsInts: false, + EmitDefaults: false, + } + var tips open_im_sdk.TipsComm + var err error + tips.JsonDetail, _ = marshaler.MarshalToString(m) n := &NotificationMsg{ SendID: sendID, RecvID: recvID, - Content: content, MsgFrom: constant.UserMsgType, ContentType: constant.WorkMomentNotification, SessionType: constant.UserMsgType, OperationID: operationID, } + n.Content, err = proto.Marshal(m) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "proto marshal falied", err.Error()) + return + } Notification(n) } diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 734c6a92e..cdcff1112 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -285,16 +285,19 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea if err := utils.CopyStructFields(&workMoment, req.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupIDList, req.WorkMoment.PermissionUserIDList) - for _, userID := range req.WorkMoment.AtUserIDList { - userName, err := imdb.GetUserNameByUserID(userID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", userID, err.Error()) - continue + workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupList, req.WorkMoment.PermissionUserList) + for _, user := range req.WorkMoment.AtUserList { + if user.UserName == "" { + userName, err := imdb.GetUserNameByUserID(user.UserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", user.UserID, err.Error()) + continue + } + user.UserName = userName } workMoment.AtUserList = append(workMoment.AtUserList, &db.AtUser{ - UserID: userID, - UserName: userName, + UserID: user.UserID, + UserName: user.UserName, }) } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment to create", workMoment) @@ -306,7 +309,7 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea } // send notification to at users - for _, atUser := range req.WorkMoment.AtUserIDList { + for _, atUser := range req.WorkMoment.AtUserList { workMomentNotificationMsg := &pbOffice.WorkMomentNotificationMsg{ NotificationMsgType: constant.WorkMomentAtUserNotification, WorkMomentID: workMoment.WorkMomentID, @@ -315,23 +318,27 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea FaceURL: createUser.FaceURL, UserName: createUser.Nickname, } - msg.WorkMomentSendNotification(req.OperationID, workMoment.UserID, atUser, workMomentNotificationMsg) + 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, groupIDList, userIDList []string) []string { +func (s *officeServer) getPermissionUserIDList(operationID string, groupList []*pbOffice.PermissionGroup, userList []*pbOffice.WorkMomentUser) []string { var permissionUserIDList []string - for _, groupID := range groupIDList { - GroupMemberIDList, err := imdb.GetGroupMemberIDListByGroupID(groupID) + for _, group := range groupList { + GroupMemberIDList, err := imdb.GetGroupMemberIDListByGroupID(group.GroupID) if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID failed", groupID, err.Error()) + 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 diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index d39f3f981..cb418b448 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -45,16 +45,16 @@ type GetWorkMomentByIDReq struct { } type WorkMoment struct { - WorkMomentID string `json:"workMomentID"` - UserID string `json:"userID"` - Content string `json:"content"` - LikeUsers []*LikeUser `json:"likeUsers"` - Comments []*Comment `json:"comments"` - Permission int32 `json:"permission"` - PermissionUserIDList []string `json:"permissionUserIDList"` - PermissionGroupIDList []string `json:"permissionGroupIDList"` - AtUserIDList []string `json:"atUserIDList"` - CreateTime int32 `json:"createTime,omitempty"` + WorkMomentID string `json:"workMomentID"` + UserID string `json:"userID"` + Content string `json:"content"` + LikeUsers []*LikeUser `json:"likeUsers"` + Comments []*Comment `json:"comments"` + //Permission int32 `json:"permission"` + //PermissionUserIDList []string `json:"permissionUserIDList"` + //PermissionGroupIDList []string `json:"permissionGroupIDList"` + AtUserIDList []string `json:"atUserIDList"` + CreateTime int32 `json:"createTime,omitempty"` } type LikeUser struct { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 20bf470f2..4a08ffba4 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -642,7 +642,7 @@ func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) 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_users": workMoment.LikeUserList}}) + _, err = c.UpdateOne(ctx, bson.M{"work_moment_id": workMomentID}, bson.M{"$set": bson.M{"like_user_list": workMoment.LikeUserList}}) return workMoment, err } @@ -683,42 +683,6 @@ func (d *DataBases) GetUserFriendWorkMomentsRecursion(friendIDList []string, sho return workMomentList, nil } err = result.All(ctx, &workMomentList) - //if len(workMomentList) == 0 { - // return workMomentList, nil - //} - //for i, workMoment := range workMomentList { - // if workMoment.IsPrivate { - // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) - // continue - // } - // - // var isContain bool - // for _, WhoCanSeeUserID := range workMoment.WhoCanSeeUserIDList { - // if WhoCanSeeUserID == userID { - // isContain = true - // break - // } - // } - // if !isContain { - // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) - // continue - // } - // - // for _, whoCantSeeUserID := range workMoment.WhoCantSeeUserIDList { - // if whoCantSeeUserID == userID { - // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) - // break - // } - // } - //} - // - //if len(workMomentList) < int(pageNumber) { - // workMomentListWorkMomentList, err := d.GetUserFriendWorkMomentsRecursion(friendIDList, showNumber, pageNumber, userID) - // workMomentList = append(workMomentList, workMomentListWorkMomentList...) - // if err != nil { - // return workMomentList, err - // } - //} return workMomentList, err } diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index 8e4f76511..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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []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_1d2fa21c23f88044, []int{17} + return fileDescriptor_office_02f43b66ea327245, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_1d2fa21c23f88044, []int{18} + return fileDescriptor_office_02f43b66ea327245, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1014,7 +1014,7 @@ 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_1d2fa21c23f88044, []int{19} + return fileDescriptor_office_02f43b66ea327245, []int{19} } func (m *NotificationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NotificationUser.Unmarshal(m, b) @@ -1066,7 +1066,7 @@ 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_1d2fa21c23f88044, []int{20} + return fileDescriptor_office_02f43b66ea327245, []int{20} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1142,29 +1142,121 @@ func (m *Comment) GetCreateTime() int32 { 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"` - LikeUsers []*LikeUser `protobuf:"bytes,6,rep,name=likeUsers" json:"likeUsers,omitempty"` - Comments []*Comment `protobuf:"bytes,7,rep,name=comments" json:"comments,omitempty"` - Permission int32 `protobuf:"varint,8,opt,name=permission" json:"permission,omitempty"` - PermissionUserIDList []string `protobuf:"bytes,9,rep,name=permissionUserIDList" json:"permissionUserIDList,omitempty"` - PermissionGroupIDList []string `protobuf:"bytes,10,rep,name=permissionGroupIDList" json:"permissionGroupIDList,omitempty"` - AtUserIDList []string `protobuf:"bytes,11,rep,name=atUserIDList" json:"atUserIDList,omitempty"` - CreateTime int32 `protobuf:"varint,12,opt,name=createTime" json:"createTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + 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_1d2fa21c23f88044, []int{21} + return fileDescriptor_office_02f43b66ea327245, []int{23} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1219,9 +1311,9 @@ func (m *WorkMoment) GetContent() string { return "" } -func (m *WorkMoment) GetLikeUsers() []*LikeUser { +func (m *WorkMoment) GetLikeUserList() []*WorkMomentUser { if m != nil { - return m.LikeUsers + return m.LikeUserList } return nil } @@ -1240,23 +1332,23 @@ func (m *WorkMoment) GetPermission() int32 { return 0 } -func (m *WorkMoment) GetPermissionUserIDList() []string { +func (m *WorkMoment) GetPermissionUserList() []*WorkMomentUser { if m != nil { - return m.PermissionUserIDList + return m.PermissionUserList } return nil } -func (m *WorkMoment) GetPermissionGroupIDList() []string { +func (m *WorkMoment) GetPermissionGroupList() []*PermissionGroup { if m != nil { - return m.PermissionGroupIDList + return m.PermissionGroupList } return nil } -func (m *WorkMoment) GetAtUserIDList() []string { +func (m *WorkMoment) GetAtUserList() []*WorkMomentUser { if m != nil { - return m.AtUserIDList + return m.AtUserList } return nil } @@ -1280,7 +1372,7 @@ 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_1d2fa21c23f88044, []int{22} + return fileDescriptor_office_02f43b66ea327245, []int{24} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1325,7 +1417,7 @@ 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_1d2fa21c23f88044, []int{23} + return fileDescriptor_office_02f43b66ea327245, []int{25} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1365,7 +1457,7 @@ 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_1d2fa21c23f88044, []int{24} + return fileDescriptor_office_02f43b66ea327245, []int{26} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1417,7 +1509,7 @@ 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_1d2fa21c23f88044, []int{25} + return fileDescriptor_office_02f43b66ea327245, []int{27} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1457,7 +1549,7 @@ 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_1d2fa21c23f88044, []int{26} + return fileDescriptor_office_02f43b66ea327245, []int{28} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1509,7 +1601,7 @@ 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_1d2fa21c23f88044, []int{27} + return fileDescriptor_office_02f43b66ea327245, []int{29} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1551,7 +1643,7 @@ 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_1d2fa21c23f88044, []int{28} + return fileDescriptor_office_02f43b66ea327245, []int{30} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1617,7 +1709,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{29} + return fileDescriptor_office_02f43b66ea327245, []int{31} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1657,7 +1749,7 @@ 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_1d2fa21c23f88044, []int{30} + return fileDescriptor_office_02f43b66ea327245, []int{32} } func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) @@ -1710,7 +1802,7 @@ 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_1d2fa21c23f88044, []int{31} + return fileDescriptor_office_02f43b66ea327245, []int{33} } func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) @@ -1759,7 +1851,7 @@ func (m *ChangeWorkMomentPermissionReq) Reset() { *m = ChangeWorkMomentP func (m *ChangeWorkMomentPermissionReq) String() string { return proto.CompactTextString(m) } func (*ChangeWorkMomentPermissionReq) ProtoMessage() {} func (*ChangeWorkMomentPermissionReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{32} + return fileDescriptor_office_02f43b66ea327245, []int{34} } func (m *ChangeWorkMomentPermissionReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChangeWorkMomentPermissionReq.Unmarshal(m, b) @@ -1825,7 +1917,7 @@ func (m *ChangeWorkMomentPermissionResp) Reset() { *m = ChangeWorkMoment func (m *ChangeWorkMomentPermissionResp) String() string { return proto.CompactTextString(m) } func (*ChangeWorkMomentPermissionResp) ProtoMessage() {} func (*ChangeWorkMomentPermissionResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{33} + return fileDescriptor_office_02f43b66ea327245, []int{35} } func (m *ChangeWorkMomentPermissionResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChangeWorkMomentPermissionResp.Unmarshal(m, b) @@ -1865,7 +1957,7 @@ 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_1d2fa21c23f88044, []int{34} + return fileDescriptor_office_02f43b66ea327245, []int{36} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1919,7 +2011,7 @@ 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_1d2fa21c23f88044, []int{35} + return fileDescriptor_office_02f43b66ea327245, []int{37} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1973,7 +2065,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{36} + return fileDescriptor_office_02f43b66ea327245, []int{38} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -2027,7 +2119,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{37} + return fileDescriptor_office_02f43b66ea327245, []int{39} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -2085,7 +2177,7 @@ func (m *WorkMomentNotificationMsg) Reset() { *m = WorkMomentNotificatio func (m *WorkMomentNotificationMsg) String() string { return proto.CompactTextString(m) } func (*WorkMomentNotificationMsg) ProtoMessage() {} func (*WorkMomentNotificationMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{38} + return fileDescriptor_office_02f43b66ea327245, []int{40} } func (m *WorkMomentNotificationMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMomentNotificationMsg.Unmarshal(m, b) @@ -2167,7 +2259,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{39} + return fileDescriptor_office_02f43b66ea327245, []int{41} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2219,7 +2311,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_1d2fa21c23f88044, []int{40} + return fileDescriptor_office_02f43b66ea327245, []int{42} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2268,6 +2360,8 @@ func init() { 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") @@ -2861,106 +2955,109 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_1d2fa21c23f88044) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_02f43b66ea327245) } -var fileDescriptor_office_1d2fa21c23f88044 = []byte{ - // 1559 bytes of a gzipped FileDescriptorProto +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, 0x8e, 0x3f, 0x36, 0x93, 0xd8, 0xf1, 0x7f, 0x92, - 0xfc, 0x15, 0x3e, 0xb4, 0x46, 0x4b, 0x0e, 0x48, 0x88, 0x08, 0xc5, 0x9b, 0x58, 0x06, 0x6f, 0x62, - 0xc6, 0x36, 0x11, 0x1c, 0xb0, 0x26, 0xeb, 0xf6, 0x30, 0xf2, 0xee, 0xcc, 0x64, 0x7a, 0x6c, 0xe3, - 0x13, 0x52, 0x5e, 0x81, 0x03, 0x5c, 0x78, 0x0a, 0x1e, 0x01, 0x71, 0xe0, 0x84, 0x38, 0xf0, 0x06, - 0xbc, 0x03, 0x57, 0xd4, 0x3d, 0x1f, 0xdd, 0x3d, 0xd3, 0xb3, 0xbb, 0x19, 0x40, 0x82, 0x93, 0xb7, - 0xaa, 0xab, 0xab, 0xab, 0x7e, 0x5d, 0x55, 0x5d, 0x53, 0x86, 0xeb, 0xde, 0xc9, 0x89, 0x33, 0xc4, - 0x9b, 0xd1, 0x9f, 0xae, 0x1f, 0x78, 0xa1, 0x87, 0x1a, 0x11, 0xa5, 0xff, 0xef, 0x99, 0x8f, 0xdd, - 0xa3, 0x9d, 0xc1, 0xa6, 0x7f, 0x6a, 0x6f, 0xb2, 0xa5, 0x4d, 0x72, 0x7c, 0x7a, 0x74, 0x41, 0x36, - 0x2f, 0x48, 0x24, 0x6a, 0x3c, 0x04, 0xd8, 0xf2, 0xc6, 0x63, 0xcf, 0x35, 0x31, 0xf1, 0x51, 0x07, - 0x9a, 0x38, 0x08, 0xb6, 0xbc, 0x63, 0xdc, 0xd1, 0x36, 0xb4, 0xfb, 0x75, 0x33, 0x21, 0xd1, 0x0a, - 0x34, 0x70, 0x10, 0x0c, 0x88, 0xdd, 0xa9, 0x6c, 0x68, 0xf7, 0x5b, 0x66, 0x4c, 0x19, 0x1f, 0x40, - 0xf3, 0xc0, 0xb2, 0x0f, 0x09, 0x0e, 0xa8, 0xc8, 0x19, 0xc1, 0xc1, 0x4e, 0x9f, 0xed, 0x6d, 0x99, - 0x31, 0x85, 0x74, 0x98, 0xa3, 0xbf, 0x9e, 0x5a, 0x63, 0x1c, 0x6f, 0x4e, 0x69, 0xe3, 0x05, 0x54, - 0x0f, 0x2c, 0x1b, 0x2d, 0x41, 0x3d, 0xb4, 0xec, 0x74, 0x67, 0x44, 0x50, 0x6b, 0x42, 0xcb, 0x16, - 0xf6, 0x25, 0x24, 0x7a, 0x2b, 0x52, 0xb9, 0xeb, 0x90, 0xb0, 0x53, 0xdd, 0xa8, 0xde, 0x6f, 0xf7, - 0x16, 0xba, 0x31, 0x02, 0xb1, 0x35, 0x66, 0x2a, 0x60, 0x7c, 0x04, 0x57, 0xb7, 0x71, 0x48, 0x99, - 0x07, 0x96, 0x4d, 0x4c, 0xfc, 0xb2, 0xd0, 0xd2, 0x0d, 0x68, 0x7b, 0x3e, 0x0e, 0xac, 0xd0, 0xf1, - 0xdc, 0x9d, 0x7e, 0x7c, 0xa8, 0xc8, 0x32, 0x4e, 0x60, 0x41, 0xd2, 0x45, 0x7c, 0xd4, 0x03, 0x18, - 0xa6, 0x08, 0x32, 0x85, 0xed, 0x1e, 0x4a, 0xac, 0xe1, 0xd8, 0x9a, 0x82, 0x14, 0xba, 0x0d, 0xb5, - 0xd0, 0xb2, 0x49, 0xa7, 0xc2, 0x6c, 0x6f, 0x0b, 0xb6, 0x9b, 0x6c, 0xc1, 0x78, 0xa5, 0xc1, 0xfc, - 0x56, 0x80, 0xad, 0x10, 0x53, 0x1e, 0x7e, 0x29, 0x62, 0xa1, 0xc9, 0x58, 0x70, 0x67, 0x2a, 0x92, - 0x33, 0xeb, 0x00, 0xd1, 0xaf, 0x14, 0xa5, 0x96, 0x29, 0x70, 0xb2, 0xce, 0xd6, 0xf2, 0xce, 0x6e, - 0xc1, 0x15, 0xc1, 0x86, 0x72, 0xae, 0x1a, 0x5f, 0xc0, 0x7c, 0x1f, 0x8f, 0x70, 0xea, 0x48, 0x11, - 0xf6, 0x69, 0x08, 0x54, 0xc4, 0x10, 0xc8, 0x18, 0x59, 0x55, 0x1a, 0x29, 0xe8, 0x2f, 0x69, 0xe4, - 0xaf, 0x1a, 0xb4, 0xf6, 0x71, 0x58, 0xca, 0xc4, 0x0e, 0x34, 0x5d, 0x7c, 0xc1, 0x6e, 0x26, 0x32, - 0x2f, 0x21, 0x51, 0x17, 0x90, 0xe3, 0x0e, 0x03, 0x6c, 0x11, 0x7c, 0xc8, 0x6f, 0xa2, 0xc6, 0x6e, - 0x42, 0xb1, 0x82, 0xde, 0x84, 0x6b, 0x01, 0x3e, 0x3e, 0x1b, 0x8a, 0xd2, 0x75, 0x26, 0x9d, 0xe3, - 0x67, 0x81, 0x69, 0xe4, 0x81, 0xf9, 0x10, 0x20, 0x71, 0xa9, 0x24, 0x2a, 0xbf, 0x6b, 0x70, 0x75, - 0x1f, 0xbb, 0xc7, 0x03, 0x62, 0xf7, 0xa4, 0x30, 0x64, 0x96, 0x69, 0xcc, 0xb2, 0x84, 0xa4, 0x59, - 0x7e, 0x98, 0xa4, 0x64, 0x85, 0x2d, 0xa5, 0x34, 0xba, 0x05, 0xad, 0xed, 0xc0, 0x3b, 0xf3, 0x85, - 0x48, 0xe4, 0x0c, 0x0a, 0x37, 0xc1, 0xee, 0x71, 0x1a, 0x83, 0x31, 0x45, 0xe1, 0xa0, 0xbf, 0x70, - 0xb0, 0x37, 0xb2, 0xc2, 0x13, 0x2f, 0x18, 0xef, 0xf4, 0x3b, 0x75, 0x56, 0x95, 0x72, 0x7c, 0x6a, - 0xd7, 0xd0, 0x73, 0x43, 0xec, 0x86, 0x31, 0x14, 0x09, 0x99, 0x05, 0xaa, 0x99, 0x07, 0xea, 0x31, - 0x2c, 0x48, 0x5e, 0x96, 0x44, 0xeb, 0x1b, 0x0d, 0x16, 0xb7, 0x19, 0xe0, 0x54, 0xdb, 0xae, 0x17, - 0x95, 0x9a, 0x3e, 0xc0, 0x9e, 0x65, 0x3b, 0x2e, 0x3b, 0x2c, 0xd6, 0x74, 0xb7, 0x4b, 0x70, 0x70, - 0x8e, 0x83, 0x23, 0xcb, 0x77, 0x8e, 0x7c, 0x2b, 0xb0, 0xc6, 0xa4, 0x6b, 0xe2, 0x97, 0x67, 0x98, - 0x84, 0x5c, 0xd6, 0x14, 0xf6, 0x15, 0xe6, 0xf8, 0xf4, 0xf4, 0xf0, 0x00, 0xb8, 0x45, 0x52, 0xdd, - 0xd4, 0xa6, 0xd4, 0x4d, 0x11, 0xd3, 0x8a, 0x8c, 0xa9, 0x0e, 0x73, 0xf4, 0x06, 0x0e, 0x9c, 0x38, - 0xe6, 0xab, 0x66, 0x4a, 0x1b, 0x3f, 0x69, 0x80, 0xb2, 0x30, 0x94, 0xac, 0x92, 0x8f, 0x25, 0xec, - 0x2a, 0x6c, 0xcf, 0x3d, 0x25, 0x76, 0xc4, 0xf7, 0x5c, 0x82, 0x0b, 0xc0, 0x7b, 0x00, 0xed, 0x90, - 0x5b, 0x13, 0xbf, 0x17, 0x48, 0xf0, 0x3b, 0x5e, 0x32, 0x45, 0x31, 0x63, 0xc8, 0x6e, 0x33, 0xae, - 0xf4, 0x8f, 0x2e, 0x77, 0xfa, 0xff, 0x44, 0xf1, 0xb2, 0x19, 0x56, 0xd2, 0x21, 0x25, 0xb1, 0x5a, - 0x83, 0x6a, 0x68, 0xd9, 0x31, 0x48, 0xd2, 0x83, 0x42, 0xf9, 0xc6, 0x43, 0x98, 0xdb, 0x75, 0x4e, - 0x71, 0xe9, 0x77, 0xfa, 0x09, 0x5c, 0x7b, 0xea, 0x85, 0xce, 0x89, 0x33, 0x64, 0xa6, 0x97, 0xd6, - 0xf3, 0x87, 0x06, 0x4d, 0xea, 0x01, 0x8d, 0xa2, 0x12, 0xfb, 0x69, 0x4c, 0x9e, 0x58, 0x43, 0x7c, - 0x68, 0xee, 0x26, 0xc5, 0x36, 0x26, 0x29, 0xd8, 0x01, 0xf6, 0x47, 0x97, 0x51, 0x8d, 0x4c, 0x9e, - 0x33, 0x81, 0x85, 0xee, 0xc2, 0x95, 0x94, 0x64, 0xca, 0xeb, 0x4c, 0x46, 0x66, 0xd2, 0x5a, 0x15, - 0x87, 0x79, 0x5a, 0x56, 0x39, 0x43, 0xcc, 0x89, 0xa6, 0x9c, 0x13, 0xeb, 0x00, 0xc3, 0xe8, 0xb1, - 0xa4, 0x59, 0x31, 0xc7, 0xea, 0x94, 0xc0, 0x31, 0x7e, 0xac, 0x02, 0x3c, 0xf7, 0x82, 0xd3, 0x81, - 0xc7, 0x9c, 0x37, 0x60, 0xfe, 0x22, 0xa5, 0x52, 0x08, 0x24, 0x5e, 0x61, 0xd6, 0x8b, 0x00, 0x55, - 0x8b, 0x01, 0xaa, 0xc9, 0x00, 0x09, 0xa6, 0xd7, 0x65, 0xd3, 0xbb, 0xd0, 0x1a, 0xc5, 0xc1, 0x41, - 0x3a, 0x0d, 0x96, 0x1e, 0xd7, 0x92, 0x08, 0x4a, 0xa2, 0xc6, 0xe4, 0x22, 0xb4, 0x8a, 0x0c, 0xa3, - 0x3b, 0x24, 0x9d, 0xa6, 0x5c, 0x45, 0xe2, 0xbb, 0x35, 0x53, 0x01, 0x8a, 0x8b, 0x8f, 0x83, 0xb1, - 0x43, 0x08, 0x4d, 0xe2, 0x18, 0x17, 0xce, 0x41, 0x3d, 0x58, 0xe2, 0x94, 0xf0, 0xf0, 0xb5, 0xd8, - 0x33, 0xa1, 0x5c, 0x43, 0x0f, 0x60, 0x99, 0xf3, 0xd9, 0x43, 0x12, 0x6f, 0x02, 0xb6, 0x49, 0xbd, - 0x48, 0x21, 0xb7, 0x42, 0xe1, 0x84, 0x36, 0x13, 0x96, 0x78, 0x99, 0x5b, 0x9c, 0xcf, 0xdd, 0xa2, - 0x0b, 0x2b, 0x51, 0x4b, 0xf4, 0xcc, 0xc5, 0xfc, 0x36, 0x69, 0x69, 0xe8, 0x01, 0xf0, 0xcb, 0xcb, - 0x26, 0xad, 0x20, 0x2a, 0x48, 0xcd, 0xd0, 0x6f, 0x0e, 0x60, 0x55, 0x79, 0x5e, 0xc9, 0x37, 0xea, - 0x1c, 0x56, 0xa2, 0x66, 0x29, 0x67, 0xfe, 0x5f, 0x89, 0xc7, 0xe9, 0x75, 0x6e, 0x00, 0xab, 0xca, - 0x73, 0x4b, 0xba, 0x11, 0xc2, 0x12, 0x8d, 0xcb, 0x9c, 0x13, 0x45, 0x15, 0xc5, 0x80, 0xf9, 0xe7, - 0xa2, 0x73, 0x91, 0xf9, 0x12, 0x6f, 0x06, 0x27, 0x3e, 0x86, 0x65, 0xc5, 0xa9, 0x25, 0x5d, 0xf8, - 0x41, 0x83, 0xd5, 0x38, 0x59, 0x5e, 0xc7, 0x8d, 0x0b, 0x85, 0x1b, 0x17, 0x19, 0x37, 0xc4, 0x32, - 0x58, 0xcd, 0x97, 0x41, 0xa1, 0x0e, 0xd4, 0x26, 0xb6, 0x4a, 0xf5, 0x3c, 0x04, 0x4f, 0xa1, 0xa3, - 0x36, 0xba, 0x24, 0x0a, 0x5f, 0xc1, 0xd2, 0x36, 0x0e, 0xb9, 0xa2, 0xe4, 0x9d, 0x9d, 0x25, 0x1a, - 0x75, 0x98, 0xf3, 0xfc, 0x43, 0x31, 0x1e, 0x53, 0x7a, 0x86, 0xcb, 0xfc, 0x1a, 0x96, 0x15, 0x27, - 0x97, 0x7c, 0x7c, 0xe5, 0xdc, 0xaf, 0xcc, 0x92, 0xfb, 0xc6, 0x6f, 0x1a, 0xac, 0x6d, 0x7d, 0x69, - 0xb9, 0xb6, 0x80, 0xe3, 0x5e, 0x5a, 0xb7, 0xfe, 0x0e, 0x10, 0xe4, 0xca, 0x5b, 0x9d, 0xb9, 0xf2, - 0xd6, 0x26, 0x54, 0xde, 0xe9, 0x21, 0x72, 0x00, 0xeb, 0x93, 0xdc, 0x2a, 0x19, 0x28, 0xdf, 0x6a, - 0xec, 0xbe, 0xa8, 0x25, 0x5c, 0xef, 0xc4, 0x6f, 0xf9, 0xbe, 0xa2, 0x79, 0x7c, 0xfd, 0xc6, 0x7b, - 0x7a, 0x20, 0xfd, 0xac, 0xc1, 0x8a, 0xca, 0xb2, 0x92, 0xa1, 0xf4, 0x00, 0xda, 0xfc, 0x82, 0x93, - 0x01, 0x81, 0x2a, 0x96, 0x44, 0xb1, 0x4c, 0xa7, 0x5c, 0x2d, 0xd9, 0x29, 0x1b, 0xdf, 0x6b, 0x70, - 0x33, 0xf6, 0xe5, 0x49, 0xe0, 0x60, 0xf7, 0xf8, 0x5f, 0x86, 0xf5, 0x2f, 0x1a, 0xdc, 0x2a, 0xb6, - 0xef, 0xbf, 0x88, 0xf8, 0x77, 0x15, 0xb8, 0xc1, 0x8f, 0x10, 0x5b, 0xec, 0x01, 0xb1, 0xd1, 0x3b, - 0x70, 0xdd, 0x95, 0x59, 0x07, 0x97, 0x7e, 0x32, 0x9a, 0x53, 0x2d, 0xa1, 0x37, 0x68, 0x71, 0x1f, - 0x0b, 0x65, 0x28, 0xd7, 0x99, 0x25, 0xeb, 0xb9, 0xf2, 0x52, 0x9d, 0xf8, 0xe2, 0xd7, 0x0a, 0x3b, - 0xd0, 0x7a, 0x71, 0x07, 0xda, 0x90, 0x3b, 0xd0, 0xb7, 0x61, 0x91, 0x6b, 0xdf, 0x92, 0xda, 0xe8, - 0xfc, 0x82, 0x31, 0x02, 0x7d, 0x3f, 0x97, 0x57, 0xbb, 0xf8, 0x1c, 0x8f, 0xa6, 0x7c, 0x89, 0x8d, - 0xa8, 0x0c, 0x73, 0xbf, 0x6e, 0x46, 0xc4, 0x0c, 0xa1, 0xf5, 0x09, 0xdc, 0x2c, 0x3c, 0xad, 0x5c, - 0x60, 0xf5, 0x5e, 0x01, 0x5c, 0x79, 0xc6, 0x24, 0xf6, 0x71, 0x70, 0xee, 0x0c, 0x31, 0x7a, 0x08, - 0x6d, 0x61, 0x7a, 0x88, 0x56, 0x12, 0x05, 0xf2, 0x78, 0x52, 0x5f, 0x55, 0xf2, 0x89, 0x8f, 0xde, - 0x83, 0x56, 0x3a, 0x90, 0x43, 0x4b, 0xe9, 0xf1, 0xc2, 0x9c, 0x50, 0x5f, 0x56, 0x70, 0xa3, 0x9d, - 0xe9, 0x94, 0x8c, 0xef, 0x14, 0x07, 0x73, 0x7c, 0xa7, 0x3c, 0x4e, 0xdb, 0x84, 0x46, 0x34, 0x46, - 0x42, 0x8b, 0x89, 0x40, 0x3a, 0x29, 0xd3, 0x51, 0x96, 0x45, 0x7c, 0xea, 0xa4, 0x30, 0x4e, 0xe1, - 0x4e, 0xca, 0x93, 0x24, 0xee, 0x64, 0x76, 0xf6, 0xb2, 0xcd, 0xc6, 0xb5, 0xc2, 0xfc, 0x00, 0xdd, - 0x10, 0xf0, 0x90, 0xc7, 0x2b, 0xba, 0x5e, 0xb4, 0x94, 0x2a, 0x12, 0x3e, 0xae, 0x25, 0x45, 0xf2, - 0x97, 0xbd, 0xa4, 0x28, 0xfb, 0x3d, 0xfe, 0x29, 0x5c, 0x57, 0x34, 0xe1, 0x68, 0x5d, 0x86, 0x3a, - 0xdb, 0xc6, 0xe9, 0xb7, 0x27, 0xae, 0x47, 0x7a, 0x15, 0x5d, 0x31, 0xd7, 0xab, 0x6e, 0xd5, 0xb9, - 0xde, 0xa2, 0x96, 0x7a, 0x0f, 0x16, 0x73, 0x8d, 0x2a, 0xba, 0x25, 0x7e, 0xd1, 0xe5, 0x74, 0xae, - 0x4d, 0x58, 0x25, 0x3e, 0xfa, 0x0c, 0x96, 0x54, 0x7d, 0x1f, 0xba, 0x9d, 0xa9, 0x2e, 0x39, 0xbd, - 0x1b, 0x93, 0x05, 0x22, 0x63, 0x73, 0x8d, 0x18, 0x37, 0x56, 0xd5, 0x1d, 0x72, 0x63, 0xd5, 0x1d, - 0xdc, 0x29, 0xe8, 0xc5, 0x1d, 0x08, 0xba, 0x97, 0x5a, 0x34, 0xa9, 0xf9, 0xd2, 0xff, 0x3f, 0x8b, - 0x18, 0xf1, 0xd1, 0x7e, 0x3a, 0xc1, 0x11, 0xea, 0x06, 0x5a, 0xcb, 0x44, 0x93, 0xfc, 0x8e, 0xea, - 0xeb, 0x93, 0x96, 0x89, 0x8f, 0x30, 0x74, 0x8a, 0x9e, 0x39, 0x74, 0x27, 0xb3, 0x57, 0xf5, 0x50, - 0xeb, 0x77, 0xa7, 0x0b, 0x11, 0x1f, 0xbd, 0x80, 0xd5, 0x82, 0x9a, 0x87, 0x0c, 0x21, 0xb1, 0x0b, - 0x4a, 0xb0, 0x7e, 0x67, 0xaa, 0x0c, 0xf1, 0x1f, 0x2d, 0x7e, 0xbe, 0xd0, 0x8d, 0xff, 0x39, 0xf5, - 0x7e, 0xf4, 0xe7, 0x45, 0x83, 0xfd, 0xe7, 0xe9, 0xdd, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xaa, - 0xd5, 0x09, 0xd5, 0xbb, 0x1a, 0x00, 0x00, + 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 0dd518e48..63d04955a 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -129,18 +129,28 @@ message Comment { 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 LikeUser likeUsers = 6; + repeated WorkMomentUser likeUserList = 6; repeated Comment comments = 7; int32 permission = 8; - repeated string permissionUserIDList = 9; - repeated string permissionGroupIDList = 10; - repeated string atUserIDList = 11; + repeated WorkMomentUser permissionUserList = 9; + repeated PermissionGroup permissionGroupList = 10; + repeated WorkMomentUser atUserList = 11; int32 createTime = 12; } From 33211bfb27c268370ca0fc376e9e4247c05683a8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 21 Apr 2022 11:18:11 +0800 Subject: [PATCH 115/128] workMoments --- internal/api/office/work_moments.go | 9 +++++++++ internal/rpc/office/office.go | 14 -------------- pkg/base_info/work_moments_struct.go | 16 ++++++++-------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index fcea9a1a0..05497727f 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -206,6 +206,15 @@ func GetWorkMomentByID(c *gin.Context) { if err := utils.CopyStructFields(&resp.Data.WorkMoment, respPb.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } + if err := utils.CopyStructFields(&resp.Data.WorkMoment.AtUserIDList, respPb.WorkMoment.AtUserList); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed") + } + if err := utils.CopyStructFields(&resp.Data.WorkMoment.LikeUserList, respPb.WorkMoment.LikeUserList); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed") + } + if err := utils.CopyStructFields(&resp.Data.WorkMoment.Comments, respPb.WorkMoment.Comments); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed") + } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) c.JSON(http.StatusOK, resp) } diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index cdcff1112..847faba11 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -286,20 +286,6 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupList, req.WorkMoment.PermissionUserList) - for _, user := range req.WorkMoment.AtUserList { - if user.UserName == "" { - userName, err := imdb.GetUserNameByUserID(user.UserID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", user.UserID, err.Error()) - continue - } - user.UserName = userName - } - workMoment.AtUserList = append(workMoment.AtUserList, &db.AtUser{ - UserID: user.UserID, - UserName: user.UserName, - }) - } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment to create", workMoment) err = db.DB.CreateOneWorkMoment(&workMoment) if err != nil { diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index cb418b448..e69bcd4a1 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -45,19 +45,19 @@ type GetWorkMomentByIDReq struct { } type WorkMoment struct { - WorkMomentID string `json:"workMomentID"` - UserID string `json:"userID"` - Content string `json:"content"` - LikeUsers []*LikeUser `json:"likeUsers"` - Comments []*Comment `json:"comments"` + WorkMomentID string `json:"workMomentID"` + UserID string `json:"userID"` + Content string `json:"content"` + LikeUserList []*WorkMomentUser `json:"likeUsers"` + Comments []*Comment `json:"comments"` //Permission int32 `json:"permission"` //PermissionUserIDList []string `json:"permissionUserIDList"` //PermissionGroupIDList []string `json:"permissionGroupIDList"` - AtUserIDList []string `json:"atUserIDList"` - CreateTime int32 `json:"createTime,omitempty"` + AtUserIDList []*WorkMomentUser `json:"atUsers"` + CreateTime int32 `json:"createTime,omitempty"` } -type LikeUser struct { +type WorkMomentUser struct { UserID string `json:"userID"` UserName string `json:"userName"` } From 937ff63af90dd56b7ac6ab02eecf64ebada1b2d2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 21 Apr 2022 11:34:15 +0800 Subject: [PATCH 116/128] workMoments --- internal/api/office/work_moments.go | 9 --------- pkg/base_info/work_moments_struct.go | 4 ++-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 05497727f..fcea9a1a0 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -206,15 +206,6 @@ func GetWorkMomentByID(c *gin.Context) { if err := utils.CopyStructFields(&resp.Data.WorkMoment, respPb.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - if err := utils.CopyStructFields(&resp.Data.WorkMoment.AtUserIDList, respPb.WorkMoment.AtUserList); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed") - } - if err := utils.CopyStructFields(&resp.Data.WorkMoment.LikeUserList, respPb.WorkMoment.LikeUserList); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed") - } - if err := utils.CopyStructFields(&resp.Data.WorkMoment.Comments, respPb.WorkMoment.Comments); err != nil { - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed") - } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) c.JSON(http.StatusOK, resp) } diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index e69bcd4a1..0908e0587 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -53,8 +53,8 @@ type WorkMoment struct { //Permission int32 `json:"permission"` //PermissionUserIDList []string `json:"permissionUserIDList"` //PermissionGroupIDList []string `json:"permissionGroupIDList"` - AtUserIDList []*WorkMomentUser `json:"atUsers"` - CreateTime int32 `json:"createTime,omitempty"` + AtUserList []*WorkMomentUser `json:"atUsers"` + CreateTime int32 `json:"createTime,omitempty"` } type WorkMomentUser struct { From 5eef365baf365f3f2f093f96a2557b3f2213105e Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 21 Apr 2022 11:52:31 +0800 Subject: [PATCH 117/128] workMoments --- internal/rpc/office/office.go | 4 ++-- pkg/base_info/work_moments_struct.go | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 847faba11..5f967938f 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -280,11 +280,11 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - workMoment.UserName = createUser.Nickname - workMoment.FaceURL = createUser.FaceURL 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) diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 0908e0587..f71033c9a 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -50,6 +50,8 @@ type WorkMoment struct { Content string `json:"content"` LikeUserList []*WorkMomentUser `json:"likeUsers"` Comments []*Comment `json:"comments"` + FaceURL string `json:"face_url"` + UserName string `json:"user_name"` //Permission int32 `json:"permission"` //PermissionUserIDList []string `json:"permissionUserIDList"` //PermissionGroupIDList []string `json:"permissionGroupIDList"` From 4796bf632c5708e012b15f71b1700ad3b6b6ca73 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 21 Apr 2022 12:53:28 +0800 Subject: [PATCH 118/128] quit group and dismiss group update --- internal/rpc/group/group.go | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index a6a5dadbc..7b237e5b1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -557,7 +557,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) @@ -575,16 +575,16 @@ 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 } - - chat.MemberQuitNotification(req) //modify quitter conversation info var reqPb pbUser.SetConversationReq + var c pbUser.Conversation reqPb.OperationID = req.OperationID - reqPb.Conversation.OwnerUserID = req.OpUserID - reqPb.Conversation.ConversationID = utils.GetConversationIDBySessionType(req.OpUserID, constant.GroupChatType) - reqPb.Conversation.ConversationType = constant.GroupChatType - reqPb.Conversation.GroupID = req.GroupID - reqPb.Conversation.IsNotInGroup = true + c.OwnerUserID = req.OpUserID + c.ConversationID = utils.GetConversationIDBySessionType(req.OpUserID, 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) @@ -593,6 +593,7 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) } else { log.NewDebug(req.OpUserID, utils.GetSelfFuncName(), 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 } @@ -1004,20 +1005,21 @@ 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 } - chat.GroupDismissedNotification(req) 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 - reqPb.Conversation.OwnerUserID = v.UserID - reqPb.Conversation.ConversationID = utils.GetConversationIDBySessionType(v.UserID, constant.GroupChatType) - reqPb.Conversation.ConversationType = constant.GroupChatType - reqPb.Conversation.GroupID = req.GroupID - reqPb.Conversation.IsNotInGroup = true + c.OwnerUserID = v.UserID + c.ConversationID = utils.GetConversationIDBySessionType(v.UserID, 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) @@ -1027,6 +1029,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou log.NewDebug(req.OpUserID, utils.GetSelfFuncName(), respPb.String(), v.UserID) } } + chat.GroupDismissedNotification(req) err = imdb.DeleteGroupMemberByGroupID(req.GroupID) if err != nil { log.NewError(req.OperationID, "DeleteGroupMemberByGroupID failed ", req.GroupID) From 26be25c218456a235bd6192daaa7bd5d65ebf714 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 21 Apr 2022 14:58:57 +0800 Subject: [PATCH 119/128] quit group and dismiss group update --- internal/rpc/group/group.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 7b237e5b1..e65a518a1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -580,7 +580,7 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) var c pbUser.Conversation reqPb.OperationID = req.OperationID c.OwnerUserID = req.OpUserID - c.ConversationID = utils.GetConversationIDBySessionType(req.OpUserID, constant.GroupChatType) + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) c.ConversationType = constant.GroupChatType c.GroupID = req.GroupID c.IsNotInGroup = true @@ -1015,7 +1015,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou for _, v := range memberList { reqPb.OperationID = req.OperationID c.OwnerUserID = v.UserID - c.ConversationID = utils.GetConversationIDBySessionType(v.UserID, constant.GroupChatType) + c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) c.ConversationType = constant.GroupChatType c.GroupID = req.GroupID c.IsNotInGroup = true From ff85575e98d7b51682c1b6e22ec1345cbc095cce Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 21 Apr 2022 16:14:26 +0800 Subject: [PATCH 120/128] workMoments --- internal/rpc/msg/work_moments_notification.go | 4 ++-- pkg/base_info/work_moments_struct.go | 6 +++--- pkg/common/db/mongoModel.go | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go index 4631abf06..f9f64774e 100644 --- a/internal/rpc/msg/work_moments_notification.go +++ b/internal/rpc/msg/work_moments_notification.go @@ -11,7 +11,7 @@ import ( ) func WorkMomentSendNotification(operationID, sendID, recvID string, notificationMsg *pbOffice.WorkMomentNotificationMsg) { - log.NewInfo(operationID, utils.GetSelfFuncName(), recvID) + log.NewInfo(operationID, utils.GetSelfFuncName(), sendID, recvID, notificationMsg) WorkMomentNotification(operationID, sendID, recvID, notificationMsg) } @@ -29,7 +29,7 @@ func WorkMomentNotification(operationID, sendID, recvID string, m proto.Message) RecvID: recvID, MsgFrom: constant.UserMsgType, ContentType: constant.WorkMomentNotification, - SessionType: constant.UserMsgType, + SessionType: constant.SingleChatType, OperationID: operationID, } n.Content, err = proto.Marshal(m) diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index f71033c9a..ecc80f834 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -50,13 +50,13 @@ type WorkMoment struct { Content string `json:"content"` LikeUserList []*WorkMomentUser `json:"likeUsers"` Comments []*Comment `json:"comments"` - FaceURL string `json:"face_url"` - UserName string `json:"user_name"` + 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,omitempty"` + CreateTime int32 `json:"createTime"` } type WorkMomentUser struct { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 4a08ffba4..0a593c5c7 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -575,7 +575,7 @@ type WorkMoment struct { AtUserList []*AtUser `bson:"at_user_list"` Comments []*Comment `bson:"comments"` PermissionUserIDList []string `bson:"permission_user_id_list"` - Permission int32 `bson:"is_private"` + Permission int32 `bson:"permission"` CreateTime int32 `bson:"create_time"` } From 704604f6fe791f652c594587efb972bdacfb1c2f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 21 Apr 2022 16:46:48 +0800 Subject: [PATCH 121/128] kick group invite group update --- internal/rpc/group/group.go | 126 +++++++++++++++++- .../mysql_model/im_mysql_model/user_model.go | 11 +- pkg/utils/utils.go | 38 ++++++ 3 files changed, 169 insertions(+), 6 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index e65a518a1..4704fa191 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -259,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()) @@ -379,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) @@ -502,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 { @@ -591,7 +688,7 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) } else { - log.NewDebug(req.OpUserID, utils.GetSelfFuncName(), respPb.String()) + 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: ""}}) @@ -914,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) @@ -1026,7 +1142,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v.UserID) } else { - log.NewDebug(req.OpUserID, utils.GetSelfFuncName(), respPb.String(), v.UserID) + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v.UserID) } } chat.GroupDismissedNotification(req) 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 5d1a08035..af7c15311 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 @@ -384,7 +384,7 @@ func GetConversation(OwnerUserID, conversationID string) (db.Conversation, error err = dbConn.Model(&db.Conversation{ OwnerUserID: OwnerUserID, ConversationID: conversationID, - }).Find(&conversation).Error + }).Take(&conversation).Error return conversation, err } @@ -397,3 +397,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/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) } From 5cd565306e316f4aca4af5a558241f90de5ffb2a Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 21 Apr 2022 17:23:40 +0800 Subject: [PATCH 122/128] kick group invite group update --- internal/rpc/user/user.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 11c635e90..23423bcd4 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -218,7 +218,7 @@ func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConvers resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - if groupInfo.Status == constant.GroupStatusDismissed { + 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 From 17d8a124cd2d216e75fa5c2601142465b72b9cc0 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 21 Apr 2022 18:09:20 +0800 Subject: [PATCH 123/128] kick group invite group update --- pkg/common/db/mysql_model/im_mysql_model/user_model.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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 af7c15311..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 @@ -381,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, - }).Take(&conversation).Error + err = dbConn.Table("conversations").Where("owner_user_id=? and conversation_id=?", OwnerUserID, conversationID).Take(&conversation).Error return conversation, err } From 1443f5f997ab424dceb137771b59119624f9a6d3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 21 Apr 2022 18:38:48 +0800 Subject: [PATCH 124/128] workMoments --- internal/rpc/msg/work_moments_notification.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go index f9f64774e..807266dfa 100644 --- a/internal/rpc/msg/work_moments_notification.go +++ b/internal/rpc/msg/work_moments_notification.go @@ -4,7 +4,6 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" pbOffice "Open_IM/pkg/proto/office" - open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/proto" @@ -16,14 +15,13 @@ func WorkMomentSendNotification(operationID, sendID, recvID string, notification } func WorkMomentNotification(operationID, sendID, recvID string, m proto.Message) { + //var tips open_im_sdk.TipsComm marshaler := jsonpb.Marshaler{ OrigName: true, EnumsAsInts: false, EmitDefaults: false, } - var tips open_im_sdk.TipsComm - var err error - tips.JsonDetail, _ = marshaler.MarshalToString(m) + JsonDetail, _ := marshaler.MarshalToString(m) n := &NotificationMsg{ SendID: sendID, RecvID: recvID, @@ -32,10 +30,7 @@ func WorkMomentNotification(operationID, sendID, recvID string, m proto.Message) SessionType: constant.SingleChatType, OperationID: operationID, } - n.Content, err = proto.Marshal(m) - if err != nil { - log.NewError(operationID, utils.GetSelfFuncName(), "proto marshal falied", err.Error()) - return - } + n.Content = []byte(JsonDetail) + log.NewInfo(operationID, utils.GetSelfFuncName(), JsonDetail) Notification(n) } From 159a9e00c8e93a2abb914de7e6e6dee1ff43d992 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 22 Apr 2022 15:12:10 +0800 Subject: [PATCH 125/128] conversation update --- internal/rpc/msg/send_msg.go | 15 + pkg/common/constant/constant.go | 7 + pkg/proto/conversation/conversation.proto | 302 ++++++++++++ pkg/proto/proto_dir.cfg | 1 + pkg/proto/sdk_ws/ws.pb.go | 543 +++++++++++----------- pkg/proto/sdk_ws/ws.proto | 7 +- 6 files changed, 605 insertions(+), 270 deletions(-) create mode 100644 pkg/proto/conversation/conversation.proto diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 74d0e6ac7..45f3ce70d 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 diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 9e2046b15..87eae8d4b 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -195,6 +195,13 @@ const ( WorkMomentLikeNotification = 1 WorkMomentAtUserNotification = 2 ) +const ( + AtAllString = "AtAllTag" + AtNormal = 0 + AtMe = 1 + AtAll = 2 + AtAllAtMe = 3 +) var ContentType2PushContent = map[int64]string{ Picture: "[图片]", 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/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 f53793083..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_d729044b7cff282f, []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_d729044b7cff282f, []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_d729044b7cff282f, []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_d729044b7cff282f, []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_d729044b7cff282f, []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_d729044b7cff282f, []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_d729044b7cff282f, []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_d729044b7cff282f, []int{7} + return fileDescriptor_ws_e4200fdb78b83da6, []int{7} } func (m *FriendRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendRequest.Unmarshal(m, b) @@ -878,7 +878,7 @@ 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_d729044b7cff282f, []int{8} + return fileDescriptor_ws_e4200fdb78b83da6, []int{8} } func (m *Department) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Department.Unmarshal(m, b) @@ -989,7 +989,7 @@ 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_d729044b7cff282f, []int{9} + return fileDescriptor_ws_e4200fdb78b83da6, []int{9} } func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) @@ -1103,7 +1103,7 @@ 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_d729044b7cff282f, []int{10} + return fileDescriptor_ws_e4200fdb78b83da6, []int{10} } func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) @@ -1184,7 +1184,7 @@ 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_d729044b7cff282f, []int{11} + return fileDescriptor_ws_e4200fdb78b83da6, []int{11} } func (m *UserDepartmentMember) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserDepartmentMember.Unmarshal(m, b) @@ -1230,7 +1230,7 @@ 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_d729044b7cff282f, []int{12} + return fileDescriptor_ws_e4200fdb78b83da6, []int{12} } func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) @@ -1277,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_d729044b7cff282f, []int{13} + return fileDescriptor_ws_e4200fdb78b83da6, []int{13} } func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) @@ -1331,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_d729044b7cff282f, []int{14} + return fileDescriptor_ws_e4200fdb78b83da6, []int{14} } func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) @@ -1382,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_d729044b7cff282f, []int{15} + return fileDescriptor_ws_e4200fdb78b83da6, []int{15} } func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) @@ -1414,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_d729044b7cff282f, []int{16} + return fileDescriptor_ws_e4200fdb78b83da6, []int{16} } func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) @@ -1461,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_d729044b7cff282f, []int{17} + return fileDescriptor_ws_e4200fdb78b83da6, []int{17} } func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) @@ -1518,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:"-"` @@ -1530,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_d729044b7cff282f, []int{18} + return fileDescriptor_ws_e4200fdb78b83da6, []int{18} } func (m *MsgData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MsgData.Unmarshal(m, b) @@ -1655,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 @@ -1691,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_d729044b7cff282f, []int{19} + return fileDescriptor_ws_e4200fdb78b83da6, []int{19} } func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) @@ -1759,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_d729044b7cff282f, []int{20} + return fileDescriptor_ws_e4200fdb78b83da6, []int{20} } func (m *TipsComm) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TipsComm.Unmarshal(m, b) @@ -1816,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_d729044b7cff282f, []int{21} + return fileDescriptor_ws_e4200fdb78b83da6, []int{21} } func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) @@ -1885,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_d729044b7cff282f, []int{22} + return fileDescriptor_ws_e4200fdb78b83da6, []int{22} } func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) @@ -1940,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_d729044b7cff282f, []int{23} + return fileDescriptor_ws_e4200fdb78b83da6, []int{23} } func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) @@ -1996,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_d729044b7cff282f, []int{24} + return fileDescriptor_ws_e4200fdb78b83da6, []int{24} } func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) @@ -2051,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_d729044b7cff282f, []int{25} + return fileDescriptor_ws_e4200fdb78b83da6, []int{25} } func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) @@ -2106,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_d729044b7cff282f, []int{26} + return fileDescriptor_ws_e4200fdb78b83da6, []int{26} } func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) @@ -2162,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_d729044b7cff282f, []int{27} + return fileDescriptor_ws_e4200fdb78b83da6, []int{27} } func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) @@ -2225,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_d729044b7cff282f, []int{28} + return fileDescriptor_ws_e4200fdb78b83da6, []int{28} } func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) @@ -2288,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_d729044b7cff282f, []int{29} + return fileDescriptor_ws_e4200fdb78b83da6, []int{29} } func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) @@ -2350,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_d729044b7cff282f, []int{30} + return fileDescriptor_ws_e4200fdb78b83da6, []int{30} } func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) @@ -2404,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_d729044b7cff282f, []int{31} + return fileDescriptor_ws_e4200fdb78b83da6, []int{31} } func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) @@ -2460,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_d729044b7cff282f, []int{32} + return fileDescriptor_ws_e4200fdb78b83da6, []int{32} } func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) @@ -2529,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_d729044b7cff282f, []int{33} + return fileDescriptor_ws_e4200fdb78b83da6, []int{33} } func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) @@ -2590,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_d729044b7cff282f, []int{34} + return fileDescriptor_ws_e4200fdb78b83da6, []int{34} } func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) @@ -2644,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_d729044b7cff282f, []int{35} + return fileDescriptor_ws_e4200fdb78b83da6, []int{35} } func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) @@ -2699,7 +2707,7 @@ 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_d729044b7cff282f, []int{36} + return fileDescriptor_ws_e4200fdb78b83da6, []int{36} } func (m *GroupMemberInfoSetTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GroupMemberInfoSetTips.Unmarshal(m, b) @@ -2759,7 +2767,7 @@ 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_d729044b7cff282f, []int{37} + return fileDescriptor_ws_e4200fdb78b83da6, []int{37} } func (m *OrganizationChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OrganizationChangedTips.Unmarshal(m, b) @@ -2806,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_d729044b7cff282f, []int{38} + return fileDescriptor_ws_e4200fdb78b83da6, []int{38} } func (m *FriendApplication) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplication.Unmarshal(m, b) @@ -2859,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_d729044b7cff282f, []int{39} + return fileDescriptor_ws_e4200fdb78b83da6, []int{39} } func (m *FromToUserID) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FromToUserID.Unmarshal(m, b) @@ -2905,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_d729044b7cff282f, []int{40} + return fileDescriptor_ws_e4200fdb78b83da6, []int{40} } func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) @@ -2945,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_d729044b7cff282f, []int{41} + return fileDescriptor_ws_e4200fdb78b83da6, []int{41} } func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) @@ -2992,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_d729044b7cff282f, []int{42} + return fileDescriptor_ws_e4200fdb78b83da6, []int{42} } func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) @@ -3040,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_d729044b7cff282f, []int{43} + return fileDescriptor_ws_e4200fdb78b83da6, []int{43} } func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) @@ -3093,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_d729044b7cff282f, []int{44} + return fileDescriptor_ws_e4200fdb78b83da6, []int{44} } func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) @@ -3131,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_d729044b7cff282f, []int{45} + return fileDescriptor_ws_e4200fdb78b83da6, []int{45} } func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) @@ -3169,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_d729044b7cff282f, []int{46} + return fileDescriptor_ws_e4200fdb78b83da6, []int{46} } func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) @@ -3207,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_d729044b7cff282f, []int{47} + return fileDescriptor_ws_e4200fdb78b83da6, []int{47} } func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) @@ -3246,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_d729044b7cff282f, []int{48} + return fileDescriptor_ws_e4200fdb78b83da6, []int{48} } func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) @@ -3285,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_d729044b7cff282f, []int{49} + return fileDescriptor_ws_e4200fdb78b83da6, []int{49} } func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) @@ -3325,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_d729044b7cff282f, []int{50} + return fileDescriptor_ws_e4200fdb78b83da6, []int{50} } func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) @@ -3379,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_d729044b7cff282f, []int{51} + return fileDescriptor_ws_e4200fdb78b83da6, []int{51} } func (m *RequestPagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RequestPagination.Unmarshal(m, b) @@ -3425,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_d729044b7cff282f, []int{52} + return fileDescriptor_ws_e4200fdb78b83da6, []int{52} } func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) @@ -3478,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_d729044b7cff282f, []int{53} + return fileDescriptor_ws_e4200fdb78b83da6, []int{53} } func (m *SignalReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalReq.Unmarshal(m, b) @@ -3745,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_d729044b7cff282f, []int{54} + return fileDescriptor_ws_e4200fdb78b83da6, []int{54} } func (m *SignalResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalResp.Unmarshal(m, b) @@ -4013,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_d729044b7cff282f, []int{55} + return fileDescriptor_ws_e4200fdb78b83da6, []int{55} } func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) @@ -4109,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_d729044b7cff282f, []int{56} + return fileDescriptor_ws_e4200fdb78b83da6, []int{56} } func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) @@ -4164,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_d729044b7cff282f, []int{57} + return fileDescriptor_ws_e4200fdb78b83da6, []int{57} } func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) @@ -4225,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_d729044b7cff282f, []int{58} + return fileDescriptor_ws_e4200fdb78b83da6, []int{58} } func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) @@ -4280,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_d729044b7cff282f, []int{59} + return fileDescriptor_ws_e4200fdb78b83da6, []int{59} } func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) @@ -4341,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_d729044b7cff282f, []int{60} + return fileDescriptor_ws_e4200fdb78b83da6, []int{60} } func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) @@ -4396,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_d729044b7cff282f, []int{61} + return fileDescriptor_ws_e4200fdb78b83da6, []int{61} } func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) @@ -4454,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_d729044b7cff282f, []int{62} + return fileDescriptor_ws_e4200fdb78b83da6, []int{62} } func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) @@ -4489,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_d729044b7cff282f, []int{63} + return fileDescriptor_ws_e4200fdb78b83da6, []int{63} } func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) @@ -4557,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_d729044b7cff282f, []int{64} + return fileDescriptor_ws_e4200fdb78b83da6, []int{64} } func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) @@ -4611,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_d729044b7cff282f, []int{65} + return fileDescriptor_ws_e4200fdb78b83da6, []int{65} } func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) @@ -4662,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_d729044b7cff282f, []int{66} + return fileDescriptor_ws_e4200fdb78b83da6, []int{66} } func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) @@ -4697,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_d729044b7cff282f, []int{67} + return fileDescriptor_ws_e4200fdb78b83da6, []int{67} } func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) @@ -4762,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_d729044b7cff282f, []int{68} + return fileDescriptor_ws_e4200fdb78b83da6, []int{68} } func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) @@ -4796,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_d729044b7cff282f, []int{69} + return fileDescriptor_ws_e4200fdb78b83da6, []int{69} } func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) @@ -4856,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_d729044b7cff282f, []int{70} + return fileDescriptor_ws_e4200fdb78b83da6, []int{70} } func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) @@ -4965,198 +4973,199 @@ func init() { proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") } -func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_d729044b7cff282f) } +func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_e4200fdb78b83da6) } -var fileDescriptor_ws_d729044b7cff282f = []byte{ - // 3033 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcf, 0x6f, 0x24, 0x47, - 0xf5, 0xff, 0x76, 0x8f, 0x67, 0xec, 0x79, 0xe3, 0xf1, 0x8f, 0xde, 0xfd, 0x3a, 0x83, 0xd9, 0x2c, - 0xa6, 0xb1, 0x42, 0x08, 0xb0, 0x41, 0x89, 0x90, 0x20, 0x81, 0x45, 0x6b, 0x7b, 0x7f, 0x85, 0xb5, - 0xd7, 0xe9, 0xd9, 0x25, 0x08, 0x90, 0xa2, 0xf6, 0x74, 0x79, 0xdc, 0x71, 0x77, 0x55, 0x4f, 0xff, - 0xf0, 0xee, 0x22, 0x24, 0x24, 0x90, 0x10, 0x37, 0x4e, 0x70, 0xe0, 0x82, 0xc4, 0x05, 0x81, 0xa2, - 0x28, 0x42, 0x20, 0x71, 0x88, 0x10, 0x07, 0xfe, 0x01, 0x8e, 0x88, 0x1b, 0x67, 0xae, 0x1c, 0x90, - 0x90, 0x40, 0x55, 0xaf, 0xba, 0xbb, 0xaa, 0x7b, 0xc6, 0x9e, 0x1d, 0x59, 0xd9, 0x8d, 0x96, 0xdb, - 0xbc, 0xd7, 0xf5, 0x5e, 0xbd, 0xfa, 0xbc, 0x57, 0xf5, 0x5e, 0xfd, 0x18, 0x58, 0x4e, 0xbc, 0xe3, - 0xb7, 0x1f, 0x24, 0x2f, 0x3f, 0x48, 0xae, 0x44, 0x31, 0x4b, 0x99, 0xb5, 0x9a, 0x90, 0xf8, 0x84, - 0xc4, 0x6f, 0xbb, 0x91, 0xff, 0x76, 0xe4, 0xc6, 0x6e, 0x98, 0xd8, 0xff, 0x34, 0xa1, 0x7d, 0x33, - 0x66, 0x59, 0x74, 0x9b, 0x1e, 0x32, 0xab, 0x07, 0xf3, 0x43, 0x41, 0xec, 0xf4, 0x8c, 0x0d, 0xe3, - 0xc5, 0xb6, 0x93, 0x93, 0xd6, 0x25, 0x68, 0x8b, 0x9f, 0x7b, 0x6e, 0x48, 0x7a, 0xa6, 0xf8, 0x56, - 0x32, 0x2c, 0x1b, 0x16, 0x29, 0x4b, 0xfd, 0x43, 0x7f, 0xe0, 0xa6, 0x3e, 0xa3, 0xbd, 0x86, 0x68, - 0xa0, 0xf1, 0x78, 0x1b, 0x9f, 0xa6, 0x31, 0xf3, 0xb2, 0x81, 0x68, 0x33, 0x87, 0x6d, 0x54, 0x1e, - 0xef, 0xff, 0xd0, 0x1d, 0x90, 0xfb, 0xce, 0x9d, 0x5e, 0x13, 0xfb, 0x97, 0xa4, 0xb5, 0x01, 0x1d, - 0xf6, 0x80, 0x92, 0xf8, 0x7e, 0x42, 0xe2, 0xdb, 0x3b, 0xbd, 0x96, 0xf8, 0xaa, 0xb2, 0xac, 0xcb, - 0x00, 0x83, 0x98, 0xb8, 0x29, 0xb9, 0xe7, 0x87, 0xa4, 0x37, 0xbf, 0x61, 0xbc, 0xd8, 0x75, 0x14, - 0x0e, 0xd7, 0x10, 0x92, 0xf0, 0x80, 0xc4, 0xdb, 0x2c, 0xa3, 0x69, 0x6f, 0x41, 0x34, 0x50, 0x59, - 0xd6, 0x12, 0x98, 0xe4, 0x61, 0xaf, 0x2d, 0x54, 0x9b, 0xe4, 0xa1, 0xb5, 0x06, 0xad, 0x24, 0x75, - 0xd3, 0x2c, 0xe9, 0xc1, 0x86, 0xf1, 0x62, 0xd3, 0x91, 0x94, 0xb5, 0x09, 0x5d, 0xa1, 0x97, 0xe5, - 0xd6, 0x74, 0x84, 0x88, 0xce, 0x2c, 0x10, 0xbb, 0xf7, 0x28, 0x22, 0xbd, 0x45, 0xa1, 0xa0, 0x64, - 0xd8, 0x7f, 0x35, 0xe1, 0x82, 0xc0, 0x7d, 0x57, 0x18, 0x70, 0x23, 0x0b, 0x82, 0x33, 0x3c, 0xb0, - 0x06, 0xad, 0x0c, 0xbb, 0x43, 0xf8, 0x25, 0xc5, 0xfb, 0x89, 0x59, 0x40, 0xee, 0x90, 0x13, 0x12, - 0x08, 0xe0, 0x9b, 0x4e, 0xc9, 0xb0, 0xd6, 0x61, 0xe1, 0x1d, 0xe6, 0x53, 0x81, 0xc9, 0x9c, 0xf8, - 0x58, 0xd0, 0xfc, 0x1b, 0xf5, 0x07, 0xc7, 0x94, 0xbb, 0x14, 0xe1, 0x2e, 0x68, 0xd5, 0x13, 0x2d, - 0xdd, 0x13, 0x2f, 0xc0, 0x92, 0x1b, 0x45, 0xbb, 0x2e, 0x1d, 0x92, 0x18, 0x3b, 0x9d, 0x17, 0x7a, - 0x2b, 0x5c, 0xee, 0x0f, 0xde, 0x53, 0x9f, 0x65, 0xf1, 0x80, 0x08, 0xb8, 0x9b, 0x8e, 0xc2, 0xe1, - 0x7a, 0x58, 0x44, 0x62, 0x05, 0x46, 0x44, 0xbe, 0xc2, 0x95, 0x5e, 0x81, 0xc2, 0x2b, 0xdc, 0x8f, - 0x59, 0x4a, 0xae, 0x53, 0x4f, 0x0c, 0xaa, 0x23, 0xfd, 0x58, 0xb2, 0xec, 0x1f, 0x19, 0xb0, 0xb4, - 0x9f, 0x1d, 0x04, 0xfe, 0x40, 0xa8, 0xe0, 0xb0, 0x96, 0xe0, 0x19, 0x1a, 0x78, 0x2a, 0x04, 0xe6, - 0x64, 0x08, 0x1a, 0x3a, 0x04, 0x6b, 0xd0, 0x1a, 0x12, 0xea, 0x91, 0x58, 0x42, 0x2a, 0x29, 0x69, - 0x6a, 0x33, 0x37, 0xd5, 0xfe, 0x99, 0x09, 0x0b, 0x1f, 0xb2, 0x09, 0x1b, 0xd0, 0x89, 0x8e, 0x18, - 0x25, 0x7b, 0x19, 0x0f, 0x2b, 0x69, 0x8b, 0xca, 0xb2, 0x2e, 0x42, 0xf3, 0xc0, 0x8f, 0xd3, 0x23, - 0xe1, 0xd7, 0xae, 0x83, 0x04, 0xe7, 0x92, 0xd0, 0xf5, 0xd1, 0x99, 0x6d, 0x07, 0x09, 0x39, 0xa0, - 0x85, 0x02, 0x7b, 0x7d, 0x8e, 0xb5, 0x6b, 0x73, 0xac, 0x1e, 0x1b, 0x30, 0x2e, 0x36, 0xec, 0x7f, - 0x19, 0x00, 0x37, 0x62, 0x9f, 0x50, 0x4f, 0x40, 0x53, 0x99, 0xdc, 0x46, 0x7d, 0x72, 0xaf, 0x41, - 0x2b, 0x26, 0xa1, 0x1b, 0x1f, 0xe7, 0xc1, 0x8f, 0x54, 0xc5, 0xa0, 0x46, 0xcd, 0xa0, 0xd7, 0x01, - 0x0e, 0x45, 0x3f, 0x5c, 0x8f, 0x80, 0xaa, 0xf3, 0xca, 0xc7, 0xaf, 0xd4, 0x96, 0xc1, 0x2b, 0xb9, - 0x97, 0x1c, 0xa5, 0x39, 0x9f, 0x59, 0xae, 0xe7, 0xc9, 0x00, 0x6e, 0xe2, 0xcc, 0x2a, 0x18, 0x63, - 0xe2, 0xb7, 0x75, 0x4a, 0xfc, 0xce, 0x17, 0x41, 0xf1, 0x0f, 0x03, 0xda, 0x5b, 0x81, 0x3b, 0x38, - 0x9e, 0x72, 0xe8, 0xfa, 0x10, 0xcd, 0xda, 0x10, 0x6f, 0x42, 0xf7, 0x80, 0xab, 0xcb, 0x87, 0x20, - 0x50, 0xe8, 0xbc, 0xf2, 0xc9, 0x31, 0xa3, 0xd4, 0x27, 0x85, 0xa3, 0xcb, 0xe9, 0xc3, 0x9d, 0x3b, - 0x7b, 0xb8, 0xcd, 0x53, 0x86, 0xdb, 0x2a, 0x86, 0xfb, 0x17, 0x13, 0x16, 0xc5, 0x42, 0xe7, 0x90, - 0x51, 0x46, 0x92, 0xd4, 0xfa, 0x2a, 0x2c, 0x64, 0xb9, 0xa9, 0xc6, 0xb4, 0xa6, 0x16, 0x22, 0xd6, - 0x6b, 0x72, 0x59, 0x15, 0xf2, 0xa6, 0x90, 0xbf, 0x34, 0x46, 0xbe, 0xc8, 0x69, 0x4e, 0xd9, 0x9c, - 0xa7, 0xa0, 0x23, 0x97, 0x7a, 0x01, 0x71, 0x48, 0x92, 0x05, 0xa9, 0x5c, 0x2d, 0x35, 0x1e, 0x46, - 0xda, 0x68, 0x37, 0x19, 0xca, 0x04, 0x25, 0x29, 0x8e, 0x0e, 0xb6, 0xe3, 0x9f, 0x70, 0xe8, 0x25, - 0x83, 0x4f, 0xd4, 0x98, 0x8c, 0x84, 0x87, 0x70, 0x5a, 0xe5, 0x64, 0xd9, 0xa7, 0x44, 0x0d, 0x03, - 0x41, 0xe3, 0x71, 0x17, 0x23, 0x2d, 0x14, 0x60, 0x66, 0x52, 0x38, 0xd5, 0xc4, 0x64, 0xff, 0xad, - 0x01, 0x5d, 0x9c, 0x3e, 0x39, 0xa8, 0x97, 0x79, 0x9c, 0xb3, 0x50, 0x8b, 0x22, 0x85, 0xc3, 0xad, - 0xe0, 0xd4, 0x9e, 0xbe, 0xd0, 0x68, 0x3c, 0x1e, 0x8a, 0x9c, 0xbe, 0xa1, 0x2d, 0x38, 0x2a, 0x2b, - 0xef, 0xe5, 0xa6, 0xba, 0xf0, 0x28, 0x1c, 0xbe, 0x94, 0xa5, 0x4c, 0x8b, 0x8e, 0x82, 0xe6, 0xb2, - 0x29, 0x2b, 0xfa, 0xc7, 0xf8, 0x50, 0x38, 0x1c, 0xdf, 0x94, 0xe5, 0x7d, 0x23, 0x48, 0x25, 0x03, - 0x35, 0xcb, 0x7e, 0x31, 0x95, 0x14, 0x74, 0xcd, 0xab, 0xed, 0x53, 0xbd, 0x0a, 0x9a, 0x57, 0xf5, - 0xc9, 0xd5, 0xa9, 0x4d, 0xae, 0x4d, 0xe8, 0xa2, 0x9e, 0x3c, 0xe8, 0x17, 0x31, 0xd5, 0x6b, 0x4c, - 0x3d, 0x36, 0xba, 0xd5, 0xd8, 0xd0, 0xbd, 0xbb, 0x34, 0xc1, 0xbb, 0xcb, 0x85, 0x77, 0x7f, 0x6b, - 0x02, 0xec, 0x90, 0xc8, 0x8d, 0xd3, 0x90, 0xd0, 0x94, 0x0f, 0xcf, 0x2b, 0xa8, 0xc2, 0xb9, 0x1a, - 0x4f, 0xcd, 0x13, 0xa6, 0x9e, 0x27, 0x2c, 0x98, 0x13, 0x80, 0xa3, 0x37, 0xc5, 0x6f, 0x0e, 0x66, - 0xe4, 0xc6, 0xa8, 0x0d, 0x83, 0xbc, 0xa0, 0x79, 0x1e, 0x60, 0xb1, 0x27, 0x33, 0x47, 0xd3, 0x41, - 0x82, 0x4f, 0xfe, 0xb2, 0x3f, 0x51, 0xd0, 0xb4, 0x70, 0x5d, 0xd7, 0xb9, 0x67, 0xd6, 0x60, 0x2f, - 0xc1, 0x4a, 0x92, 0x1d, 0x94, 0x83, 0xdb, 0xcb, 0x42, 0x19, 0xee, 0x35, 0x3e, 0x07, 0x15, 0x8b, - 0x33, 0xde, 0x08, 0x53, 0x4d, 0xc9, 0xa8, 0x56, 0x05, 0xf6, 0xbb, 0x26, 0xac, 0xdc, 0x8d, 0x87, - 0x2e, 0xf5, 0xbf, 0x2b, 0xca, 0x4d, 0xb1, 0x80, 0xcf, 0x92, 0x72, 0x37, 0xa0, 0x43, 0xe8, 0x30, - 0xf0, 0x93, 0xa3, 0xbd, 0x12, 0x37, 0x95, 0xa5, 0x82, 0x3d, 0x37, 0x29, 0x29, 0x37, 0xb5, 0xa4, - 0xbc, 0x06, 0xad, 0x90, 0x1d, 0xf8, 0x41, 0x1e, 0xf7, 0x92, 0x12, 0x31, 0x4f, 0x02, 0x22, 0xb2, - 0x73, 0x11, 0xf3, 0x39, 0xa3, 0x4c, 0xd4, 0x0b, 0x63, 0x13, 0x75, 0x5b, 0x4d, 0xd4, 0x3a, 0xf0, - 0x50, 0x03, 0x1e, 0xe1, 0xea, 0x14, 0x70, 0xfd, 0xc9, 0x80, 0x95, 0x12, 0x6e, 0xac, 0x41, 0x27, - 0xc2, 0x55, 0x8d, 0x40, 0x73, 0x4c, 0x04, 0x16, 0x71, 0xd3, 0x50, 0xe3, 0x86, 0x47, 0x1a, 0x4b, - 0x7c, 0xa5, 0xde, 0x2f, 0x68, 0xde, 0x5b, 0x40, 0x5c, 0x05, 0x2c, 0xa4, 0x94, 0xaa, 0xbb, 0xa5, - 0x55, 0xdd, 0xd5, 0x3c, 0xfa, 0x07, 0x03, 0x2e, 0x72, 0x2f, 0xd7, 0x86, 0x71, 0x17, 0x56, 0x58, - 0x25, 0x12, 0x64, 0xa2, 0xf9, 0xd4, 0x98, 0x44, 0x51, 0x0d, 0x1a, 0xa7, 0x26, 0xcc, 0x15, 0x7a, - 0x95, 0x4e, 0x64, 0xe6, 0x19, 0xa7, 0xb0, 0x6a, 0x8f, 0x53, 0x13, 0xb6, 0x3f, 0x30, 0x60, 0x05, - 0x53, 0x9b, 0x32, 0xcf, 0xcf, 0xdd, 0xec, 0xb7, 0xe0, 0x62, 0xb5, 0xe7, 0x3b, 0x7e, 0x92, 0xf6, - 0xcc, 0x8d, 0xc6, 0xb4, 0xa6, 0x8f, 0x55, 0x60, 0x7f, 0x0f, 0x7a, 0xfb, 0x59, 0x10, 0xec, 0x92, - 0x24, 0x71, 0x87, 0x64, 0xeb, 0x51, 0x9f, 0x8c, 0x38, 0xdf, 0x21, 0x49, 0xc4, 0x27, 0x07, 0x89, - 0xe3, 0x6d, 0xe6, 0x11, 0x61, 0x7c, 0xd3, 0xc9, 0x49, 0xee, 0x57, 0x12, 0xc7, 0x7c, 0x85, 0x94, - 0x25, 0x1c, 0x52, 0xd6, 0x15, 0x98, 0x0b, 0xb8, 0x59, 0x0d, 0x61, 0xd6, 0xfa, 0x18, 0xb3, 0x76, - 0x93, 0xe1, 0x8e, 0x9b, 0xba, 0x8e, 0x68, 0x67, 0x87, 0xf0, 0xdc, 0xf8, 0xde, 0x47, 0x13, 0x03, - 0x98, 0x17, 0x59, 0xa2, 0x4a, 0xf1, 0x19, 0x2d, 0xe2, 0x57, 0x65, 0x71, 0xb3, 0x13, 0xd4, 0x23, - 0xec, 0xe8, 0x3a, 0x39, 0x69, 0x5f, 0x04, 0xeb, 0x26, 0x49, 0x77, 0xdd, 0x87, 0xd7, 0xa8, 0xb7, - 0xeb, 0xd3, 0x3e, 0x19, 0x39, 0x64, 0x64, 0x5f, 0x87, 0x0b, 0x35, 0x6e, 0x12, 0x89, 0x89, 0xee, - 0x3e, 0xec, 0x93, 0x91, 0x30, 0xa0, 0xeb, 0x48, 0x4a, 0xf0, 0x45, 0x2b, 0x59, 0xbf, 0x49, 0xca, - 0x1e, 0xc1, 0x32, 0x77, 0x55, 0x9f, 0x50, 0x6f, 0x37, 0x19, 0x0a, 0x15, 0x1b, 0xd0, 0x41, 0x04, - 0x76, 0x93, 0x61, 0x59, 0x10, 0x2a, 0x2c, 0xde, 0x62, 0x10, 0xf8, 0xdc, 0x25, 0xa2, 0x85, 0x1c, - 0x8d, 0xc2, 0xe2, 0xd3, 0x2e, 0x21, 0x72, 0x7f, 0xc4, 0xe7, 0x63, 0xc3, 0x29, 0x68, 0xfb, 0x83, - 0x26, 0xcc, 0x4b, 0x40, 0xc5, 0x54, 0xe3, 0x35, 0x78, 0x81, 0x17, 0x52, 0x98, 0x2d, 0x07, 0x27, - 0xe5, 0x56, 0x13, 0x29, 0x75, 0x73, 0xda, 0xd0, 0x37, 0xa7, 0x15, 0x9b, 0xe6, 0xea, 0x36, 0x55, - 0xc6, 0xd5, 0xac, 0x8f, 0x8b, 0x27, 0x07, 0xb1, 0x5e, 0xee, 0x07, 0x6e, 0x7a, 0xc8, 0xe2, 0x50, - 0x96, 0xd4, 0x4d, 0xa7, 0xc6, 0xe7, 0x09, 0x09, 0x79, 0x45, 0x45, 0x81, 0x0b, 0x43, 0x85, 0xcb, - 0xf3, 0x37, 0x72, 0xf2, 0xca, 0x02, 0xf7, 0x32, 0x3a, 0x13, 0x6d, 0x4b, 0x12, 0x9f, 0x51, 0x91, - 0xdb, 0xb0, 0x80, 0x50, 0x59, 0x7c, 0xe4, 0x61, 0x32, 0xbc, 0x11, 0xb3, 0x50, 0xee, 0x68, 0x72, - 0x52, 0x8c, 0x9c, 0xd1, 0x34, 0xcf, 0x8b, 0x1d, 0x94, 0x55, 0x58, 0x5c, 0x56, 0x92, 0xa2, 0x7a, - 0x58, 0x74, 0x72, 0xd2, 0x5a, 0x81, 0x46, 0x42, 0x46, 0xb2, 0x24, 0xe0, 0x3f, 0x35, 0xcf, 0x2d, - 0xeb, 0x9e, 0xab, 0xac, 0xf1, 0x2b, 0xe2, 0xab, 0xba, 0xc6, 0x97, 0x0b, 0xe7, 0xaa, 0xb6, 0x70, - 0x5e, 0x83, 0x79, 0x16, 0xf1, 0x38, 0x4f, 0x7a, 0x96, 0x98, 0x63, 0x9f, 0x9e, 0x3c, 0xc7, 0xae, - 0xdc, 0xc5, 0x96, 0xd7, 0x69, 0x1a, 0x3f, 0x72, 0x72, 0x39, 0xeb, 0x0e, 0x2c, 0xb3, 0xc3, 0xc3, - 0xc0, 0xa7, 0x64, 0x3f, 0x4b, 0x8e, 0x44, 0xe9, 0x7d, 0x41, 0x2c, 0x4d, 0xf6, 0xb8, 0xa5, 0x49, - 0x6f, 0xe9, 0x54, 0x45, 0xd7, 0x5f, 0x83, 0x45, 0xb5, 0x1b, 0x0e, 0xc3, 0x31, 0x79, 0x24, 0x63, - 0x90, 0xff, 0xe4, 0xd9, 0xe4, 0xc4, 0x0d, 0x32, 0xcc, 0xce, 0x0b, 0x0e, 0x12, 0xaf, 0x99, 0x5f, - 0x32, 0xec, 0x9f, 0x1a, 0xb0, 0x5c, 0xe9, 0x80, 0xb7, 0x4e, 0xfd, 0x34, 0x20, 0x52, 0x03, 0x12, - 0xbc, 0xf2, 0xf1, 0x48, 0x32, 0x90, 0x21, 0x2c, 0x7e, 0xcb, 0x1c, 0xd2, 0x28, 0xf6, 0xb3, 0x36, - 0x2c, 0xfa, 0x77, 0xfb, 0x5c, 0x51, 0x9f, 0x65, 0xd4, 0x2b, 0xce, 0xa4, 0x14, 0x1e, 0x0f, 0x21, - 0xff, 0x6e, 0x7f, 0xcb, 0xf5, 0x86, 0x04, 0x4f, 0x8e, 0x9a, 0xc2, 0x26, 0x9d, 0x69, 0x7b, 0xb0, - 0x70, 0xcf, 0x8f, 0x92, 0x6d, 0x16, 0x86, 0xdc, 0x11, 0x1e, 0x49, 0x79, 0x8e, 0x36, 0x84, 0xbf, - 0x25, 0xc5, 0x43, 0xc5, 0x23, 0x87, 0x6e, 0x16, 0xa4, 0xbc, 0x69, 0x3e, 0x71, 0x15, 0x96, 0x38, - 0x33, 0x49, 0x18, 0xdd, 0x41, 0x69, 0xb4, 0x53, 0xe1, 0xd8, 0x7f, 0x36, 0x61, 0x45, 0xec, 0x6c, - 0xb6, 0x85, 0xdb, 0x3d, 0x21, 0xf4, 0x0a, 0x34, 0xc5, 0x34, 0x94, 0xd9, 0xe2, 0xf4, 0xdd, 0x10, - 0x36, 0xb5, 0xae, 0x42, 0x8b, 0x45, 0x22, 0xc5, 0x60, 0x22, 0x7b, 0x61, 0x92, 0x90, 0x7e, 0x3c, - 0xe5, 0x48, 0x29, 0xeb, 0x06, 0x40, 0x58, 0x66, 0x14, 0x5c, 0xba, 0xa7, 0xd5, 0xa1, 0x48, 0x72, - 0x70, 0x8b, 0x65, 0xb8, 0x38, 0xa3, 0x6a, 0x38, 0x3a, 0xd3, 0xda, 0x83, 0x25, 0x61, 0xf6, 0xdd, - 0x7c, 0x5b, 0x2c, 0x7c, 0x30, 0x7d, 0x8f, 0x15, 0x69, 0xfb, 0x97, 0x86, 0x84, 0x91, 0x7f, 0xed, - 0x13, 0xc4, 0xbe, 0x84, 0xc4, 0x98, 0x09, 0x92, 0x75, 0x58, 0x08, 0x33, 0x65, 0x97, 0xde, 0x70, - 0x0a, 0xba, 0x74, 0x51, 0x63, 0x6a, 0x17, 0xd9, 0xbf, 0x32, 0xa0, 0xf7, 0x06, 0xf3, 0xa9, 0xf8, - 0x70, 0x2d, 0x8a, 0x02, 0x79, 0x90, 0x3a, 0xb3, 0xcf, 0xbf, 0x06, 0x6d, 0x17, 0xd5, 0xd0, 0x54, - 0xba, 0x7d, 0x8a, 0x9d, 0x77, 0x29, 0xa3, 0x6c, 0xa2, 0x1a, 0xea, 0x26, 0xca, 0x7e, 0xcf, 0x80, - 0x25, 0x04, 0xe5, 0xcd, 0xcc, 0x4f, 0x67, 0xb6, 0x6f, 0x0b, 0x16, 0x46, 0x99, 0x9f, 0xce, 0x10, - 0x95, 0x85, 0x5c, 0x3d, 0x9e, 0x1a, 0x63, 0xe2, 0xc9, 0x7e, 0xdf, 0x80, 0x4b, 0x55, 0x58, 0xaf, - 0x0d, 0x06, 0x24, 0x7a, 0x92, 0x53, 0x4a, 0xdb, 0x44, 0xce, 0x55, 0x36, 0x91, 0x63, 0x4d, 0x76, - 0xc8, 0x3b, 0x64, 0xf0, 0xf4, 0x9a, 0xfc, 0x43, 0x13, 0x3e, 0x76, 0xb3, 0x98, 0x78, 0xf7, 0x62, - 0x97, 0x26, 0x87, 0x24, 0x8e, 0x9f, 0xa0, 0xbd, 0x77, 0xa0, 0x4b, 0xc9, 0x83, 0xd2, 0x26, 0x39, - 0x1d, 0xa7, 0x55, 0xa3, 0x0b, 0x4f, 0xb7, 0x76, 0xd9, 0xff, 0x36, 0x60, 0x05, 0xf5, 0x7c, 0xdd, - 0x1f, 0x1c, 0x3f, 0xc1, 0xc1, 0xef, 0xc1, 0xd2, 0xb1, 0xb0, 0x80, 0x53, 0x33, 0x2c, 0xdb, 0x15, - 0xe9, 0x29, 0x87, 0xff, 0x1f, 0x03, 0x56, 0x51, 0xd1, 0x6d, 0x7a, 0xe2, 0x3f, 0xc9, 0x60, 0xdd, - 0x87, 0x65, 0x1f, 0x4d, 0x98, 0x11, 0x80, 0xaa, 0xf8, 0x94, 0x08, 0xfc, 0xde, 0x80, 0x65, 0xd4, - 0x74, 0x9d, 0xa6, 0x24, 0x9e, 0x79, 0xfc, 0xb7, 0xa0, 0x43, 0x68, 0x1a, 0xbb, 0x74, 0x96, 0x15, - 0x52, 0x15, 0x9d, 0x72, 0x91, 0x7c, 0xcf, 0x00, 0x4b, 0xa8, 0xda, 0xf1, 0x93, 0xd0, 0x4f, 0x92, - 0x27, 0xe8, 0xba, 0xe9, 0x0c, 0xfe, 0xb9, 0x09, 0x17, 0x15, 0x2d, 0xbb, 0x59, 0xfa, 0xb4, 0x9b, - 0x6c, 0xed, 0x40, 0x9b, 0xd7, 0x08, 0xea, 0xed, 0xc4, 0xb4, 0x1d, 0x95, 0x82, 0xbc, 0x8a, 0x15, - 0x44, 0x9f, 0x0c, 0x18, 0xf5, 0x12, 0x51, 0x1c, 0x75, 0x1d, 0x8d, 0xc7, 0x97, 0xa1, 0x75, 0x45, - 0xcd, 0xb6, 0x4b, 0x07, 0x24, 0x78, 0x66, 0x20, 0xb2, 0x7f, 0x63, 0xc0, 0x12, 0x36, 0x79, 0xfa, - 0x87, 0xcc, 0x73, 0x3d, 0x06, 0xf2, 0x47, 0xc6, 0x4b, 0x3c, 0xbc, 0xd6, 0x14, 0x2d, 0x6a, 0x5d, - 0xfd, 0xf4, 0x86, 0xd6, 0x2d, 0xe8, 0x0c, 0x8e, 0x5c, 0x3a, 0x9c, 0x29, 0xb8, 0x54, 0x51, 0x3b, - 0x85, 0xe7, 0xd4, 0x03, 0xb9, 0x6d, 0xfc, 0x24, 0x86, 0xff, 0x6a, 0x65, 0x28, 0xa7, 0xde, 0x3e, - 0x3e, 0x1e, 0xe8, 0xc7, 0xb0, 0x8a, 0xb7, 0x40, 0x4a, 0x4d, 0x68, 0xf5, 0x60, 0xde, 0xf5, 0xf0, - 0x00, 0xc1, 0x10, 0x42, 0x39, 0xa9, 0xdf, 0xef, 0xc9, 0x27, 0x1c, 0xe5, 0xfd, 0xde, 0x65, 0x00, - 0xd7, 0xf3, 0xde, 0x62, 0xb1, 0xe7, 0xd3, 0xbc, 0xc0, 0x57, 0x38, 0xf6, 0x1b, 0xb0, 0x78, 0x23, - 0x66, 0xe1, 0x3d, 0xe5, 0x3e, 0xe7, 0xd4, 0x1b, 0x27, 0xf5, 0x2e, 0xc8, 0xd4, 0xef, 0x82, 0xec, - 0xef, 0xc0, 0xff, 0xd7, 0x0c, 0x17, 0x60, 0x6d, 0xe3, 0x35, 0x55, 0xde, 0x89, 0x0c, 0x99, 0x4f, - 0x8c, 0x81, 0x4c, 0xb5, 0xc5, 0xd1, 0x84, 0xec, 0x1f, 0x18, 0xf0, 0x7c, 0x4d, 0xfd, 0xb5, 0x28, - 0x8a, 0xd9, 0x89, 0xf4, 0xc9, 0x79, 0x74, 0xa3, 0x17, 0xbf, 0x66, 0xb5, 0xf8, 0x1d, 0x6b, 0x84, - 0x56, 0xb0, 0x7f, 0x08, 0x46, 0xfc, 0xda, 0x80, 0x65, 0x69, 0x84, 0xe7, 0xc9, 0x6e, 0xbf, 0x08, - 0x2d, 0xbc, 0xe2, 0x96, 0x1d, 0x3e, 0x3f, 0xb6, 0xc3, 0xfc, 0x6a, 0xde, 0x91, 0x8d, 0xeb, 0x11, - 0x69, 0x8e, 0x9b, 0x51, 0x5f, 0x2e, 0x82, 0x7d, 0xea, 0x4b, 0x68, 0x29, 0x60, 0x7f, 0x33, 0x0f, - 0xe6, 0x1d, 0x12, 0x90, 0xf3, 0xc4, 0xc8, 0xbe, 0x0f, 0x4b, 0xe2, 0xbe, 0xbd, 0xc4, 0xe0, 0x5c, - 0xd4, 0xbe, 0x05, 0x2b, 0x42, 0xed, 0xb9, 0xdb, 0x5b, 0xcc, 0x0e, 0x8e, 0x8f, 0xba, 0x94, 0x9c, - 0x8b, 0xf6, 0xcf, 0xc3, 0x85, 0x1c, 0xfb, 0xfb, 0x91, 0x57, 0x1c, 0x22, 0x4d, 0x38, 0x3a, 0xb7, - 0xbf, 0x00, 0x6b, 0xdb, 0x8c, 0x9e, 0x90, 0x38, 0xc1, 0x8b, 0x05, 0x21, 0x92, 0x4b, 0x68, 0x93, - 0x5f, 0x52, 0xf6, 0x3b, 0xb0, 0xae, 0x4a, 0xf4, 0x49, 0xba, 0x1f, 0xfb, 0x27, 0x8a, 0x94, 0x3c, - 0x5a, 0x36, 0xb4, 0xa3, 0xe5, 0xf2, 0x28, 0xda, 0xd4, 0x8e, 0xa2, 0x2f, 0x41, 0xdb, 0x4f, 0xa4, - 0x02, 0x11, 0x54, 0x0b, 0x4e, 0xc9, 0xb0, 0xfb, 0xb0, 0x2a, 0x6f, 0xc0, 0xf7, 0xdd, 0xa1, 0x4f, - 0x71, 0x05, 0xbc, 0x0c, 0x10, 0xb9, 0xc3, 0xfc, 0x05, 0x0c, 0xde, 0x42, 0x28, 0x1c, 0xfe, 0x3d, - 0x39, 0x62, 0x0f, 0xe4, 0x77, 0x13, 0xbf, 0x97, 0x1c, 0xfb, 0x1b, 0x60, 0x39, 0x24, 0x89, 0x18, - 0x4d, 0x88, 0xa2, 0x75, 0x03, 0x3a, 0xdb, 0x59, 0x1c, 0x13, 0xca, 0xbb, 0xca, 0x9f, 0x83, 0xa8, - 0x2c, 0xae, 0xb7, 0x5f, 0xea, 0xc5, 0x93, 0x6b, 0x85, 0x63, 0xff, 0xa2, 0x01, 0xed, 0xbe, 0x3f, - 0xa4, 0x6e, 0xe0, 0x90, 0x91, 0xf5, 0x15, 0x68, 0xe1, 0x7e, 0x42, 0xba, 0x71, 0xdc, 0x49, 0x2a, - 0xb6, 0xc6, 0x8d, 0x93, 0x43, 0x46, 0xb7, 0xfe, 0xcf, 0x91, 0x32, 0xd6, 0x9b, 0xd0, 0xc5, 0x5f, - 0xb7, 0xf1, 0x7c, 0x48, 0x26, 0x97, 0xcf, 0x9c, 0xa1, 0x44, 0xb6, 0x46, 0x5d, 0xba, 0x06, 0x6e, - 0xd0, 0x40, 0xd4, 0x1b, 0x72, 0xee, 0x4e, 0x36, 0x08, 0xcb, 0x12, 0x69, 0x10, 0xca, 0x70, 0x69, - 0x57, 0x9c, 0xa0, 0xc8, 0x34, 0x3a, 0x59, 0x1a, 0x0f, 0x5a, 0xa4, 0x34, 0xca, 0x70, 0xe9, 0xa3, - 0x8c, 0x0e, 0xef, 0x47, 0xf2, 0x60, 0x6f, 0xb2, 0xf4, 0x2d, 0xd1, 0x4c, 0x4a, 0xa3, 0x0c, 0x97, - 0x8e, 0xc5, 0xca, 0x2a, 0x40, 0x3f, 0x4d, 0x1a, 0x17, 0x60, 0x29, 0x8d, 0x32, 0x5b, 0x6d, 0x98, - 0x8f, 0xdc, 0x47, 0x01, 0x73, 0x3d, 0xfb, 0xdd, 0x06, 0x40, 0xde, 0x30, 0x11, 0x55, 0x88, 0xe6, - 0xa2, 0xcd, 0x33, 0x5d, 0x14, 0x05, 0x8f, 0x14, 0x27, 0xf5, 0xc7, 0x3b, 0xe9, 0xb3, 0xd3, 0x3a, - 0x09, 0xb5, 0x55, 0xdc, 0x74, 0xb5, 0xe2, 0xa6, 0xcd, 0x33, 0xdd, 0x24, 0x8d, 0x92, 0x8e, 0xba, - 0x5a, 0x71, 0xd4, 0xe6, 0x99, 0x8e, 0x92, 0xf2, 0xd2, 0x55, 0x57, 0x2b, 0xae, 0xda, 0x3c, 0xd3, - 0x55, 0x52, 0x5e, 0x3a, 0xeb, 0x6a, 0xc5, 0x59, 0x9b, 0x67, 0x3a, 0x4b, 0xca, 0xd7, 0xdd, 0xf5, - 0xbe, 0x09, 0x4b, 0x02, 0x32, 0xbc, 0xc5, 0xa3, 0x87, 0x4c, 0x1c, 0xd6, 0x0b, 0xb8, 0xf4, 0x07, - 0x55, 0x3a, 0xd3, 0xfa, 0x1c, 0xac, 0x22, 0x43, 0x3e, 0xc0, 0x29, 0xae, 0x45, 0xdb, 0x4e, 0xfd, - 0x83, 0xb8, 0x77, 0xc9, 0x92, 0x94, 0x85, 0x3b, 0x6e, 0xea, 0xe6, 0x95, 0x51, 0xc9, 0x51, 0x6f, - 0xc5, 0xe6, 0x6a, 0x4f, 0x36, 0x63, 0xc6, 0xc2, 0xe2, 0xba, 0x4b, 0x52, 0x5c, 0x22, 0xf5, 0x43, - 0xc2, 0xb2, 0x54, 0x2e, 0x13, 0x39, 0x89, 0x8f, 0x1e, 0x3c, 0xdf, 0x15, 0x77, 0x49, 0xf2, 0x45, - 0x40, 0xc1, 0x10, 0x2b, 0x5b, 0x79, 0x37, 0x26, 0x9f, 0x54, 0x96, 0x9c, 0xb3, 0xef, 0xb1, 0xec, - 0xbf, 0x1b, 0x70, 0x61, 0xdf, 0x8d, 0x53, 0x7f, 0xe0, 0x47, 0x2e, 0x4d, 0x77, 0x49, 0xea, 0x8a, - 0x31, 0x68, 0xaf, 0xaa, 0x8c, 0xc7, 0x7b, 0x55, 0xb5, 0x0f, 0xcb, 0x43, 0xbd, 0xf4, 0x7f, 0xcc, - 0xaa, 0xbd, 0x2a, 0xae, 0x3d, 0x11, 0x6b, 0x3c, 0xf6, 0x13, 0x31, 0xfb, 0xc7, 0x26, 0x2c, 0x57, - 0x96, 0x4e, 0x5e, 0x8e, 0x62, 0xa1, 0x51, 0xc4, 0x44, 0x41, 0x5b, 0xd7, 0x00, 0xfc, 0x22, 0x8c, - 0x4e, 0x39, 0x19, 0xd7, 0x63, 0xcd, 0x51, 0x84, 0xc6, 0x5d, 0x90, 0x35, 0x66, 0xbe, 0x20, 0xe3, - 0x1b, 0x93, 0xa8, 0x74, 0xd2, 0x29, 0x1b, 0x93, 0x31, 0xae, 0x74, 0x54, 0x51, 0xfb, 0xdb, 0xb0, - 0x5a, 0x5b, 0xa1, 0xc4, 0x7d, 0x19, 0x3b, 0x26, 0xb4, 0xb8, 0x2f, 0xe3, 0x84, 0x12, 0xac, 0x66, - 0x35, 0x58, 0x03, 0xff, 0x44, 0x7d, 0x83, 0x2a, 0x49, 0xfb, 0x27, 0x26, 0xac, 0x8d, 0xcf, 0x2e, - 0xcf, 0x2a, 0xdc, 0x07, 0xd0, 0x9b, 0xb4, 0x92, 0x9f, 0x1b, 0xea, 0x65, 0x74, 0x17, 0x79, 0xf8, - 0x59, 0x85, 0xfb, 0x42, 0x1e, 0xdd, 0x4a, 0xaa, 0xb3, 0x7f, 0x57, 0xe0, 0x53, 0x54, 0x1a, 0xcf, - 0x28, 0x3e, 0xd6, 0x4b, 0xb0, 0x82, 0xc3, 0x54, 0x5e, 0x54, 0x60, 0xe1, 0x5a, 0xe3, 0x97, 0x2b, - 0x85, 0x92, 0xf6, 0xcf, 0x2d, 0x66, 0xff, 0x68, 0xe4, 0x3e, 0x29, 0xea, 0xb7, 0x8f, 0x94, 0x4f, - 0xca, 0x48, 0x53, 0x8a, 0x1a, 0x25, 0xd2, 0x8a, 0xba, 0xf2, 0x7f, 0x91, 0x76, 0x76, 0xa4, 0x15, - 0x58, 0x2a, 0x05, 0x9e, 0xfd, 0x7d, 0xe8, 0xee, 0x90, 0x60, 0x37, 0x19, 0xe6, 0x6f, 0xb9, 0x4e, - 0x03, 0x72, 0xd2, 0x5f, 0x61, 0x26, 0xbe, 0xe2, 0xaa, 0xbe, 0x00, 0x9b, 0xab, 0xbd, 0x00, 0xb3, - 0xb7, 0x60, 0x49, 0x35, 0x60, 0x96, 0xa7, 0x6c, 0x5b, 0x97, 0xbe, 0xb5, 0x7e, 0xe5, 0x65, 0xfc, - 0xd3, 0xd5, 0xeb, 0x35, 0x10, 0x0f, 0x5a, 0xe2, 0x4f, 0x58, 0xaf, 0xfe, 0x37, 0x00, 0x00, 0xff, - 0xff, 0xda, 0x69, 0x8c, 0xa6, 0x97, 0x35, 0x00, 0x00, +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 f8db4047c..7e1322e50 100644 --- a/pkg/proto/sdk_ws/ws.proto +++ b/pkg/proto/sdk_ws/ws.proto @@ -210,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{ From 4ba87e3349cc8f088c16de021461809d5f3db598 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 22 Apr 2022 16:41:41 +0800 Subject: [PATCH 126/128] workMoments --- internal/rpc/msg/work_moments_notification.go | 17 ++++++++--- internal/rpc/office/office.go | 10 +++++-- pkg/common/db/mongoModel.go | 29 +++++-------------- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go index 807266dfa..af333a354 100644 --- a/internal/rpc/msg/work_moments_notification.go +++ b/internal/rpc/msg/work_moments_notification.go @@ -4,6 +4,7 @@ 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" @@ -11,17 +12,21 @@ import ( 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 open_im_sdk.TipsComm + var tips sdk.TipsComm + var err error marshaler := jsonpb.Marshaler{ OrigName: true, EnumsAsInts: false, EmitDefaults: false, } - JsonDetail, _ := marshaler.MarshalToString(m) + tips.JsonDetail, _ = marshaler.MarshalToString(m) n := &NotificationMsg{ SendID: sendID, RecvID: recvID, @@ -30,7 +35,11 @@ func WorkMomentNotification(operationID, sendID, recvID string, m proto.Message) SessionType: constant.SingleChatType, OperationID: operationID, } - n.Content = []byte(JsonDetail) - log.NewInfo(operationID, utils.GetSelfFuncName(), JsonDetail) + 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 5f967938f..ea4095f04 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -381,7 +381,7 @@ func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOn resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } - workMoment, err := db.DB.LikeOneWorkMoment(req.UserID, userName, req.WorkMomentID) + 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} @@ -392,9 +392,13 @@ func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOn WorkMomentID: workMoment.WorkMomentID, WorkMomentContent: workMoment.Content, UserID: workMoment.UserID, + FaceURL: workMoment.FaceURL, + UserName: workMoment.UserName, } // send notification - msg.WorkMomentSendNotification(req.OperationID, req.UserID, workMoment.UserID, workMomentNotificationMsg) + if like { + msg.WorkMomentSendNotification(req.OperationID, req.UserID, workMoment.UserID, workMomentNotificationMsg) + } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -436,6 +440,8 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com WorkMomentID: workMoment.WorkMomentID, WorkMomentContent: workMoment.Content, UserID: workMoment.UserID, + FaceURL: workMoment.FaceURL, + UserName: workMoment.UserName, Comment: &pbOffice.Comment{ UserID: comment.UserID, UserName: comment.UserName, diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 0a593c5c7..f44799ecf 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -624,10 +624,10 @@ func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) return workMoment, err } -func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) (*WorkMoment, error) { +func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) (*WorkMoment, bool, error) { workMoment, err := d.GetWorkMomentByID(workMomentID) if err != nil { - return nil, err + return nil, false, err } var isAlreadyLike bool for i, user := range workMoment.LikeUserList { @@ -643,7 +643,7 @@ func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) 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, err + return workMoment, !isAlreadyLike, err } func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { @@ -672,30 +672,17 @@ func (d *DataBases) GetUserWorkMoments(userID string, showNumber, pageNumber int return workMomentList, err } -// recursion -func (d *DataBases) GetUserFriendWorkMomentsRecursion(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, "is_private": false, "who_can_see_user_id_list": bson.M{"$elemMatch": bson.M{"$eq": userID}}, "who_cant_see_user_id_list": ""}, 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, "is_private": false, "$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) + 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, nil + return workMomentList, err } err = result.All(ctx, &workMomentList) return workMomentList, err From f779ed7628b7bd836d439c50eb096e999b4ff555 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 22 Apr 2022 17:19:35 +0800 Subject: [PATCH 127/128] workMoments --- config/config.yaml | 15 ++++++++++++++- internal/rpc/msg/send_msg.go | 15 +++++++++++++++ pkg/common/config/config.go | 5 +++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 598f8bfc2..45be10f1a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -600,7 +600,7 @@ notification: conversationSetPrivate: conversation: - reliabilityLevel: 2 + reliabilityLevel: 3 unreadCount: true offlinePush: switch: true @@ -611,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/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 45f3ce70d..141c072ec 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -594,6 +594,21 @@ func Notification(n *NotificationMsg) { 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/pkg/common/config/config.go b/pkg/common/config/config.go index 926ada32e..aed2c1173 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -382,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"` From 53ec93c8f8028c17e42d1406e91bae7e3b4b6e15 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 22 Apr 2022 18:36:02 +0800 Subject: [PATCH 128/128] minio config --- config/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 45be10f1a..39a69298f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -92,8 +92,8 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio bucket: openim location: us-east-1 - endpoint: http://127.0.0.1:9000 - endpointInner: http://127.0.0.1:9000 #minio内网地址 + 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