diff --git a/Dockerfile_business b/Dockerfile_business index d7c7eff..f262151 100644 --- a/Dockerfile_business +++ b/Dockerfile_business @@ -1,6 +1,6 @@ # 多重构建,减少镜像大小 # 构建:使用golang:1.18版本 -FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.18.4 as build +FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.19 as build # 容器环境变量添加,会覆盖默认的变量值 ENV GO111MODULE=on diff --git a/Dockerfile_connect b/Dockerfile_connect index 187d08f..467cb1b 100644 --- a/Dockerfile_connect +++ b/Dockerfile_connect @@ -1,6 +1,6 @@ # 多重构建,减少镜像大小 # 构建:使用golang:1.18版本 -FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.18.4 as build +FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.19 as build # 容器环境变量添加,会覆盖默认的变量值 ENV GO111MODULE=on diff --git a/Dockerfile_logic b/Dockerfile_logic index b9a33ec..528466b 100644 --- a/Dockerfile_logic +++ b/Dockerfile_logic @@ -1,6 +1,6 @@ # 多重构建,减少镜像大小 # 构建:使用golang:1.18版本 -FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.18.4 as build +FROM registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/golang:1.19 as build # 容器环境变量添加,会覆盖默认的变量值 ENV GO111MODULE=on diff --git a/internal/business/api/business_ext.go b/internal/business/api/business_ext.go index f4c7f30..6216d89 100644 --- a/internal/business/api/business_ext.go +++ b/internal/business/api/business_ext.go @@ -20,6 +20,145 @@ import ( type BusinessExtServer struct{} +func (s *BusinessExtServer) ViewGroupNotice(ctx context.Context, req *pb.ViewGroupNoticeReq) (*pb.ViewGroupNoticeResp, error) { + userId, _, err := grpclib.GetCtxData(ctx) + if err != nil { + return nil, err + } + groupNotice, err := repo2.GroupNoticeDao.Get(req.GroupId) + if err != nil { + return nil, err + } + if groupNotice == nil { + return &pb.ViewGroupNoticeResp{ + GroupId: 0, + UserId: 0, + Content: "", + LikeNums: 0, + ReadNums: 0, + PublishType: 0, + PublishTime: "", + IsLike: false, + }, nil + } + groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) + if err != nil { + return nil, err + } + + return &pb.ViewGroupNoticeResp{ + GroupId: groupNotice.GroupId, + UserId: groupNotice.UserId, + Content: groupNotice.Content, + LikeNums: int64(groupNotice.LikeNums), + ReadNums: int64(groupNotice.ReadNums), + PublishType: pb.GroupNoticePublishType(groupNotice.PublishType), + PublishTime: groupNotice.CreateTime.Format("2006-01-02 15:04:05"), + IsLike: func() bool { + if groupNoticeWithLikeRecords == nil { + return false + } + return true + }(), + }, nil +} + +func (s *BusinessExtServer) LikeGroupNotice(ctx context.Context, req *pb.LikeGroupNoticeReq) (*pb.Empty, error) { + userId, _, err := grpclib.GetCtxData(ctx) + if err != nil { + return nil, err + } + groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) + if err != nil { + return nil, err + } + if groupNoticeWithLikeRecords != nil { + return nil, errors.New("请勿重复点赞!") + } + + groupNotice, err := repo2.GroupNoticeDao.Get(req.GroupId) + if err != nil { + return nil, err + } + if groupNotice == nil { + return nil, errors.New("群公告记录不存在!") + } + + err = repo2.GroupNoticeWithLikeRecordsDao.Save(&model.GroupNoticeWithLikeRecords{ + GroupId: req.GroupId, + UserId: userId, + }) + if err != nil { + return nil, err + } + + groupNotice.LikeNums++ + return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice) +} + +func (s *BusinessExtServer) CancelLikeGroupNotice(ctx context.Context, req *pb.CancelLikeGroupNoticeReq) (*pb.Empty, error) { + userId, _, err := grpclib.GetCtxData(ctx) + if err != nil { + return nil, err + } + groupNoticeWithLikeRecords, err := repo2.GroupNoticeWithLikeRecordsDao.Get(userId, req.GroupId) + if err != nil { + return nil, err + } + if groupNoticeWithLikeRecords == nil { + return nil, errors.New("不存在的点赞记录!") + } + + groupNotice, err := repo2.GroupNoticeDao.Get(req.GroupId) + if err != nil { + return nil, err + } + if groupNotice == nil { + return nil, errors.New("群公告记录不存在!") + } + + err = repo2.GroupNoticeWithLikeRecordsDao.Delete(userId, req.GroupId) + if err != nil { + return nil, err + } + + err = repo2.GroupNoticeWithLikeRecordsDao.Save(&model.GroupNoticeWithLikeRecords{ + GroupId: req.GroupId, + UserId: userId, + }) + if err != nil { + return nil, err + } + + groupNotice.LikeNums-- + return new(pb.Empty), repo2.GroupNoticeDao.Save(groupNotice) +} + +func (s *BusinessExtServer) PublishGroupNotice(ctx context.Context, req *pb.PublishGroupNoticeReq) (*pb.Empty, error) { + now := time.Now() + userId, _, err := grpclib.GetCtxData(ctx) + if err != nil { + return nil, err + } + //1、判断是否可以进行发布群公告 + groupUser, err := repo2.GroupUserRepo.Get(req.GroupId, userId) + if groupUser.MemberType == int(pb.MemberType_GMT_MEMBER) { + return nil, errors.New("普通成员不能发布群公告") + } + groupComplain := model.GroupNotice{ + GroupId: req.GroupId, + UserId: userId, + PublishType: int32(req.PublishType), + Content: req.Content, + LikeNums: 0, + ReadNums: 0, + CreateTime: now, + UpdateTime: now, + } + + return new(pb.Empty), repo2.GroupNoticeDao.Save(&groupComplain) +} + func (s *BusinessExtServer) ComplainGroup(ctx context.Context, req *pb.ComplainGroupReq) (*pb.Empty, error) { now := time.Now() userId, _, err := grpclib.GetCtxData(ctx) diff --git a/internal/logic/domain/group/model/group_notice.go b/internal/logic/domain/group/model/group_notice.go index 83022ea..3536f4c 100644 --- a/internal/logic/domain/group/model/group_notice.go +++ b/internal/logic/domain/group/model/group_notice.go @@ -4,14 +4,14 @@ import ( "time" ) -type GroupComplain struct { - Id int64 // 自增主键 - GroupId int64 // 群组id - UserId int64 // 用户id - ComplainType int // 投诉类型(1:存在赌博行为 2:存在骗钱行为 3:不当信息骚扰 4:传播谣言 5:发布假冒商品信息 6:侵犯未成年人权益 7:其他) - Text string // 投诉内容 - ImageList string // 图片 - Status int // 状态 - CreateTime time.Time // 创建时间 - UpdateTime time.Time // 更新时间 +type GroupNotice struct { + Id int64 // 自增主键 + GroupId int64 // 群组id + UserId int64 // 发布用户id + Content string // 公告内容 + LikeNums int // 点赞数量 + ReadNums int // 阅读数量 + PublishType int32 // 发布方式(1:仅发布 2:发布并通知 3:通知并置顶) + CreateTime time.Time // 创建时间 + UpdateTime time.Time // 更新时间 } diff --git a/internal/logic/domain/group/model/group_notice_with_like_records.go b/internal/logic/domain/group/model/group_notice_with_like_records.go index 4000023..e5d6f07 100644 --- a/internal/logic/domain/group/model/group_notice_with_like_records.go +++ b/internal/logic/domain/group/model/group_notice_with_like_records.go @@ -1,17 +1,7 @@ package model -import ( - "time" -) - -type GroupNotice struct { - Id int64 // 自增主键 - GroupId int64 // 群组id - UserId int64 // 用户id - Content string // 公告内容 - LikeNums int // 点赞数量 - ReadNums int // 阅读数量 - PublishType int32 // 发布方式(1:仅发布 2:发布并通知 3:通知并置顶) - CreateTime time.Time // 创建时间 - UpdateTime time.Time // 更新时间 +type GroupNoticeWithLikeRecords struct { + Id int64 // 自增主键 + GroupId int64 // 群组id + UserId int64 // 点赞用户id } diff --git a/internal/logic/domain/group/repo/group_notice_dao.go b/internal/logic/domain/group/repo/group_notice_dao.go index 75ca20a..953f5d0 100644 --- a/internal/logic/domain/group/repo/group_notice_dao.go +++ b/internal/logic/domain/group/repo/group_notice_dao.go @@ -8,13 +8,13 @@ import ( "github.com/jinzhu/gorm" ) -type groupComplainDao struct{} +type groupNoticeDao struct{} -var GroupComplainDao = new(groupComplainDao) +var GroupNoticeDao = new(groupNoticeDao) -// Get 获取群组信息 -func (*groupComplainDao) Get(id int64) (*model.GroupComplain, error) { - var group = model.GroupComplain{Id: id} +// Get 获取群组公告信息 +func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { + var group = model.GroupNotice{GroupId: groupId} err := db.DB.First(&group).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, gerrors.WrapError(err) @@ -26,8 +26,25 @@ func (*groupComplainDao) Get(id int64) (*model.GroupComplain, error) { } // Save 插入一条群组 -func (*groupComplainDao) Save(group *model.GroupComplain) error { - err := db.DB.Save(&group).Error +func (g *groupNoticeDao) Save(groupNotice *model.GroupNotice) error { + mm, err := g.Get(groupNotice.GroupId) + if err != nil { + return err + } + if mm != nil { + mm.Content = groupNotice.Content + mm.LikeNums = groupNotice.LikeNums + mm.ReadNums = groupNotice.ReadNums + mm.PublishType = groupNotice.PublishType + mm.UpdateTime = groupNotice.UpdateTime + + //清除群组点赞记录 + err = GroupNoticeWithLikeRecordsDao.Clean(groupNotice.GroupId) + if err != nil { + return err + } + } + err = db.DB.Save(&groupNotice).Error if err != nil { return gerrors.WrapError(err) } diff --git a/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go b/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go index c01a83e..cda588d 100644 --- a/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go +++ b/internal/logic/domain/group/repo/group_notice_with_like_records_dao.go @@ -8,16 +8,16 @@ import ( "github.com/jinzhu/gorm" ) -type groupNoticeDao struct{} +type groupNoticeWithLikeRecords struct{} -var GroupNoticeDao = new(groupNoticeDao) +var GroupNoticeWithLikeRecordsDao = new(groupNoticeWithLikeRecords) -// Get 获取群组公告信息 -func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { - var group = model.GroupNotice{GroupId: groupId} - err := db.DB.First(&group).Error +// Get 获取用户点赞信息 +func (*groupNoticeWithLikeRecords) Get(userId, groupId int64) (*model.GroupNoticeWithLikeRecords, error) { + group := model.GroupNoticeWithLikeRecords{} + err := db.DB.First(&group, "user_id = ? and group_id = ?", userId, groupId).Error if err != nil && err != gorm.ErrRecordNotFound { - return nil, gerrors.WrapError(err) + return nil, err } if err == gorm.ErrRecordNotFound { return nil, nil @@ -26,10 +26,30 @@ func (*groupNoticeDao) Get(groupId int64) (*model.GroupNotice, error) { } // Save 插入一条群组 -func (*groupNoticeDao) Save(groupNotice *model.GroupNotice) error { - err := db.DB.Save(&groupNotice).Error +func (*groupNoticeWithLikeRecords) Save(groupNoticeWithLikeRecords *model.GroupNoticeWithLikeRecords) error { + err := db.DB.Save(&groupNoticeWithLikeRecords).Error if err != nil { return gerrors.WrapError(err) } return nil } + +// Delete 取消点赞 +func (*groupNoticeWithLikeRecords) Delete(userId, groupId int64) (err error) { + group := model.GroupNoticeWithLikeRecords{} + err = gerrors.WrapError(db.DB.Where("user_id = ? and group_id = ?", userId, groupId).Delete(&group).Error) + if err != nil { + return err + } + return nil +} + +// Clean 清除群组点赞记录 +func (*groupNoticeWithLikeRecords) Clean(groupId int64) (err error) { + group := model.GroupNoticeWithLikeRecords{} + err = gerrors.WrapError(db.DB.Where("group_id = ?", groupId).Delete(&group).Error) + if err != nil { + return err + } + return nil +} diff --git a/pkg/pb/business.ext.pb.go b/pkg/pb/business.ext.pb.go index b9bf4c2..eb058fd 100644 --- a/pkg/pb/business.ext.pb.go +++ b/pkg/pb/business.ext.pb.go @@ -24,7 +24,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// 消息类型 +// 投诉类型 type ComplainType int32 const ( @@ -89,6 +89,374 @@ func (ComplainType) EnumDescriptor() ([]byte, []int) { return file_business_ext_proto_rawDescGZIP(), []int{0} } +// 群公告发布方式 +type GroupNoticePublishType int32 + +const ( + GroupNoticePublishType_UNKNOWN_PUBLISH GroupNoticePublishType = 0 // 未知 + GroupNoticePublishType_ONLY_PUBLISH GroupNoticePublishType = 1 // 仅发布 + GroupNoticePublishType_PUBLISH_AND_NOTICE GroupNoticePublishType = 2 // 发布并通知 + GroupNoticePublishType_NOTICE_AND_TOP_UP GroupNoticePublishType = 3 // 存在骗钱行为 +) + +// Enum value maps for GroupNoticePublishType. +var ( + GroupNoticePublishType_name = map[int32]string{ + 0: "UNKNOWN_PUBLISH", + 1: "ONLY_PUBLISH", + 2: "PUBLISH_AND_NOTICE", + 3: "NOTICE_AND_TOP_UP", + } + GroupNoticePublishType_value = map[string]int32{ + "UNKNOWN_PUBLISH": 0, + "ONLY_PUBLISH": 1, + "PUBLISH_AND_NOTICE": 2, + "NOTICE_AND_TOP_UP": 3, + } +) + +func (x GroupNoticePublishType) Enum() *GroupNoticePublishType { + p := new(GroupNoticePublishType) + *p = x + return p +} + +func (x GroupNoticePublishType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GroupNoticePublishType) Descriptor() protoreflect.EnumDescriptor { + return file_business_ext_proto_enumTypes[1].Descriptor() +} + +func (GroupNoticePublishType) Type() protoreflect.EnumType { + return &file_business_ext_proto_enumTypes[1] +} + +func (x GroupNoticePublishType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GroupNoticePublishType.Descriptor instead. +func (GroupNoticePublishType) EnumDescriptor() ([]byte, []int) { + return file_business_ext_proto_rawDescGZIP(), []int{1} +} + +type LikeGroupNoticeReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` +} + +func (x *LikeGroupNoticeReq) Reset() { + *x = LikeGroupNoticeReq{} + if protoimpl.UnsafeEnabled { + mi := &file_business_ext_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LikeGroupNoticeReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LikeGroupNoticeReq) ProtoMessage() {} + +func (x *LikeGroupNoticeReq) ProtoReflect() protoreflect.Message { + mi := &file_business_ext_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LikeGroupNoticeReq.ProtoReflect.Descriptor instead. +func (*LikeGroupNoticeReq) Descriptor() ([]byte, []int) { + return file_business_ext_proto_rawDescGZIP(), []int{0} +} + +func (x *LikeGroupNoticeReq) GetGroupId() int64 { + if x != nil { + return x.GroupId + } + return 0 +} + +type CancelLikeGroupNoticeReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` +} + +func (x *CancelLikeGroupNoticeReq) Reset() { + *x = CancelLikeGroupNoticeReq{} + if protoimpl.UnsafeEnabled { + mi := &file_business_ext_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelLikeGroupNoticeReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelLikeGroupNoticeReq) ProtoMessage() {} + +func (x *CancelLikeGroupNoticeReq) ProtoReflect() protoreflect.Message { + mi := &file_business_ext_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelLikeGroupNoticeReq.ProtoReflect.Descriptor instead. +func (*CancelLikeGroupNoticeReq) Descriptor() ([]byte, []int) { + return file_business_ext_proto_rawDescGZIP(), []int{1} +} + +func (x *CancelLikeGroupNoticeReq) GetGroupId() int64 { + if x != nil { + return x.GroupId + } + return 0 +} + +type ViewGroupNoticeReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` +} + +func (x *ViewGroupNoticeReq) Reset() { + *x = ViewGroupNoticeReq{} + if protoimpl.UnsafeEnabled { + mi := &file_business_ext_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ViewGroupNoticeReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ViewGroupNoticeReq) ProtoMessage() {} + +func (x *ViewGroupNoticeReq) ProtoReflect() protoreflect.Message { + mi := &file_business_ext_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ViewGroupNoticeReq.ProtoReflect.Descriptor instead. +func (*ViewGroupNoticeReq) Descriptor() ([]byte, []int) { + return file_business_ext_proto_rawDescGZIP(), []int{2} +} + +func (x *ViewGroupNoticeReq) GetGroupId() int64 { + if x != nil { + return x.GroupId + } + return 0 +} + +type ViewGroupNoticeResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //发布用户id + Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` //公告内容 + LikeNums int64 `protobuf:"varint,4,opt,name=like_nums,json=likeNums,proto3" json:"like_nums,omitempty"` //点赞数量 + ReadNums int64 `protobuf:"varint,5,opt,name=read_nums,json=readNums,proto3" json:"read_nums,omitempty"` //阅读数量 + PublishType GroupNoticePublishType `protobuf:"varint,6,opt,name=publish_type,json=publishType,proto3,enum=pb.GroupNoticePublishType" json:"publish_type,omitempty"` // 发布方式 + PublishTime string `protobuf:"bytes,7,opt,name=publish_time,json=publishTime,proto3" json:"publish_time,omitempty"` // 发布时间 + IsLike bool `protobuf:"varint,8,opt,name=is_like,json=isLike,proto3" json:"is_like,omitempty"` // 是否点赞 +} + +func (x *ViewGroupNoticeResp) Reset() { + *x = ViewGroupNoticeResp{} + if protoimpl.UnsafeEnabled { + mi := &file_business_ext_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ViewGroupNoticeResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ViewGroupNoticeResp) ProtoMessage() {} + +func (x *ViewGroupNoticeResp) ProtoReflect() protoreflect.Message { + mi := &file_business_ext_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ViewGroupNoticeResp.ProtoReflect.Descriptor instead. +func (*ViewGroupNoticeResp) Descriptor() ([]byte, []int) { + return file_business_ext_proto_rawDescGZIP(), []int{3} +} + +func (x *ViewGroupNoticeResp) GetGroupId() int64 { + if x != nil { + return x.GroupId + } + return 0 +} + +func (x *ViewGroupNoticeResp) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *ViewGroupNoticeResp) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *ViewGroupNoticeResp) GetLikeNums() int64 { + if x != nil { + return x.LikeNums + } + return 0 +} + +func (x *ViewGroupNoticeResp) GetReadNums() int64 { + if x != nil { + return x.ReadNums + } + return 0 +} + +func (x *ViewGroupNoticeResp) GetPublishType() GroupNoticePublishType { + if x != nil { + return x.PublishType + } + return GroupNoticePublishType_UNKNOWN_PUBLISH +} + +func (x *ViewGroupNoticeResp) GetPublishTime() string { + if x != nil { + return x.PublishTime + } + return "" +} + +func (x *ViewGroupNoticeResp) GetIsLike() bool { + if x != nil { + return x.IsLike + } + return false +} + +type PublishGroupNoticeReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupId int64 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` //发布用户id + PublishType GroupNoticePublishType `protobuf:"varint,3,opt,name=publish_type,json=publishType,proto3,enum=pb.GroupNoticePublishType" json:"publish_type,omitempty"` // 发布方式 + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` // 发布内容 +} + +func (x *PublishGroupNoticeReq) Reset() { + *x = PublishGroupNoticeReq{} + if protoimpl.UnsafeEnabled { + mi := &file_business_ext_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PublishGroupNoticeReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublishGroupNoticeReq) ProtoMessage() {} + +func (x *PublishGroupNoticeReq) ProtoReflect() protoreflect.Message { + mi := &file_business_ext_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublishGroupNoticeReq.ProtoReflect.Descriptor instead. +func (*PublishGroupNoticeReq) Descriptor() ([]byte, []int) { + return file_business_ext_proto_rawDescGZIP(), []int{4} +} + +func (x *PublishGroupNoticeReq) GetGroupId() int64 { + if x != nil { + return x.GroupId + } + return 0 +} + +func (x *PublishGroupNoticeReq) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *PublishGroupNoticeReq) GetPublishType() GroupNoticePublishType { + if x != nil { + return x.PublishType + } + return GroupNoticePublishType_UNKNOWN_PUBLISH +} + +func (x *PublishGroupNoticeReq) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + type ComplainGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -103,7 +471,7 @@ type ComplainGroupReq struct { func (x *ComplainGroupReq) Reset() { *x = ComplainGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[0] + mi := &file_business_ext_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -116,7 +484,7 @@ func (x *ComplainGroupReq) String() string { func (*ComplainGroupReq) ProtoMessage() {} func (x *ComplainGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[0] + mi := &file_business_ext_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -129,7 +497,7 @@ func (x *ComplainGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ComplainGroupReq.ProtoReflect.Descriptor instead. func (*ComplainGroupReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{0} + return file_business_ext_proto_rawDescGZIP(), []int{5} } func (x *ComplainGroupReq) GetGroupId() int64 { @@ -172,7 +540,7 @@ type IsFriendsReq struct { func (x *IsFriendsReq) Reset() { *x = IsFriendsReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[1] + mi := &file_business_ext_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -185,7 +553,7 @@ func (x *IsFriendsReq) String() string { func (*IsFriendsReq) ProtoMessage() {} func (x *IsFriendsReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[1] + mi := &file_business_ext_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -198,7 +566,7 @@ func (x *IsFriendsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use IsFriendsReq.ProtoReflect.Descriptor instead. func (*IsFriendsReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{1} + return file_business_ext_proto_rawDescGZIP(), []int{6} } func (x *IsFriendsReq) GetUserPhone() string { @@ -227,7 +595,7 @@ type IsFriendsResp struct { func (x *IsFriendsResp) Reset() { *x = IsFriendsResp{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[2] + mi := &file_business_ext_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -240,7 +608,7 @@ func (x *IsFriendsResp) String() string { func (*IsFriendsResp) ProtoMessage() {} func (x *IsFriendsResp) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[2] + mi := &file_business_ext_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -253,7 +621,7 @@ func (x *IsFriendsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use IsFriendsResp.ProtoReflect.Descriptor instead. func (*IsFriendsResp) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{2} + return file_business_ext_proto_rawDescGZIP(), []int{7} } func (x *IsFriendsResp) GetIsFriend() int64 { @@ -284,7 +652,7 @@ type Emoticon struct { func (x *Emoticon) Reset() { *x = Emoticon{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[3] + mi := &file_business_ext_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -297,7 +665,7 @@ func (x *Emoticon) String() string { func (*Emoticon) ProtoMessage() {} func (x *Emoticon) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[3] + mi := &file_business_ext_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -310,7 +678,7 @@ func (x *Emoticon) ProtoReflect() protoreflect.Message { // Deprecated: Use Emoticon.ProtoReflect.Descriptor instead. func (*Emoticon) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{3} + return file_business_ext_proto_rawDescGZIP(), []int{8} } func (x *Emoticon) GetName() string { @@ -352,7 +720,7 @@ type EmoticonListResp struct { func (x *EmoticonListResp) Reset() { *x = EmoticonListResp{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[4] + mi := &file_business_ext_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -365,7 +733,7 @@ func (x *EmoticonListResp) String() string { func (*EmoticonListResp) ProtoMessage() {} func (x *EmoticonListResp) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[4] + mi := &file_business_ext_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -378,7 +746,7 @@ func (x *EmoticonListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use EmoticonListResp.ProtoReflect.Descriptor instead. func (*EmoticonListResp) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{4} + return file_business_ext_proto_rawDescGZIP(), []int{9} } func (x *EmoticonListResp) GetEmoticons() []*Emoticon { @@ -404,7 +772,7 @@ type SignInReq struct { func (x *SignInReq) Reset() { *x = SignInReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[5] + mi := &file_business_ext_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -417,7 +785,7 @@ func (x *SignInReq) String() string { func (*SignInReq) ProtoMessage() {} func (x *SignInReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[5] + mi := &file_business_ext_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -430,7 +798,7 @@ func (x *SignInReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SignInReq.ProtoReflect.Descriptor instead. func (*SignInReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{5} + return file_business_ext_proto_rawDescGZIP(), []int{10} } func (x *SignInReq) GetPhoneNumber() string { @@ -488,7 +856,7 @@ type SignInResp struct { func (x *SignInResp) Reset() { *x = SignInResp{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[6] + mi := &file_business_ext_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -501,7 +869,7 @@ func (x *SignInResp) String() string { func (*SignInResp) ProtoMessage() {} func (x *SignInResp) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[6] + mi := &file_business_ext_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -514,7 +882,7 @@ func (x *SignInResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SignInResp.ProtoReflect.Descriptor instead. func (*SignInResp) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{6} + return file_business_ext_proto_rawDescGZIP(), []int{11} } func (x *SignInResp) GetIsNew() bool { @@ -551,7 +919,7 @@ type CloudUploadFileReq struct { func (x *CloudUploadFileReq) Reset() { *x = CloudUploadFileReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[7] + mi := &file_business_ext_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -564,7 +932,7 @@ func (x *CloudUploadFileReq) String() string { func (*CloudUploadFileReq) ProtoMessage() {} func (x *CloudUploadFileReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[7] + mi := &file_business_ext_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -577,7 +945,7 @@ func (x *CloudUploadFileReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudUploadFileReq.ProtoReflect.Descriptor instead. func (*CloudUploadFileReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{7} + return file_business_ext_proto_rawDescGZIP(), []int{12} } func (x *CloudUploadFileReq) GetDir() string { @@ -615,7 +983,7 @@ type CloudUploadFileResp struct { func (x *CloudUploadFileResp) Reset() { *x = CloudUploadFileResp{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[8] + mi := &file_business_ext_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -628,7 +996,7 @@ func (x *CloudUploadFileResp) String() string { func (*CloudUploadFileResp) ProtoMessage() {} func (x *CloudUploadFileResp) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[8] + mi := &file_business_ext_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -641,7 +1009,7 @@ func (x *CloudUploadFileResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CloudUploadFileResp.ProtoReflect.Descriptor instead. func (*CloudUploadFileResp) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{8} + return file_business_ext_proto_rawDescGZIP(), []int{13} } func (x *CloudUploadFileResp) GetMethod() string { @@ -691,7 +1059,7 @@ type User struct { func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[9] + mi := &file_business_ext_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -704,7 +1072,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[9] + mi := &file_business_ext_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -717,7 +1085,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{9} + return file_business_ext_proto_rawDescGZIP(), []int{14} } func (x *User) GetUserId() int64 { @@ -795,7 +1163,7 @@ type GetUserReq struct { func (x *GetUserReq) Reset() { *x = GetUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[10] + mi := &file_business_ext_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -808,7 +1176,7 @@ func (x *GetUserReq) String() string { func (*GetUserReq) ProtoMessage() {} func (x *GetUserReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[10] + mi := &file_business_ext_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -821,7 +1189,7 @@ func (x *GetUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserReq.ProtoReflect.Descriptor instead. func (*GetUserReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{10} + return file_business_ext_proto_rawDescGZIP(), []int{15} } func (x *GetUserReq) GetUserId() int64 { @@ -849,7 +1217,7 @@ type GetUserResp struct { func (x *GetUserResp) Reset() { *x = GetUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[11] + mi := &file_business_ext_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -862,7 +1230,7 @@ func (x *GetUserResp) String() string { func (*GetUserResp) ProtoMessage() {} func (x *GetUserResp) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[11] + mi := &file_business_ext_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -875,7 +1243,7 @@ func (x *GetUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserResp.ProtoReflect.Descriptor instead. func (*GetUserResp) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{11} + return file_business_ext_proto_rawDescGZIP(), []int{16} } func (x *GetUserResp) GetUser() *User { @@ -899,7 +1267,7 @@ type UpdateUserReq struct { func (x *UpdateUserReq) Reset() { *x = UpdateUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[12] + mi := &file_business_ext_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -912,7 +1280,7 @@ func (x *UpdateUserReq) String() string { func (*UpdateUserReq) ProtoMessage() {} func (x *UpdateUserReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[12] + mi := &file_business_ext_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -925,7 +1293,7 @@ func (x *UpdateUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserReq.ProtoReflect.Descriptor instead. func (*UpdateUserReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{12} + return file_business_ext_proto_rawDescGZIP(), []int{17} } func (x *UpdateUserReq) GetNickname() string { @@ -967,7 +1335,7 @@ type SearchUserReq struct { func (x *SearchUserReq) Reset() { *x = SearchUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[13] + mi := &file_business_ext_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -980,7 +1348,7 @@ func (x *SearchUserReq) String() string { func (*SearchUserReq) ProtoMessage() {} func (x *SearchUserReq) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[13] + mi := &file_business_ext_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -993,7 +1361,7 @@ func (x *SearchUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserReq.ProtoReflect.Descriptor instead. func (*SearchUserReq) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{13} + return file_business_ext_proto_rawDescGZIP(), []int{18} } func (x *SearchUserReq) GetKey() string { @@ -1014,7 +1382,7 @@ type SearchUserResp struct { func (x *SearchUserResp) Reset() { *x = SearchUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_business_ext_proto_msgTypes[14] + mi := &file_business_ext_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1027,7 +1395,7 @@ func (x *SearchUserResp) String() string { func (*SearchUserResp) ProtoMessage() {} func (x *SearchUserResp) ProtoReflect() protoreflect.Message { - mi := &file_business_ext_proto_msgTypes[14] + mi := &file_business_ext_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1040,7 +1408,7 @@ func (x *SearchUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SearchUserResp.ProtoReflect.Descriptor instead. func (*SearchUserResp) Descriptor() ([]byte, []int) { - return file_business_ext_proto_rawDescGZIP(), []int{14} + return file_business_ext_proto_rawDescGZIP(), []int{19} } func (x *SearchUserResp) GetUsers() []*User { @@ -1055,141 +1423,202 @@ var File_business_ext_proto protoreflect.FileDescriptor var file_business_ext_proto_rawDesc = []byte{ 0x0a, 0x12, 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x0d, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x68, - 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x4a, 0x0a, 0x0d, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x22, 0x5f, 0x0a, 0x08, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6d, - 0x65, 0x6d, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, - 0x6f, 0x72, 0x74, 0x22, 0x3e, 0x0a, 0x10, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x09, 0x65, 0x6d, 0x6f, 0x74, 0x69, - 0x63, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, - 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x63, - 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, - 0x71, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x41, 0x6c, - 0x69, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x52, 0x0a, - 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x69, - 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x4e, - 0x65, 0x77, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x60, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x22, 0x69, 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9a, - 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x73, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x69, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x65, - 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, - 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x3b, 0x0a, 0x0a, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x21, 0x0a, 0x0d, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x30, 0x0a, 0x0e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, - 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, - 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2a, 0xa4, - 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0e, 0x0a, 0x0a, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0d, 0x0a, 0x09, 0x43, 0x54, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x4d, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x52, 0x41, 0x55, 0x44, 0x10, 0x02, 0x12, 0x0d, - 0x0a, 0x09, 0x4d, 0x54, 0x5f, 0x48, 0x41, 0x52, 0x41, 0x53, 0x53, 0x10, 0x03, 0x12, 0x0d, 0x0a, - 0x09, 0x4d, 0x54, 0x5f, 0x52, 0x55, 0x4d, 0x4f, 0x55, 0x52, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, - 0x4d, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x45, 0x49, 0x54, 0x5f, 0x47, - 0x4f, 0x4f, 0x44, 0x53, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x4d, - 0x54, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x5f, 0x4d, - 0x49, 0x4e, 0x4f, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x54, 0x5f, 0x4f, 0x54, - 0x48, 0x45, 0x52, 0x10, 0x07, 0x32, 0x9c, 0x03, 0x0a, 0x0b, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, - 0x73, 0x73, 0x45, 0x78, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x12, - 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0e, - 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, - 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0f, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x16, - 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2f, 0x0a, 0x0c, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, - 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x30, 0x0a, 0x09, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x2e, - 0x70, 0x62, 0x2e, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x42, 0x0d, 0x5a, 0x0b, 0x67, 0x69, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x62, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2f, 0x0a, 0x12, 0x4c, 0x69, + 0x6b, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x18, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4c, 0x69, 0x6b, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x12, 0x56, 0x69, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x22, 0x98, 0x02, 0x0a, 0x13, 0x56, 0x69, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x6b, + 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x69, + 0x6b, 0x65, 0x4e, 0x75, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6e, + 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4e, + 0x75, 0x6d, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6c, 0x69, 0x6b, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x4c, 0x69, 0x6b, 0x65, 0x22, 0xa4, + 0x01, 0x0a, 0x15, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, + 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x50, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x22, 0x4a, 0x0a, 0x0d, 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, + 0x1c, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x5f, 0x0a, + 0x08, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x69, 0x6d, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x69, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x3e, + 0x0a, 0x10, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x09, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x69, + 0x63, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x73, 0x22, 0xb7, + 0x01, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x21, 0x0a, 0x0c, + 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x41, 0x6c, 0x69, 0x61, 0x12, 0x1a, 0x0a, + 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x52, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, + 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x17, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x60, 0x0a, 0x12, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x64, 0x69, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x69, + 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9a, 0x02, 0x0a, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x1f, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x31, 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x65, + 0x64, 0x5f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x12, 0x69, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x3b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, + 0x6f, 0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x22, 0x72, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x78, 0x74, 0x72, 0x61, 0x22, 0x21, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x30, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x05, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2a, 0xa4, 0x01, 0x0a, 0x0c, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x54, + 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x54, + 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x54, 0x5f, + 0x44, 0x45, 0x46, 0x52, 0x41, 0x55, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x54, 0x5f, + 0x48, 0x41, 0x52, 0x41, 0x53, 0x53, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x54, 0x5f, 0x52, + 0x55, 0x4d, 0x4f, 0x55, 0x52, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x54, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x45, 0x49, 0x54, 0x5f, 0x47, 0x4f, 0x4f, 0x44, 0x53, 0x5f, + 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x54, 0x5f, 0x56, 0x49, 0x4f, + 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x5f, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x53, + 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x54, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x07, + 0x2a, 0x6e, 0x0a, 0x16, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x54, + 0x49, 0x43, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x55, 0x50, 0x10, 0x03, + 0x32, 0x94, 0x05, 0x0a, 0x0b, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x45, 0x78, 0x74, + 0x12, 0x27, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, + 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x33, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x0c, 0x45, 0x6d, + 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x09, 0x2e, 0x70, 0x62, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x69, + 0x63, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x09, 0x49, + 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x73, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, + 0x49, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, + 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, + 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x3a, 0x0a, 0x12, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x56, + 0x69, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x16, + 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x69, 0x65, 0x77, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x34, 0x0a, 0x0f, 0x4c, 0x69, 0x6b, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, + 0x63, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x6b, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x15, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4c, + 0x69, 0x6b, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x1c, + 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4c, 0x69, 0x6b, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x10, 0x5a, 0x0e, 0x65, 0x67, 0x67, 0x2d, 0x69, + 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1204,54 +1633,70 @@ func file_business_ext_proto_rawDescGZIP() []byte { return file_business_ext_proto_rawDescData } -var file_business_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_business_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_business_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_business_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_business_ext_proto_goTypes = []interface{}{ - (ComplainType)(0), // 0: pb.ComplainType - (*ComplainGroupReq)(nil), // 1: pb.ComplainGroupReq - (*IsFriendsReq)(nil), // 2: pb.IsFriendsReq - (*IsFriendsResp)(nil), // 3: pb.IsFriendsResp - (*Emoticon)(nil), // 4: pb.Emoticon - (*EmoticonListResp)(nil), // 5: pb.EmoticonListResp - (*SignInReq)(nil), // 6: pb.SignInReq - (*SignInResp)(nil), // 7: pb.SignInResp - (*CloudUploadFileReq)(nil), // 8: pb.CloudUploadFileReq - (*CloudUploadFileResp)(nil), // 9: pb.CloudUploadFileResp - (*User)(nil), // 10: pb.User - (*GetUserReq)(nil), // 11: pb.GetUserReq - (*GetUserResp)(nil), // 12: pb.GetUserResp - (*UpdateUserReq)(nil), // 13: pb.UpdateUserReq - (*SearchUserReq)(nil), // 14: pb.SearchUserReq - (*SearchUserResp)(nil), // 15: pb.SearchUserResp - (*Empty)(nil), // 16: pb.Empty + (ComplainType)(0), // 0: pb.ComplainType + (GroupNoticePublishType)(0), // 1: pb.GroupNoticePublishType + (*LikeGroupNoticeReq)(nil), // 2: pb.LikeGroupNoticeReq + (*CancelLikeGroupNoticeReq)(nil), // 3: pb.CancelLikeGroupNoticeReq + (*ViewGroupNoticeReq)(nil), // 4: pb.ViewGroupNoticeReq + (*ViewGroupNoticeResp)(nil), // 5: pb.ViewGroupNoticeResp + (*PublishGroupNoticeReq)(nil), // 6: pb.PublishGroupNoticeReq + (*ComplainGroupReq)(nil), // 7: pb.ComplainGroupReq + (*IsFriendsReq)(nil), // 8: pb.IsFriendsReq + (*IsFriendsResp)(nil), // 9: pb.IsFriendsResp + (*Emoticon)(nil), // 10: pb.Emoticon + (*EmoticonListResp)(nil), // 11: pb.EmoticonListResp + (*SignInReq)(nil), // 12: pb.SignInReq + (*SignInResp)(nil), // 13: pb.SignInResp + (*CloudUploadFileReq)(nil), // 14: pb.CloudUploadFileReq + (*CloudUploadFileResp)(nil), // 15: pb.CloudUploadFileResp + (*User)(nil), // 16: pb.User + (*GetUserReq)(nil), // 17: pb.GetUserReq + (*GetUserResp)(nil), // 18: pb.GetUserResp + (*UpdateUserReq)(nil), // 19: pb.UpdateUserReq + (*SearchUserReq)(nil), // 20: pb.SearchUserReq + (*SearchUserResp)(nil), // 21: pb.SearchUserResp + (*Empty)(nil), // 22: pb.Empty } var file_business_ext_proto_depIdxs = []int32{ - 0, // 0: pb.ComplainGroupReq.complain_type:type_name -> pb.ComplainType - 10, // 1: pb.IsFriendsResp.user:type_name -> pb.User - 4, // 2: pb.EmoticonListResp.emoticons:type_name -> pb.Emoticon - 10, // 3: pb.GetUserResp.user:type_name -> pb.User - 10, // 4: pb.SearchUserResp.users:type_name -> pb.User - 6, // 5: pb.BusinessExt.SignIn:input_type -> pb.SignInReq - 11, // 6: pb.BusinessExt.GetUser:input_type -> pb.GetUserReq - 13, // 7: pb.BusinessExt.UpdateUser:input_type -> pb.UpdateUserReq - 14, // 8: pb.BusinessExt.SearchUser:input_type -> pb.SearchUserReq - 8, // 9: pb.BusinessExt.CloudUploadFile:input_type -> pb.CloudUploadFileReq - 16, // 10: pb.BusinessExt.EmoticonList:input_type -> pb.Empty - 2, // 11: pb.BusinessExt.IsFriends:input_type -> pb.IsFriendsReq - 1, // 12: pb.BusinessExt.ComplainGroup:input_type -> pb.ComplainGroupReq - 7, // 13: pb.BusinessExt.SignIn:output_type -> pb.SignInResp - 12, // 14: pb.BusinessExt.GetUser:output_type -> pb.GetUserResp - 16, // 15: pb.BusinessExt.UpdateUser:output_type -> pb.Empty - 15, // 16: pb.BusinessExt.SearchUser:output_type -> pb.SearchUserResp - 9, // 17: pb.BusinessExt.CloudUploadFile:output_type -> pb.CloudUploadFileResp - 5, // 18: pb.BusinessExt.EmoticonList:output_type -> pb.EmoticonListResp - 3, // 19: pb.BusinessExt.IsFriends:output_type -> pb.IsFriendsResp - 16, // 20: pb.BusinessExt.ComplainGroup:output_type -> pb.Empty - 13, // [13:21] is the sub-list for method output_type - 5, // [5:13] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 1, // 0: pb.ViewGroupNoticeResp.publish_type:type_name -> pb.GroupNoticePublishType + 1, // 1: pb.PublishGroupNoticeReq.publish_type:type_name -> pb.GroupNoticePublishType + 0, // 2: pb.ComplainGroupReq.complain_type:type_name -> pb.ComplainType + 16, // 3: pb.IsFriendsResp.user:type_name -> pb.User + 10, // 4: pb.EmoticonListResp.emoticons:type_name -> pb.Emoticon + 16, // 5: pb.GetUserResp.user:type_name -> pb.User + 16, // 6: pb.SearchUserResp.users:type_name -> pb.User + 12, // 7: pb.BusinessExt.SignIn:input_type -> pb.SignInReq + 17, // 8: pb.BusinessExt.GetUser:input_type -> pb.GetUserReq + 19, // 9: pb.BusinessExt.UpdateUser:input_type -> pb.UpdateUserReq + 20, // 10: pb.BusinessExt.SearchUser:input_type -> pb.SearchUserReq + 14, // 11: pb.BusinessExt.CloudUploadFile:input_type -> pb.CloudUploadFileReq + 22, // 12: pb.BusinessExt.EmoticonList:input_type -> pb.Empty + 8, // 13: pb.BusinessExt.IsFriends:input_type -> pb.IsFriendsReq + 7, // 14: pb.BusinessExt.ComplainGroup:input_type -> pb.ComplainGroupReq + 6, // 15: pb.BusinessExt.PublishGroupNotice:input_type -> pb.PublishGroupNoticeReq + 4, // 16: pb.BusinessExt.ViewGroupNotice:input_type -> pb.ViewGroupNoticeReq + 2, // 17: pb.BusinessExt.LikeGroupNotice:input_type -> pb.LikeGroupNoticeReq + 3, // 18: pb.BusinessExt.CancelLikeGroupNotice:input_type -> pb.CancelLikeGroupNoticeReq + 13, // 19: pb.BusinessExt.SignIn:output_type -> pb.SignInResp + 18, // 20: pb.BusinessExt.GetUser:output_type -> pb.GetUserResp + 22, // 21: pb.BusinessExt.UpdateUser:output_type -> pb.Empty + 21, // 22: pb.BusinessExt.SearchUser:output_type -> pb.SearchUserResp + 15, // 23: pb.BusinessExt.CloudUploadFile:output_type -> pb.CloudUploadFileResp + 11, // 24: pb.BusinessExt.EmoticonList:output_type -> pb.EmoticonListResp + 9, // 25: pb.BusinessExt.IsFriends:output_type -> pb.IsFriendsResp + 22, // 26: pb.BusinessExt.ComplainGroup:output_type -> pb.Empty + 22, // 27: pb.BusinessExt.PublishGroupNotice:output_type -> pb.Empty + 5, // 28: pb.BusinessExt.ViewGroupNotice:output_type -> pb.ViewGroupNoticeResp + 22, // 29: pb.BusinessExt.LikeGroupNotice:output_type -> pb.Empty + 22, // 30: pb.BusinessExt.CancelLikeGroupNotice:output_type -> pb.Empty + 19, // [19:31] is the sub-list for method output_type + 7, // [7:19] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_business_ext_proto_init() } @@ -1262,7 +1707,7 @@ func file_business_ext_proto_init() { file_common_ext_proto_init() if !protoimpl.UnsafeEnabled { file_business_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComplainGroupReq); i { + switch v := v.(*LikeGroupNoticeReq); i { case 0: return &v.state case 1: @@ -1274,7 +1719,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsFriendsReq); i { + switch v := v.(*CancelLikeGroupNoticeReq); i { case 0: return &v.state case 1: @@ -1286,7 +1731,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsFriendsResp); i { + switch v := v.(*ViewGroupNoticeReq); i { case 0: return &v.state case 1: @@ -1298,7 +1743,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Emoticon); i { + switch v := v.(*ViewGroupNoticeResp); i { case 0: return &v.state case 1: @@ -1310,7 +1755,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EmoticonListResp); i { + switch v := v.(*PublishGroupNoticeReq); i { case 0: return &v.state case 1: @@ -1322,7 +1767,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignInReq); i { + switch v := v.(*ComplainGroupReq); i { case 0: return &v.state case 1: @@ -1334,7 +1779,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignInResp); i { + switch v := v.(*IsFriendsReq); i { case 0: return &v.state case 1: @@ -1346,7 +1791,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudUploadFileReq); i { + switch v := v.(*IsFriendsResp); i { case 0: return &v.state case 1: @@ -1358,7 +1803,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudUploadFileResp); i { + switch v := v.(*Emoticon); i { case 0: return &v.state case 1: @@ -1370,7 +1815,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); i { + switch v := v.(*EmoticonListResp); i { case 0: return &v.state case 1: @@ -1382,7 +1827,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserReq); i { + switch v := v.(*SignInReq); i { case 0: return &v.state case 1: @@ -1394,7 +1839,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserResp); i { + switch v := v.(*SignInResp); i { case 0: return &v.state case 1: @@ -1406,7 +1851,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserReq); i { + switch v := v.(*CloudUploadFileReq); i { case 0: return &v.state case 1: @@ -1418,7 +1863,7 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearchUserReq); i { + switch v := v.(*CloudUploadFileResp); i { case 0: return &v.state case 1: @@ -1430,6 +1875,66 @@ func file_business_ext_proto_init() { } } file_business_ext_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_business_ext_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_business_ext_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUserResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_business_ext_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_business_ext_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchUserReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_business_ext_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserResp); i { case 0: return &v.state @@ -1447,8 +1952,8 @@ func file_business_ext_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_business_ext_proto_rawDesc, - NumEnums: 1, - NumMessages: 15, + NumEnums: 2, + NumMessages: 20, NumExtensions: 0, NumServices: 1, }, @@ -1488,6 +1993,14 @@ type BusinessExtClient interface { IsFriends(ctx context.Context, in *IsFriendsReq, opts ...grpc.CallOption) (*IsFriendsResp, error) // 投诉群 ComplainGroup(ctx context.Context, in *ComplainGroupReq, opts ...grpc.CallOption) (*Empty, error) + // 发布群公告 + PublishGroupNotice(ctx context.Context, in *PublishGroupNoticeReq, opts ...grpc.CallOption) (*Empty, error) + // 查看群公告 + ViewGroupNotice(ctx context.Context, in *ViewGroupNoticeReq, opts ...grpc.CallOption) (*ViewGroupNoticeResp, error) + // 点赞群公告 + LikeGroupNotice(ctx context.Context, in *LikeGroupNoticeReq, opts ...grpc.CallOption) (*Empty, error) + // 取消点赞群公告 + CancelLikeGroupNotice(ctx context.Context, in *CancelLikeGroupNoticeReq, opts ...grpc.CallOption) (*Empty, error) } type businessExtClient struct { @@ -1570,6 +2083,42 @@ func (c *businessExtClient) ComplainGroup(ctx context.Context, in *ComplainGroup return out, nil } +func (c *businessExtClient) PublishGroupNotice(ctx context.Context, in *PublishGroupNoticeReq, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/pb.BusinessExt/PublishGroupNotice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *businessExtClient) ViewGroupNotice(ctx context.Context, in *ViewGroupNoticeReq, opts ...grpc.CallOption) (*ViewGroupNoticeResp, error) { + out := new(ViewGroupNoticeResp) + err := c.cc.Invoke(ctx, "/pb.BusinessExt/ViewGroupNotice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *businessExtClient) LikeGroupNotice(ctx context.Context, in *LikeGroupNoticeReq, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/pb.BusinessExt/LikeGroupNotice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *businessExtClient) CancelLikeGroupNotice(ctx context.Context, in *CancelLikeGroupNoticeReq, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/pb.BusinessExt/CancelLikeGroupNotice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // BusinessExtServer is the server API for BusinessExt service. // All implementations must embed UnimplementedBusinessExtServer // for forward compatibility @@ -1590,6 +2139,14 @@ type BusinessExtServer interface { IsFriends(context.Context, *IsFriendsReq) (*IsFriendsResp, error) // 投诉群 ComplainGroup(context.Context, *ComplainGroupReq) (*Empty, error) + // 发布群公告 + PublishGroupNotice(context.Context, *PublishGroupNoticeReq) (*Empty, error) + // 查看群公告 + ViewGroupNotice(context.Context, *ViewGroupNoticeReq) (*ViewGroupNoticeResp, error) + // 点赞群公告 + LikeGroupNotice(context.Context, *LikeGroupNoticeReq) (*Empty, error) + // 取消点赞群公告 + CancelLikeGroupNotice(context.Context, *CancelLikeGroupNoticeReq) (*Empty, error) } // UnimplementedBusinessExtServer must be embedded to have forward compatible implementations. @@ -1620,6 +2177,18 @@ func (UnimplementedBusinessExtServer) IsFriends(context.Context, *IsFriendsReq) func (UnimplementedBusinessExtServer) ComplainGroup(context.Context, *ComplainGroupReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method ComplainGroup not implemented") } +func (UnimplementedBusinessExtServer) PublishGroupNotice(context.Context, *PublishGroupNoticeReq) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method PublishGroupNotice not implemented") +} +func (UnimplementedBusinessExtServer) ViewGroupNotice(context.Context, *ViewGroupNoticeReq) (*ViewGroupNoticeResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ViewGroupNotice not implemented") +} +func (UnimplementedBusinessExtServer) LikeGroupNotice(context.Context, *LikeGroupNoticeReq) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method LikeGroupNotice not implemented") +} +func (UnimplementedBusinessExtServer) CancelLikeGroupNotice(context.Context, *CancelLikeGroupNoticeReq) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelLikeGroupNotice not implemented") +} func RegisterBusinessExtServer(s grpc.ServiceRegistrar, srv BusinessExtServer) { s.RegisterService(&BusinessExt_ServiceDesc, srv) @@ -1769,6 +2338,78 @@ func _BusinessExt_ComplainGroup_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _BusinessExt_PublishGroupNotice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PublishGroupNoticeReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusinessExtServer).PublishGroupNotice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.BusinessExt/PublishGroupNotice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusinessExtServer).PublishGroupNotice(ctx, req.(*PublishGroupNoticeReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _BusinessExt_ViewGroupNotice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ViewGroupNoticeReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusinessExtServer).ViewGroupNotice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.BusinessExt/ViewGroupNotice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusinessExtServer).ViewGroupNotice(ctx, req.(*ViewGroupNoticeReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _BusinessExt_LikeGroupNotice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LikeGroupNoticeReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusinessExtServer).LikeGroupNotice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.BusinessExt/LikeGroupNotice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusinessExtServer).LikeGroupNotice(ctx, req.(*LikeGroupNoticeReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _BusinessExt_CancelLikeGroupNotice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CancelLikeGroupNoticeReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusinessExtServer).CancelLikeGroupNotice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.BusinessExt/CancelLikeGroupNotice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusinessExtServer).CancelLikeGroupNotice(ctx, req.(*CancelLikeGroupNoticeReq)) + } + return interceptor(ctx, in, info, handler) +} + // BusinessExt_ServiceDesc is the grpc.ServiceDesc for BusinessExt service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1808,6 +2449,22 @@ var BusinessExt_ServiceDesc = grpc.ServiceDesc{ MethodName: "ComplainGroup", Handler: _BusinessExt_ComplainGroup_Handler, }, + { + MethodName: "PublishGroupNotice", + Handler: _BusinessExt_PublishGroupNotice_Handler, + }, + { + MethodName: "ViewGroupNotice", + Handler: _BusinessExt_ViewGroupNotice_Handler, + }, + { + MethodName: "LikeGroupNotice", + Handler: _BusinessExt_LikeGroupNotice_Handler, + }, + { + MethodName: "CancelLikeGroupNotice", + Handler: _BusinessExt_CancelLikeGroupNotice_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "business.ext.proto",