From 019197fc15808981e3d3e1a6d8f42db7b222f572 Mon Sep 17 00:00:00 2001 From: cjy Date: Wed, 3 Sep 2025 15:51:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8F=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增任务管理台功能 --- cmd/app.go | 5 +- cmd/wire.go | 2 +- cmd/wire_gen.go | 13 +- conf/config.yaml | 6 + conf/dev/config.yaml | 6 + conf/prod/config.yaml | 6 + config/config.go | 7 + internal/controller/task.go | 296 +++ internal/dao/taskDao.go | 964 +++++++ internal/logic/taskLogic.go | 314 +++ internal/model/task.go | 62 + pb/bundle.proto | 172 ++ pb/bundle/bundle.pb.go | 4145 ++++++++++++++++++++++-------- pb/bundle/bundle.validator.pb.go | 69 + pb/bundle/bundle_triple.pb.go | 421 ++- pkg/app/app.go | 5 +- pkg/db/bundleDB.go | 11 +- pkg/db/mysql.go | 54 +- pkg/db/taskBenchDB.go | 24 + 19 files changed, 5461 insertions(+), 1121 deletions(-) create mode 100644 internal/controller/task.go create mode 100644 internal/dao/taskDao.go create mode 100644 internal/logic/taskLogic.go create mode 100644 internal/model/task.go create mode 100644 pkg/db/taskBenchDB.go diff --git a/cmd/app.go b/cmd/app.go index 1308bbd..ddc8cd5 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -5,6 +5,7 @@ import ( "micro-bundle/internal/controller" _ "micro-bundle/internal/handler" "micro-bundle/pkg/app" + "micro-bundle/pkg/db" "micro-bundle/pkg/tracing" "dubbo.apache.org/dubbo-go/v3/config" @@ -12,15 +13,15 @@ import ( _ "dubbo.apache.org/dubbo-go/v3/imports" "github.com/bwmarrin/snowflake" "go.uber.org/zap" - "gorm.io/gorm" ) -func NewApp(Lg *zap.Logger, JaegerTracer *tracing.JaegerProvider, SfNode *snowflake.Node, BundleDB *gorm.DB) *app.App { +func NewApp(Lg *zap.Logger, JaegerTracer *tracing.JaegerProvider, SfNode *snowflake.Node, BundleDB *db.BundleDB, TaskBenchDB *db.TaskBenchDB) *app.App { return &app.App{ Lg: Lg, JaegerTracer: JaegerTracer, SfNode: SfNode, BundleDB: BundleDB, + TaskBenchDB: TaskBenchDB, } } diff --git a/cmd/wire.go b/cmd/wire.go index 8a29cd3..815532d 100644 --- a/cmd/wire.go +++ b/cmd/wire.go @@ -14,6 +14,6 @@ import ( ) func InitApp() (*app.App, error) { - wire.Build(logger.Provider, tracing.Provider, snowf.Provider, db.Provider, NewApp) + wire.Build(logger.Provider, tracing.Provider, snowf.Provider, db.Provider, db.TaskBenchProvider, NewApp) return &app.App{}, nil } diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index aec1a63..a51c5a3 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -1,6 +1,6 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate go run github.com/google/wire/cmd/wire +//go:generate go run -mod=mod github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject @@ -12,6 +12,12 @@ import ( "micro-bundle/pkg/logger" "micro-bundle/pkg/snowf" "micro-bundle/pkg/tracing" + + _ "dubbo.apache.org/dubbo-go/v3/filter/tps/strategy" + + _ "dubbo.apache.org/dubbo-go/v3/imports" + + _ "micro-bundle/internal/handler" ) // Injectors from wire.go: @@ -20,7 +26,8 @@ func InitApp() (*app.App, error) { zapLogger := logger.ZapInit() jaegerProvider := tracing.NewTracing() node := snowf.NewSf() - gormDB := db.NewBundleDB() - appApp := NewApp(zapLogger, jaegerProvider, node, gormDB) + bundleDB := db.NewBundleDB() + taskBenchDB := db.NewTaskBenchDB() + appApp := NewApp(zapLogger, jaegerProvider, node, bundleDB, taskBenchDB) return appApp, nil } diff --git a/conf/config.yaml b/conf/config.yaml index 2e8a885..d42d6c1 100644 --- a/conf/config.yaml +++ b/conf/config.yaml @@ -7,6 +7,12 @@ bundleDB: user: artuser password: C250PflXIWv2SQm8 db_name: "fiee_bundle" +taskBenchDB: + host: 121.229.45.214 + port: 9007 + user: artuser + password: C250PflXIWv2SQm8 + db_name: "fiee_task_bench" #aliYunRtc: # appid: "aeztom27" # app_key: "76c62466cbd77d7a3606660a15861d1e" diff --git a/conf/dev/config.yaml b/conf/dev/config.yaml index 2e8a885..d42d6c1 100644 --- a/conf/dev/config.yaml +++ b/conf/dev/config.yaml @@ -7,6 +7,12 @@ bundleDB: user: artuser password: C250PflXIWv2SQm8 db_name: "fiee_bundle" +taskBenchDB: + host: 121.229.45.214 + port: 9007 + user: artuser + password: C250PflXIWv2SQm8 + db_name: "fiee_task_bench" #aliYunRtc: # appid: "aeztom27" # app_key: "76c62466cbd77d7a3606660a15861d1e" diff --git a/conf/prod/config.yaml b/conf/prod/config.yaml index 27a60ca..6240193 100644 --- a/conf/prod/config.yaml +++ b/conf/prod/config.yaml @@ -7,6 +7,12 @@ bundleDB: user: fonchain_opv password: IhQmhg8HZjDmU=Ove5PnA^D db_name: "micro_bundle" +taskBenchDB: + host: svc-fontree-mysql-service + port: 3306 + user: fonchain_opv + password: IhQmhg8HZjDmU=Ove5PnA^D + db_name: "fiee_task_bench" #redis: # db: ${oa-meeting.redis.db} # addr: ${redis.addr} diff --git a/config/config.go b/config/config.go index 60b85d7..0e82bef 100644 --- a/config/config.go +++ b/config/config.go @@ -26,6 +26,13 @@ type AppConfig struct { Password string DbName string `mapstructure:"db_name"` } + TaskBenchDB struct { + Host string + Port string + User string + Password string + DbName string `mapstructure:"db_name"` + } Redis struct { DB string Addr string diff --git a/internal/controller/task.go b/internal/controller/task.go new file mode 100644 index 0000000..6cfdb50 --- /dev/null +++ b/internal/controller/task.go @@ -0,0 +1,296 @@ +package controller + +import ( + "context" + "fmt" + "micro-bundle/internal/dao" + "micro-bundle/internal/logic" + "micro-bundle/pb/bundle" +) + +// GetPendingTaskList 查询待指派任务记录 +func (b *BundleProvider) GetPendingTaskList(_ context.Context, req *bundle.TaskQueryRequest) (*bundle.TaskQueryResponse, error) { + // 转换请求参数 + daoReq := &dao.TaskQueryRequest{ + Keyword: req.Keyword, + Page: int(req.Page), + PageSize: int(req.PageSize), + SortBy: req.SortBy, + SortType: req.SortType, + } + + // 调用logic层 + tasks, total, err := logic.GetPendingTaskList(daoReq) + if err != nil { + return nil, err + } + + // 转换响应数据 + var taskInfos []*bundle.TaskManagementInfo + for _, task := range tasks { + taskInfo := &bundle.TaskManagementInfo{ + SubNum: task.SubNum, + TelNum: task.TelNum, + ArtistName: task.ArtistName, + PendingVideoCount: int32(task.PendingVideoCount), + PendingPostCount: int32(task.PendingPostCount), + PendingDataCount: int32(task.PendingDataCount), + ProgressTaskCount: int32(task.ProgressTaskCount), + CompleteTaskCount: int32(task.CompleteTaskCount), + LastTaskAssignee: task.LastTaskAssignee, + TaskAssigneeNum: task.TaskAssigneeNum, + } + taskInfos = append(taskInfos, taskInfo) + } + + return &bundle.TaskQueryResponse{ + Tasks: taskInfos, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// AssignTask 指派某位员工完成某个艺人的任务 +// AssignTask 指派某位员工完成某个艺人的任务 +func (b *BundleProvider) AssignTask(_ context.Context, req *bundle.TaskAssignRequest) (*bundle.CommonResponse, error) { + // 转换请求参数 + daoReq := &dao.TaskAssignRequest{ + SubNum: req.SubNum, + TelNum: req.TelNum, + ArtistName: req.ArtistName, // 添加缺失的ArtistName字段 + TaskAssignee: req.TaskAssignee, + TaskAssigneeNum: req.TaskAssigneeNum, + Operator: req.Operator, + OperatorNum: req.OperatorNum, + AssignVideoCount: int(req.AssignVideoCount), + AssignPostCount: int(req.AssignPostCount), + AssignDataCount: int(req.AssignDataCount), + } + + // 调用logic层 + err := logic.AssignTask(daoReq) + if err != nil { + return &bundle.CommonResponse{ + Msg: err.Error(), + }, err + } + + return &bundle.CommonResponse{ + Msg: "任务指派成功", + }, nil +} + +// UpdatePendingCount 修改待发数量 +func (b *BundleProvider) UpdatePendingCount(_ context.Context, req *bundle.UpdatePendingCountRequest) (*bundle.CommonResponse, error) { + // 转换请求参数 + daoReq := &dao.UpdatePendingCountRequest{ + SubNum: req.SubNum, + TelNum: req.TelNum, + ArtistName: req.ArtistName, // 添加缺失的ArtistName字段 + PendingVideoCount: int(req.PendingVideoCount), + PendingPostCount: int(req.PendingPostCount), + PendingDataCount: int(req.PendingDataCount), + Operator: req.Operator, + OperatorNum: req.OperatorNum, + } + + // 调用logic层 + err := logic.UpdatePendingCount(daoReq) + if err != nil { + return &bundle.CommonResponse{ + Msg: err.Error(), + }, err + } + + return &bundle.CommonResponse{ + Msg: "待发数量修改成功", + }, nil +} + +// GetRecentAssignRecords 查询最近被指派记录 +func (b *BundleProvider) GetRecentAssignRecords(_ context.Context, req *bundle.RecentAssignRecordsRequest) (*bundle.RecentAssignRecordsResponse, error) { + limit := int(req.Limit) + if limit == 0 { + limit = 3 // 默认查询3条 + } + + // 调用logic层 + operatorList, err := logic.GetRecentAssignRecords(limit) + if err != nil { + return nil, err + } + + return &bundle.RecentAssignRecordsResponse{ + OperatorList: operatorList, + }, nil +} + +// GetEmployeeAssignedTasks 根据登录人信息查询被指派给该员工的任务 +func (b *BundleProvider) GetEmployeeAssignedTasks(_ context.Context, req *bundle.EmployeeTaskQueryRequest) (*bundle.EmployeeTaskQueryResponse, error) { + // 转换请求参数 + daoReq := &dao.EmployeeTaskQueryRequest{ + TaskAssigneeNum: req.TaskAssigneeNum, + Keyword: req.Keyword, + Operator: req.Operator, + SortBy: req.SortBy, + StartTime: req.StartTime, + EndTime: req.EndTime, + StartCompleteTime: req.StartCompleteTime, + EndCompleteTime: req.EndCompleteTime, + Status: int(req.Status), + Page: int(req.Page), + PageSize: int(req.PageSize), + } + + // 调用logic层 + records, total, err := logic.GetEmployeeAssignedTasks(daoReq) + if err != nil { + return nil, err + } + + // 转换响应数据 + var recordInfos []*bundle.TaskAssignRecordInfo + for _, record := range records { + recordInfo := convertToTaskAssignRecordInfo(record) + recordInfos = append(recordInfos, recordInfo) + } + + return &bundle.EmployeeTaskQueryResponse{ + Records: recordInfos, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// CompleteTaskManually 员工手动点击完成任务 +func (b *BundleProvider) CompleteTaskManually(_ context.Context, req *bundle.CompleteTaskManuallyRequest) (*bundle.CommonResponse, error) { + // 调用logic层 + err := logic.CompleteTaskManually(req.AssignRecordsUUID, req.TaskAssigneeNum) + if err != nil { + return &bundle.CommonResponse{ + Msg: err.Error(), + }, err + } + + return &bundle.CommonResponse{ + Msg: "任务完成状态更新成功", + }, nil +} + +// UpdateTaskProgress 员工实际完成任务状态更新 +func (b *BundleProvider) UpdateTaskProgress(_ context.Context, req *bundle.UpdateTaskProgressRequest) (*bundle.CommonResponse, error) { + // 转换请求参数 + daoReq := &dao.CompleteTaskRequest{ + AssignRecordsUUID: req.AssignRecordsUUID, + EmployeeName: req.EmployeeName, + EmployeeNum: req.EmployeeNum, + TaskType: req.TaskType, + CompleteCount: int(req.CompleteCount), + } + + // 调用logic层 + err := logic.UpdateTaskProgress(daoReq) + if err != nil { + return &bundle.CommonResponse{ + Msg: err.Error(), + }, err + } + + return &bundle.CommonResponse{ + Msg: "任务进度更新成功", + }, nil +} + +// GetTaskAssignRecordsList 多条件查询操作记录表 +func (b *BundleProvider) GetTaskAssignRecordsList(_ context.Context, req *bundle.TaskAssignRecordsQueryRequest) (*bundle.TaskAssignRecordsQueryResponse, error) { + // 转换请求参数 + daoReq := &dao.TaskAssignRecordsQueryRequest{ + Keyword: req.Keyword, + TaskAssignee: req.TaskAssignee, + Operator: req.Operator, + OperatorNum: req.OperatorNum, + StartTime: req.StartTime, + EndTime: req.EndTime, + Status: int(req.Status), + ActualStatus: int(req.ActualStatus), + Page: int(req.Page), + PageSize: int(req.PageSize), + } + + // 调用logic层 + records, total, err := logic.GetTaskAssignRecordsList(daoReq) + if err != nil { + return nil, err + } + + // 转换响应数据 + var recordInfos []*bundle.TaskAssignRecordInfo + for _, record := range records { + recordInfo := convertToTaskAssignRecordInfo(record) + recordInfos = append(recordInfos, recordInfo) + } + + return &bundle.TaskAssignRecordsQueryResponse{ + Records: recordInfos, + Total: total, + Page: req.Page, + PageSize: req.PageSize, + }, nil +} + +// convertToTaskAssignRecordInfo 转换TaskAssignRecords模型为proto消息 +func convertToTaskAssignRecordInfo(record *dao.TaskAssignRecordsResponse) *bundle.TaskAssignRecordInfo { + var completeTime string + if !record.CompleteTime.IsZero() { + completeTime = record.CompleteTime.Format("2006-01-02 15:04:05") + } + + return &bundle.TaskAssignRecordInfo{ + AssignRecordsUUID: record.AssignRecordsUUID, + SubNum: record.SubNum, + TelNum: record.TelNum, + ArtistName: record.ArtistName, + Status: int32(record.Status), + ActualStatus: int32(record.ActualStatus), + CompleteTime: completeTime, + OperatorType: int32(record.OperatorType), + Operator: record.Operator, + OperatorNum: record.OperatorNum, + OperatorTime: record.OperatorTime.Format("2006-01-02 15:04:05"), + TaskAssignee: record.TaskAssignee, + TaskAssigneeNum: record.TaskAssigneeNum, + PendingVideoCount: int32(record.PendingVideoCount), + PendingPostCount: int32(record.PendingPostCount), + PendingDataCount: int32(record.PendingDataCount), + UpdatedAt: record.UpdatedAt.Format("2006-01-02 15:04:05"), + } +} + +// GetArtistBundleBalance 查询艺人套餐剩余数量 +func (b *BundleProvider) GetArtistBundleBalance(_ context.Context, req *bundle.ArtistBundleBalanceRequest) (*bundle.ArtistBundleBalanceResponse, error) { + // 参数验证 + if req.CustomerNum == "" && req.TelNum == "" { + return nil, fmt.Errorf("艺人编号和手机号不能同时为空") + } + + // 转换请求参数 + daoReq := &dao.ArtistBundleBalanceRequest{ + CustomerNum: req.CustomerNum, + TelNum: req.TelNum, + } + + // 调用logic层 + result, err := logic.GetArtistBundleBalance(daoReq) + if err != nil { + return nil, err + } + + // 转换响应数据 + return &bundle.ArtistBundleBalanceResponse{ + RemainingVideoCount: int32(result.RemainingVideoCount), + RemainingImageCount: int32(result.RemainingImageCount), + RemainingDataAnalysisCount: int32(result.RemainingDataAnalysisCount), + }, nil +} diff --git a/internal/dao/taskDao.go b/internal/dao/taskDao.go new file mode 100644 index 0000000..fbf2a04 --- /dev/null +++ b/internal/dao/taskDao.go @@ -0,0 +1,964 @@ +package dao + +import ( + "fmt" + "micro-bundle/internal/model" + "micro-bundle/pkg/app" + commonErr "micro-bundle/pkg/err" + "micro-bundle/pkg/msg" + "time" + + "github.com/google/uuid" + "gorm.io/gorm" +) + +// TaskQueryRequest 查询待指派任务记录请求参数 +type TaskQueryRequest struct { + Keyword string `json:"keyword"` // 艺人姓名、编号、手机号搜索关键词 + Page int `json:"page"` // 页码 + PageSize int `json:"pageSize"` // 每页数量 + SortBy string `json:"sortBy"` // 排序字段 + SortType string `json:"sortType"` // 排序类型 asc/desc +} + +// TaskAssignRequest 指派任务请求参数 +type TaskAssignRequest struct { + SubNum string `json:"subNum"` // 艺人编号 + TelNum string `json:"telNum"` // 艺人手机号 + ArtistName string `json:"artistName"` // 艺人姓名 + TaskAssignee string `json:"taskAssignee"` // 任务指派人 + TaskAssigneeNum string `json:"taskAssigneeNum"` // 任务指派人账号 + Operator string `json:"operator"` // 操作人 + OperatorNum string `json:"operatorNum"` // 操作人账号 + AssignVideoCount int `json:"assignVideoCount"` // 指派视频数 + AssignPostCount int `json:"assignPostCount"` // 指派图文数 + AssignDataCount int `json:"assignDataCount"` // 指派数据数 +} + +// UpdatePendingCountRequest 修改待发数量请求参数 +type UpdatePendingCountRequest struct { + SubNum string `json:"subNum"` // 艺人编号 + TelNum string `json:"telNum"` // 艺人手机号 + ArtistName string `json:"artistName"` // 艺人姓名 + PendingVideoCount int `json:"pendingVideoCount"` // 待发视频数量 + PendingPostCount int `json:"pendingPostCount"` // 待发图文数量 + PendingDataCount int `json:"pendingDataCount"` // 待发数据数量 + Operator string `json:"operator"` // 操作人 + OperatorNum string `json:"operatorNum"` // 操作人账号 +} + +// EmployeeTaskQueryRequest 员工任务查询请求参数 +type EmployeeTaskQueryRequest struct { + TaskAssigneeNum string `json:"taskAssigneeNum"` // 被指派人账号 + Keyword string `json:"keyword"` // 艺人姓名、编号、手机号搜索关键词 + Operator string `json:"operator"` // 操作人 + SortBy string `json:"sortBy"` // 排序字段 + StartTime string `json:"startTime"` // 指派开始时间 + EndTime string `json:"endTime"` // 指派结束时间 + StartCompleteTime string `json:"startCompleteTime"` // 开始完成时间 + EndCompleteTime string `json:"endCompleteTime"` // 结束完成时间 + Status int `json:"status"` // 反馈完成状态 + + Page int `json:"page"` // 页码 + PageSize int `json:"pageSize"` // 每页数量 +} + +// CompleteTaskRequest 完成任务请求参数 +type CompleteTaskRequest struct { + AssignRecordsUUID string `json:"assignRecordsUUID,omitempty"` // 指派记录UUID(可选) + EmployeeName string `json:"employeeName"` // 员工姓名(必要) + EmployeeNum string `json:"employeeNum"` // 员工工号(必要) + TaskType string `json:"taskType"` // 任务类型: video/post/data + CompleteCount int `json:"completeCount"` // 完成数量 +} + +// TaskAssignRecordsQueryRequest 多条件查询操作记录表请求参数 +type TaskAssignRecordsQueryRequest struct { + Keyword string `json:"keyword"` // 艺人姓名、编号、手机号搜索关键词 + TaskAssignee string `json:"taskAssignee"` // 指派人姓名 + Operator string `json:"operator"` // 操作人姓名 + OperatorNum string `json:"operatorNum"` // 操作人手机号 + StartTime string `json:"startTime"` // 操作开始时间 + EndTime string `json:"endTime"` // 操作结束时间 + Status int `json:"status"` // 反馈完成状态 0:全部 1:未完成 2:完成 + ActualStatus int `json:"actualStatus"` // 实际完成状态 0:全部 1:未完成 2:完成 + Page int `json:"page"` // 页码 + PageSize int `json:"pageSize"` // 每页数量 +} + +// 待指派任务 response +type TaskQueryResponse struct { + SubNum string `json:"subNum"` + TelNum string `json:"telNum"` + ArtistName string `json:"artistName"` + PendingVideoCount int `gorm:"column:pending_video_count;comment:待发视频数量" json:"pendingVideoCount"` + PendingPostCount int `gorm:"column:pending_post_count;comment:待发图文数量" json:"pendingPostCount"` + PendingDataCount int `gorm:"column:pending_data_count;comment:待发数据数量" json:"pendingDataCount"` + ProgressTaskCount int `gorm:"column:progress_task_count;comment:进行中的任务数量" json:"progressTaskCount"` + CompleteTaskCount int `gorm:"column:complete_task_count;comment:已完成任务数量" json:"completeTaskCount"` + LastTaskAssignee string `gorm:"column:last_task_assignee;comment:最后一次的任务指派人" json:"lastTaskAssignee"` + TaskAssigneeNum string `gorm:"column:task_assignee_num;comment:最后一次指派人账号" json:"taskAssigneeNum"` +} + +// 任务记录表返回结构体 +type TaskAssignRecordsResponse struct { + AssignRecordsUUID string `gorm:"column:assign_records_uuid;comment:指派记录UUID" json:"assignRecordsUUID"` + SubNum string `gorm:"column:sub_num;comment:艺人编号" json:"subNum"` + TelNum string `gorm:"column:tel_num;comment:艺人手机号" json:"telNum"` + ArtistName string `gorm:"column:artist_name;comment:艺人名称" json:"artistName"` + Status int `gorm:"column:status;comment:反馈完成状态 1:未完成 2:完成" json:"status"` + ActualStatus int `gorm:"column:actual_status;comment:实际完成状态 1:未完成 2:完成" json:"actualStatus"` + CompleteTime *time.Time `gorm:"column:complete_time;comment:反馈完成时间" json:"completeTime"` + OperatorType int `gorm:"column:operator_type;comment:操作类型 1:修改待发数量 2:指派" json:"operatorType"` + Operator string `gorm:"column:operator;comment:操作人" json:"operator"` + OperatorNum string `gorm:"column:operator_num;comment:操作人账号" json:"operatorNum"` + OperatorTime time.Time `gorm:"column:operator_time;comment:操作时间" json:"operatorTime"` + TaskAssignee string `gorm:"column:task_assignee;comment:任务指派人" json:"taskAssignee"` + TaskAssigneeNum string `gorm:"column:task_assignee_num;comment:任务指派人账号" json:"taskAssigneeNum"` + PendingVideoCount int `gorm:"column:pending_video_count;comment:待发视频数量" json:"pendingVideoCount"` + PendingPostCount int `gorm:"column:pending_post_count;comment:待发图文数量" json:"pendingPostCount"` + PendingDataCount int `gorm:"column:pending_data_count;comment:待发数据数量" json:"pendingDataCount"` + UpdatedAt time.Time `gorm:"column:updated_at;comment:更新时间" json:"updatedAt"` +} + +// 任务指派记录数量结构体 +type TaskAssignRecords struct { + TaskAssigneeNum string `json:"taskAssigneeNum"` // 任务指派人工号 + ProgressTaskCount int `json:"progressTaskCount"` // 进行中任务数量 + CompleteTaskCount int `json:"completeTaskCount"` // 已完成任务数量 +} + +// ValidArtistInfo 有效艺人信息结构体 +type ValidArtistInfo struct { + UserID int `json:"userId"` // 用户ID + CustomerNum string `json:"customerNum"` // 艺人编号 + UserName string `json:"userName"` // 艺人姓名 + UserPhoneNumber string `json:"userPhoneNumber"` // 艺人手机号 + BundleName string `json:"bundleName"` // 套餐名称 + ExpirationTime string `json:"expirationTime"` // 过期时间 + Status int `json:"status"` // 套餐状态 + OrderUUID string `json:"orderUUID"` // 订单UUID + AccountNumber int `json:"accountNumber"` // 账号数量 + AccountConsumptionNumber int `json:"accountConsumptionNumber"` // 账号消耗数量 + VideoNumber int `json:"videoNumber"` // 视频数量 + VideoConsumptionNumber int `json:"videoConsumptionNumber"` // 视频消耗数量 + ImageNumber int `json:"imageNumber"` // 图片数量 + ImageConsumptionNumber int `json:"imageConsumptionNumber"` // 图片消耗数量 + DataAnalysisNumber int `json:"dataAnalysisNumber"` // 数据分析数量 + DataAnalysisConsumptionNumber int `json:"dataAnalysisConsumptionNumber"` // 数据分析消耗数量 + ExpansionPacksNumber int `json:"expansionPacksNumber"` // 扩展套餐数量 +} + +// ArtistBundleBalanceRequest 查询艺人套餐剩余数量请求参数 +type ArtistBundleBalanceRequest struct { + CustomerNum string `json:"customerNum"` // 艺人编号(推荐使用) + TelNum string `json:"telNum"` // 艺人手机号(备选) +} + +// ArtistBundleBalanceResponse 艺人套餐剩余数量响应结构体 +type ArtistBundleBalanceResponse struct { + RemainingVideoCount int `json:"remainingVideoCount"` // 剩余视频数量 (video_number - video_consumption_number) + RemainingImageCount int `json:"remainingImageCount"` // 剩余图片数量 (image_number - image_consumption_number) + RemainingDataAnalysisCount int `json:"remainingDataAnalysisCount"` // 剩余数据分析数量 (data_analysis_number - data_analysis_consumption_number) +} + +// GetPendingTaskList 查询待指派任务记录 +// 根据套餐没有过期的艺人查询TaskManagement表中的记录,如果不存在则构建默认值 +func GetPendingTaskList(req *TaskQueryRequest, validArtist []ValidArtistInfo) ([]*model.TaskManagement, int64, error) { + // 构建有效艺人ID列表 + var validArtistIDs []string + for _, artist := range validArtist { + if artist.CustomerNum != "" { + validArtistIDs = append(validArtistIDs, artist.CustomerNum) + } + } + + // 如果没有有效艺人,直接返回空结果 + if len(validArtistIDs) == 0 { + return []*model.TaskManagement{}, 0, nil + } + + // 第一步:查询所有有效艺人在数据库中的存在情况(不应用关键词过滤) + var existingTasks []*model.TaskManagement + existQuery := app.ModuleClients.TaskBenchDB.Model(&model.TaskManagement{}).Where("sub_num IN (?)", validArtistIDs) + err := existQuery.Find(&existingTasks).Error + if err != nil { + return nil, 0, commonErr.ReturnError(err, msg.ErrorGetBundleList, "查询现有任务记录失败: ") + } + + // 创建已存在艺人编号的映射 + existingSubNums := make(map[string]bool) + for _, task := range existingTasks { + existingSubNums[task.SubNum] = true + } + + // 创建艺人编号到艺人信息的映射,便于快速查找 + artistMap := make(map[string]ValidArtistInfo) + for _, artist := range validArtist { + artistMap[artist.CustomerNum] = artist + } + + // 为不存在的艺人创建默认记录 + var newTasksToCreate []*model.TaskManagement + for _, subNum := range validArtistIDs { + if !existingSubNums[subNum] { + artist := artistMap[subNum] + // 构建默认任务记录 + defaultTask := &model.TaskManagement{ + SubNum: subNum, + TelNum: artist.UserPhoneNumber, + ArtistName: artist.UserName, + PendingVideoCount: artist.VideoNumber - artist.VideoConsumptionNumber, + PendingPostCount: artist.ImageNumber - artist.ImageConsumptionNumber, + PendingDataCount: artist.DataAnalysisNumber - artist.DataAnalysisConsumptionNumber, + ProgressCount: 0, + CompleteCount: 0, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + newTasksToCreate = append(newTasksToCreate, defaultTask) + } + } + + // 批量创建新的任务记录 + if len(newTasksToCreate) > 0 { + if err := app.ModuleClients.TaskBenchDB.Create(&newTasksToCreate).Error; err != nil { + return nil, 0, commonErr.ReturnError(err, msg.ErrorGetBundleList, "创建默认任务记录失败: ") + } + } + + // 第二步:应用完整的查询条件进行最终查询 + var tasks []*model.TaskManagement + var total int64 + + // 构建最终查询条件 + query := app.ModuleClients.TaskBenchDB.Model(&model.TaskManagement{}) + + // 限制在有效艺人范围内 + query = query.Where("sub_num IN (?)", validArtistIDs) + + // 关键词搜索(艺人姓名、编号、手机号) + if req.Keyword != "" { + query = query.Where("sub_num LIKE ? OR tel_num LIKE ? OR artist_name LIKE ?", + "%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + // 计算总数 + query.Count(&total) + + // 排序 + if req.SortBy != "" && req.SortType != "" { + orderClause := fmt.Sprintf("%s %s", req.SortBy, req.SortType) + query = query.Order(orderClause) + } else { + // 默认按待发视频降序 + query = query.Order("pending_video_count DESC") + } + + // 分页 + if req.PageSize > 0 && req.Page > 0 { + offset := (req.Page - 1) * req.PageSize + query = query.Limit(req.PageSize).Offset(offset) + } + + err = query.Find(&tasks).Error + if err != nil { + return nil, 0, commonErr.ReturnError(err, msg.ErrorGetBundleList, "查询待指派任务记录失败: ") + } + + return tasks, total, nil +} + +// AssignTask 指派某位员工完成某个艺人的任务 +func AssignTask(req *TaskAssignRequest, progressTaskCount int, completeTaskCount int) error { + // 开启事务 + tx := app.ModuleClients.TaskBenchDB.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 1. 查询当前艺人的任务记录 + var taskManagement model.TaskManagement + err := tx.Where("sub_num = ? AND tel_num = ?", req.SubNum, req.TelNum).First(&taskManagement).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + // 如果不存在,创建新记录 + taskManagement = model.TaskManagement{ + SubNum: req.SubNum, + TelNum: req.TelNum, + ArtistName: req.ArtistName, + PendingVideoCount: 0, + PendingPostCount: 0, + PendingDataCount: 0, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + if err = tx.Create(&taskManagement).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "创建任务记录失败", "创建任务记录失败: ") + } + } else { + tx.Rollback() + return commonErr.ReturnError(err, "查询任务记录失败", "查询任务记录失败: ") + } + } + + // 2. 检查待发数量是否大于0 + if taskManagement.PendingVideoCount <= 0 && taskManagement.PendingPostCount <= 0 && taskManagement.PendingDataCount <= 0 { + tx.Rollback() + return commonErr.ReturnError(nil, "无可指派任务", "当前艺人待发视频数、图文数、数据数均为0,无法指派任务") + } + + // 3. 检查指派数量是否合理(增强验证) + if req.AssignVideoCount < 0 || req.AssignPostCount < 0 || req.AssignDataCount < 0 { + tx.Rollback() + return commonErr.ReturnError(nil, "指派数量不能为负数", "指派数量必须大于等于0") + } + + if req.AssignVideoCount > taskManagement.PendingVideoCount || + req.AssignPostCount > taskManagement.PendingPostCount || + req.AssignDataCount > taskManagement.PendingDataCount { + tx.Rollback() + return commonErr.ReturnError(nil, "指派数量超出限制", + fmt.Sprintf("指派数量不能超过待发数量。当前待发:视频%d,图文%d,数据%d", + taskManagement.PendingVideoCount, taskManagement.PendingPostCount, taskManagement.PendingDataCount)) + } + + if req.AssignVideoCount == 0 && req.AssignPostCount == 0 && req.AssignDataCount == 0 { + tx.Rollback() + return commonErr.ReturnError(nil, "指派数量不能全为0", "至少需要指派一种类型的任务") + } + + // 4. 更新TaskManagement表 + updateData := map[string]interface{}{ + "pending_video_count": taskManagement.PendingVideoCount - req.AssignVideoCount, + "pending_post_count": taskManagement.PendingPostCount - req.AssignPostCount, + "pending_data_count": taskManagement.PendingDataCount - req.AssignDataCount, + "last_task_assignee": req.TaskAssignee, + "task_assignee_num": req.TaskAssigneeNum, + "progress_count": progressTaskCount, + "complete_count": completeTaskCount, + "updated_at": time.Now(), + } + + if err = tx.Model(&taskManagement).Updates(updateData).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "更新任务记录失败", "更新任务记录失败: ") + } + + // 5. 创建指派记录 + assignRecord := &model.TaskAssignRecords{ + AssignRecordsUUID: uuid.New().String(), // 使用Google UUID + SubNum: req.SubNum, + TelNum: req.TelNum, + ArtistName: req.ArtistName, + Status: 1, // 1:未完成 + ActualStatus: 1, // 1:未完成 + OperatorType: 2, // 2:指派 + Operator: req.Operator, // 当前操作人名字 + OperatorNum: req.OperatorNum, // 当前操作人账号 + OperatorTime: time.Now(), + TaskAssignee: req.TaskAssignee, // 指派员工姓名 + TaskAssigneeNum: req.TaskAssigneeNum, // 指派员工账号 + PendingVideoCount: taskManagement.PendingVideoCount, + PendingPostCount: taskManagement.PendingPostCount, + PendingDataCount: taskManagement.PendingDataCount, + AssignVideoCount: req.AssignVideoCount, + AssignPostCount: req.AssignPostCount, + AssignDataCount: req.AssignDataCount, + CompleteVideoCount: 0, + CompletePostCount: 0, + CompleteDataCount: 0, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + + if err = tx.Create(assignRecord).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "创建指派记录失败", "创建指派记录失败: ") + } + + // 提交事务 + if err = tx.Commit().Error; err != nil { + return commonErr.ReturnError(err, "提交事务失败", "提交事务失败: ") + } + + return nil +} + +// UpdatePendingCount 修改待发数量 +func UpdatePendingCount(req *UpdatePendingCountRequest) error { + // 开启事务 + tx := app.ModuleClients.TaskBenchDB.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 1. 查询或创建TaskManagement记录 + var taskManagement model.TaskManagement + err := tx.Where("sub_num = ? AND tel_num = ?", req.SubNum, req.TelNum).First(&taskManagement).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + return commonErr.ReturnError(err, "无该艺人任务记录", "无该艺人任务记录") + } else { + tx.Rollback() + return commonErr.ReturnError(err, "查询任务记录失败", "查询任务记录失败: ") + } + } else { + // 更新现有记录 + updateData := map[string]interface{}{ + "pending_video_count": req.PendingVideoCount, + "pending_post_count": req.PendingPostCount, + "pending_data_count": req.PendingDataCount, + "updated_at": time.Now(), + } + if err = tx.Model(&taskManagement).Updates(updateData).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "更新任务记录失败", "更新任务记录失败: ") + } + } + + // 提交事务 + if err = tx.Commit().Error; err != nil { + return commonErr.ReturnError(err, "提交事务失败", "提交事务失败: ") + } + + return nil +} + +// GetRecentAssignRecords 查询最近被指派记录 +// 查询操作类型为"指派"的最近n条不同员工的记录 +func GetRecentAssignRecords(limit int) ([]*model.TaskAssignRecords, error) { + var records []*model.TaskAssignRecords + + // 查询操作类型为指派(2)的记录,按操作时间倒序,去重员工 + err := app.ModuleClients.TaskBenchDB.Model(&model.TaskAssignRecords{}). + Where("operator_type = ?", 2). // 2:指派 + Group("task_assignee_num"). // 按指派人账号分组去重 + Order("operator_time DESC"). // 按操作时间倒序 + Limit(limit). + Find(&records).Error + + if err != nil { + return nil, commonErr.ReturnError(err, "查询最近指派记录失败", "查询最近指派记录失败: ") + } + + return records, nil +} + +// GetEmployeeAssignedTasks 根据登录人信息查询被指派给该员工的艺人任务 +func GetEmployeeAssignedTasks(req *EmployeeTaskQueryRequest) ([]*model.TaskAssignRecords, int64, error) { + var records []*model.TaskAssignRecords + var total int64 + + // 构建查询条件 + query := app.ModuleClients.TaskBenchDB.Model(&model.TaskAssignRecords{}). + Where("task_assignee_num = ?", req.TaskAssigneeNum) + + // 关键词搜索(艺人姓名、编号、手机号) + if req.Keyword != "" { + query = query.Where("sub_num LIKE ? OR tel_num LIKE ?", + "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + // 被指派人姓名 + if req.Operator != "" { + query = query.Where("task_assignee LIKE ?", "%"+req.Operator+"%") + } + + // 指派时间区间 + if req.StartTime != "" { + query = query.Where("operator_time >= ?", req.StartTime) + } + if req.EndTime != "" { + query = query.Where("operator_time <= ?", req.EndTime) + } + + // 完成时间区间 + if req.StartCompleteTime != "" { + query = query.Where("complete_time >= ?", req.StartCompleteTime) + } + if req.EndCompleteTime != "" { + query = query.Where("complete_time <= ?", req.EndCompleteTime) + } + + // 反馈完成状态 + if req.Status != 0 { + query = query.Where("status = ?", req.Status) + } + + // 根据排序字段倒序 + if req.SortBy != "" { + query = query.Order(req.SortBy + " DESC") + } + + // 计算总数 + query.Count(&total) + + // 分页 + if req.PageSize > 0 && req.Page > 0 { + offset := (req.Page - 1) * req.PageSize + query = query.Limit(req.PageSize).Offset(offset) + } + + // 按操作时间倒序 + err := query.Order("operator_time DESC").Find(&records).Error + if err != nil { + return nil, 0, commonErr.ReturnError(err, "查询员工指派任务失败", "查询员工指派任务失败: ") + } + + return records, total, nil +} + +// CompleteTaskManually 员工手动点击完成任务 +func CompleteTaskManually(assignRecordsUUID string) error { + now := time.Now() + updateData := map[string]interface{}{ + "status": 2, // 2:完成 + "complete_time": &now, + "updated_at": now, + } + + err := app.ModuleClients.TaskBenchDB.Model(&model.TaskAssignRecords{}). + Where("assign_records_uuid = ?", assignRecordsUUID). + Updates(updateData).Error + + if err != nil { + return commonErr.ReturnError(err, "更新任务完成状态失败", "更新任务完成状态失败: ") + } + + return nil +} + +// UpdateTaskProgress 员工实际完成任务状态更新 +// 员工调用视频、图文、数据时,对应的待完成数据减一,已完成数据加一 +func UpdateTaskProgress(req *CompleteTaskRequest) error { + // 开启事务 + tx := app.ModuleClients.TaskBenchDB.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 1. 查询指派记录 + var assignRecord model.TaskAssignRecords + var err error + + if req.AssignRecordsUUID != "" { + // 如果提供了UUID,直接根据UUID查询 + err = tx.Where("assign_records_uuid = ?", req.AssignRecordsUUID).First(&assignRecord).Error + if err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "查询指派记录失败", "查询指派记录失败: ") + } + } else { + // 如果没有提供UUID,根据员工信息查询最早的未完成任务 + if req.EmployeeName == "" || req.EmployeeNum == "" { + tx.Rollback() + return commonErr.ReturnError(nil, "参数错误", "员工姓名和手机号不能为空") + } + + err = tx.Where("task_assignee = ? AND task_assignee_num = ? AND actual_status = 1", + req.EmployeeName, req.EmployeeNum). + Order("operator_time ASC"). + First(&assignRecord).Error + + if err != nil { + if err == gorm.ErrRecordNotFound { + tx.Rollback() + return commonErr.ReturnError(nil, "未找到任务记录", "该员工没有未完成的任务记录") + } + tx.Rollback() + return commonErr.ReturnError(err, "查询指派记录失败", "查询指派记录失败: ") + } + } + + // 2. 根据任务类型更新完成数量 + updateData := map[string]interface{}{ + "updated_at": time.Now(), + } + + switch req.TaskType { + case "video": + newCompleteCount := assignRecord.CompleteVideoCount + req.CompleteCount + if newCompleteCount > assignRecord.AssignVideoCount { + tx.Rollback() + return commonErr.ReturnError(nil, "完成数量超出限制", "视频完成数量不能超过指派数量") + } + updateData["complete_video_count"] = newCompleteCount + case "post": + newCompleteCount := assignRecord.CompletePostCount + req.CompleteCount + if newCompleteCount > assignRecord.AssignPostCount { + tx.Rollback() + return commonErr.ReturnError(nil, "完成数量超出限制", "图文完成数量不能超过指派数量") + } + updateData["complete_post_count"] = newCompleteCount + case "data": + newCompleteCount := assignRecord.CompleteDataCount + req.CompleteCount + if newCompleteCount > assignRecord.AssignDataCount { + tx.Rollback() + return commonErr.ReturnError(nil, "完成数量超出限制", "数据完成数量不能超过指派数量") + } + updateData["complete_data_count"] = newCompleteCount + default: + tx.Rollback() + return commonErr.ReturnError(nil, "无效的任务类型", "任务类型必须是video、post或data") + } + + // 3. 更新指派记录 + if err = tx.Model(&assignRecord).Updates(updateData).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "更新完成数量失败", "更新完成数量失败: ") + } + + // 4. 重新查询更新后的记录,检查是否全部完成 + if err = tx.Where("assign_records_uuid = ?", assignRecord.AssignRecordsUUID).First(&assignRecord).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "查询更新后记录失败", "查询更新后记录失败: ") + } + + // 5. 检查是否所有任务都已完成 + if assignRecord.CompleteVideoCount == assignRecord.AssignVideoCount && + assignRecord.CompletePostCount == assignRecord.AssignPostCount && + assignRecord.CompleteDataCount == assignRecord.AssignDataCount { + // 更新实际完成状态 + if err = tx.Model(&assignRecord).Update("actual_status", 2).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "更新实际完成状态失败", "更新实际完成状态失败: ") + } + } + + // 提交事务 + if err = tx.Commit().Error; err != nil { + return commonErr.ReturnError(err, "提交事务失败", "提交事务失败: ") + } + + return nil +} + +// GetTaskManagementBySubNum 根据艺人编号查询任务管理记录 +func GetTaskManagementBySubNum(subNum string) (*model.TaskManagement, error) { + var task model.TaskManagement + err := app.ModuleClients.TaskBenchDB.Where("sub_num = ?", subNum).First(&task).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + return nil, nil // 记录不存在 + } + return nil, commonErr.ReturnError(err, "查询任务管理记录失败", "查询任务管理记录失败: ") + } + return &task, nil +} + +// GetAssignRecordByUUID 根据UUID查询指派记录 +func GetAssignRecordByUUID(uuid string) (*model.TaskAssignRecords, error) { + var record model.TaskAssignRecords + err := app.ModuleClients.TaskBenchDB.Where("assign_records_uuid = ?", uuid).First(&record).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + return nil, nil // 记录不存在 + } + return nil, commonErr.ReturnError(err, "查询指派记录失败", "查询指派记录失败: ") + } + return &record, nil +} + +// GetTaskAssignRecordsList 多条件查询操作记录表 +// 支持通过艺人信息、指派人、操作人、操作时间、完成状态等多条件查询TaskAssignRecords表 +func GetTaskAssignRecordsList(req *TaskAssignRecordsQueryRequest) ([]*model.TaskAssignRecords, int64, error) { + var records []*model.TaskAssignRecords + var total int64 + + // 构建查询条件 + query := app.ModuleClients.TaskBenchDB.Model(&model.TaskAssignRecords{}) + + // 关键词搜索(艺人姓名、编号、手机号) + if req.Keyword != "" { + query = query.Where("sub_num LIKE ? OR tel_num LIKE ? OR artist_name LIKE ?", + "%"+req.Keyword+"%", "%"+req.Keyword+"%", "%"+req.Keyword+"%") + } + + // 指派人姓名 + if req.TaskAssignee != "" { + query = query.Where("task_assignee LIKE ?", "%"+req.TaskAssignee+"%") + } + + // 操作人姓名 + if req.Operator != "" { + query = query.Where("operator LIKE ?", "%"+req.Operator+"%") + } + + // 操作人手机号 + if req.OperatorNum != "" { + query = query.Where("operator_num LIKE ?", "%"+req.OperatorNum+"%") + } + + // 操作时间区间 + if req.StartTime != "" { + query = query.Where("operator_time >= ?", req.StartTime) + } + if req.EndTime != "" { + query = query.Where("operator_time <= ?", req.EndTime) + } + + // 反馈完成状态 + if req.Status != 0 { + query = query.Where("status = ?", req.Status) + } + + // 实际完成状态 + if req.ActualStatus != 0 { + query = query.Where("actual_status = ?", req.ActualStatus) + } + + // 计算总数 + query.Count(&total) + + // 分页 + if req.PageSize > 0 && req.Page > 0 { + offset := (req.Page - 1) * req.PageSize + query = query.Limit(req.PageSize).Offset(offset) + } + + // 按更新时间倒序排序 + err := query.Order("updated_at DESC").Find(&records).Error + if err != nil { + return nil, 0, commonErr.ReturnError(err, "查询操作记录失败", "查询操作记录失败: ") + } + + return records, total, nil +} + +// GetValidArtistList 查询套餐状态为有效中的艺人数据列表 +// 根据BundleOrderRecords表查询过期时间大于当前时间且状态为已支付的艺人详细信息 +func GetValidArtistList() ([]ValidArtistInfo, error) { + // 构建子查询,获取每个用户的最新订单记录 + subQuery := app.ModuleClients.BundleDB.Table("bundle_order_records as bor1"). + Select("bor1.*"). + Joins(`INNER JOIN ( + SELECT customer_id, MAX(created_at) AS max_created_time + FROM bundle_order_records + GROUP BY customer_id + ) bor2 ON bor1.customer_id = bor2.customer_id AND bor1.created_at = bor2.max_created_time`) + + // 主查询,关联用户表和实名信息表 + session := app.ModuleClients.BundleDB.Table("`micro-account`.`user` AS u"). + Select(`u.id as user_id, bor.customer_num, rn.name as user_name, + u.tel_num as user_phone_number, bor.bundle_name, bor.expiration_time, + bor.status, bor.uuid as order_uuid, bb.account_number, bb.account_consumption_number, + bb.video_number, bb.video_consumption_number, bb.image_number, bb.image_consumption_number, + bb.data_analysis_number, bb.data_analysis_consumption_number, bb.expansion_packs_number`). + Joins("LEFT JOIN `micro-account`.real_name rn ON u.real_name_id = rn.id"). + Joins("LEFT JOIN (?) as bor ON bor.customer_id = u.id", subQuery). + Joins("LEFT JOIN bundle_balance bb ON u.id = bb.user_id AND bb.order_uuid = bor.uuid"). + Where("rn.name IS NOT NULL"). + Where("u.deleted_at = 0"). + Where("bor.expiration_time > ?", time.Now().Format("2006-01-02 15:04:05")). + Where("bor.status = ?", 2). // 2:已签已支付 + Order("bor.expiration_time desc") + + var data []ValidArtistInfo + err := session.Find(&data).Error + if err != nil { + return nil, commonErr.ReturnError(err, "查询有效艺人失败", "查询有效艺人失败: ") + } + + return data, nil +} + +// 根据员工的工号从指派任务记录表中查询这名员工,进行中任务数量和已经完成的任务数量 +func GetTaskAssigneeInfo(taskAssigneeNum string) (int, int, error) { + // 如果taskAssigneeNum为空,直接返回默认值 + if taskAssigneeNum == "" { + return 0, 0, nil + } + + var taskAssignRecords TaskAssignRecords + err := app.ModuleClients.TaskBenchDB.Table("task_assign_records"). + Select("task_assignee_num, count(*) as progress_task_count, sum(status = 2) as complete_task_count"). + Where("task_assignee_num = ?", taskAssigneeNum). + Group("task_assignee_num"). + First(&taskAssignRecords).Error + + // 如果查询不到记录,返回默认值而不是错误 + if err != nil { + if err == gorm.ErrRecordNotFound { + return 0, 0, nil + } + return 0, 0, commonErr.ReturnError(err, "查询任务指派记录失败", "查询任务指派记录失败: ") + } + return taskAssignRecords.ProgressTaskCount, taskAssignRecords.CompleteTaskCount, nil +} + +// 更新被指派员工为 taskAssigneeNum 的记录中的ProgressCount + 1 和CompleteCount - 1 +func UpdateTaskRecordsByAssigneeNum(taskAssigneeNum string) error { + err := app.ModuleClients.TaskBenchDB.Table("task_management"). + Where("task_assignee_num = ?", taskAssigneeNum). + Update("progress_count", gorm.Expr("progress_count + ?", 1)). + Update("complete_count", gorm.Expr("complete_count - ?", 1)).Error + if err != nil { + return commonErr.ReturnError(err, "更新员工任务进度失败", "更新员工任务进度失败: ") + } + return nil +} + +// GetArtistBundleBalance 根据艺人编号或手机号查询套餐剩余数量 +// 优先使用艺人编号查询,如果为空则使用手机号查询 +func GetArtistBundleBalance(req *ArtistBundleBalanceRequest) (*ArtistBundleBalanceResponse, error) { + // 构建子查询,获取用户的最新订单记录 + subQuery := app.ModuleClients.BundleDB.Table("bundle_order_records as bor1"). + Select("bor1.*"). + Joins(`INNER JOIN ( + SELECT customer_id, MAX(created_at) AS max_created_time + FROM bundle_order_records + GROUP BY customer_id + ) bor2 ON bor1.customer_id = bor2.customer_id AND bor1.created_at = bor2.max_created_time`) + + // 主查询,关联用户表和实名信息表 + session := app.ModuleClients.BundleDB.Table("`micro-account`.`user` AS u"). + Select(`u.id, bor.customer_num, rn.name as user_name, + u.tel_num as user_phone_number, bor.bundle_name, bor.expiration_time, + bor.status, bor.uuid as order_uuid, bb.account_number, bb.account_consumption_number, + bb.video_number, bb.video_consumption_number, bb.image_number, bb.image_consumption_number, + bb.data_analysis_number, bb.data_analysis_consumption_number, bb.expansion_packs_number`). + Joins("LEFT JOIN `micro-account`.real_name rn ON u.real_name_id = rn.id"). + Joins("LEFT JOIN (?) as bor ON bor.customer_id = u.id", subQuery). + Joins("LEFT JOIN bundle_balance bb ON u.id = bb.user_id AND bb.order_uuid = bor.uuid"). + Where("rn.name IS NOT NULL"). + Where("u.deleted_at = 0"). + Where("bor.expiration_time > ?", time.Now().Format("2006-01-02 15:04:05")). + Where("bor.status = ?", 2) // 2:已签已支付 + + // 根据查询条件添加WHERE子句 + if req.CustomerNum != "" { + session = session.Where("bor.customer_num = ?", req.CustomerNum) + } else if req.TelNum != "" { + session = session.Where("u.tel_num = ?", req.TelNum) + } else { + return nil, commonErr.ReturnError(nil, "查询参数错误", "艺人编号和手机号不能同时为空") + } + + var data ValidArtistInfo + err := session.Take(&data).Error // 使用Take()替代First(),避免自动排序 + if err != nil { + if err == gorm.ErrRecordNotFound { + return nil, commonErr.ReturnError(err, "艺人不存在或套餐已过期", "未找到有效的艺人套餐信息") + } + return nil, commonErr.ReturnError(err, "查询艺人套餐信息失败", "查询艺人套餐信息失败: ") + } + + // 计算剩余数量 + response := &ArtistBundleBalanceResponse{ + RemainingVideoCount: data.VideoNumber - data.VideoConsumptionNumber, + RemainingImageCount: data.ImageNumber - data.ImageConsumptionNumber, + RemainingDataAnalysisCount: data.DataAnalysisNumber - data.DataAnalysisConsumptionNumber, + } + + return response, nil +} + +// AdjustPendingCountRequest 调整待发数量请求参数 +type AdjustPendingCountRequest struct { + SubNum string `json:"subNum"` // 艺人编号 + TelNum string `json:"telNum"` // 艺人手机号 + ArtistName string `json:"artistName"` // 艺人姓名 + AdjustVideoCount int `json:"adjustVideoCount"` // 调整视频数量(正数为增加,负数为减少) + AdjustPostCount int `json:"adjustPostCount"` // 调整图文数量(正数为增加,负数为减少) + AdjustDataCount int `json:"adjustDataCount"` // 调整数据数量(正数为增加,负数为减少) + CreateIfNotExists bool `json:"createIfNotExists"` // 如果记录不存在是否创建 +} + +// AdjustPendingCount 调整待发数量(增加或减少) +// 支持正数增加和负数减少,可用于套餐扩展时同步增加待发任务数量 +func AdjustPendingCount(req *AdjustPendingCountRequest) error { + // 开启事务 + tx := app.ModuleClients.TaskBenchDB.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 1. 查询现有任务记录 + var taskManagement model.TaskManagement + err := tx.Where("sub_num = ? AND tel_num = ?", req.SubNum, req.TelNum).First(&taskManagement).Error + if err != nil { + if err == gorm.ErrRecordNotFound { + if req.CreateIfNotExists { + // 创建新记录 + taskManagement = model.TaskManagement{ + SubNum: req.SubNum, + TelNum: req.TelNum, + ArtistName: req.ArtistName, + PendingVideoCount: req.AdjustVideoCount, + PendingPostCount: req.AdjustPostCount, + PendingDataCount: req.AdjustDataCount, + ProgressCount: 0, + CompleteCount: 0, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + // 确保数量不为负数 + if taskManagement.PendingVideoCount < 0 { + taskManagement.PendingVideoCount = 0 + } + if taskManagement.PendingPostCount < 0 { + taskManagement.PendingPostCount = 0 + } + if taskManagement.PendingDataCount < 0 { + taskManagement.PendingDataCount = 0 + } + if err = tx.Create(&taskManagement).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "创建任务记录失败", "创建任务记录失败: ") + } + } else { + tx.Rollback() + return commonErr.ReturnError(err, "任务记录不存在", "找不到对应的任务记录") + } + } else { + tx.Rollback() + return commonErr.ReturnError(err, "查询任务记录失败", "查询任务记录失败: ") + } + } else { + // 2. 计算调整后的数量 + newVideoCount := taskManagement.PendingVideoCount + req.AdjustVideoCount + newPostCount := taskManagement.PendingPostCount + req.AdjustPostCount + newDataCount := taskManagement.PendingDataCount + req.AdjustDataCount + + // 3. 确保调整后的数量不为负数 + if newVideoCount < 0 { + newVideoCount = 0 + } + if newPostCount < 0 { + newPostCount = 0 + } + if newDataCount < 0 { + newDataCount = 0 + } + + // 4. 更新TaskManagement表 + updateData := map[string]interface{}{ + "pending_video_count": newVideoCount, + "pending_post_count": newPostCount, + "pending_data_count": newDataCount, + "updated_at": time.Now(), + } + + if err = tx.Model(&taskManagement).Updates(updateData).Error; err != nil { + tx.Rollback() + return commonErr.ReturnError(err, "更新任务记录失败", "更新任务记录失败: ") + } + } + + // 提交事务 + if err = tx.Commit().Error; err != nil { + return commonErr.ReturnError(err, "提交事务失败", "提交事务失败: ") + } + + return nil +} diff --git a/internal/logic/taskLogic.go b/internal/logic/taskLogic.go new file mode 100644 index 0000000..1773251 --- /dev/null +++ b/internal/logic/taskLogic.go @@ -0,0 +1,314 @@ +package logic + +import ( + "micro-bundle/internal/dao" + commonErr "micro-bundle/pkg/err" +) + +// GetValidArtistList 查询套餐状态为有效中的艺人列表 +// 调用dao层获取艺人详细信息 +func GetValidArtistList() ([]dao.ValidArtistInfo, error) { + return dao.GetValidArtistList() +} + +// GetValidArtistIDs 查询套餐没有过期的艺人ID列表(保持向后兼容) +// 根据BundleOrderRecords表查询过期时间大于当前时间且状态为已支付的艺人 +func GetValidArtistIDs() ([]string, error) { + artistList, err := GetValidArtistList() + if err != nil { + return nil, err + } + + var artistIDs []string + for _, artist := range artistList { + if artist.CustomerNum != "" { + artistIDs = append(artistIDs, artist.CustomerNum) + } + } + + return artistIDs, nil +} + +// todo 目前暂时不做检验,后续需要做判断 +// GetValidEmployeeIDs 查询可以被指派任务的员工ID列表 +// 这里可以根据实际业务需求实现,比如查询员工表、权限表等 +// 目前先返回一个示例实现,实际项目中需要根据具体的员工管理逻辑来实现 +func GetValidEmployeeIDs() ([]string, error) { + var employeeIDs []string + + return employeeIDs, nil +} + +// ValidateEmployee 验证员工是否可以被指派任务 +func ValidateEmployee(employeeNum string) (bool, error) { + validEmployees, err := GetValidEmployeeIDs() + if err != nil { + return false, err + } + + // 如果没有限制(返回空列表),则认为所有员工都可以被指派 + if len(validEmployees) == 0 { + return true, nil + } + + for _, validEmp := range validEmployees { + if validEmp == employeeNum { + return true, nil + } + } + + return false, nil +} + +// GetPendingTaskList 查询待指派任务记录 +func GetPendingTaskList(req *dao.TaskQueryRequest) ([]*dao.TaskQueryResponse, int64, error) { + // 1. 先查询套餐没有过期的艺人 + validArtist, err := GetValidArtistList() + if err != nil { + return nil, 0, err + } + + // 2. 调用DAO层查询待指派任务记录 + record, total, err := dao.GetPendingTaskList(req, validArtist) + if err != nil { + return nil, 0, err + } + + // 3. 转换为响应结构体 + var recordResponse []*dao.TaskQueryResponse + for _, record := range record { + // 根据 SubNum 和 TelNum 查询对应的员工正在进行中的任务和已完成任务数量 + progressTaskCount, completeTaskCount, err := dao.GetTaskAssigneeInfo(record.TaskAssigneeNum) + if err != nil { + recordResponse = append(recordResponse, &dao.TaskQueryResponse{ + SubNum: record.SubNum, + TelNum: record.TelNum, + ArtistName: record.ArtistName, + TaskAssigneeNum: record.TaskAssigneeNum, + PendingPostCount: record.PendingPostCount, + PendingVideoCount: record.PendingVideoCount, + PendingDataCount: record.PendingDataCount, + ProgressTaskCount: 0, + CompleteTaskCount: 0, + LastTaskAssignee: record.LastTaskAssignee, + }) + } else { + recordResponse = append(recordResponse, &dao.TaskQueryResponse{ + SubNum: record.SubNum, + TelNum: record.TelNum, + ArtistName: record.ArtistName, + TaskAssigneeNum: record.TaskAssigneeNum, + PendingPostCount: record.PendingPostCount, + PendingVideoCount: record.PendingVideoCount, + PendingDataCount: record.PendingDataCount, + ProgressTaskCount: progressTaskCount, + CompleteTaskCount: completeTaskCount, + LastTaskAssignee: record.LastTaskAssignee, + }) + } + } + + return recordResponse, total, nil +} + +// AssignTask 指派某位员工完成某个艺人的任务 +func AssignTask(req *dao.TaskAssignRequest) error { + // 1. 验证员工是否可以被指派任务 + isValid, err := ValidateEmployee(req.TaskAssigneeNum) + if err != nil { + return err + } + if !isValid { + return commonErr.ReturnError(nil, "员工不能被指派任务", "该员工不在可指派任务的员工列表中") + } + + progressTaskCount, completeTaskCount, err := dao.GetTaskAssigneeInfo(req.TaskAssigneeNum) + if err != nil { + // 查询不到的话,给一个默认值 + progressTaskCount, completeTaskCount = 1, 0 + } + + // 2. 调用DAO层执行指派任务 + // 待完成任务数量需要+1,因为这个任务暂时还没有指派,所以+1 + return dao.AssignTask(req, progressTaskCount+1, completeTaskCount) +} + +// UpdatePendingCount 修改待发数量 +func UpdatePendingCount(req *dao.UpdatePendingCountRequest) error { + // 1. 验证艺人是否有有效套餐 + validArtistIDs, err := GetValidArtistIDs() + if err != nil { + return err + } + + // 检查艺人是否在有效列表中 + isValidArtist := false + for _, artistID := range validArtistIDs { + if artistID == req.SubNum { + isValidArtist = true + break + } + } + + if !isValidArtist { + return commonErr.ReturnError(nil, "艺人套餐已过期", "该艺人没有有效的套餐,无法修改待发数量") + } + + // todo 需要调用套餐的接口,判断艺人是否有那么数量可以修改 + + // 2. 调用DAO层更新待发数量 + return dao.UpdatePendingCount(req) +} + +// GetRecentAssignRecords 查询最近被指派记录 +func GetRecentAssignRecords(limit int) ([]string, error) { + records, err := dao.GetRecentAssignRecords(limit) + if err != nil { + return nil, err + } + + var recordOperator []string + for _, record := range records { + recordOperator = append(recordOperator, record.TaskAssignee) + } + return recordOperator, nil +} + +// GetEmployeeAssignedTasks 根据登录人信息查询被指派给该员工的艺人任务 +func GetEmployeeAssignedTasks(req *dao.EmployeeTaskQueryRequest) ([]*dao.TaskAssignRecordsResponse, int64, error) { + // 1. 调用DAO层查询被指派给该员工的艺人任务 + record, total, err := dao.GetEmployeeAssignedTasks(req) + if err != nil { + return nil, 0, err + } + + // 2. 转换为响应结构体 + var recordResponse []*dao.TaskAssignRecordsResponse + for _, record := range record { + recordResponse = append(recordResponse, &dao.TaskAssignRecordsResponse{ + AssignRecordsUUID: record.AssignRecordsUUID, + SubNum: record.SubNum, + TelNum: record.TelNum, + ArtistName: record.ArtistName, + Status: record.Status, + ActualStatus: record.ActualStatus, + CompleteTime: record.CompleteTime, + OperatorType: record.OperatorType, + Operator: record.Operator, + OperatorNum: record.OperatorNum, + OperatorTime: record.OperatorTime, + TaskAssignee: record.TaskAssignee, + TaskAssigneeNum: record.TaskAssigneeNum, + PendingVideoCount: record.PendingVideoCount, + PendingPostCount: record.PendingPostCount, + PendingDataCount: record.PendingDataCount, + // todo: 将更新时间转换成人类可读的格式 + UpdatedAt: record.UpdatedAt, + }) + } + + return recordResponse, total, nil +} + +// CompleteTaskManually 员工手动点击完成任务 +func CompleteTaskManually(assignRecordsUUID string, taskAssigneeNum string) error { + // 第一步,批量更新记录被指派的员工为taskAssigneeNum的待完成任务数量和已经完成任务的数量 + err := dao.UpdateTaskRecordsByAssigneeNum(taskAssigneeNum) + if err != nil { + return err + } + return dao.CompleteTaskManually(assignRecordsUUID) +} + +// UpdateTaskProgress 员工实际完成任务状态更新 +func UpdateTaskProgress(req *dao.CompleteTaskRequest) error { + return dao.UpdateTaskProgress(req) +} + +// // GetArtistBundleInfo 获取艺人套餐信息(用于判断套餐多媒体数量) +// func GetArtistBundleInfo(customerNum string) ([]*model.BundleOrderRecords, error) { +// var orderRecords []*model.BundleOrderRecords +// currentTime := time.Now().Format("2006-01-02 15:04:05") + +// // 查询该艺人的有效套餐订单 +// err := app.ModuleClients.BundleDB.Model(&model.BundleOrderRecords{}). +// Where("customer_num = ? AND expiration_time > ? AND status = ?", +// customerNum, currentTime, 2). // 2:已签已支付 +// Preload("BundleOrderValueAdd"). +// Find(&orderRecords).Error + +// if err != nil { +// return nil, commonErr.ReturnError(err, "查询艺人套餐信息失败", "查询艺人套餐信息失败: ") +// } + +// return orderRecords, nil +// } + +// // CalculateArtistPendingCounts 计算艺人的待发数量 +// // 根据套餐信息计算艺人可以额外多发的多媒体内容数量 +// func CalculateArtistPendingCounts(customerNum string) (videoCount, postCount, dataCount int, err error) { +// // 获取艺人套餐信息 +// orderRecords, err := GetArtistBundleInfo(customerNum) +// if err != nil { +// return 0, 0, 0, err +// } + +// // 计算总的可用数量 +// for _, record := range orderRecords { +// // 从套餐基础数量计算 +// videoCount += int(record.Num) // 假设Num字段表示视频数量 + +// // 从增值服务计算 +// for _, valueAdd := range record.BundleOrderValueAdd { +// switch valueAdd.ServiceType { +// case 1: // 视频 +// videoCount += int(valueAdd.Num) +// case 2: // 图文 +// postCount += int(valueAdd.Num) +// case 3: // 数据报表 +// dataCount += int(valueAdd.Num) +// } +// } +// } + +// return videoCount, postCount, dataCount, nil +// } + +// GetTaskAssignRecordsList 多条件查询操作记录表 +func GetTaskAssignRecordsList(req *dao.TaskAssignRecordsQueryRequest) ([]*dao.TaskAssignRecordsResponse, int64, error) { + record, total, err := dao.GetTaskAssignRecordsList(req) + if err != nil { + return nil, 0, err + } + + // 2. 转换为响应结构体 + var recordResponse []*dao.TaskAssignRecordsResponse + for _, record := range record { + recordResponse = append(recordResponse, &dao.TaskAssignRecordsResponse{ + AssignRecordsUUID: record.AssignRecordsUUID, + SubNum: record.SubNum, + TelNum: record.TelNum, + ArtistName: record.ArtistName, + Status: record.Status, + ActualStatus: record.ActualStatus, + CompleteTime: record.CompleteTime, + OperatorType: record.OperatorType, + Operator: record.Operator, + OperatorNum: record.OperatorNum, + OperatorTime: record.OperatorTime, + TaskAssignee: record.TaskAssignee, + TaskAssigneeNum: record.TaskAssigneeNum, + PendingVideoCount: record.PendingVideoCount, + PendingPostCount: record.PendingPostCount, + PendingDataCount: record.PendingDataCount, + UpdatedAt: record.UpdatedAt, + }) + } + + return recordResponse, total, nil +} + +// GetArtistBundleBalance 查询艺人套餐剩余数量 +func GetArtistBundleBalance(req *dao.ArtistBundleBalanceRequest) (*dao.ArtistBundleBalanceResponse, error) { + return dao.GetArtistBundleBalance(req) +} diff --git a/internal/model/task.go b/internal/model/task.go new file mode 100644 index 0000000..0e17ae7 --- /dev/null +++ b/internal/model/task.go @@ -0,0 +1,62 @@ +package model + +import ( + "time" + + "gorm.io/plugin/soft_delete" +) + +type TaskManagement struct { + ID int64 `gorm:"primarykey"` + SubNum string `gorm:"column:sub_num;comment:用户编号;index:idx_sub_num;index:idx_sub_tel,priority:1" json:"subNum"` + TelNum string `gorm:"column:tel_num;comment:手机号;index:idx_tel_num;index:idx_sub_tel,priority:2" json:"telNum"` + ArtistName string `gorm:"column:artist_name;comment:艺人名称;index:idx_artist_name" json:"artistName"` + PendingVideoCount int `gorm:"column:pending_video_count;comment:待发视频数量;index:idx_pending_video" json:"pendingVideoCount"` + PendingPostCount int `gorm:"column:pending_post_count;comment:待发图文数量" json:"pendingPostCount"` + PendingDataCount int `gorm:"column:pending_data_count;comment:待发数据数量" json:"pendingDataCount"` + LastTaskAssignee string `gorm:"column:last_task_assignee;comment:最后一次的任务指派人" json:"lastTaskAssignee"` + TaskAssigneeNum string `gorm:"column:task_assignee_num;comment:任务指派人账号" json:"taskAssigneeNum"` + ProgressCount int `gorm:"column:progress_count;comment:进行中的任务数量" json:"progressCount"` + CompleteCount int `gorm:"column:complete_count;comment:已完成的任务数量" json:"completeCount"` + CreatedAt time.Time `gorm:"column:created_at;comment:创建时间" json:"createdAt"` + UpdatedAt time.Time `gorm:"column:updated_at;comment:更新时间" json:"updatedAt"` + DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at;type:int(11);index:idx_deleted_at" json:"deletedAt"` +} + +func (t *TaskManagement) TableName() string { + return "task_management" +} + +// 指派记录表 +type TaskAssignRecords struct { + ID int64 `gorm:"primarykey"` + AssignRecordsUUID string `gorm:"column:assign_records_uuid;comment:指派记录UUID;uniqueIndex:idx_assign_uuid" json:"assignRecordsUUID"` + SubNum string `gorm:"column:sub_num;comment:艺人编号;index:idx_assign_sub_num;index:idx_assign_sub_tel,priority:1" json:"subNum"` + TelNum string `gorm:"column:tel_num;comment:艺人手机号;index:idx_assign_tel_num;index:idx_assign_sub_tel,priority:2" json:"telNum"` + ArtistName string `gorm:"column:artist_name;comment:艺人名称;index:idx_assign_artist_name" json:"artistName"` + Status int `gorm:"column:status;comment:反馈完成状态 1:未完成 2:完成;index:idx_status;index:idx_status_assignee,priority:1" json:"status"` + ActualStatus int `gorm:"column:actual_status;comment:实际完成状态 1:未完成 2:完成;index:idx_actual_status;index:idx_actual_assignee,priority:1" json:"actualStatus"` + CompleteTime *time.Time `gorm:"column:complete_time;comment:反馈完成时间;index:idx_complete_time" json:"completeTime"` + OperatorType int `gorm:"column:operator_type;comment:操作类型 1:修改待发数量 2:指派;index:idx_operator_type;index:idx_operator_type_time,priority:1" json:"operatorType"` + Operator string `gorm:"column:operator;comment:操作人;index:idx_operator" json:"operator"` + OperatorNum string `gorm:"column:operator_num;comment:操作人账号;index:idx_operator_num" json:"operatorNum"` + OperatorTime time.Time `gorm:"column:operator_time;comment:操作时间;index:idx_operator_time;index:idx_operator_type_time,priority:2" json:"operatorTime"` + TaskAssignee string `gorm:"column:task_assignee;comment:任务指派人;index:idx_task_assignee;index:idx_status_assignee,priority:2;index:idx_actual_assignee,priority:2" json:"taskAssignee"` + TaskAssigneeNum string `gorm:"column:task_assignee_num;comment:任务指派人账号;index:idx_task_assignee_num" json:"taskAssigneeNum"` + PendingVideoCount int `gorm:"column:pending_video_count;comment:待发视频数量" json:"pendingVideoCount"` + PendingPostCount int `gorm:"column:pending_post_count;comment:待发图文数量" json:"pendingPostCount"` + PendingDataCount int `gorm:"column:pending_data_count;comment:待发数据数量" json:"pendingDataCount"` + AssignVideoCount int `gorm:"column:assign_video_count;comment:指派待发视频数" json:"assignVideoCount"` + AssignPostCount int `gorm:"column:assign_post_count;comment:指派待发图文数" json:"assignPostCount"` + AssignDataCount int `gorm:"column:assign_data_count;comment:指派待发数据数" json:"assignDataCount"` + CompleteVideoCount int `gorm:"column:complete_video_count;comment:已完成视频数" json:"completeVideoCount"` + CompletePostCount int `gorm:"column:complete_post_count;comment:已完成图文数" json:"completePostCount"` + CompleteDataCount int `gorm:"column:complete_data_count;comment:已完成数据数" json:"completeDataCount"` + CreatedAt time.Time `gorm:"column:created_at;comment:创建时间" json:"createdAt"` + UpdatedAt time.Time `gorm:"column:updated_at;comment:更新时间;index:idx_updated_at" json:"updatedAt"` + DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at;type:int(11);index:idx_assign_deleted_at" json:"deletedAt"` +} + +func (t *TaskAssignRecords) TableName() string { + return "task_assign_records" +} diff --git a/pb/bundle.proto b/pb/bundle.proto index 4ebe6ed..4db7f1f 100644 --- a/pb/bundle.proto +++ b/pb/bundle.proto @@ -78,6 +78,17 @@ service Bundle { // 查出没处理的数据 rpc ListUnfinishedInfos(AutoCreateUserAndOrderRequest) returns (UnfinishedInfos) {} // 查出没处理的数据 rpc SoftDeleteUnfinishedInfo(SoftDeleteUnfinishedInfoRequest) returns (CommonResponse) {} // 软删除 + + // 任务台 + rpc GetPendingTaskList(TaskQueryRequest) returns (TaskQueryResponse) {} // 查询待指派任务记录 + rpc AssignTask(TaskAssignRequest) returns (CommonResponse) {} // 指派某位员工完成某个艺人的任务 + rpc UpdatePendingCount(UpdatePendingCountRequest) returns (CommonResponse) {} // 修改待发数量 + rpc GetRecentAssignRecords(RecentAssignRecordsRequest) returns (RecentAssignRecordsResponse) {} // 查询最近被指派记录 + rpc GetEmployeeAssignedTasks(EmployeeTaskQueryRequest) returns (EmployeeTaskQueryResponse) {} // 根据登录人信息查询被指派给该员工的任务 + rpc CompleteTaskManually(CompleteTaskManuallyRequest) returns (CommonResponse) {} // 员工手动点击完成任务 + rpc UpdateTaskProgress(UpdateTaskProgressRequest) returns (CommonResponse) {} // 员工实际完成任务状态更新 + rpc GetTaskAssignRecordsList(TaskAssignRecordsQueryRequest) returns (TaskAssignRecordsQueryResponse) {} // 多条件查询操作记录表 + rpc GetArtistBundleBalance(ArtistBundleBalanceRequest) returns (ArtistBundleBalanceResponse) {} // 查询艺人套餐剩余数量 } message DeleteValueAddServiceRequest{ string orderNo = 1; @@ -121,6 +132,7 @@ message ReconciliationInfo{ string serialNumber = 13; uint64 userID = 14; string handlingFee = 15; + string subNum = 16; } message OrderInfoByOrderNoRequest{ string orderNo = 1; @@ -207,6 +219,7 @@ message OrderBundleRecordInfo{ repeated OrderAddBundleRecordInfo addBundleInfo = 8; int64 customerId = 9; string payTime = 10; + string subNum = 11; } message OrderAddBundleRecordInfo{ string orderAddNo = 1; @@ -874,3 +887,162 @@ message UnfinishedInfo { message SoftDeleteUnfinishedInfoRequest { uint32 ID = 1; } + + +// 任务管理台相关消息定义 + +// 查询待指派任务记录 +message TaskQueryRequest { + string keyword = 1 [json_name = "keyword"]; // 艺人姓名、编号、手机号搜索关键词 + int32 page = 2 [json_name = "page"]; // 页码 + int32 pageSize = 3 [json_name = "pageSize"]; // 每页数量 + string sortBy = 4 [json_name = "sortBy"]; // 排序字段 + string sortType = 5 [json_name = "sortType"]; // 排序类型 asc/desc +} + +message TaskQueryResponse { + repeated TaskManagementInfo tasks = 1 [json_name = "tasks"]; + int64 total = 2 [json_name = "total"]; + int32 page = 3 [json_name = "page"]; + int32 pageSize = 4 [json_name = "pageSize"]; +} + +message TaskManagementInfo { + string subNum = 1 [json_name = "subNum"]; // 艺人编号 + string telNum = 2 [json_name = "telNum"]; // 手机号 + string artistName = 3 [json_name = "artistName"]; // 艺人姓名 + int32 pendingVideoCount = 4 [json_name = "pendingVideoCount"]; // 待发视频数量 + int32 pendingPostCount = 5 [json_name = "pendingPostCount"]; // 待发图文数量 + int32 pendingDataCount = 6 [json_name = "pendingDataCount"]; // 待发数据数量 + int32 progressTaskCount = 7 [json_name = "progressTaskCount"]; // 进行中任务数量 + int32 completeTaskCount = 8 [json_name = "completeTaskCount"]; // 已完成任务数量 + string lastTaskAssignee = 9 [json_name = "lastTaskAssignee"]; // 最后一次任务指派人 + string taskAssigneeNum = 10 [json_name = "taskAssigneeNum"]; // 任务指派人账号 +} + +// 指派任务 +message TaskAssignRequest { + string subNum = 1 [json_name = "subNum"]; // 艺人编号 + string telNum = 2 [json_name = "telNum"]; // 艺人手机号 + string artistName = 3 [json_name = "artistName"]; // 艺人姓名 + string taskAssignee = 4 [json_name = "taskAssignee"]; // 任务指派人 + string taskAssigneeNum = 5 [json_name = "taskAssigneeNum"]; // 任务指派人账号 + string operator = 6 [json_name = "operator"]; // 操作人 + string operatorNum = 7 [json_name = "operatorNum"]; // 操作人账号 + int32 assignVideoCount = 8 [json_name = "assignVideoCount"]; // 指派视频数 + int32 assignPostCount = 9 [json_name = "assignPostCount"]; // 指派图文数 + int32 assignDataCount = 10 [json_name = "assignDataCount"]; // 指派数据数 +} + +// 修改待发数量 +message UpdatePendingCountRequest { + string subNum = 1 [json_name = "subNum"]; // 艺人编号 + string telNum = 2 [json_name = "telNum"]; // 艺人手机号 + string artistName = 3 [json_name = "artistName"]; // 艺人姓名 + int32 pendingVideoCount = 4 [json_name = "pendingVideoCount"]; // 待发视频数量 + int32 pendingPostCount = 5 [json_name = "pendingPostCount"]; // 待发图文数量 + int32 pendingDataCount = 6 [json_name = "pendingDataCount"]; // 待发数据数量 + string operator = 7 [json_name = "operator"]; // 操作人 + string operatorNum = 8 [json_name = "operatorNum"]; // 操作人账号 +} + +// 查询最近被指派记录 +message RecentAssignRecordsRequest { + int32 limit = 1 [json_name = "limit"]; // 查询数量限制 +} + +message RecentAssignRecordsResponse { + repeated string operatorList = 1 [json_name = "operatorList"]; +} + +// 员工任务查询 +message EmployeeTaskQueryRequest { + string taskAssigneeNum = 1 [json_name = "taskAssigneeNum"]; // 被指派人账号 + string keyword = 2 [json_name = "keyword"]; // 艺人姓名、编号、手机号搜索关键词 + string operator = 3 [json_name = "operator"]; // 操作人 + string sortBy = 4 [json_name = "sortBy"]; // 排序字段 + string startTime = 5 [json_name = "startTime"]; // 指派开始时间 + string endTime = 6 [json_name = "endTime"]; // 指派结束时间 + string startCompleteTime = 7 [json_name = "startCompleteTime"]; // 开始完成时间 + string endCompleteTime = 8 [json_name = "endCompleteTime"]; // 结束完成时间 + int32 status = 9 [json_name = "status"]; // 反馈完成状态 + int32 page = 10 [json_name = "page"]; // 页码 + int32 pageSize = 11 [json_name = "pageSize"]; // 每页数量 +} + +message EmployeeTaskQueryResponse { + repeated TaskAssignRecordInfo records = 1 [json_name = "records"]; + int64 total = 2 [json_name = "total"]; + int32 page = 3 [json_name = "page"]; + int32 pageSize = 4 [json_name = "pageSize"]; +} + +// 任务指派记录信息 +message TaskAssignRecordInfo { + string assignRecordsUUID = 1 [json_name = "assignRecordsUUID"]; // 指派记录UUID + string subNum = 2 [json_name = "subNum"]; // 艺人编号 + string telNum = 3 [json_name = "telNum"]; // 艺人手机号 + string artistName = 4 [json_name = "artistName"]; // 艺人姓名 + int32 status = 5 [json_name = "status"]; // 反馈完成状态 + int32 actualStatus = 6 [json_name = "actualStatus"]; // 实际完成状态 + string completeTime = 7 [json_name = "completeTime"]; // 反馈完成时间 + int32 operatorType = 8 [json_name = "operatorType"]; // 操作类型 + string operator = 9 [json_name = "operator"]; // 操作人 + string operatorNum = 10 [json_name = "operatorNum"]; // 操作人账号 + string operatorTime = 11 [json_name = "operatorTime"]; // 操作时间 + string taskAssignee = 12 [json_name = "taskAssignee"]; // 任务指派人 + string taskAssigneeNum = 13 [json_name = "taskAssigneeNum"]; // 任务指派人账号 + int32 pendingVideoCount = 14 [json_name = "pendingVideoCount"]; // 待发视频数量 + int32 pendingPostCount = 15 [json_name = "pendingPostCount"]; // 待发图文数量 + int32 pendingDataCount = 16 [json_name = "pendingDataCount"]; // 待发数据数量 + string updatedAt = 24 [json_name = "updatedAt"]; // 更新时间 +} + +// 手动完成任务 +message CompleteTaskManuallyRequest { + string assignRecordsUUID = 1 [json_name = "assignRecordsUUID"]; // 指派记录UUID + string taskAssigneeNum = 2 [json_name = "taskAssigneeNum"]; // 被指派完成该任务人的账号 +} + +// 更新任务进度 +message UpdateTaskProgressRequest { + string assignRecordsUUID = 1 [json_name = "assignRecordsUUID"]; // 指派记录UUID(可选) + string employeeName = 2 [json_name = "employeeName"]; // 员工姓名(必要) + string employeeNum = 3 [json_name = "employeeNum"]; // 员工工号(必要) + string taskType = 4 [json_name = "taskType"]; // 任务类型: video/post/data + int32 completeCount = 5 [json_name = "completeCount"]; // 完成数量 +} + +// 多条件查询操作记录表 +message TaskAssignRecordsQueryRequest { + string keyword = 1 [json_name = "keyword"]; // 艺人姓名、编号、手机号搜索关键词 + string taskAssignee = 2 [json_name = "taskAssignee"]; // 指派人姓名 + string operator = 3 [json_name = "operator"]; // 操作人姓名 + string operatorNum = 4 [json_name = "operatorNum"]; // 操作人手机号 + string startTime = 5 [json_name = "startTime"]; // 操作开始时间 + string endTime = 6 [json_name = "endTime"]; // 操作结束时间 + int32 status = 7 [json_name = "status"]; // 反馈完成状态 + int32 actualStatus = 8 [json_name = "actualStatus"]; // 实际完成状态 + int32 page = 9 [json_name = "page"]; // 页码 + int32 pageSize = 10 [json_name = "pageSize"]; // 每页数量 +} + +message TaskAssignRecordsQueryResponse { + repeated TaskAssignRecordInfo records = 1 [json_name = "records"]; + int64 total = 2 [json_name = "total"]; + int32 page = 3 [json_name = "page"]; + int32 pageSize = 4 [json_name = "pageSize"]; +} + +// 查询艺人套餐剩余数量请求 +message ArtistBundleBalanceRequest { + string customerNum = 1 [json_name = "customerNum"]; // 艺人编号(推荐使用) + string telNum = 2 [json_name = "telNum"]; // 艺人手机号(备选) +} + +// 艺人套餐剩余数量响应 +message ArtistBundleBalanceResponse { + int32 remainingVideoCount = 1 [json_name = "remainingVideoCount"]; // 剩余视频数量 + int32 remainingImageCount = 2 [json_name = "remainingImageCount"]; // 剩余图片数量 + int32 remainingDataAnalysisCount = 3 [json_name = "remainingDataAnalysisCount"]; // 剩余数据分析数量 +} \ No newline at end of file diff --git a/pb/bundle/bundle.pb.go b/pb/bundle/bundle.pb.go index fdfe6cb..c0db905 100644 --- a/pb/bundle/bundle.pb.go +++ b/pb/bundle/bundle.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.0--rc1 +// protoc-gen-go v1.27.1 +// protoc v3.21.1 // source: pb/bundle.proto package bundle @@ -27,8 +27,8 @@ type DeleteValueAddServiceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo"` - UserID uint64 `protobuf:"varint,2,opt,name=userID,proto3" json:"userID"` + OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + UserID uint64 `protobuf:"varint,2,opt,name=userID,proto3" json:"userID,omitempty"` } func (x *DeleteValueAddServiceRequest) Reset() { @@ -82,20 +82,20 @@ type GetReconciliationListReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName"` - BundleName string `protobuf:"bytes,2,opt,name=bundleName,proto3" json:"bundleName"` - PayStatus int32 `protobuf:"varint,3,opt,name=payStatus,proto3" json:"payStatus"` - PayChannel int32 `protobuf:"varint,4,opt,name=payChannel,proto3" json:"payChannel"` - BundleOrderOn string `protobuf:"bytes,5,opt,name=bundleOrderOn,proto3" json:"bundleOrderOn"` - CreatedStart string `protobuf:"bytes,6,opt,name=createdStart,proto3" json:"createdStart"` - CreatedEnd string `protobuf:"bytes,7,opt,name=createdEnd,proto3" json:"createdEnd"` - PayTimeStart string `protobuf:"bytes,8,opt,name=payTimeStart,proto3" json:"payTimeStart"` - PayTimeEnd string `protobuf:"bytes,9,opt,name=payTimeEnd,proto3" json:"payTimeEnd"` - SerialNumber string `protobuf:"bytes,10,opt,name=serialNumber,proto3" json:"serialNumber"` - Page int32 `protobuf:"varint,11,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,12,opt,name=pageSize,proto3" json:"pageSize"` - UserIDS []uint64 `protobuf:"varint,13,rep,packed,name=userIDS,proto3" json:"userIDS"` - BundleAddOrderOn string `protobuf:"bytes,14,opt,name=bundleAddOrderOn,proto3" json:"bundleAddOrderOn"` + UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName,omitempty"` + BundleName string `protobuf:"bytes,2,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + PayStatus int32 `protobuf:"varint,3,opt,name=payStatus,proto3" json:"payStatus,omitempty"` + PayChannel int32 `protobuf:"varint,4,opt,name=payChannel,proto3" json:"payChannel,omitempty"` + BundleOrderOn string `protobuf:"bytes,5,opt,name=bundleOrderOn,proto3" json:"bundleOrderOn,omitempty"` + CreatedStart string `protobuf:"bytes,6,opt,name=createdStart,proto3" json:"createdStart,omitempty"` + CreatedEnd string `protobuf:"bytes,7,opt,name=createdEnd,proto3" json:"createdEnd,omitempty"` + PayTimeStart string `protobuf:"bytes,8,opt,name=payTimeStart,proto3" json:"payTimeStart,omitempty"` + PayTimeEnd string `protobuf:"bytes,9,opt,name=payTimeEnd,proto3" json:"payTimeEnd,omitempty"` + SerialNumber string `protobuf:"bytes,10,opt,name=serialNumber,proto3" json:"serialNumber,omitempty"` + Page int32 `protobuf:"varint,11,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,12,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + UserIDS []uint64 `protobuf:"varint,13,rep,packed,name=userIDS,proto3" json:"userIDS,omitempty"` + BundleAddOrderOn string `protobuf:"bytes,14,opt,name=bundleAddOrderOn,proto3" json:"bundleAddOrderOn,omitempty"` } func (x *GetReconciliationListReq) Reset() { @@ -233,10 +233,10 @@ type GetReconciliationListResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - List []*ReconciliationInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` - Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` - Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize"` + List []*ReconciliationInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize,omitempty"` } func (x *GetReconciliationListResp) Reset() { @@ -304,21 +304,22 @@ type ReconciliationInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` - BundleOrderOn string `protobuf:"bytes,2,opt,name=bundleOrderOn,proto3" json:"bundleOrderOn"` - BundleAddOrderOn string `protobuf:"bytes,3,opt,name=bundleAddOrderOn,proto3" json:"bundleAddOrderOn"` - CreationTime string `protobuf:"bytes,4,opt,name=CreationTime,proto3" json:"CreationTime"` - UserName string `protobuf:"bytes,5,opt,name=userName,proto3" json:"userName"` - UserTel string `protobuf:"bytes,6,opt,name=userTel,proto3" json:"userTel"` - BundleName string `protobuf:"bytes,7,opt,name=bundleName,proto3" json:"bundleName"` - PayAmount float32 `protobuf:"fixed32,8,opt,name=payAmount,proto3" json:"payAmount"` - CurrencyType int32 `protobuf:"varint,9,opt,name=currencyType,proto3" json:"currencyType"` - PayChannel int32 `protobuf:"varint,10,opt,name=payChannel,proto3" json:"payChannel"` - PayTime string `protobuf:"bytes,11,opt,name=payTime,proto3" json:"payTime"` - PayStatus int32 `protobuf:"varint,12,opt,name=payStatus,proto3" json:"payStatus"` - SerialNumber string `protobuf:"bytes,13,opt,name=serialNumber,proto3" json:"serialNumber"` - UserID uint64 `protobuf:"varint,14,opt,name=userID,proto3" json:"userID"` - HandlingFee string `protobuf:"bytes,15,opt,name=handlingFee,proto3" json:"handlingFee"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + BundleOrderOn string `protobuf:"bytes,2,opt,name=bundleOrderOn,proto3" json:"bundleOrderOn,omitempty"` + BundleAddOrderOn string `protobuf:"bytes,3,opt,name=bundleAddOrderOn,proto3" json:"bundleAddOrderOn,omitempty"` + CreationTime string `protobuf:"bytes,4,opt,name=CreationTime,proto3" json:"CreationTime,omitempty"` + UserName string `protobuf:"bytes,5,opt,name=userName,proto3" json:"userName,omitempty"` + UserTel string `protobuf:"bytes,6,opt,name=userTel,proto3" json:"userTel,omitempty"` + BundleName string `protobuf:"bytes,7,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + PayAmount float32 `protobuf:"fixed32,8,opt,name=payAmount,proto3" json:"payAmount,omitempty"` + CurrencyType int32 `protobuf:"varint,9,opt,name=currencyType,proto3" json:"currencyType,omitempty"` + PayChannel int32 `protobuf:"varint,10,opt,name=payChannel,proto3" json:"payChannel,omitempty"` + PayTime string `protobuf:"bytes,11,opt,name=payTime,proto3" json:"payTime,omitempty"` + PayStatus int32 `protobuf:"varint,12,opt,name=payStatus,proto3" json:"payStatus,omitempty"` + SerialNumber string `protobuf:"bytes,13,opt,name=serialNumber,proto3" json:"serialNumber,omitempty"` + UserID uint64 `protobuf:"varint,14,opt,name=userID,proto3" json:"userID,omitempty"` + HandlingFee string `protobuf:"bytes,15,opt,name=handlingFee,proto3" json:"handlingFee,omitempty"` + SubNum string `protobuf:"bytes,16,opt,name=subNum,proto3" json:"subNum,omitempty"` } func (x *ReconciliationInfo) Reset() { @@ -458,12 +459,19 @@ func (x *ReconciliationInfo) GetHandlingFee() string { return "" } +func (x *ReconciliationInfo) GetSubNum() string { + if x != nil { + return x.SubNum + } + return "" +} + type OrderInfoByOrderNoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo"` + OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo,omitempty"` } func (x *OrderInfoByOrderNoRequest) Reset() { @@ -510,16 +518,16 @@ type OrderInfoByOrderNoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type"` - UserId uint64 `protobuf:"varint,2,opt,name=userId,proto3" json:"userId"` - OrderUUID string `protobuf:"bytes,3,opt,name=orderUUID,proto3" json:"orderUUID"` - AccountNumber int32 `protobuf:"varint,4,opt,name=accountNumber,proto3" json:"accountNumber"` - VideoNumber int32 `protobuf:"varint,5,opt,name=videoNumber,proto3" json:"videoNumber"` - ImageNumber int32 `protobuf:"varint,6,opt,name=imageNumber,proto3" json:"imageNumber"` - DataNumber int32 `protobuf:"varint,7,opt,name=dataNumber,proto3" json:"dataNumber"` - Duration int32 `protobuf:"varint,8,opt,name=duration,proto3" json:"duration"` - Unit string `protobuf:"bytes,9,opt,name=unit,proto3" json:"unit"` - UserName string `protobuf:"bytes,10,opt,name=userName,proto3" json:"userName"` + Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` + UserId uint64 `protobuf:"varint,2,opt,name=userId,proto3" json:"userId,omitempty"` + OrderUUID string `protobuf:"bytes,3,opt,name=orderUUID,proto3" json:"orderUUID,omitempty"` + AccountNumber int32 `protobuf:"varint,4,opt,name=accountNumber,proto3" json:"accountNumber,omitempty"` + VideoNumber int32 `protobuf:"varint,5,opt,name=videoNumber,proto3" json:"videoNumber,omitempty"` + ImageNumber int32 `protobuf:"varint,6,opt,name=imageNumber,proto3" json:"imageNumber,omitempty"` + DataNumber int32 `protobuf:"varint,7,opt,name=dataNumber,proto3" json:"dataNumber,omitempty"` + Duration int32 `protobuf:"varint,8,opt,name=duration,proto3" json:"duration,omitempty"` + Unit string `protobuf:"bytes,9,opt,name=unit,proto3" json:"unit,omitempty"` + UserName string `protobuf:"bytes,10,opt,name=userName,proto3" json:"userName,omitempty"` } func (x *OrderInfoByOrderNoResp) Reset() { @@ -629,27 +637,27 @@ type OrderCreateRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BundleUuid string `protobuf:"bytes,1,opt,name=bundleUuid,proto3" json:"bundleUuid"` - Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language"` - ExpirationTime string `protobuf:"bytes,3,opt,name=expirationTime,proto3" json:"expirationTime"` - BundleName string `protobuf:"bytes,4,opt,name=bundleName,proto3" json:"bundleName"` - CustomerID string `protobuf:"bytes,5,opt,name=customerID,proto3" json:"customerID"` - CustomerNum string `protobuf:"bytes,6,opt,name=customerNum,proto3" json:"customerNum"` - CustomerName string `protobuf:"bytes,7,opt,name=customerName,proto3" json:"customerName"` - Amount float32 `protobuf:"fixed32,8,opt,name=amount,proto3" json:"amount"` - AmountType int64 `protobuf:"varint,9,opt,name=amountType,proto3" json:"amountType"` - SignContract string `protobuf:"bytes,10,opt,name=signContract,proto3" json:"signContract"` - Signature string `protobuf:"bytes,11,opt,name=signature,proto3" json:"signature"` - SignedTime string `protobuf:"bytes,12,opt,name=signedTime,proto3" json:"signedTime"` - Status int64 `protobuf:"varint,13,opt,name=status,proto3" json:"status"` - PayTime string `protobuf:"bytes,14,opt,name=payTime,proto3" json:"payTime"` - ContractNo string `protobuf:"bytes,15,opt,name=contractNo,proto3" json:"contractNo"` - TotalAmount float32 `protobuf:"fixed32,16,opt,name=totalAmount,proto3" json:"totalAmount"` //总金额 - BundleCommonUid string `protobuf:"bytes,17,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid"` - Snapshot string `protobuf:"bytes,18,opt,name=snapshot,proto3" json:"snapshot"` - PayType int32 `protobuf:"varint,19,opt,name=payType,proto3" json:"payType"` - AddRecords []*OrderCreateAddRecord `protobuf:"bytes,20,rep,name=addRecords,proto3" json:"addRecords"` //增值服务 - OrderNo string `protobuf:"bytes,21,opt,name=orderNo,proto3" json:"orderNo"` + BundleUuid string `protobuf:"bytes,1,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` + Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"` + ExpirationTime string `protobuf:"bytes,3,opt,name=expirationTime,proto3" json:"expirationTime,omitempty"` + BundleName string `protobuf:"bytes,4,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + CustomerID string `protobuf:"bytes,5,opt,name=customerID,proto3" json:"customerID,omitempty"` + CustomerNum string `protobuf:"bytes,6,opt,name=customerNum,proto3" json:"customerNum,omitempty"` + CustomerName string `protobuf:"bytes,7,opt,name=customerName,proto3" json:"customerName,omitempty"` + Amount float32 `protobuf:"fixed32,8,opt,name=amount,proto3" json:"amount,omitempty"` + AmountType int64 `protobuf:"varint,9,opt,name=amountType,proto3" json:"amountType,omitempty"` + SignContract string `protobuf:"bytes,10,opt,name=signContract,proto3" json:"signContract,omitempty"` + Signature string `protobuf:"bytes,11,opt,name=signature,proto3" json:"signature,omitempty"` + SignedTime string `protobuf:"bytes,12,opt,name=signedTime,proto3" json:"signedTime,omitempty"` + Status int64 `protobuf:"varint,13,opt,name=status,proto3" json:"status,omitempty"` + PayTime string `protobuf:"bytes,14,opt,name=payTime,proto3" json:"payTime,omitempty"` + ContractNo string `protobuf:"bytes,15,opt,name=contractNo,proto3" json:"contractNo,omitempty"` + TotalAmount float32 `protobuf:"fixed32,16,opt,name=totalAmount,proto3" json:"totalAmount,omitempty"` //总金额 + BundleCommonUid string `protobuf:"bytes,17,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid,omitempty"` + Snapshot string `protobuf:"bytes,18,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + PayType int32 `protobuf:"varint,19,opt,name=payType,proto3" json:"payType,omitempty"` + AddRecords []*OrderCreateAddRecord `protobuf:"bytes,20,rep,name=addRecords,proto3" json:"addRecords,omitempty"` //增值服务 + OrderNo string `protobuf:"bytes,21,opt,name=orderNo,proto3" json:"orderNo,omitempty"` } func (x *OrderCreateRecord) Reset() { @@ -836,15 +844,15 @@ type OrderCreateAddRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ServiceType int32 `protobuf:"varint,1,opt,name=serviceType,proto3" json:"serviceType"` - ValueUid string `protobuf:"bytes,2,opt,name=valueUid,proto3" json:"valueUid"` - CurrencyType int64 `protobuf:"varint,3,opt,name=currencyType,proto3" json:"currencyType"` - Amount float32 `protobuf:"fixed32,4,opt,name=amount,proto3" json:"amount"` - Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num"` - Unit string `protobuf:"bytes,6,opt,name=unit,proto3" json:"unit"` - Source int32 `protobuf:"varint,7,opt,name=source,proto3" json:"source"` - PaymentStatus int32 `protobuf:"varint,8,opt,name=paymentStatus,proto3" json:"paymentStatus"` - HandlingFee string `protobuf:"bytes,9,opt,name=handlingFee,proto3" json:"handlingFee"` + ServiceType int32 `protobuf:"varint,1,opt,name=serviceType,proto3" json:"serviceType,omitempty"` + ValueUid string `protobuf:"bytes,2,opt,name=valueUid,proto3" json:"valueUid,omitempty"` + CurrencyType int64 `protobuf:"varint,3,opt,name=currencyType,proto3" json:"currencyType,omitempty"` + Amount float32 `protobuf:"fixed32,4,opt,name=amount,proto3" json:"amount,omitempty"` + Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num,omitempty"` + Unit string `protobuf:"bytes,6,opt,name=unit,proto3" json:"unit,omitempty"` + Source int32 `protobuf:"varint,7,opt,name=source,proto3" json:"source,omitempty"` + PaymentStatus int32 `protobuf:"varint,8,opt,name=paymentStatus,proto3" json:"paymentStatus,omitempty"` + HandlingFee string `protobuf:"bytes,9,opt,name=handlingFee,proto3" json:"handlingFee,omitempty"` } func (x *OrderCreateAddRecord) Reset() { @@ -947,22 +955,22 @@ type OrderRecordsRequestV2 struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CustomerName string `protobuf:"bytes,1,opt,name=customerName,proto3" json:"customerName"` - TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum"` - BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName"` - PayStatus int32 `protobuf:"varint,4,opt,name=payStatus,proto3" json:"payStatus"` - AddPayStatus int32 `protobuf:"varint,5,opt,name=addPayStatus,proto3" json:"addPayStatus"` - OrderNo string `protobuf:"bytes,6,opt,name=orderNo,proto3" json:"orderNo"` - OrderAddNo string `protobuf:"bytes,7,opt,name=orderAddNo,proto3" json:"orderAddNo"` - BundleCreateAtStart string `protobuf:"bytes,8,opt,name=bundleCreateAtStart,proto3" json:"bundleCreateAtStart"` - BundleCreateAtEnd string `protobuf:"bytes,9,opt,name=bundleCreateAtEnd,proto3" json:"bundleCreateAtEnd"` - OrderAddCreateAtStart string `protobuf:"bytes,10,opt,name=orderAddCreateAtStart,proto3" json:"orderAddCreateAtStart"` - OrderAddCreateAtEnd string `protobuf:"bytes,11,opt,name=orderAddCreateAtEnd,proto3" json:"orderAddCreateAtEnd"` - Page int32 `protobuf:"varint,12,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,13,opt,name=pageSize,proto3" json:"pageSize"` - UserIds []int64 `protobuf:"varint,14,rep,packed,name=userIds,proto3" json:"userIds"` - BundlePayStart string `protobuf:"bytes,15,opt,name=bundlePayStart,proto3" json:"bundlePayStart"` - BundlePayEnd string `protobuf:"bytes,16,opt,name=bundlePayEnd,proto3" json:"bundlePayEnd"` + CustomerName string `protobuf:"bytes,1,opt,name=customerName,proto3" json:"customerName,omitempty"` + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` + BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + PayStatus int32 `protobuf:"varint,4,opt,name=payStatus,proto3" json:"payStatus,omitempty"` + AddPayStatus int32 `protobuf:"varint,5,opt,name=addPayStatus,proto3" json:"addPayStatus,omitempty"` + OrderNo string `protobuf:"bytes,6,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + OrderAddNo string `protobuf:"bytes,7,opt,name=orderAddNo,proto3" json:"orderAddNo,omitempty"` + BundleCreateAtStart string `protobuf:"bytes,8,opt,name=bundleCreateAtStart,proto3" json:"bundleCreateAtStart,omitempty"` + BundleCreateAtEnd string `protobuf:"bytes,9,opt,name=bundleCreateAtEnd,proto3" json:"bundleCreateAtEnd,omitempty"` + OrderAddCreateAtStart string `protobuf:"bytes,10,opt,name=orderAddCreateAtStart,proto3" json:"orderAddCreateAtStart,omitempty"` + OrderAddCreateAtEnd string `protobuf:"bytes,11,opt,name=orderAddCreateAtEnd,proto3" json:"orderAddCreateAtEnd,omitempty"` + Page int32 `protobuf:"varint,12,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,13,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + UserIds []int64 `protobuf:"varint,14,rep,packed,name=userIds,proto3" json:"userIds,omitempty"` + BundlePayStart string `protobuf:"bytes,15,opt,name=bundlePayStart,proto3" json:"bundlePayStart,omitempty"` + BundlePayEnd string `protobuf:"bytes,16,opt,name=bundlePayEnd,proto3" json:"bundlePayEnd,omitempty"` } func (x *OrderRecordsRequestV2) Reset() { @@ -1114,10 +1122,10 @@ type OrderRecordsResponseV2 struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BundleInfo []*OrderBundleRecordInfo `protobuf:"bytes,1,rep,name=bundleInfo,proto3" json:"bundleInfo"` - Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize"` - Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total"` + BundleInfo []*OrderBundleRecordInfo `protobuf:"bytes,1,rep,name=bundleInfo,proto3" json:"bundleInfo,omitempty"` + Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total,omitempty"` } func (x *OrderRecordsResponseV2) Reset() { @@ -1185,16 +1193,17 @@ type OrderBundleRecordInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo"` - BundleName string `protobuf:"bytes,2,opt,name=bundleName,proto3" json:"bundleName"` - PayStatus int32 `protobuf:"varint,3,opt,name=payStatus,proto3" json:"payStatus"` - TelNum string `protobuf:"bytes,4,opt,name=telNum,proto3" json:"telNum"` - CustomerName string `protobuf:"bytes,5,opt,name=customerName,proto3" json:"customerName"` - BundleCreateAt string `protobuf:"bytes,6,opt,name=bundleCreateAt,proto3" json:"bundleCreateAt"` - Amount float32 `protobuf:"fixed32,7,opt,name=amount,proto3" json:"amount"` - AddBundleInfo []*OrderAddBundleRecordInfo `protobuf:"bytes,8,rep,name=addBundleInfo,proto3" json:"addBundleInfo"` - CustomerId int64 `protobuf:"varint,9,opt,name=customerId,proto3" json:"customerId"` - PayTime string `protobuf:"bytes,10,opt,name=payTime,proto3" json:"payTime"` + OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + BundleName string `protobuf:"bytes,2,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + PayStatus int32 `protobuf:"varint,3,opt,name=payStatus,proto3" json:"payStatus,omitempty"` + TelNum string `protobuf:"bytes,4,opt,name=telNum,proto3" json:"telNum,omitempty"` + CustomerName string `protobuf:"bytes,5,opt,name=customerName,proto3" json:"customerName,omitempty"` + BundleCreateAt string `protobuf:"bytes,6,opt,name=bundleCreateAt,proto3" json:"bundleCreateAt,omitempty"` + Amount float32 `protobuf:"fixed32,7,opt,name=amount,proto3" json:"amount,omitempty"` + AddBundleInfo []*OrderAddBundleRecordInfo `protobuf:"bytes,8,rep,name=addBundleInfo,proto3" json:"addBundleInfo,omitempty"` + CustomerId int64 `protobuf:"varint,9,opt,name=customerId,proto3" json:"customerId,omitempty"` + PayTime string `protobuf:"bytes,10,opt,name=payTime,proto3" json:"payTime,omitempty"` + SubNum string `protobuf:"bytes,11,opt,name=subNum,proto3" json:"subNum,omitempty"` } func (x *OrderBundleRecordInfo) Reset() { @@ -1299,24 +1308,31 @@ func (x *OrderBundleRecordInfo) GetPayTime() string { return "" } +func (x *OrderBundleRecordInfo) GetSubNum() string { + if x != nil { + return x.SubNum + } + return "" +} + type OrderAddBundleRecordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderAddNo string `protobuf:"bytes,1,opt,name=orderAddNo,proto3" json:"orderAddNo"` - Amount float32 `protobuf:"fixed32,2,opt,name=amount,proto3" json:"amount"` - SettlementAmount float32 `protobuf:"fixed32,3,opt,name=settlementAmount,proto3" json:"settlementAmount"` - CurrencyType int32 `protobuf:"varint,4,opt,name=currencyType,proto3" json:"currencyType"` - HandlingFee string `protobuf:"bytes,5,opt,name=handlingFee,proto3" json:"handlingFee"` - ExchangeRate float32 `protobuf:"fixed32,6,opt,name=exchangeRate,proto3" json:"exchangeRate"` - OrderAddCreateAt string `protobuf:"bytes,7,opt,name=orderAddCreateAt,proto3" json:"orderAddCreateAt"` - AddPayStatus int32 `protobuf:"varint,8,opt,name=addPayStatus,proto3" json:"addPayStatus"` - Contract string `protobuf:"bytes,9,opt,name=contract,proto3" json:"contract"` - Snapshot string `protobuf:"bytes,10,opt,name=snapshot,proto3" json:"snapshot"` - CheckoutSessionId string `protobuf:"bytes,11,opt,name=CheckoutSessionId,proto3" json:"CheckoutSessionId"` - CustomerID string `protobuf:"bytes,12,opt,name=CustomerID,proto3" json:"CustomerID"` - VideoNum int32 `protobuf:"varint,13,opt,name=videoNum,proto3" json:"videoNum"` + OrderAddNo string `protobuf:"bytes,1,opt,name=orderAddNo,proto3" json:"orderAddNo,omitempty"` + Amount float32 `protobuf:"fixed32,2,opt,name=amount,proto3" json:"amount,omitempty"` + SettlementAmount float32 `protobuf:"fixed32,3,opt,name=settlementAmount,proto3" json:"settlementAmount,omitempty"` + CurrencyType int32 `protobuf:"varint,4,opt,name=currencyType,proto3" json:"currencyType,omitempty"` + HandlingFee string `protobuf:"bytes,5,opt,name=handlingFee,proto3" json:"handlingFee,omitempty"` + ExchangeRate float32 `protobuf:"fixed32,6,opt,name=exchangeRate,proto3" json:"exchangeRate,omitempty"` + OrderAddCreateAt string `protobuf:"bytes,7,opt,name=orderAddCreateAt,proto3" json:"orderAddCreateAt,omitempty"` + AddPayStatus int32 `protobuf:"varint,8,opt,name=addPayStatus,proto3" json:"addPayStatus,omitempty"` + Contract string `protobuf:"bytes,9,opt,name=contract,proto3" json:"contract,omitempty"` + Snapshot string `protobuf:"bytes,10,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + CheckoutSessionId string `protobuf:"bytes,11,opt,name=CheckoutSessionId,proto3" json:"CheckoutSessionId,omitempty"` + CustomerID string `protobuf:"bytes,12,opt,name=CustomerID,proto3" json:"CustomerID,omitempty"` + VideoNum int32 `protobuf:"varint,13,opt,name=videoNum,proto3" json:"videoNum,omitempty"` } func (x *OrderAddBundleRecordInfo) Reset() { @@ -1447,8 +1463,8 @@ type PackagePriceAndTimeResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Price float32 `protobuf:"fixed32,1,opt,name=price,proto3" json:"price"` - Time string `protobuf:"bytes,2,opt,name=time,proto3" json:"time"` + Price float32 `protobuf:"fixed32,1,opt,name=price,proto3" json:"price,omitempty"` + Time string `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"` } func (x *PackagePriceAndTimeResponse) Reset() { @@ -1502,9 +1518,9 @@ type CommonResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid"` - OrderNo string `protobuf:"bytes,3,opt,name=orderNo,proto3" json:"orderNo"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + OrderNo string `protobuf:"bytes,3,opt,name=orderNo,proto3" json:"orderNo,omitempty"` } func (x *CommonResponse) Reset() { @@ -1565,26 +1581,26 @@ type BundleProfile struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` - Price float32 `protobuf:"fixed32,3,opt,name=price,proto3" json:"price"` - PriceType int64 `protobuf:"varint,4,opt,name=priceType,proto3" json:"priceType"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content"` - Contract string `protobuf:"bytes,6,opt,name=contract,proto3" json:"contract"` - Language string `protobuf:"bytes,7,opt,name=language,proto3" json:"language"` - CreatedAt string `protobuf:"bytes,8,opt,name=createdAt,proto3" json:"createdAt"` - UpdatedAt string `protobuf:"bytes,9,opt,name=updatedAt,proto3" json:"updatedAt"` - CompanySign string `protobuf:"bytes,10,opt,name=companySign,proto3" json:"companySign"` - ContractDuration int64 `protobuf:"varint,11,opt,name=contractDuration,proto3" json:"contractDuration"` - BundleCommonUid string `protobuf:"bytes,12,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid"` - Sort int64 `protobuf:"varint,13,opt,name=sort,proto3" json:"sort"` - BgImg1 string `protobuf:"bytes,14,opt,name=bgImg1,proto3" json:"bgImg1"` - BgImg2 string `protobuf:"bytes,15,opt,name=bgImg2,proto3" json:"bgImg2"` - ShelfStatus int64 `protobuf:"varint,16,opt,name=shelfStatus,proto3" json:"shelfStatus"` // 1 上架 2 下架 - SelectValueAddService []*SelectValueAddService `protobuf:"bytes,17,rep,name=selectValueAddService,json=SelectValueAddService,proto3" json:"selectValueAddService"` - BundleProfileLang []*BundleProfileLang `protobuf:"bytes,18,rep,name=bundleProfileLang,proto3" json:"bundleProfileLang"` - ImgOption int32 `protobuf:"varint,19,opt,name=imgOption,proto3" json:"imgOption"` - FontColor string `protobuf:"bytes,20,opt,name=fontColor,proto3" json:"fontColor"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Price float32 `protobuf:"fixed32,3,opt,name=price,proto3" json:"price,omitempty"` + PriceType int64 `protobuf:"varint,4,opt,name=priceType,proto3" json:"priceType,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Contract string `protobuf:"bytes,6,opt,name=contract,proto3" json:"contract,omitempty"` + Language string `protobuf:"bytes,7,opt,name=language,proto3" json:"language,omitempty"` + CreatedAt string `protobuf:"bytes,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,9,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + CompanySign string `protobuf:"bytes,10,opt,name=companySign,proto3" json:"companySign,omitempty"` + ContractDuration int64 `protobuf:"varint,11,opt,name=contractDuration,proto3" json:"contractDuration,omitempty"` + BundleCommonUid string `protobuf:"bytes,12,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid,omitempty"` + Sort int64 `protobuf:"varint,13,opt,name=sort,proto3" json:"sort,omitempty"` + BgImg1 string `protobuf:"bytes,14,opt,name=bgImg1,proto3" json:"bgImg1,omitempty"` + BgImg2 string `protobuf:"bytes,15,opt,name=bgImg2,proto3" json:"bgImg2,omitempty"` + ShelfStatus int64 `protobuf:"varint,16,opt,name=shelfStatus,proto3" json:"shelfStatus,omitempty"` // 1 上架 2 下架 + SelectValueAddService []*SelectValueAddService `protobuf:"bytes,17,rep,name=selectValueAddService,json=SelectValueAddService,proto3" json:"selectValueAddService,omitempty"` + BundleProfileLang []*BundleProfileLang `protobuf:"bytes,18,rep,name=bundleProfileLang,proto3" json:"bundleProfileLang,omitempty"` + ImgOption int32 `protobuf:"varint,19,opt,name=imgOption,proto3" json:"imgOption,omitempty"` + FontColor string `protobuf:"bytes,20,opt,name=fontColor,proto3" json:"fontColor,omitempty"` } func (x *BundleProfile) Reset() { @@ -1764,23 +1780,23 @@ type BundleProfileLang struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` - Price float32 `protobuf:"fixed32,3,opt,name=price,proto3" json:"price"` - PriceType int64 `protobuf:"varint,4,opt,name=priceType,proto3" json:"priceType"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content"` - Language string `protobuf:"bytes,6,opt,name=language,proto3" json:"language"` - CreatedAt string `protobuf:"bytes,7,opt,name=createdAt,proto3" json:"createdAt"` - UpdatedAt string `protobuf:"bytes,8,opt,name=updatedAt,proto3" json:"updatedAt"` - Contract string `protobuf:"bytes,9,opt,name=contract,proto3" json:"contract"` - CompanySign string `protobuf:"bytes,10,opt,name=companySign,proto3" json:"companySign"` - ContractDuration int64 `protobuf:"varint,11,opt,name=contractDuration,proto3" json:"contractDuration"` - FontColor string `protobuf:"bytes,12,opt,name=fontColor,proto3" json:"fontColor"` - Sort int64 `protobuf:"varint,13,opt,name=sort,proto3" json:"sort"` - BgImg1 string `protobuf:"bytes,14,opt,name=bgImg1,proto3" json:"bgImg1"` - BgImg2 string `protobuf:"bytes,15,opt,name=bgImg2,proto3" json:"bgImg2"` - ShelfStatus int64 `protobuf:"varint,16,opt,name=shelfStatus,proto3" json:"shelfStatus"` // 1 上架 2 下架 - ImgOption int32 `protobuf:"varint,17,opt,name=imgOption,proto3" json:"imgOption"` //repeated ValueAddServiceLang valueAddServiceLang = 12 [json_name = "ValueAddServiceLang"]; + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Price float32 `protobuf:"fixed32,3,opt,name=price,proto3" json:"price,omitempty"` + PriceType int64 `protobuf:"varint,4,opt,name=priceType,proto3" json:"priceType,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Language string `protobuf:"bytes,6,opt,name=language,proto3" json:"language,omitempty"` + CreatedAt string `protobuf:"bytes,7,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,8,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Contract string `protobuf:"bytes,9,opt,name=contract,proto3" json:"contract,omitempty"` + CompanySign string `protobuf:"bytes,10,opt,name=companySign,proto3" json:"companySign,omitempty"` + ContractDuration int64 `protobuf:"varint,11,opt,name=contractDuration,proto3" json:"contractDuration,omitempty"` + FontColor string `protobuf:"bytes,12,opt,name=fontColor,proto3" json:"fontColor,omitempty"` + Sort int64 `protobuf:"varint,13,opt,name=sort,proto3" json:"sort,omitempty"` + BgImg1 string `protobuf:"bytes,14,opt,name=bgImg1,proto3" json:"bgImg1,omitempty"` + BgImg2 string `protobuf:"bytes,15,opt,name=bgImg2,proto3" json:"bgImg2,omitempty"` + ShelfStatus int64 `protobuf:"varint,16,opt,name=shelfStatus,proto3" json:"shelfStatus,omitempty"` // 1 上架 2 下架 + ImgOption int32 `protobuf:"varint,17,opt,name=imgOption,proto3" json:"imgOption,omitempty"` //repeated ValueAddServiceLang valueAddServiceLang = 12 [json_name = "ValueAddServiceLang"]; } func (x *BundleProfileLang) Reset() { @@ -1939,9 +1955,9 @@ type SaveResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid"` - CancelNum int64 `protobuf:"varint,3,opt,name=cancelNum,proto3" json:"cancelNum"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + CancelNum int64 `protobuf:"varint,3,opt,name=cancelNum,proto3" json:"cancelNum,omitempty"` } func (x *SaveResponse) Reset() { @@ -2002,10 +2018,10 @@ type SelectValueAddService struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ValueAddUuid string `protobuf:"bytes,1,opt,name=valueAddUuid,proto3" json:"valueAddUuid"` - ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName"` - IsDisplay bool `protobuf:"varint,3,opt,name=isDisplay,proto3" json:"isDisplay"` - ServiceType int32 `protobuf:"varint,4,opt,name=serviceType,proto3" json:"serviceType"` + ValueAddUuid string `protobuf:"bytes,1,opt,name=valueAddUuid,proto3" json:"valueAddUuid,omitempty"` + ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName,omitempty"` + IsDisplay bool `protobuf:"varint,3,opt,name=isDisplay,proto3" json:"isDisplay,omitempty"` + ServiceType int32 `protobuf:"varint,4,opt,name=serviceType,proto3" json:"serviceType,omitempty"` } func (x *SelectValueAddService) Reset() { @@ -2073,7 +2089,7 @@ type DelBundleRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` } func (x *DelBundleRequest) Reset() { @@ -2120,11 +2136,11 @@ type BundleListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content"` - Language string `protobuf:"bytes,5,opt,name=language,proto3" json:"language"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Language string `protobuf:"bytes,5,opt,name=language,proto3" json:"language,omitempty"` } func (x *BundleListRequest) Reset() { @@ -2199,8 +2215,8 @@ type BundleListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Bundles []*BundleProfile `protobuf:"bytes,1,rep,name=bundles,proto3" json:"bundles"` - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` + Bundles []*BundleProfile `protobuf:"bytes,1,rep,name=bundles,proto3" json:"bundles,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` } func (x *BundleListResponse) Reset() { @@ -2254,8 +2270,8 @@ type BundleDetailRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language"` //语言 默认zh-CN, zh-CN zh-TW EN de-DE js-JP + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"` //语言 默认zh-CN, zh-CN zh-TW EN de-DE js-JP } func (x *BundleDetailRequest) Reset() { @@ -2309,8 +2325,8 @@ type HandShelfRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - ShelfStatus int64 `protobuf:"varint,2,opt,name=shelfStatus,proto3" json:"shelfStatus"` // 1 上架 2 下架 + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + ShelfStatus int64 `protobuf:"varint,2,opt,name=shelfStatus,proto3" json:"shelfStatus,omitempty"` // 1 上架 2 下架 } func (x *HandShelfRequest) Reset() { @@ -2364,8 +2380,8 @@ type BundleDetailResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Bundle *BundleProfile `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg"` + Bundle *BundleProfile `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *BundleDetailResponse) Reset() { @@ -2419,8 +2435,8 @@ type BundleDetailResponseV2 struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Bundle *BundleProfile `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg"` + Bundle *BundleProfile `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *BundleDetailResponseV2) Reset() { @@ -2474,45 +2490,45 @@ type OrderRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid"` - CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID"` - CustomerNum string `protobuf:"bytes,4,opt,name=customerNum,proto3" json:"customerNum"` - CustomerName string `protobuf:"bytes,5,opt,name=customerName,proto3" json:"customerName"` - Amount float32 `protobuf:"fixed32,6,opt,name=amount,proto3" json:"amount"` - AmountType int64 `protobuf:"varint,7,opt,name=amountType,proto3" json:"amountType"` - SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract"` - Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature"` - SignedTime string `protobuf:"bytes,10,opt,name=signedTime,proto3" json:"signedTime"` - PayType int64 `protobuf:"varint,11,opt,name=payType,proto3" json:"payType"` - PayTime string `protobuf:"bytes,12,opt,name=payTime,proto3" json:"payTime"` - CheckoutSessionId string `protobuf:"bytes,13,opt,name=checkoutSessionId,proto3" json:"checkoutSessionId"` - CheckoutSessionUrl string `protobuf:"bytes,14,opt,name=checkoutSessionUrl,proto3" json:"checkoutSessionUrl"` - Status int64 `protobuf:"varint,15,opt,name=status,proto3" json:"status"` - OrderNo string `protobuf:"bytes,16,opt,name=orderNo,proto3" json:"orderNo"` - BundleName string `protobuf:"bytes,17,opt,name=bundleName,proto3" json:"bundleName"` - ContractNo string `protobuf:"bytes,18,opt,name=contractNo,proto3" json:"contractNo"` - ValueAddBundleUuid string `protobuf:"bytes,19,opt,name=valueAddBundleUuid,proto3" json:"valueAddBundleUuid"` //增值套餐UUID - ValueAddBundleAmount float32 `protobuf:"fixed32,20,opt,name=valueAddBundleAmount,proto3" json:"valueAddBundleAmount"` //增值套餐金额 - ValueAddOriginalPrice float32 `protobuf:"fixed32,21,opt,name=valueAddOriginalPrice,proto3" json:"valueAddOriginalPrice"` //原单价 - ValueAddDiscountPrice float32 `protobuf:"fixed32,22,opt,name=valueAddDiscountPrice,proto3" json:"valueAddDiscountPrice"` //优惠单价 - ValueAddSavedAmount float32 `protobuf:"fixed32,23,opt,name=valueAddSavedAmount,proto3" json:"valueAddSavedAmount"` //节省金额 - Num int32 `protobuf:"varint,24,opt,name=num,proto3" json:"num"` - TotalAmount float32 `protobuf:"fixed32,25,opt,name=totalAmount,proto3" json:"totalAmount"` //总金额 - Sex string `protobuf:"bytes,26,opt,name=sex,proto3" json:"sex"` - Nationality string `protobuf:"bytes,27,opt,name=nationality,proto3" json:"nationality"` - CertificatePicture string `protobuf:"bytes,28,opt,name=certificatePicture,proto3" json:"certificatePicture"` - PlaceOfResidence string `protobuf:"bytes,29,opt,name=placeOfResidence,proto3" json:"placeOfResidence"` - GroupPhoto string `protobuf:"bytes,30,opt,name=groupPhoto,proto3" json:"groupPhoto"` - BundleCommonUid string `protobuf:"bytes,31,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid"` - AddBundleCommonUid string `protobuf:"bytes,32,opt,name=addBundleCommonUid,proto3" json:"addBundleCommonUid"` - FinancialConfirmation int32 `protobuf:"varint,33,opt,name=financialConfirmation,proto3" json:"financialConfirmation"` - TelNum string `protobuf:"bytes,34,opt,name=telNum,proto3" json:"telNum"` - Language string `protobuf:"bytes,35,opt,name=language,proto3" json:"language"` - PriceOptionsInfo []*PriceOptionsInfo `protobuf:"bytes,36,rep,name=priceOptionsInfo,proto3" json:"priceOptionsInfo"` - ExpirationTime string `protobuf:"bytes,37,opt,name=expirationTime,proto3" json:"expirationTime"` - Snapshot string `protobuf:"bytes,38,opt,name=snapshot,proto3" json:"snapshot"` - AddInfos []*AddInfo `protobuf:"bytes,39,rep,name=addInfos,proto3" json:"addInfos"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` + CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID,omitempty"` + CustomerNum string `protobuf:"bytes,4,opt,name=customerNum,proto3" json:"customerNum,omitempty"` + CustomerName string `protobuf:"bytes,5,opt,name=customerName,proto3" json:"customerName,omitempty"` + Amount float32 `protobuf:"fixed32,6,opt,name=amount,proto3" json:"amount,omitempty"` + AmountType int64 `protobuf:"varint,7,opt,name=amountType,proto3" json:"amountType,omitempty"` + SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract,omitempty"` + Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature,omitempty"` + SignedTime string `protobuf:"bytes,10,opt,name=signedTime,proto3" json:"signedTime,omitempty"` + PayType int64 `protobuf:"varint,11,opt,name=payType,proto3" json:"payType,omitempty"` + PayTime string `protobuf:"bytes,12,opt,name=payTime,proto3" json:"payTime,omitempty"` + CheckoutSessionId string `protobuf:"bytes,13,opt,name=checkoutSessionId,proto3" json:"checkoutSessionId,omitempty"` + CheckoutSessionUrl string `protobuf:"bytes,14,opt,name=checkoutSessionUrl,proto3" json:"checkoutSessionUrl,omitempty"` + Status int64 `protobuf:"varint,15,opt,name=status,proto3" json:"status,omitempty"` + OrderNo string `protobuf:"bytes,16,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + BundleName string `protobuf:"bytes,17,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + ContractNo string `protobuf:"bytes,18,opt,name=contractNo,proto3" json:"contractNo,omitempty"` + ValueAddBundleUuid string `protobuf:"bytes,19,opt,name=valueAddBundleUuid,proto3" json:"valueAddBundleUuid,omitempty"` //增值套餐UUID + ValueAddBundleAmount float32 `protobuf:"fixed32,20,opt,name=valueAddBundleAmount,proto3" json:"valueAddBundleAmount,omitempty"` //增值套餐金额 + ValueAddOriginalPrice float32 `protobuf:"fixed32,21,opt,name=valueAddOriginalPrice,proto3" json:"valueAddOriginalPrice,omitempty"` //原单价 + ValueAddDiscountPrice float32 `protobuf:"fixed32,22,opt,name=valueAddDiscountPrice,proto3" json:"valueAddDiscountPrice,omitempty"` //优惠单价 + ValueAddSavedAmount float32 `protobuf:"fixed32,23,opt,name=valueAddSavedAmount,proto3" json:"valueAddSavedAmount,omitempty"` //节省金额 + Num int32 `protobuf:"varint,24,opt,name=num,proto3" json:"num,omitempty"` + TotalAmount float32 `protobuf:"fixed32,25,opt,name=totalAmount,proto3" json:"totalAmount,omitempty"` //总金额 + Sex string `protobuf:"bytes,26,opt,name=sex,proto3" json:"sex,omitempty"` + Nationality string `protobuf:"bytes,27,opt,name=nationality,proto3" json:"nationality,omitempty"` + CertificatePicture string `protobuf:"bytes,28,opt,name=certificatePicture,proto3" json:"certificatePicture,omitempty"` + PlaceOfResidence string `protobuf:"bytes,29,opt,name=placeOfResidence,proto3" json:"placeOfResidence,omitempty"` + GroupPhoto string `protobuf:"bytes,30,opt,name=groupPhoto,proto3" json:"groupPhoto,omitempty"` + BundleCommonUid string `protobuf:"bytes,31,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid,omitempty"` + AddBundleCommonUid string `protobuf:"bytes,32,opt,name=addBundleCommonUid,proto3" json:"addBundleCommonUid,omitempty"` + FinancialConfirmation int32 `protobuf:"varint,33,opt,name=financialConfirmation,proto3" json:"financialConfirmation,omitempty"` + TelNum string `protobuf:"bytes,34,opt,name=telNum,proto3" json:"telNum,omitempty"` + Language string `protobuf:"bytes,35,opt,name=language,proto3" json:"language,omitempty"` + PriceOptionsInfo []*PriceOptionsInfo `protobuf:"bytes,36,rep,name=priceOptionsInfo,proto3" json:"priceOptionsInfo,omitempty"` + ExpirationTime string `protobuf:"bytes,37,opt,name=expirationTime,proto3" json:"expirationTime,omitempty"` + Snapshot string `protobuf:"bytes,38,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + AddInfos []*AddInfo `protobuf:"bytes,39,rep,name=addInfos,proto3" json:"addInfos,omitempty"` } func (x *OrderRecord) Reset() { @@ -2825,9 +2841,9 @@ type AddInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo"` - Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` - ValueAddUUID string `protobuf:"bytes,3,opt,name=valueAddUUID,proto3" json:"valueAddUUID"` + OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` + ValueAddUUID string `protobuf:"bytes,3,opt,name=valueAddUUID,proto3" json:"valueAddUUID,omitempty"` } func (x *AddInfo) Reset() { @@ -2888,20 +2904,20 @@ type OrderAddRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BundleUuid string `protobuf:"bytes,1,opt,name=bundleUuid,proto3" json:"bundleUuid"` - AddPriceOptionsList []*AddPriceOptionsInfo `protobuf:"bytes,2,rep,name=addPriceOptionsList,proto3" json:"addPriceOptionsList"` - Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language"` - CustomerID string `protobuf:"bytes,4,opt,name=customerID,proto3" json:"customerID"` - CustomerNum string `protobuf:"bytes,5,opt,name=customerNum,proto3" json:"customerNum"` - CustomerName string `protobuf:"bytes,6,opt,name=customerName,proto3" json:"customerName"` - // string valueAddUUID = 12 [json_name = "valueAddUUID"]; - Source int32 `protobuf:"varint,7,opt,name=source,proto3" json:"source"` - SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract"` - Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature"` - SignedTime string `protobuf:"bytes,10,opt,name=signedTime,proto3" json:"signedTime"` - ExpirationDate string `protobuf:"bytes,11,opt,name=expirationDate,proto3" json:"expirationDate"` - Snapshot string `protobuf:"bytes,38,opt,name=snapshot,proto3" json:"snapshot"` - OrderUUID string `protobuf:"bytes,39,opt,name=orderUUID,proto3" json:"orderUUID"` + BundleUuid string `protobuf:"bytes,1,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` + AddPriceOptionsList []*AddPriceOptionsInfo `protobuf:"bytes,2,rep,name=addPriceOptionsList,proto3" json:"addPriceOptionsList,omitempty"` + Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` + CustomerID string `protobuf:"bytes,4,opt,name=customerID,proto3" json:"customerID,omitempty"` + CustomerNum string `protobuf:"bytes,5,opt,name=customerNum,proto3" json:"customerNum,omitempty"` + CustomerName string `protobuf:"bytes,6,opt,name=customerName,proto3" json:"customerName,omitempty"` + // string valueAddUUID = 12 [json_name = "valueAddUUID"]; + Source int32 `protobuf:"varint,7,opt,name=source,proto3" json:"source,omitempty"` + SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract,omitempty"` + Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature,omitempty"` + SignedTime string `protobuf:"bytes,10,opt,name=signedTime,proto3" json:"signedTime,omitempty"` + ExpirationDate string `protobuf:"bytes,11,opt,name=expirationDate,proto3" json:"expirationDate,omitempty"` + Snapshot string `protobuf:"bytes,38,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + OrderUUID string `protobuf:"bytes,39,opt,name=orderUUID,proto3" json:"orderUUID,omitempty"` } func (x *OrderAddRecord) Reset() { @@ -3032,13 +3048,13 @@ type AddPriceOptionsInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` - ValueUid string `protobuf:"bytes,2,opt,name=valueUid,proto3" json:"valueUid"` - ServiceType int32 `protobuf:"varint,3,opt,name=serviceType,proto3" json:"serviceType"` - CurrencyType int64 `protobuf:"varint,4,opt,name=currencyType,proto3" json:"currencyType"` - Amount float32 `protobuf:"fixed32,5,opt,name=amount,proto3" json:"amount"` - Num int32 `protobuf:"varint,6,opt,name=num,proto3" json:"num"` - Unit string `protobuf:"bytes,7,opt,name=unit,proto3" json:"unit"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ValueUid string `protobuf:"bytes,2,opt,name=valueUid,proto3" json:"valueUid,omitempty"` + ServiceType int32 `protobuf:"varint,3,opt,name=serviceType,proto3" json:"serviceType,omitempty"` + CurrencyType int64 `protobuf:"varint,4,opt,name=currencyType,proto3" json:"currencyType,omitempty"` + Amount float32 `protobuf:"fixed32,5,opt,name=amount,proto3" json:"amount,omitempty"` + Num int32 `protobuf:"varint,6,opt,name=num,proto3" json:"num,omitempty"` + Unit string `protobuf:"bytes,7,opt,name=unit,proto3" json:"unit,omitempty"` } func (x *AddPriceOptionsInfo) Reset() { @@ -3127,9 +3143,9 @@ type PriceOptionsInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` - ValueUid string `protobuf:"bytes,2,opt,name=valueUid,proto3" json:"valueUid"` - Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ValueUid string `protobuf:"bytes,2,opt,name=valueUid,proto3" json:"valueUid,omitempty"` + Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num,omitempty"` } func (x *PriceOptionsInfo) Reset() { @@ -3190,22 +3206,22 @@ type OrderRecordsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` - CustomerNum string `protobuf:"bytes,3,opt,name=customerNum,proto3" json:"customerNum"` - CustomerName string `protobuf:"bytes,4,opt,name=customerName,proto3" json:"customerName"` - BundleUUID string `protobuf:"bytes,5,opt,name=bundleUUID,proto3" json:"bundleUUID"` - OrderNo string `protobuf:"bytes,6,opt,name=orderNo,proto3" json:"orderNo"` - Status int64 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` - BundleName string `protobuf:"bytes,8,opt,name=bundleName,proto3" json:"bundleName"` - StartSignedTime string `protobuf:"bytes,9,opt,name=startSignedTime,proto3" json:"startSignedTime"` - EndSignedTime string `protobuf:"bytes,10,opt,name=endSignedTime,proto3" json:"endSignedTime"` - StartPayTime string `protobuf:"bytes,11,opt,name=startPayTime,proto3" json:"startPayTime"` - EndPayTime string `protobuf:"bytes,12,opt,name=endPayTime,proto3" json:"endPayTime"` - CustomerID string `protobuf:"bytes,13,opt,name=customerID,proto3" json:"customerID"` - IsHaveValueAdd int64 `protobuf:"varint,14,opt,name=isHaveValueAdd,proto3" json:"isHaveValueAdd"` //有无增值选项 - FinancialConfirmation int32 `protobuf:"varint,15,opt,name=financialConfirmation,proto3" json:"financialConfirmation"` - TelNum string `protobuf:"bytes,16,opt,name=telNum,proto3" json:"telNum"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + CustomerNum string `protobuf:"bytes,3,opt,name=customerNum,proto3" json:"customerNum,omitempty"` + CustomerName string `protobuf:"bytes,4,opt,name=customerName,proto3" json:"customerName,omitempty"` + BundleUUID string `protobuf:"bytes,5,opt,name=bundleUUID,proto3" json:"bundleUUID,omitempty"` + OrderNo string `protobuf:"bytes,6,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + Status int64 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` + BundleName string `protobuf:"bytes,8,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + StartSignedTime string `protobuf:"bytes,9,opt,name=startSignedTime,proto3" json:"startSignedTime,omitempty"` + EndSignedTime string `protobuf:"bytes,10,opt,name=endSignedTime,proto3" json:"endSignedTime,omitempty"` + StartPayTime string `protobuf:"bytes,11,opt,name=startPayTime,proto3" json:"startPayTime,omitempty"` + EndPayTime string `protobuf:"bytes,12,opt,name=endPayTime,proto3" json:"endPayTime,omitempty"` + CustomerID string `protobuf:"bytes,13,opt,name=customerID,proto3" json:"customerID,omitempty"` + IsHaveValueAdd int64 `protobuf:"varint,14,opt,name=isHaveValueAdd,proto3" json:"isHaveValueAdd,omitempty"` //有无增值选项 + FinancialConfirmation int32 `protobuf:"varint,15,opt,name=financialConfirmation,proto3" json:"financialConfirmation,omitempty"` + TelNum string `protobuf:"bytes,16,opt,name=telNum,proto3" json:"telNum,omitempty"` } func (x *OrderRecordsRequest) Reset() { @@ -3357,8 +3373,8 @@ type OrderRecordsResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderRecords []*OrderRecord `protobuf:"bytes,1,rep,name=orderRecords,proto3" json:"orderRecords"` - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` + OrderRecords []*OrderRecord `protobuf:"bytes,1,rep,name=orderRecords,proto3" json:"orderRecords,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` } func (x *OrderRecordsResponse) Reset() { @@ -3412,11 +3428,11 @@ type OrderRecordsDetailRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - OrderNo string `protobuf:"bytes,2,opt,name=orderNo,proto3" json:"orderNo"` - CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID"` - BundleUUID string `protobuf:"bytes,4,opt,name=bundleUUID,proto3" json:"bundleUUID"` - Status uint64 `protobuf:"varint,5,opt,name=status,proto3" json:"status"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + OrderNo string `protobuf:"bytes,2,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID,omitempty"` + BundleUUID string `protobuf:"bytes,4,opt,name=bundleUUID,proto3" json:"bundleUUID,omitempty"` + Status uint64 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` } func (x *OrderRecordsDetailRequest) Reset() { @@ -3491,8 +3507,8 @@ type OrderRecordsDetailResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderRecord *OrderRecord `protobuf:"bytes,1,opt,name=orderRecord,proto3" json:"orderRecord"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg"` + OrderRecord *OrderRecord `protobuf:"bytes,1,opt,name=orderRecord,proto3" json:"orderRecord,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *OrderRecordsDetailResponse) Reset() { @@ -3547,16 +3563,16 @@ type ValueAddBundleProfile struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` - OriginalPrice float32 `protobuf:"fixed32,3,opt,name=originalPrice,proto3" json:"originalPrice"` - DiscountPrice float32 `protobuf:"fixed32,4,opt,name=discountPrice,proto3" json:"discountPrice"` - TotalPrice float32 `protobuf:"fixed32,6,opt,name=totalPrice,proto3" json:"totalPrice"` - SavedAmount float32 `protobuf:"fixed32,7,opt,name=savedAmount,proto3" json:"savedAmount"` - DiscountPriceStatus bool `protobuf:"varint,8,opt,name=discountPriceStatus,proto3" json:"discountPriceStatus"` - Choose bool `protobuf:"varint,9,opt,name=choose,proto3" json:"choose"` - Status bool `protobuf:"varint,10,opt,name=status,proto3" json:"status"` - AddBundleCommonUid string `protobuf:"bytes,11,opt,name=addBundleCommonUid,proto3" json:"addBundleCommonUid"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` + OriginalPrice float32 `protobuf:"fixed32,3,opt,name=originalPrice,proto3" json:"originalPrice,omitempty"` + DiscountPrice float32 `protobuf:"fixed32,4,opt,name=discountPrice,proto3" json:"discountPrice,omitempty"` + TotalPrice float32 `protobuf:"fixed32,6,opt,name=totalPrice,proto3" json:"totalPrice,omitempty"` + SavedAmount float32 `protobuf:"fixed32,7,opt,name=savedAmount,proto3" json:"savedAmount,omitempty"` + DiscountPriceStatus bool `protobuf:"varint,8,opt,name=discountPriceStatus,proto3" json:"discountPriceStatus,omitempty"` + Choose bool `protobuf:"varint,9,opt,name=choose,proto3" json:"choose,omitempty"` + Status bool `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` + AddBundleCommonUid string `protobuf:"bytes,11,opt,name=addBundleCommonUid,proto3" json:"addBundleCommonUid,omitempty"` } func (x *ValueAddBundleProfile) Reset() { @@ -3666,7 +3682,7 @@ type CreateValueAddBundleRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num"` + Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num,omitempty"` } func (x *CreateValueAddBundleRequest) Reset() { @@ -3713,10 +3729,10 @@ type CreateValueAddBundleResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - TotalPrice float32 `protobuf:"fixed32,2,opt,name=totalPrice,proto3" json:"totalPrice"` - SavedAmount float32 `protobuf:"fixed32,3,opt,name=savedAmount,proto3" json:"savedAmount"` - Msg string `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + TotalPrice float32 `protobuf:"fixed32,2,opt,name=totalPrice,proto3" json:"totalPrice,omitempty"` + SavedAmount float32 `protobuf:"fixed32,3,opt,name=savedAmount,proto3" json:"savedAmount,omitempty"` + Msg string `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *CreateValueAddBundleResponse) Reset() { @@ -3785,9 +3801,9 @@ type ValueAddBundleListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` - BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid"` - PriceType int32 `protobuf:"varint,3,opt,name=priceType,proto3" json:"priceType"` + UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` + PriceType int32 `protobuf:"varint,3,opt,name=priceType,proto3" json:"priceType,omitempty"` } func (x *ValueAddBundleListRequest) Reset() { @@ -3848,14 +3864,14 @@ type ValueAddBundleListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OriginalPrice float32 `protobuf:"fixed32,1,opt,name=originalPrice,proto3" json:"originalPrice"` - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` - Data []*ValueAddBundleProfile `protobuf:"bytes,3,rep,name=data,proto3" json:"data"` - Status bool `protobuf:"varint,4,opt,name=status,proto3" json:"status"` - Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num"` - Price float32 `protobuf:"fixed32,6,opt,name=price,proto3" json:"price"` - OrderNo bool `protobuf:"varint,7,opt,name=orderNo,proto3" json:"orderNo"` - Msg string `protobuf:"bytes,8,opt,name=msg,proto3" json:"msg"` + OriginalPrice float32 `protobuf:"fixed32,1,opt,name=originalPrice,proto3" json:"originalPrice,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Data []*ValueAddBundleProfile `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` + Status bool `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num,omitempty"` + Price float32 `protobuf:"fixed32,6,opt,name=price,proto3" json:"price,omitempty"` + OrderNo bool `protobuf:"varint,7,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + Msg string `protobuf:"bytes,8,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *ValueAddBundleListResponse) Reset() { @@ -3951,7 +3967,7 @@ type ValueAddBundleDetailRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` } func (x *ValueAddBundleDetailRequest) Reset() { @@ -3998,9 +4014,9 @@ type ValueAddBundleDetailResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data *ValueAddBundleProfile `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` - PayTime string `protobuf:"bytes,2,opt,name=payTime,proto3" json:"payTime"` - Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg"` + Data *ValueAddBundleProfile `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + PayTime string `protobuf:"bytes,2,opt,name=payTime,proto3" json:"payTime,omitempty"` + Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *ValueAddBundleDetailResponse) Reset() { @@ -4061,7 +4077,7 @@ type FinancialConfirmationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo"` + OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo,omitempty"` } func (x *FinancialConfirmationRequest) Reset() { @@ -4104,16 +4120,16 @@ func (x *FinancialConfirmationRequest) GetOrderNo() string { } // ****************************************************新增值服务*********************** -//增值服务 +// 增值服务 type ValueAddService struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName"` //服务名称 - ServiceType int32 `protobuf:"varint,3,opt,name=serviceType,proto3" json:"serviceType"` - ServiceLang []*ValueAddServiceLang `protobuf:"bytes,4,rep,name=serviceLang,proto3" json:"serviceLang"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName,omitempty"` //服务名称 + ServiceType int32 `protobuf:"varint,3,opt,name=serviceType,proto3" json:"serviceType,omitempty"` + ServiceLang []*ValueAddServiceLang `protobuf:"bytes,4,rep,name=serviceLang,proto3" json:"serviceLang,omitempty"` } func (x *ValueAddService) Reset() { @@ -4181,17 +4197,17 @@ type ValueAddServiceLang struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName"` //服务名称 - ServiceType int32 `protobuf:"varint,3,opt,name=serviceType,proto3" json:"serviceType"` - PriceMode int32 `protobuf:"varint,4,opt,name=priceMode,proto3" json:"priceMode"` - OriginalPrice string `protobuf:"bytes,5,opt,name=originalPrice,proto3" json:"originalPrice"` - Unit string `protobuf:"bytes,6,opt,name=unit,proto3" json:"unit"` - PriceType int64 `protobuf:"varint,7,opt,name=priceType,proto3" json:"priceType"` - Language string `protobuf:"bytes,8,opt,name=language,proto3" json:"language"` - CreatedAt string `protobuf:"bytes,9,opt,name=createdAt,proto3" json:"createdAt"` - UpdatedAt string `protobuf:"bytes,10,opt,name=updatedAt,proto3" json:"updatedAt"` - Options []*ValueAddPriceOptions `protobuf:"bytes,12,rep,name=options,proto3" json:"options"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName,omitempty"` //服务名称 + ServiceType int32 `protobuf:"varint,3,opt,name=serviceType,proto3" json:"serviceType,omitempty"` + PriceMode int32 `protobuf:"varint,4,opt,name=priceMode,proto3" json:"priceMode,omitempty"` + OriginalPrice string `protobuf:"bytes,5,opt,name=originalPrice,proto3" json:"originalPrice,omitempty"` + Unit string `protobuf:"bytes,6,opt,name=unit,proto3" json:"unit,omitempty"` + PriceType int64 `protobuf:"varint,7,opt,name=priceType,proto3" json:"priceType,omitempty"` + Language string `protobuf:"bytes,8,opt,name=language,proto3" json:"language,omitempty"` + CreatedAt string `protobuf:"bytes,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,10,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Options []*ValueAddPriceOptions `protobuf:"bytes,12,rep,name=options,proto3" json:"options,omitempty"` } func (x *ValueAddServiceLang) Reset() { @@ -4303,17 +4319,17 @@ func (x *ValueAddServiceLang) GetOptions() []*ValueAddPriceOptions { return nil } -//增值服务价格选项 +// 增值服务价格选项 type ValueAddPriceOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` - Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol"` - Price string `protobuf:"bytes,4,opt,name=price,proto3" json:"price"` - SaveAmount string `protobuf:"bytes,5,opt,name=saveAmount,proto3" json:"saveAmount"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Price string `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"` + SaveAmount string `protobuf:"bytes,5,opt,name=saveAmount,proto3" json:"saveAmount,omitempty"` } func (x *ValueAddPriceOptions) Reset() { @@ -4383,16 +4399,16 @@ func (x *ValueAddPriceOptions) GetSaveAmount() string { return "" } -//增值服务列表 +// 增值服务列表 type ValueAddServiceListRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name"` - Language string `protobuf:"bytes,4,opt,name=language,proto3" json:"language"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Language string `protobuf:"bytes,4,opt,name=language,proto3" json:"language,omitempty"` } func (x *ValueAddServiceListRequest) Reset() { @@ -4460,9 +4476,9 @@ type ValueAddServiceListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg"` - ValueAddServiceList []*ValueAddService `protobuf:"bytes,3,rep,name=valueAddServiceList,proto3" json:"valueAddServiceList"` + Total int32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + ValueAddServiceList []*ValueAddService `protobuf:"bytes,3,rep,name=valueAddServiceList,proto3" json:"valueAddServiceList,omitempty"` } func (x *ValueAddServiceListResponse) Reset() { @@ -4518,14 +4534,14 @@ func (x *ValueAddServiceListResponse) GetValueAddServiceList() []*ValueAddServic return nil } -//增值服务详情 +// 增值服务详情 type ValueAddServiceDetailRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language"` //语言 默认zh-CN, zh-CN zh-TW EN de-DE js-JP + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"` //语言 默认zh-CN, zh-CN zh-TW EN de-DE js-JP } func (x *ValueAddServiceDetailRequest) Reset() { @@ -4579,8 +4595,8 @@ type ValueAddServiceDetailResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"` - ValueAddService *ValueAddService `protobuf:"bytes,2,opt,name=valueAddService,proto3" json:"valueAddService"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + ValueAddService *ValueAddService `protobuf:"bytes,2,opt,name=valueAddService,proto3" json:"valueAddService,omitempty"` } func (x *ValueAddServiceDetailResponse) Reset() { @@ -4634,9 +4650,9 @@ type CalculatePriceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` - Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` + Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` } func (x *CalculatePriceRequest) Reset() { @@ -4697,8 +4713,8 @@ type CalculatePriceResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"` - Price float32 `protobuf:"fixed32,2,opt,name=price,proto3" json:"price"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Price float32 `protobuf:"fixed32,2,opt,name=price,proto3" json:"price,omitempty"` } func (x *CalculatePriceResponse) Reset() { @@ -4752,8 +4768,8 @@ type BatchGetValueAddServiceLangRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuids []string `protobuf:"bytes,1,rep,name=uuids,proto3" json:"uuids"` - Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language"` + Uuids []string `protobuf:"bytes,1,rep,name=uuids,proto3" json:"uuids,omitempty"` + Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"` } func (x *BatchGetValueAddServiceLangRequest) Reset() { @@ -4807,8 +4823,8 @@ type BatchGetValueAddServiceLangResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"` - ValueAddServiceLangList []*ValueAddServiceLang `protobuf:"bytes,2,rep,name=valueAddServiceLangList,proto3" json:"valueAddServiceLangList"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + ValueAddServiceLangList []*ValueAddServiceLang `protobuf:"bytes,2,rep,name=valueAddServiceLangList,proto3" json:"valueAddServiceLangList,omitempty"` } func (x *BatchGetValueAddServiceLangResponse) Reset() { @@ -4862,19 +4878,19 @@ type BundleExtendRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` - AccountAdditional uint32 `protobuf:"varint,2,opt,name=accountAdditional,proto3" json:"accountAdditional"` - VideoAdditional uint32 `protobuf:"varint,3,opt,name=videoAdditional,proto3" json:"videoAdditional"` - ImagesAdditional uint32 `protobuf:"varint,4,opt,name=imagesAdditional,proto3" json:"imagesAdditional"` - DataAdditional uint32 `protobuf:"varint,5,opt,name=dataAdditional,proto3" json:"dataAdditional"` - AvailableDurationAdditional uint32 `protobuf:"varint,6,opt,name=availableDurationAdditional,proto3" json:"availableDurationAdditional"` - TimeUnit uint32 `protobuf:"varint,7,opt,name=timeUnit,proto3" json:"timeUnit"` // 1 日 2 月 3年 - Remark string `protobuf:"bytes,8,opt,name=remark,proto3" json:"remark"` - AssociatedorderNumber string `protobuf:"bytes,9,opt,name=associatedorderNumber,proto3" json:"associatedorderNumber"` - OperatorId uint64 `protobuf:"varint,10,opt,name=operatorId,proto3" json:"operatorId"` - OperatorName string `protobuf:"bytes,11,opt,name=operatorName,proto3" json:"operatorName"` - OperatorPhoneNumber string `protobuf:"bytes,12,opt,name=operatorPhoneNumber,proto3" json:"operatorPhoneNumber"` - Type int32 `protobuf:"varint,13,opt,name=type,proto3" json:"type"` + UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + AccountAdditional uint32 `protobuf:"varint,2,opt,name=accountAdditional,proto3" json:"accountAdditional,omitempty"` + VideoAdditional uint32 `protobuf:"varint,3,opt,name=videoAdditional,proto3" json:"videoAdditional,omitempty"` + ImagesAdditional uint32 `protobuf:"varint,4,opt,name=imagesAdditional,proto3" json:"imagesAdditional,omitempty"` + DataAdditional uint32 `protobuf:"varint,5,opt,name=dataAdditional,proto3" json:"dataAdditional,omitempty"` + AvailableDurationAdditional uint32 `protobuf:"varint,6,opt,name=availableDurationAdditional,proto3" json:"availableDurationAdditional,omitempty"` + TimeUnit uint32 `protobuf:"varint,7,opt,name=timeUnit,proto3" json:"timeUnit,omitempty"` // 1 日 2 月 3年 + Remark string `protobuf:"bytes,8,opt,name=remark,proto3" json:"remark,omitempty"` + AssociatedorderNumber string `protobuf:"bytes,9,opt,name=associatedorderNumber,proto3" json:"associatedorderNumber,omitempty"` + OperatorId uint64 `protobuf:"varint,10,opt,name=operatorId,proto3" json:"operatorId,omitempty"` + OperatorName string `protobuf:"bytes,11,opt,name=operatorName,proto3" json:"operatorName,omitempty"` + OperatorPhoneNumber string `protobuf:"bytes,12,opt,name=operatorPhoneNumber,proto3" json:"operatorPhoneNumber,omitempty"` + Type int32 `protobuf:"varint,13,opt,name=type,proto3" json:"type,omitempty"` } func (x *BundleExtendRequest) Reset() { @@ -5043,14 +5059,14 @@ type BundleExtendRecordsListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` - User string `protobuf:"bytes,3,opt,name=user,proto3" json:"user"` - Operator string `protobuf:"bytes,4,opt,name=operator,proto3" json:"operator"` - StartTime uint64 `protobuf:"varint,5,opt,name=startTime,proto3" json:"startTime"` - EndTime uint64 `protobuf:"varint,6,opt,name=endTime,proto3" json:"endTime"` - Type uint32 `protobuf:"varint,7,opt,name=type,proto3" json:"type"` - AssociatedOrderNumber string `protobuf:"bytes,8,opt,name=associatedOrderNumber,proto3" json:"associatedOrderNumber"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + User string `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` + Operator string `protobuf:"bytes,4,opt,name=operator,proto3" json:"operator,omitempty"` + StartTime uint64 `protobuf:"varint,5,opt,name=startTime,proto3" json:"startTime,omitempty"` + EndTime uint64 `protobuf:"varint,6,opt,name=endTime,proto3" json:"endTime,omitempty"` + Type uint32 `protobuf:"varint,7,opt,name=type,proto3" json:"type,omitempty"` + AssociatedOrderNumber string `protobuf:"bytes,8,opt,name=associatedOrderNumber,proto3" json:"associatedOrderNumber,omitempty"` } func (x *BundleExtendRecordsListRequest) Reset() { @@ -5146,8 +5162,8 @@ type BundleExtendRecordsListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Data []*BundleExtendRecordItem `protobuf:"bytes,2,rep,name=data,proto3" json:"data"` + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*BundleExtendRecordItem `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } func (x *BundleExtendRecordsListResponse) Reset() { @@ -5201,20 +5217,20 @@ type BundleExtendRecordItem struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName"` - UserPhoneNumber string `protobuf:"bytes,2,opt,name=userPhoneNumber,proto3" json:"userPhoneNumber"` - AccountAdditional uint32 `protobuf:"varint,3,opt,name=accountAdditional,proto3" json:"accountAdditional"` - VideoAdditional uint32 `protobuf:"varint,4,opt,name=videoAdditional,proto3" json:"videoAdditional"` - ImagesAdditional uint32 `protobuf:"varint,5,opt,name=imagesAdditional,proto3" json:"imagesAdditional"` - DataAdditional uint32 `protobuf:"varint,6,opt,name=dataAdditional,proto3" json:"dataAdditional"` - AvailableDurationAdditional uint32 `protobuf:"varint,7,opt,name=availableDurationAdditional,proto3" json:"availableDurationAdditional"` - Type int32 `protobuf:"varint,8,opt,name=type,proto3" json:"type"` - CreatedAt uint64 `protobuf:"varint,9,opt,name=createdAt,proto3" json:"createdAt"` - Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` - AssociatedOrderNumber string `protobuf:"bytes,11,opt,name=associatedOrderNumber,proto3" json:"associatedOrderNumber"` - TimeUnit uint32 `protobuf:"varint,12,opt,name=timeUnit,proto3" json:"timeUnit"` - OperatorName string `protobuf:"bytes,13,opt,name=operatorName,proto3" json:"operatorName"` - OperatorPhoneNumber string `protobuf:"bytes,14,opt,name=operatorPhoneNumber,proto3" json:"operatorPhoneNumber"` + UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName,omitempty"` + UserPhoneNumber string `protobuf:"bytes,2,opt,name=userPhoneNumber,proto3" json:"userPhoneNumber,omitempty"` + AccountAdditional uint32 `protobuf:"varint,3,opt,name=accountAdditional,proto3" json:"accountAdditional,omitempty"` + VideoAdditional uint32 `protobuf:"varint,4,opt,name=videoAdditional,proto3" json:"videoAdditional,omitempty"` + ImagesAdditional uint32 `protobuf:"varint,5,opt,name=imagesAdditional,proto3" json:"imagesAdditional,omitempty"` + DataAdditional uint32 `protobuf:"varint,6,opt,name=dataAdditional,proto3" json:"dataAdditional,omitempty"` + AvailableDurationAdditional uint32 `protobuf:"varint,7,opt,name=availableDurationAdditional,proto3" json:"availableDurationAdditional,omitempty"` + Type int32 `protobuf:"varint,8,opt,name=type,proto3" json:"type,omitempty"` + CreatedAt uint64 `protobuf:"varint,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark,omitempty"` + AssociatedOrderNumber string `protobuf:"bytes,11,opt,name=associatedOrderNumber,proto3" json:"associatedOrderNumber,omitempty"` + TimeUnit uint32 `protobuf:"varint,12,opt,name=timeUnit,proto3" json:"timeUnit,omitempty"` + OperatorName string `protobuf:"bytes,13,opt,name=operatorName,proto3" json:"operatorName,omitempty"` + OperatorPhoneNumber string `protobuf:"bytes,14,opt,name=operatorPhoneNumber,proto3" json:"operatorPhoneNumber,omitempty"` } func (x *BundleExtendRecordItem) Reset() { @@ -5352,14 +5368,14 @@ type GetBundleBalanceListReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName"` - Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` - BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName"` - Bought int32 `protobuf:"varint,4,opt,name=bought,proto3" json:"bought"` - ExpiredTimeStart int64 `protobuf:"varint,5,opt,name=expiredTimeStart,proto3" json:"expiredTimeStart"` - ExpiredTimeEnd int64 `protobuf:"varint,6,opt,name=expiredTimeEnd,proto3" json:"expiredTimeEnd"` - Page int32 `protobuf:"varint,7,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,8,opt,name=pageSize,proto3" json:"pageSize"` + UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName,omitempty"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + Bought int32 `protobuf:"varint,4,opt,name=bought,proto3" json:"bought,omitempty"` + ExpiredTimeStart int64 `protobuf:"varint,5,opt,name=expiredTimeStart,proto3" json:"expiredTimeStart,omitempty"` + ExpiredTimeEnd int64 `protobuf:"varint,6,opt,name=expiredTimeEnd,proto3" json:"expiredTimeEnd,omitempty"` + Page int32 `protobuf:"varint,7,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,8,opt,name=pageSize,proto3" json:"pageSize,omitempty"` } func (x *GetBundleBalanceListReq) Reset() { @@ -5455,13 +5471,13 @@ type GetBundleBalanceReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName"` - Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` - BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName"` - ExpiredTimeStart int64 `protobuf:"varint,4,opt,name=expiredTimeStart,proto3" json:"expiredTimeStart"` - ExpiredTimeEnd int64 `protobuf:"varint,5,opt,name=expiredTimeEnd,proto3" json:"expiredTimeEnd"` - Page int32 `protobuf:"varint,6,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,7,opt,name=pageSize,proto3" json:"pageSize"` + UserName string `protobuf:"bytes,1,opt,name=userName,proto3" json:"userName,omitempty"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + ExpiredTimeStart int64 `protobuf:"varint,4,opt,name=expiredTimeStart,proto3" json:"expiredTimeStart,omitempty"` + ExpiredTimeEnd int64 `protobuf:"varint,5,opt,name=expiredTimeEnd,proto3" json:"expiredTimeEnd,omitempty"` + Page int32 `protobuf:"varint,6,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,7,opt,name=pageSize,proto3" json:"pageSize,omitempty"` } func (x *GetBundleBalanceReq) Reset() { @@ -5550,22 +5566,22 @@ type BundleBalanceItem struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` - UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName"` - UserPhoneNumber string `protobuf:"bytes,3,opt,name=userPhoneNumber,proto3" json:"userPhoneNumber"` - Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status"` - BundleName string `protobuf:"bytes,5,opt,name=bundleName,proto3" json:"bundleName"` - ExpiredTime int64 `protobuf:"varint,6,opt,name=expiredTime,proto3" json:"expiredTime"` - AccountNumber int32 `protobuf:"varint,7,opt,name=accountNumber,proto3" json:"accountNumber"` - AccountConsumptionNumber int32 `protobuf:"varint,8,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber"` - VideoNumber int32 `protobuf:"varint,9,opt,name=videoNumber,proto3" json:"videoNumber"` - VideoConsumptionNumber int32 `protobuf:"varint,10,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber"` - ImageNumber int32 `protobuf:"varint,11,opt,name=imageNumber,proto3" json:"imageNumber"` - ImageConsumptionNumber int32 `protobuf:"varint,12,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber"` - DataAnalysisNumber int32 `protobuf:"varint,13,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber"` - DataAnalysisConsumptionNumber int32 `protobuf:"varint,14,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber"` - ExpansionPacksNumber int32 `protobuf:"varint,15,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber"` - Bought int32 `protobuf:"varint,16,opt,name=bought,proto3" json:"bought"` + UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"` + UserPhoneNumber string `protobuf:"bytes,3,opt,name=userPhoneNumber,proto3" json:"userPhoneNumber,omitempty"` + Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + BundleName string `protobuf:"bytes,5,opt,name=bundleName,proto3" json:"bundleName,omitempty"` + ExpiredTime int64 `protobuf:"varint,6,opt,name=expiredTime,proto3" json:"expiredTime,omitempty"` + AccountNumber int32 `protobuf:"varint,7,opt,name=accountNumber,proto3" json:"accountNumber,omitempty"` + AccountConsumptionNumber int32 `protobuf:"varint,8,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber,omitempty"` + VideoNumber int32 `protobuf:"varint,9,opt,name=videoNumber,proto3" json:"videoNumber,omitempty"` + VideoConsumptionNumber int32 `protobuf:"varint,10,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber,omitempty"` + ImageNumber int32 `protobuf:"varint,11,opt,name=imageNumber,proto3" json:"imageNumber,omitempty"` + ImageConsumptionNumber int32 `protobuf:"varint,12,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber,omitempty"` + DataAnalysisNumber int32 `protobuf:"varint,13,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber,omitempty"` + DataAnalysisConsumptionNumber int32 `protobuf:"varint,14,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber,omitempty"` + ExpansionPacksNumber int32 `protobuf:"varint,15,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber,omitempty"` + Bought int32 `protobuf:"varint,16,opt,name=bought,proto3" json:"bought,omitempty"` } func (x *BundleBalanceItem) Reset() { @@ -5717,8 +5733,8 @@ type GetBundleBalanceListResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Data []*BundleBalanceItem `protobuf:"bytes,2,rep,name=data,proto3" json:"data"` + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*BundleBalanceItem `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } func (x *GetBundleBalanceListResp) Reset() { @@ -5772,17 +5788,17 @@ type CreateBundleBalanceReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` - OrderUUID string `protobuf:"bytes,2,opt,name=orderUUID,proto3" json:"orderUUID"` - AccountNumber int32 `protobuf:"varint,3,opt,name=accountNumber,proto3" json:"accountNumber"` - AccountConsumptionNumber int32 `protobuf:"varint,4,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber"` - VideoNumber int32 `protobuf:"varint,5,opt,name=videoNumber,proto3" json:"videoNumber"` - VideoConsumptionNumber int32 `protobuf:"varint,6,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber"` - ImageNumber int32 `protobuf:"varint,7,opt,name=imageNumber,proto3" json:"imageNumber"` - ImageConsumptionNumber int32 `protobuf:"varint,8,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber"` - DataAnalysisNumber int32 `protobuf:"varint,9,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber"` - DataAnalysisConsumptionNumber int32 `protobuf:"varint,10,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber"` - ExpansionPacksNumber int32 `protobuf:"varint,11,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber"` + UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + OrderUUID string `protobuf:"bytes,2,opt,name=orderUUID,proto3" json:"orderUUID,omitempty"` + AccountNumber int32 `protobuf:"varint,3,opt,name=accountNumber,proto3" json:"accountNumber,omitempty"` + AccountConsumptionNumber int32 `protobuf:"varint,4,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber,omitempty"` + VideoNumber int32 `protobuf:"varint,5,opt,name=videoNumber,proto3" json:"videoNumber,omitempty"` + VideoConsumptionNumber int32 `protobuf:"varint,6,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber,omitempty"` + ImageNumber int32 `protobuf:"varint,7,opt,name=imageNumber,proto3" json:"imageNumber,omitempty"` + ImageConsumptionNumber int32 `protobuf:"varint,8,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber,omitempty"` + DataAnalysisNumber int32 `protobuf:"varint,9,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber,omitempty"` + DataAnalysisConsumptionNumber int32 `protobuf:"varint,10,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber,omitempty"` + ExpansionPacksNumber int32 `protobuf:"varint,11,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber,omitempty"` } func (x *CreateBundleBalanceReq) Reset() { @@ -5937,18 +5953,18 @@ type AddBundleBalanceReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` - UserId int32 `protobuf:"varint,2,opt,name=userId,proto3" json:"userId"` - OrderUUID string `protobuf:"bytes,3,opt,name=orderUUID,proto3" json:"orderUUID"` - AccountNumber int32 `protobuf:"varint,4,opt,name=accountNumber,proto3" json:"accountNumber"` - AccountConsumptionNumber int32 `protobuf:"varint,5,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber"` - VideoNumber int32 `protobuf:"varint,6,opt,name=videoNumber,proto3" json:"videoNumber"` - VideoConsumptionNumber int32 `protobuf:"varint,7,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber"` - ImageNumber int32 `protobuf:"varint,8,opt,name=imageNumber,proto3" json:"imageNumber"` - ImageConsumptionNumber int32 `protobuf:"varint,9,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber"` - DataAnalysisNumber int32 `protobuf:"varint,10,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber"` - DataAnalysisConsumptionNumber int32 `protobuf:"varint,11,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber"` - ExpansionPacksNumber int32 `protobuf:"varint,12,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + UserId int32 `protobuf:"varint,2,opt,name=userId,proto3" json:"userId,omitempty"` + OrderUUID string `protobuf:"bytes,3,opt,name=orderUUID,proto3" json:"orderUUID,omitempty"` + AccountNumber int32 `protobuf:"varint,4,opt,name=accountNumber,proto3" json:"accountNumber,omitempty"` + AccountConsumptionNumber int32 `protobuf:"varint,5,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber,omitempty"` + VideoNumber int32 `protobuf:"varint,6,opt,name=videoNumber,proto3" json:"videoNumber,omitempty"` + VideoConsumptionNumber int32 `protobuf:"varint,7,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber,omitempty"` + ImageNumber int32 `protobuf:"varint,8,opt,name=imageNumber,proto3" json:"imageNumber,omitempty"` + ImageConsumptionNumber int32 `protobuf:"varint,9,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber,omitempty"` + DataAnalysisNumber int32 `protobuf:"varint,10,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber,omitempty"` + DataAnalysisConsumptionNumber int32 `protobuf:"varint,11,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber,omitempty"` + ExpansionPacksNumber int32 `protobuf:"varint,12,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber,omitempty"` } func (x *AddBundleBalanceReq) Reset() { @@ -6110,16 +6126,16 @@ type GetUsedRecordListReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user"` - Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator"` - Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account"` - Platform int32 `protobuf:"varint,4,opt,name=platform,proto3" json:"platform"` - Type int32 `protobuf:"varint,5,opt,name=type,proto3" json:"type"` - Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title"` - SubmitTimeStart int64 `protobuf:"varint,7,opt,name=submitTimeStart,proto3" json:"submitTimeStart"` - SubmitTimeEnd int64 `protobuf:"varint,8,opt,name=submitTimeEnd,proto3" json:"submitTimeEnd"` - Page int32 `protobuf:"varint,9,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,10,opt,name=pageSize,proto3" json:"pageSize"` + User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` + Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"` + Platform int32 `protobuf:"varint,4,opt,name=platform,proto3" json:"platform,omitempty"` + Type int32 `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"` + Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"` + SubmitTimeStart int64 `protobuf:"varint,7,opt,name=submitTimeStart,proto3" json:"submitTimeStart,omitempty"` + SubmitTimeEnd int64 `protobuf:"varint,8,opt,name=submitTimeEnd,proto3" json:"submitTimeEnd,omitempty"` + Page int32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,10,opt,name=pageSize,proto3" json:"pageSize,omitempty"` } func (x *GetUsedRecordListReq) Reset() { @@ -6229,8 +6245,8 @@ type GetUsedRecordListResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Data []*WorkCastItem `protobuf:"bytes,2,rep,name=data,proto3" json:"data"` + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*WorkCastItem `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` } func (x *GetUsedRecordListResp) Reset() { @@ -6284,21 +6300,21 @@ type WorkCastItem struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid"` // 艺人ID - ArtistName string `protobuf:"bytes,2,opt,name=artistName,proto3" json:"artistName"` // 艺人名称 - ArtistPhone string `protobuf:"bytes,3,opt,name=artistPhone,proto3" json:"artistPhone"` // 艺人手机号 - WorkUuid string `protobuf:"bytes,4,opt,name=workUuid,proto3" json:"workUuid"` // 作品uuid - WorkCategory uint32 `protobuf:"varint,5,opt,name=workCategory,proto3" json:"workCategory"` // 1 图文 2 视频 - BundleUuid string `protobuf:"bytes,6,opt,name=bundleUuid,proto3" json:"bundleUuid"` // 套餐ID uuid - BundleName string `protobuf:"bytes,7,opt,name=bundleName,proto3" json:"bundleName"` // 套餐名称 - PlatformIds string `protobuf:"bytes,8,opt,name=platformIds,proto3" json:"platformIds"` // 发布平台ID集合 (json 格式字符串) - MediaNames string `protobuf:"bytes,9,opt,name=mediaNames,proto3" json:"mediaNames"` // 自媒体账号名称集合 - MediaAccIDs string `protobuf:"bytes,10,opt,name=mediaAccIDs,proto3" json:"mediaAccIDs"` // 自媒体账号ID集合 - WorkTitle string `protobuf:"bytes,11,opt,name=workTitle,proto3" json:"workTitle"` // 作品标题 - SubmitTime string `protobuf:"bytes,12,opt,name=submitTime,proto3" json:"submitTime"` // 提交时间 - OperatorName string `protobuf:"bytes,13,opt,name=operatorName,proto3" json:"operatorName"` // 操作人名称 - OperatorPhone string `protobuf:"bytes,14,opt,name=operatorPhone,proto3" json:"operatorPhone"` // 操作人手机号 - Status uint32 `protobuf:"varint,15,opt,name=status,proto3" json:"status"` // 1 有效 2 失效 + ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid,omitempty"` // 艺人ID + ArtistName string `protobuf:"bytes,2,opt,name=artistName,proto3" json:"artistName,omitempty"` // 艺人名称 + ArtistPhone string `protobuf:"bytes,3,opt,name=artistPhone,proto3" json:"artistPhone,omitempty"` // 艺人手机号 + WorkUuid string `protobuf:"bytes,4,opt,name=workUuid,proto3" json:"workUuid,omitempty"` // 作品uuid + WorkCategory uint32 `protobuf:"varint,5,opt,name=workCategory,proto3" json:"workCategory,omitempty"` // 1 图文 2 视频 + BundleUuid string `protobuf:"bytes,6,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` // 套餐ID uuid + BundleName string `protobuf:"bytes,7,opt,name=bundleName,proto3" json:"bundleName,omitempty"` // 套餐名称 + PlatformIds string `protobuf:"bytes,8,opt,name=platformIds,proto3" json:"platformIds,omitempty"` // 发布平台ID集合 (json 格式字符串) + MediaNames string `protobuf:"bytes,9,opt,name=mediaNames,proto3" json:"mediaNames,omitempty"` // 自媒体账号名称集合 + MediaAccIDs string `protobuf:"bytes,10,opt,name=mediaAccIDs,proto3" json:"mediaAccIDs,omitempty"` // 自媒体账号ID集合 + WorkTitle string `protobuf:"bytes,11,opt,name=workTitle,proto3" json:"workTitle,omitempty"` // 作品标题 + SubmitTime string `protobuf:"bytes,12,opt,name=submitTime,proto3" json:"submitTime,omitempty"` // 提交时间 + OperatorName string `protobuf:"bytes,13,opt,name=operatorName,proto3" json:"operatorName,omitempty"` // 操作人名称 + OperatorPhone string `protobuf:"bytes,14,opt,name=operatorPhone,proto3" json:"operatorPhone,omitempty"` // 操作人手机号 + Status uint32 `protobuf:"varint,15,opt,name=status,proto3" json:"status,omitempty"` // 1 有效 2 失效 } func (x *WorkCastItem) Reset() { @@ -6443,7 +6459,7 @@ type GetImageWorkDetailReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId"` + WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId,omitempty"` } func (x *GetImageWorkDetailReq) Reset() { @@ -6490,7 +6506,7 @@ type GetVedioWorkDetailReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId"` + WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId,omitempty"` } func (x *GetVedioWorkDetailReq) Reset() { @@ -6537,10 +6553,10 @@ type GetImageWorkDetailResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId"` - CoverUrl string `protobuf:"bytes,2,opt,name=coverUrl,proto3" json:"coverUrl"` - VideoUrl string `protobuf:"bytes,3,opt,name=videoUrl,proto3" json:"videoUrl"` - CreatedAt int64 `protobuf:"varint,4,opt,name=createdAt,proto3" json:"createdAt"` + WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId,omitempty"` + CoverUrl string `protobuf:"bytes,2,opt,name=coverUrl,proto3" json:"coverUrl,omitempty"` + VideoUrl string `protobuf:"bytes,3,opt,name=videoUrl,proto3" json:"videoUrl,omitempty"` + CreatedAt int64 `protobuf:"varint,4,opt,name=createdAt,proto3" json:"createdAt,omitempty"` } func (x *GetImageWorkDetailResp) Reset() { @@ -6608,9 +6624,9 @@ type GetVedioeWorkDetailResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId"` - ImageUrls []string `protobuf:"bytes,2,rep,name=imageUrls,proto3" json:"imageUrls"` - CreatedAt int64 `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt"` + WorkId string `protobuf:"bytes,1,opt,name=workId,proto3" json:"workId,omitempty"` + ImageUrls []string `protobuf:"bytes,2,rep,name=imageUrls,proto3" json:"imageUrls,omitempty"` + CreatedAt int64 `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` } func (x *GetVedioeWorkDetailResp) Reset() { @@ -6671,9 +6687,9 @@ type ToBeComfirmedWorksReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid"` - Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page"` - PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize"` + ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid,omitempty"` + Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` } func (x *ToBeComfirmedWorksReq) Reset() { @@ -6734,19 +6750,19 @@ type WorkItem struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` - WorkUuid string `protobuf:"bytes,2,opt,name=workUuid,proto3" json:"workUuid"` - Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content"` - WorkCategory uint32 `protobuf:"varint,5,opt,name=workCategory,proto3" json:"workCategory"` - WorkStatus uint32 `protobuf:"varint,6,opt,name=workStatus,proto3" json:"workStatus"` - PlatformIds string `protobuf:"bytes,7,opt,name=platformIds,proto3" json:"platformIds"` - MediaNames string `protobuf:"bytes,8,opt,name=mediaNames,proto3" json:"mediaNames"` - MediaAccUserIds string `protobuf:"bytes,9,opt,name=mediaAccUserIds,proto3" json:"mediaAccUserIds"` - ConfirmedAt int64 `protobuf:"varint,10,opt,name=confirmedAt,proto3" json:"confirmedAt"` - CreatedAt int64 `protobuf:"varint,11,opt,name=createdAt,proto3" json:"createdAt"` // 提交时间 - ArtistName string `protobuf:"bytes,12,opt,name=artistName,proto3" json:"artistName"` - ArtistUuid string `protobuf:"bytes,13,opt,name=artistUuid,proto3" json:"artistUuid"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + WorkUuid string `protobuf:"bytes,2,opt,name=workUuid,proto3" json:"workUuid,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + WorkCategory uint32 `protobuf:"varint,5,opt,name=workCategory,proto3" json:"workCategory,omitempty"` + WorkStatus uint32 `protobuf:"varint,6,opt,name=workStatus,proto3" json:"workStatus,omitempty"` + PlatformIds string `protobuf:"bytes,7,opt,name=platformIds,proto3" json:"platformIds,omitempty"` + MediaNames string `protobuf:"bytes,8,opt,name=mediaNames,proto3" json:"mediaNames,omitempty"` + MediaAccUserIds string `protobuf:"bytes,9,opt,name=mediaAccUserIds,proto3" json:"mediaAccUserIds,omitempty"` + ConfirmedAt int64 `protobuf:"varint,10,opt,name=confirmedAt,proto3" json:"confirmedAt,omitempty"` + CreatedAt int64 `protobuf:"varint,11,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // 提交时间 + ArtistName string `protobuf:"bytes,12,opt,name=artistName,proto3" json:"artistName,omitempty"` + ArtistUuid string `protobuf:"bytes,13,opt,name=artistUuid,proto3" json:"artistUuid,omitempty"` } func (x *WorkItem) Reset() { @@ -6877,9 +6893,9 @@ type ToBeComfirmedWorksResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` - Unconfirmed int64 `protobuf:"varint,2,opt,name=unconfirmed,proto3" json:"unconfirmed"` - Data []*WorkItem `protobuf:"bytes,3,rep,name=data,proto3" json:"data"` + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Unconfirmed int64 `protobuf:"varint,2,opt,name=unconfirmed,proto3" json:"unconfirmed,omitempty"` + Data []*WorkItem `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` } func (x *ToBeComfirmedWorksResp) Reset() { @@ -6940,7 +6956,7 @@ type GetBundleBalanceByUserIdReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` + UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` } func (x *GetBundleBalanceByUserIdReq) Reset() { @@ -6987,27 +7003,27 @@ type GetBundleBalanceByUserIdResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderUUID string `protobuf:"bytes,1,opt,name=orderUUID,proto3" json:"orderUUID"` - BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid"` // 套餐ID uuid - BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName"` // 套餐名称 - BundleStatus string `protobuf:"bytes,4,opt,name=bundleStatus,proto3" json:"bundleStatus"` // 套餐名称 - PayTime int64 `protobuf:"varint,5,opt,name=payTime,proto3" json:"payTime"` - ExpiredTime int64 `protobuf:"varint,6,opt,name=expiredTime,proto3" json:"expiredTime"` - PaymentAmount string `protobuf:"bytes,7,opt,name=paymentAmount,proto3" json:"paymentAmount"` - PaymentType int32 `protobuf:"varint,8,opt,name=paymentType,proto3" json:"paymentType"` - AccountNumber int32 `protobuf:"varint,9,opt,name=accountNumber,proto3" json:"accountNumber"` - AccountAdditional int32 `protobuf:"varint,10,opt,name=accountAdditional,proto3" json:"accountAdditional"` - AccountConsumptionNumber int32 `protobuf:"varint,11,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber"` - VideoNumber int32 `protobuf:"varint,12,opt,name=videoNumber,proto3" json:"videoNumber"` - VideoAdditional int32 `protobuf:"varint,13,opt,name=videoAdditional,proto3" json:"videoAdditional"` - VideoConsumptionNumber int32 `protobuf:"varint,14,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber"` - ImageNumber int32 `protobuf:"varint,15,opt,name=imageNumber,proto3" json:"imageNumber"` - ImageAdditional int32 `protobuf:"varint,16,opt,name=imageAdditional,proto3" json:"imageAdditional"` - ImageConsumptionNumber int32 `protobuf:"varint,17,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber"` - DataAnalysisNumber int32 `protobuf:"varint,18,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber"` - DataAnalysisAdditional int32 `protobuf:"varint,19,opt,name=dataAnalysisAdditional,proto3" json:"dataAnalysisAdditional"` - DataAnalysisConsumptionNumber int32 `protobuf:"varint,20,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber"` - ExpansionPacksNumber int32 `protobuf:"varint,21,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber"` + OrderUUID string `protobuf:"bytes,1,opt,name=orderUUID,proto3" json:"orderUUID,omitempty"` + BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` // 套餐ID uuid + BundleName string `protobuf:"bytes,3,opt,name=bundleName,proto3" json:"bundleName,omitempty"` // 套餐名称 + BundleStatus string `protobuf:"bytes,4,opt,name=bundleStatus,proto3" json:"bundleStatus,omitempty"` // 套餐名称 + PayTime int64 `protobuf:"varint,5,opt,name=payTime,proto3" json:"payTime,omitempty"` + ExpiredTime int64 `protobuf:"varint,6,opt,name=expiredTime,proto3" json:"expiredTime,omitempty"` + PaymentAmount string `protobuf:"bytes,7,opt,name=paymentAmount,proto3" json:"paymentAmount,omitempty"` + PaymentType int32 `protobuf:"varint,8,opt,name=paymentType,proto3" json:"paymentType,omitempty"` + AccountNumber int32 `protobuf:"varint,9,opt,name=accountNumber,proto3" json:"accountNumber,omitempty"` + AccountAdditional int32 `protobuf:"varint,10,opt,name=accountAdditional,proto3" json:"accountAdditional,omitempty"` + AccountConsumptionNumber int32 `protobuf:"varint,11,opt,name=accountConsumptionNumber,proto3" json:"accountConsumptionNumber,omitempty"` + VideoNumber int32 `protobuf:"varint,12,opt,name=videoNumber,proto3" json:"videoNumber,omitempty"` + VideoAdditional int32 `protobuf:"varint,13,opt,name=videoAdditional,proto3" json:"videoAdditional,omitempty"` + VideoConsumptionNumber int32 `protobuf:"varint,14,opt,name=videoConsumptionNumber,proto3" json:"videoConsumptionNumber,omitempty"` + ImageNumber int32 `protobuf:"varint,15,opt,name=imageNumber,proto3" json:"imageNumber,omitempty"` + ImageAdditional int32 `protobuf:"varint,16,opt,name=imageAdditional,proto3" json:"imageAdditional,omitempty"` + ImageConsumptionNumber int32 `protobuf:"varint,17,opt,name=imageConsumptionNumber,proto3" json:"imageConsumptionNumber,omitempty"` + DataAnalysisNumber int32 `protobuf:"varint,18,opt,name=dataAnalysisNumber,proto3" json:"dataAnalysisNumber,omitempty"` + DataAnalysisAdditional int32 `protobuf:"varint,19,opt,name=dataAnalysisAdditional,proto3" json:"dataAnalysisAdditional,omitempty"` + DataAnalysisConsumptionNumber int32 `protobuf:"varint,20,opt,name=dataAnalysisConsumptionNumber,proto3" json:"dataAnalysisConsumptionNumber,omitempty"` + ExpansionPacksNumber int32 `protobuf:"varint,21,opt,name=expansionPacksNumber,proto3" json:"expansionPacksNumber,omitempty"` } func (x *GetBundleBalanceByUserIdResp) Reset() { @@ -7194,7 +7210,7 @@ type OnlyAddValueListByOrderNoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo"` + OrderNo string `protobuf:"bytes,1,opt,name=orderNo,proto3" json:"orderNo,omitempty"` } func (x *OnlyAddValueListByOrderNoRequest) Reset() { @@ -7241,7 +7257,7 @@ type OnlyAddValueListByOrderNoResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AddBundleInfos []*AddBundleInfo `protobuf:"bytes,1,rep,name=AddBundleInfos,proto3" json:"AddBundleInfos"` + AddBundleInfos []*AddBundleInfo `protobuf:"bytes,1,rep,name=AddBundleInfos,proto3" json:"AddBundleInfos,omitempty"` } func (x *OnlyAddValueListByOrderNoResp) Reset() { @@ -7288,11 +7304,11 @@ type AddBundleInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CustomerID string `protobuf:"bytes,1,opt,name=customerID,proto3" json:"customerID"` - Amount float32 `protobuf:"fixed32,2,opt,name=amount,proto3" json:"amount"` - CheckOutSessionId string `protobuf:"bytes,3,opt,name=checkOutSessionId,proto3" json:"checkOutSessionId"` - OrderNo string `protobuf:"bytes,4,opt,name=orderNo,proto3" json:"orderNo"` - PaymentStatus int32 `protobuf:"varint,5,opt,name=paymentStatus,proto3" json:"paymentStatus"` + CustomerID string `protobuf:"bytes,1,opt,name=customerID,proto3" json:"customerID,omitempty"` + Amount float32 `protobuf:"fixed32,2,opt,name=amount,proto3" json:"amount,omitempty"` + CheckOutSessionId string `protobuf:"bytes,3,opt,name=checkOutSessionId,proto3" json:"checkOutSessionId,omitempty"` + OrderNo string `protobuf:"bytes,4,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + PaymentStatus int32 `protobuf:"varint,5,opt,name=paymentStatus,proto3" json:"paymentStatus,omitempty"` } func (x *AddBundleInfo) Reset() { @@ -7367,9 +7383,9 @@ type UpdateStatusAndPayTimeBySerialNumber struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SerialNumber string `protobuf:"bytes,1,opt,name=serialNumber,proto3" json:"serialNumber"` - PayTime string `protobuf:"bytes,2,opt,name=payTime,proto3" json:"payTime"` - PaymentStatus int32 `protobuf:"varint,3,opt,name=paymentStatus,proto3" json:"paymentStatus"` + SerialNumber string `protobuf:"bytes,1,opt,name=serialNumber,proto3" json:"serialNumber,omitempty"` + PayTime string `protobuf:"bytes,2,opt,name=payTime,proto3" json:"payTime,omitempty"` + PaymentStatus int32 `protobuf:"varint,3,opt,name=paymentStatus,proto3" json:"paymentStatus,omitempty"` } func (x *UpdateStatusAndPayTimeBySerialNumber) Reset() { @@ -7430,7 +7446,7 @@ type ConfirmWorkReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid,omitempty"` } func (x *ConfirmWorkReq) Reset() { @@ -7515,7 +7531,7 @@ type AutoCreateUserAndOrderRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num"` // 处理数量 + Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num,omitempty"` // 处理数量 } func (x *AutoCreateUserAndOrderRequest) Reset() { @@ -7562,7 +7578,7 @@ type UnfinishedInfos struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UnfinishedInfos []*UnfinishedInfo `protobuf:"bytes,1,rep,name=unfinishedInfos,proto3" json:"unfinishedInfos"` + UnfinishedInfos []*UnfinishedInfo `protobuf:"bytes,1,rep,name=unfinishedInfos,proto3" json:"unfinishedInfos,omitempty"` } func (x *UnfinishedInfos) Reset() { @@ -7609,25 +7625,25 @@ type UnfinishedInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` - UserNum string `protobuf:"bytes,2,opt,name=userNum,proto3" json:"userNum"` - UserName string `protobuf:"bytes,3,opt,name=userName,proto3" json:"userName"` - UserTelArea string `protobuf:"bytes,4,opt,name=userTelArea,proto3" json:"userTelArea"` - UserTel string `protobuf:"bytes,5,opt,name=userTel,proto3" json:"userTel"` - UserSex string `protobuf:"bytes,6,opt,name=userSex,proto3" json:"userSex"` - Nationality string `protobuf:"bytes,7,opt,name=nationality,proto3" json:"nationality"` - PlaceOfResidence string `protobuf:"bytes,8,opt,name=placeOfResidence,proto3" json:"placeOfResidence"` - DocumentType int32 `protobuf:"varint,9,opt,name=documentType,proto3" json:"documentType"` - UserIdCardFrontUrl string `protobuf:"bytes,10,opt,name=userIdCardFrontUrl,proto3" json:"userIdCardFrontUrl"` - UserIdCardReverseUrl string `protobuf:"bytes,11,opt,name=userIdCardReverseUrl,proto3" json:"userIdCardReverseUrl"` - UserIdCardValidity string `protobuf:"bytes,12,opt,name=userIdCardValidity,proto3" json:"userIdCardValidity"` - OrderNo string `protobuf:"bytes,13,opt,name=orderNo,proto3" json:"orderNo"` - OrderPayAmount string `protobuf:"bytes,14,opt,name=orderPayAmount,proto3" json:"orderPayAmount"` - OrderSettlementAmount string `protobuf:"bytes,15,opt,name=orderSettlementAmount,proto3" json:"orderSettlementAmount"` - OrderFeeAmount string `protobuf:"bytes,16,opt,name=orderFeeAmount,proto3" json:"orderFeeAmount"` - OrderPayCurrency string `protobuf:"bytes,17,opt,name=orderPayCurrency,proto3" json:"orderPayCurrency"` - OrderAccountCurrency string `protobuf:"bytes,18,opt,name=orderAccountCurrency,proto3" json:"orderAccountCurrency"` - PayTime string `protobuf:"bytes,19,opt,name=payTime,proto3" json:"payTime"` + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + UserNum string `protobuf:"bytes,2,opt,name=userNum,proto3" json:"userNum,omitempty"` + UserName string `protobuf:"bytes,3,opt,name=userName,proto3" json:"userName,omitempty"` + UserTelArea string `protobuf:"bytes,4,opt,name=userTelArea,proto3" json:"userTelArea,omitempty"` + UserTel string `protobuf:"bytes,5,opt,name=userTel,proto3" json:"userTel,omitempty"` + UserSex string `protobuf:"bytes,6,opt,name=userSex,proto3" json:"userSex,omitempty"` + Nationality string `protobuf:"bytes,7,opt,name=nationality,proto3" json:"nationality,omitempty"` + PlaceOfResidence string `protobuf:"bytes,8,opt,name=placeOfResidence,proto3" json:"placeOfResidence,omitempty"` + DocumentType int32 `protobuf:"varint,9,opt,name=documentType,proto3" json:"documentType,omitempty"` + UserIdCardFrontUrl string `protobuf:"bytes,10,opt,name=userIdCardFrontUrl,proto3" json:"userIdCardFrontUrl,omitempty"` + UserIdCardReverseUrl string `protobuf:"bytes,11,opt,name=userIdCardReverseUrl,proto3" json:"userIdCardReverseUrl,omitempty"` + UserIdCardValidity string `protobuf:"bytes,12,opt,name=userIdCardValidity,proto3" json:"userIdCardValidity,omitempty"` + OrderNo string `protobuf:"bytes,13,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + OrderPayAmount string `protobuf:"bytes,14,opt,name=orderPayAmount,proto3" json:"orderPayAmount,omitempty"` + OrderSettlementAmount string `protobuf:"bytes,15,opt,name=orderSettlementAmount,proto3" json:"orderSettlementAmount,omitempty"` + OrderFeeAmount string `protobuf:"bytes,16,opt,name=orderFeeAmount,proto3" json:"orderFeeAmount,omitempty"` + OrderPayCurrency string `protobuf:"bytes,17,opt,name=orderPayCurrency,proto3" json:"orderPayCurrency,omitempty"` + OrderAccountCurrency string `protobuf:"bytes,18,opt,name=orderAccountCurrency,proto3" json:"orderAccountCurrency,omitempty"` + PayTime string `protobuf:"bytes,19,opt,name=payTime,proto3" json:"payTime,omitempty"` } func (x *UnfinishedInfo) Reset() { @@ -7800,7 +7816,7 @@ type SoftDeleteUnfinishedInfoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` } func (x *SoftDeleteUnfinishedInfoRequest) Reset() { @@ -7842,6 +7858,1417 @@ func (x *SoftDeleteUnfinishedInfoRequest) GetID() uint32 { return 0 } +// 查询待指派任务记录 +type TaskQueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` // 艺人姓名、编号、手机号搜索关键词 + Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` // 页码 + PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` // 每页数量 + SortBy string `protobuf:"bytes,4,opt,name=sortBy,proto3" json:"sortBy,omitempty"` // 排序字段 + SortType string `protobuf:"bytes,5,opt,name=sortType,proto3" json:"sortType,omitempty"` // 排序类型 asc/desc +} + +func (x *TaskQueryRequest) Reset() { + *x = TaskQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskQueryRequest) ProtoMessage() {} + +func (x *TaskQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[88] + 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 TaskQueryRequest.ProtoReflect.Descriptor instead. +func (*TaskQueryRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{88} +} + +func (x *TaskQueryRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *TaskQueryRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *TaskQueryRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *TaskQueryRequest) GetSortBy() string { + if x != nil { + return x.SortBy + } + return "" +} + +func (x *TaskQueryRequest) GetSortType() string { + if x != nil { + return x.SortType + } + return "" +} + +type TaskQueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tasks []*TaskManagementInfo `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"` + Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *TaskQueryResponse) Reset() { + *x = TaskQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskQueryResponse) ProtoMessage() {} + +func (x *TaskQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[89] + 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 TaskQueryResponse.ProtoReflect.Descriptor instead. +func (*TaskQueryResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{89} +} + +func (x *TaskQueryResponse) GetTasks() []*TaskManagementInfo { + if x != nil { + return x.Tasks + } + return nil +} + +func (x *TaskQueryResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *TaskQueryResponse) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *TaskQueryResponse) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type TaskManagementInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubNum string `protobuf:"bytes,1,opt,name=subNum,proto3" json:"subNum,omitempty"` // 艺人编号 + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` // 手机号 + ArtistName string `protobuf:"bytes,3,opt,name=artistName,proto3" json:"artistName,omitempty"` // 艺人姓名 + PendingVideoCount int32 `protobuf:"varint,4,opt,name=pendingVideoCount,proto3" json:"pendingVideoCount,omitempty"` // 待发视频数量 + PendingPostCount int32 `protobuf:"varint,5,opt,name=pendingPostCount,proto3" json:"pendingPostCount,omitempty"` // 待发图文数量 + PendingDataCount int32 `protobuf:"varint,6,opt,name=pendingDataCount,proto3" json:"pendingDataCount,omitempty"` // 待发数据数量 + ProgressTaskCount int32 `protobuf:"varint,7,opt,name=progressTaskCount,proto3" json:"progressTaskCount,omitempty"` // 进行中任务数量 + CompleteTaskCount int32 `protobuf:"varint,8,opt,name=completeTaskCount,proto3" json:"completeTaskCount,omitempty"` // 已完成任务数量 + LastTaskAssignee string `protobuf:"bytes,9,opt,name=lastTaskAssignee,proto3" json:"lastTaskAssignee,omitempty"` // 最后一次任务指派人 + TaskAssigneeNum string `protobuf:"bytes,10,opt,name=taskAssigneeNum,proto3" json:"taskAssigneeNum,omitempty"` // 任务指派人账号 +} + +func (x *TaskManagementInfo) Reset() { + *x = TaskManagementInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskManagementInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskManagementInfo) ProtoMessage() {} + +func (x *TaskManagementInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[90] + 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 TaskManagementInfo.ProtoReflect.Descriptor instead. +func (*TaskManagementInfo) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{90} +} + +func (x *TaskManagementInfo) GetSubNum() string { + if x != nil { + return x.SubNum + } + return "" +} + +func (x *TaskManagementInfo) GetTelNum() string { + if x != nil { + return x.TelNum + } + return "" +} + +func (x *TaskManagementInfo) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *TaskManagementInfo) GetPendingVideoCount() int32 { + if x != nil { + return x.PendingVideoCount + } + return 0 +} + +func (x *TaskManagementInfo) GetPendingPostCount() int32 { + if x != nil { + return x.PendingPostCount + } + return 0 +} + +func (x *TaskManagementInfo) GetPendingDataCount() int32 { + if x != nil { + return x.PendingDataCount + } + return 0 +} + +func (x *TaskManagementInfo) GetProgressTaskCount() int32 { + if x != nil { + return x.ProgressTaskCount + } + return 0 +} + +func (x *TaskManagementInfo) GetCompleteTaskCount() int32 { + if x != nil { + return x.CompleteTaskCount + } + return 0 +} + +func (x *TaskManagementInfo) GetLastTaskAssignee() string { + if x != nil { + return x.LastTaskAssignee + } + return "" +} + +func (x *TaskManagementInfo) GetTaskAssigneeNum() string { + if x != nil { + return x.TaskAssigneeNum + } + return "" +} + +// 指派任务 +type TaskAssignRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubNum string `protobuf:"bytes,1,opt,name=subNum,proto3" json:"subNum,omitempty"` // 艺人编号 + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` // 艺人手机号 + ArtistName string `protobuf:"bytes,3,opt,name=artistName,proto3" json:"artistName,omitempty"` // 艺人姓名 + TaskAssignee string `protobuf:"bytes,4,opt,name=taskAssignee,proto3" json:"taskAssignee,omitempty"` // 任务指派人 + TaskAssigneeNum string `protobuf:"bytes,5,opt,name=taskAssigneeNum,proto3" json:"taskAssigneeNum,omitempty"` // 任务指派人账号 + Operator string `protobuf:"bytes,6,opt,name=operator,proto3" json:"operator,omitempty"` // 操作人 + OperatorNum string `protobuf:"bytes,7,opt,name=operatorNum,proto3" json:"operatorNum,omitempty"` // 操作人账号 + AssignVideoCount int32 `protobuf:"varint,8,opt,name=assignVideoCount,proto3" json:"assignVideoCount,omitempty"` // 指派视频数 + AssignPostCount int32 `protobuf:"varint,9,opt,name=assignPostCount,proto3" json:"assignPostCount,omitempty"` // 指派图文数 + AssignDataCount int32 `protobuf:"varint,10,opt,name=assignDataCount,proto3" json:"assignDataCount,omitempty"` // 指派数据数 +} + +func (x *TaskAssignRequest) Reset() { + *x = TaskAssignRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskAssignRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskAssignRequest) ProtoMessage() {} + +func (x *TaskAssignRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[91] + 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 TaskAssignRequest.ProtoReflect.Descriptor instead. +func (*TaskAssignRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{91} +} + +func (x *TaskAssignRequest) GetSubNum() string { + if x != nil { + return x.SubNum + } + return "" +} + +func (x *TaskAssignRequest) GetTelNum() string { + if x != nil { + return x.TelNum + } + return "" +} + +func (x *TaskAssignRequest) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *TaskAssignRequest) GetTaskAssignee() string { + if x != nil { + return x.TaskAssignee + } + return "" +} + +func (x *TaskAssignRequest) GetTaskAssigneeNum() string { + if x != nil { + return x.TaskAssigneeNum + } + return "" +} + +func (x *TaskAssignRequest) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *TaskAssignRequest) GetOperatorNum() string { + if x != nil { + return x.OperatorNum + } + return "" +} + +func (x *TaskAssignRequest) GetAssignVideoCount() int32 { + if x != nil { + return x.AssignVideoCount + } + return 0 +} + +func (x *TaskAssignRequest) GetAssignPostCount() int32 { + if x != nil { + return x.AssignPostCount + } + return 0 +} + +func (x *TaskAssignRequest) GetAssignDataCount() int32 { + if x != nil { + return x.AssignDataCount + } + return 0 +} + +// 修改待发数量 +type UpdatePendingCountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubNum string `protobuf:"bytes,1,opt,name=subNum,proto3" json:"subNum,omitempty"` // 艺人编号 + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` // 艺人手机号 + ArtistName string `protobuf:"bytes,3,opt,name=artistName,proto3" json:"artistName,omitempty"` // 艺人姓名 + PendingVideoCount int32 `protobuf:"varint,4,opt,name=pendingVideoCount,proto3" json:"pendingVideoCount,omitempty"` // 待发视频数量 + PendingPostCount int32 `protobuf:"varint,5,opt,name=pendingPostCount,proto3" json:"pendingPostCount,omitempty"` // 待发图文数量 + PendingDataCount int32 `protobuf:"varint,6,opt,name=pendingDataCount,proto3" json:"pendingDataCount,omitempty"` // 待发数据数量 + Operator string `protobuf:"bytes,7,opt,name=operator,proto3" json:"operator,omitempty"` // 操作人 + OperatorNum string `protobuf:"bytes,8,opt,name=operatorNum,proto3" json:"operatorNum,omitempty"` // 操作人账号 +} + +func (x *UpdatePendingCountRequest) Reset() { + *x = UpdatePendingCountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdatePendingCountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePendingCountRequest) ProtoMessage() {} + +func (x *UpdatePendingCountRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[92] + 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 UpdatePendingCountRequest.ProtoReflect.Descriptor instead. +func (*UpdatePendingCountRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{92} +} + +func (x *UpdatePendingCountRequest) GetSubNum() string { + if x != nil { + return x.SubNum + } + return "" +} + +func (x *UpdatePendingCountRequest) GetTelNum() string { + if x != nil { + return x.TelNum + } + return "" +} + +func (x *UpdatePendingCountRequest) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *UpdatePendingCountRequest) GetPendingVideoCount() int32 { + if x != nil { + return x.PendingVideoCount + } + return 0 +} + +func (x *UpdatePendingCountRequest) GetPendingPostCount() int32 { + if x != nil { + return x.PendingPostCount + } + return 0 +} + +func (x *UpdatePendingCountRequest) GetPendingDataCount() int32 { + if x != nil { + return x.PendingDataCount + } + return 0 +} + +func (x *UpdatePendingCountRequest) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *UpdatePendingCountRequest) GetOperatorNum() string { + if x != nil { + return x.OperatorNum + } + return "" +} + +// 查询最近被指派记录 +type RecentAssignRecordsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // 查询数量限制 +} + +func (x *RecentAssignRecordsRequest) Reset() { + *x = RecentAssignRecordsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecentAssignRecordsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecentAssignRecordsRequest) ProtoMessage() {} + +func (x *RecentAssignRecordsRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[93] + 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 RecentAssignRecordsRequest.ProtoReflect.Descriptor instead. +func (*RecentAssignRecordsRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{93} +} + +func (x *RecentAssignRecordsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +type RecentAssignRecordsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperatorList []string `protobuf:"bytes,1,rep,name=operatorList,proto3" json:"operatorList,omitempty"` +} + +func (x *RecentAssignRecordsResponse) Reset() { + *x = RecentAssignRecordsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RecentAssignRecordsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecentAssignRecordsResponse) ProtoMessage() {} + +func (x *RecentAssignRecordsResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[94] + 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 RecentAssignRecordsResponse.ProtoReflect.Descriptor instead. +func (*RecentAssignRecordsResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{94} +} + +func (x *RecentAssignRecordsResponse) GetOperatorList() []string { + if x != nil { + return x.OperatorList + } + return nil +} + +// 员工任务查询 +type EmployeeTaskQueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TaskAssigneeNum string `protobuf:"bytes,1,opt,name=taskAssigneeNum,proto3" json:"taskAssigneeNum,omitempty"` // 被指派人账号 + Keyword string `protobuf:"bytes,2,opt,name=keyword,proto3" json:"keyword,omitempty"` // 艺人姓名、编号、手机号搜索关键词 + Operator string `protobuf:"bytes,3,opt,name=operator,proto3" json:"operator,omitempty"` // 操作人 + SortBy string `protobuf:"bytes,4,opt,name=sortBy,proto3" json:"sortBy,omitempty"` // 排序字段 + StartTime string `protobuf:"bytes,5,opt,name=startTime,proto3" json:"startTime,omitempty"` // 指派开始时间 + EndTime string `protobuf:"bytes,6,opt,name=endTime,proto3" json:"endTime,omitempty"` // 指派结束时间 + StartCompleteTime string `protobuf:"bytes,7,opt,name=startCompleteTime,proto3" json:"startCompleteTime,omitempty"` // 开始完成时间 + EndCompleteTime string `protobuf:"bytes,8,opt,name=endCompleteTime,proto3" json:"endCompleteTime,omitempty"` // 结束完成时间 + Status int32 `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"` // 反馈完成状态 + Page int32 `protobuf:"varint,10,opt,name=page,proto3" json:"page,omitempty"` // 页码 + PageSize int32 `protobuf:"varint,11,opt,name=pageSize,proto3" json:"pageSize,omitempty"` // 每页数量 +} + +func (x *EmployeeTaskQueryRequest) Reset() { + *x = EmployeeTaskQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EmployeeTaskQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmployeeTaskQueryRequest) ProtoMessage() {} + +func (x *EmployeeTaskQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[95] + 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 EmployeeTaskQueryRequest.ProtoReflect.Descriptor instead. +func (*EmployeeTaskQueryRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{95} +} + +func (x *EmployeeTaskQueryRequest) GetTaskAssigneeNum() string { + if x != nil { + return x.TaskAssigneeNum + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetSortBy() string { + if x != nil { + return x.SortBy + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetStartCompleteTime() string { + if x != nil { + return x.StartCompleteTime + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetEndCompleteTime() string { + if x != nil { + return x.EndCompleteTime + } + return "" +} + +func (x *EmployeeTaskQueryRequest) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *EmployeeTaskQueryRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *EmployeeTaskQueryRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type EmployeeTaskQueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Records []*TaskAssignRecordInfo `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` + Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *EmployeeTaskQueryResponse) Reset() { + *x = EmployeeTaskQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EmployeeTaskQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmployeeTaskQueryResponse) ProtoMessage() {} + +func (x *EmployeeTaskQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[96] + 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 EmployeeTaskQueryResponse.ProtoReflect.Descriptor instead. +func (*EmployeeTaskQueryResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{96} +} + +func (x *EmployeeTaskQueryResponse) GetRecords() []*TaskAssignRecordInfo { + if x != nil { + return x.Records + } + return nil +} + +func (x *EmployeeTaskQueryResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *EmployeeTaskQueryResponse) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *EmployeeTaskQueryResponse) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +// 任务指派记录信息 +type TaskAssignRecordInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AssignRecordsUUID string `protobuf:"bytes,1,opt,name=assignRecordsUUID,proto3" json:"assignRecordsUUID,omitempty"` // 指派记录UUID + SubNum string `protobuf:"bytes,2,opt,name=subNum,proto3" json:"subNum,omitempty"` // 艺人编号 + TelNum string `protobuf:"bytes,3,opt,name=telNum,proto3" json:"telNum,omitempty"` // 艺人手机号 + ArtistName string `protobuf:"bytes,4,opt,name=artistName,proto3" json:"artistName,omitempty"` // 艺人姓名 + Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` // 反馈完成状态 + ActualStatus int32 `protobuf:"varint,6,opt,name=actualStatus,proto3" json:"actualStatus,omitempty"` // 实际完成状态 + CompleteTime string `protobuf:"bytes,7,opt,name=completeTime,proto3" json:"completeTime,omitempty"` // 反馈完成时间 + OperatorType int32 `protobuf:"varint,8,opt,name=operatorType,proto3" json:"operatorType,omitempty"` // 操作类型 + Operator string `protobuf:"bytes,9,opt,name=operator,proto3" json:"operator,omitempty"` // 操作人 + OperatorNum string `protobuf:"bytes,10,opt,name=operatorNum,proto3" json:"operatorNum,omitempty"` // 操作人账号 + OperatorTime string `protobuf:"bytes,11,opt,name=operatorTime,proto3" json:"operatorTime,omitempty"` // 操作时间 + TaskAssignee string `protobuf:"bytes,12,opt,name=taskAssignee,proto3" json:"taskAssignee,omitempty"` // 任务指派人 + TaskAssigneeNum string `protobuf:"bytes,13,opt,name=taskAssigneeNum,proto3" json:"taskAssigneeNum,omitempty"` // 任务指派人账号 + PendingVideoCount int32 `protobuf:"varint,14,opt,name=pendingVideoCount,proto3" json:"pendingVideoCount,omitempty"` // 待发视频数量 + PendingPostCount int32 `protobuf:"varint,15,opt,name=pendingPostCount,proto3" json:"pendingPostCount,omitempty"` // 待发图文数量 + PendingDataCount int32 `protobuf:"varint,16,opt,name=pendingDataCount,proto3" json:"pendingDataCount,omitempty"` // 待发数据数量 + UpdatedAt string `protobuf:"bytes,24,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` // 更新时间 +} + +func (x *TaskAssignRecordInfo) Reset() { + *x = TaskAssignRecordInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskAssignRecordInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskAssignRecordInfo) ProtoMessage() {} + +func (x *TaskAssignRecordInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[97] + 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 TaskAssignRecordInfo.ProtoReflect.Descriptor instead. +func (*TaskAssignRecordInfo) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{97} +} + +func (x *TaskAssignRecordInfo) GetAssignRecordsUUID() string { + if x != nil { + return x.AssignRecordsUUID + } + return "" +} + +func (x *TaskAssignRecordInfo) GetSubNum() string { + if x != nil { + return x.SubNum + } + return "" +} + +func (x *TaskAssignRecordInfo) GetTelNum() string { + if x != nil { + return x.TelNum + } + return "" +} + +func (x *TaskAssignRecordInfo) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *TaskAssignRecordInfo) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *TaskAssignRecordInfo) GetActualStatus() int32 { + if x != nil { + return x.ActualStatus + } + return 0 +} + +func (x *TaskAssignRecordInfo) GetCompleteTime() string { + if x != nil { + return x.CompleteTime + } + return "" +} + +func (x *TaskAssignRecordInfo) GetOperatorType() int32 { + if x != nil { + return x.OperatorType + } + return 0 +} + +func (x *TaskAssignRecordInfo) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *TaskAssignRecordInfo) GetOperatorNum() string { + if x != nil { + return x.OperatorNum + } + return "" +} + +func (x *TaskAssignRecordInfo) GetOperatorTime() string { + if x != nil { + return x.OperatorTime + } + return "" +} + +func (x *TaskAssignRecordInfo) GetTaskAssignee() string { + if x != nil { + return x.TaskAssignee + } + return "" +} + +func (x *TaskAssignRecordInfo) GetTaskAssigneeNum() string { + if x != nil { + return x.TaskAssigneeNum + } + return "" +} + +func (x *TaskAssignRecordInfo) GetPendingVideoCount() int32 { + if x != nil { + return x.PendingVideoCount + } + return 0 +} + +func (x *TaskAssignRecordInfo) GetPendingPostCount() int32 { + if x != nil { + return x.PendingPostCount + } + return 0 +} + +func (x *TaskAssignRecordInfo) GetPendingDataCount() int32 { + if x != nil { + return x.PendingDataCount + } + return 0 +} + +func (x *TaskAssignRecordInfo) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +// 手动完成任务 +type CompleteTaskManuallyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AssignRecordsUUID string `protobuf:"bytes,1,opt,name=assignRecordsUUID,proto3" json:"assignRecordsUUID,omitempty"` // 指派记录UUID + TaskAssigneeNum string `protobuf:"bytes,2,opt,name=taskAssigneeNum,proto3" json:"taskAssigneeNum,omitempty"` // 被指派完成该任务人的账号 +} + +func (x *CompleteTaskManuallyRequest) Reset() { + *x = CompleteTaskManuallyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompleteTaskManuallyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompleteTaskManuallyRequest) ProtoMessage() {} + +func (x *CompleteTaskManuallyRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[98] + 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 CompleteTaskManuallyRequest.ProtoReflect.Descriptor instead. +func (*CompleteTaskManuallyRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{98} +} + +func (x *CompleteTaskManuallyRequest) GetAssignRecordsUUID() string { + if x != nil { + return x.AssignRecordsUUID + } + return "" +} + +func (x *CompleteTaskManuallyRequest) GetTaskAssigneeNum() string { + if x != nil { + return x.TaskAssigneeNum + } + return "" +} + +// 更新任务进度 +type UpdateTaskProgressRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AssignRecordsUUID string `protobuf:"bytes,1,opt,name=assignRecordsUUID,proto3" json:"assignRecordsUUID,omitempty"` // 指派记录UUID(可选) + EmployeeName string `protobuf:"bytes,2,opt,name=employeeName,proto3" json:"employeeName,omitempty"` // 员工姓名(必要) + EmployeeNum string `protobuf:"bytes,3,opt,name=employeeNum,proto3" json:"employeeNum,omitempty"` // 员工工号(必要) + TaskType string `protobuf:"bytes,4,opt,name=taskType,proto3" json:"taskType,omitempty"` // 任务类型: video/post/data + CompleteCount int32 `protobuf:"varint,5,opt,name=completeCount,proto3" json:"completeCount,omitempty"` // 完成数量 +} + +func (x *UpdateTaskProgressRequest) Reset() { + *x = UpdateTaskProgressRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateTaskProgressRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateTaskProgressRequest) ProtoMessage() {} + +func (x *UpdateTaskProgressRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[99] + 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 UpdateTaskProgressRequest.ProtoReflect.Descriptor instead. +func (*UpdateTaskProgressRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{99} +} + +func (x *UpdateTaskProgressRequest) GetAssignRecordsUUID() string { + if x != nil { + return x.AssignRecordsUUID + } + return "" +} + +func (x *UpdateTaskProgressRequest) GetEmployeeName() string { + if x != nil { + return x.EmployeeName + } + return "" +} + +func (x *UpdateTaskProgressRequest) GetEmployeeNum() string { + if x != nil { + return x.EmployeeNum + } + return "" +} + +func (x *UpdateTaskProgressRequest) GetTaskType() string { + if x != nil { + return x.TaskType + } + return "" +} + +func (x *UpdateTaskProgressRequest) GetCompleteCount() int32 { + if x != nil { + return x.CompleteCount + } + return 0 +} + +// 多条件查询操作记录表 +type TaskAssignRecordsQueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword,omitempty"` // 艺人姓名、编号、手机号搜索关键词 + TaskAssignee string `protobuf:"bytes,2,opt,name=taskAssignee,proto3" json:"taskAssignee,omitempty"` // 指派人姓名 + Operator string `protobuf:"bytes,3,opt,name=operator,proto3" json:"operator,omitempty"` // 操作人姓名 + OperatorNum string `protobuf:"bytes,4,opt,name=operatorNum,proto3" json:"operatorNum,omitempty"` // 操作人手机号 + StartTime string `protobuf:"bytes,5,opt,name=startTime,proto3" json:"startTime,omitempty"` // 操作开始时间 + EndTime string `protobuf:"bytes,6,opt,name=endTime,proto3" json:"endTime,omitempty"` // 操作结束时间 + Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` // 反馈完成状态 + ActualStatus int32 `protobuf:"varint,8,opt,name=actualStatus,proto3" json:"actualStatus,omitempty"` // 实际完成状态 + Page int32 `protobuf:"varint,9,opt,name=page,proto3" json:"page,omitempty"` // 页码 + PageSize int32 `protobuf:"varint,10,opt,name=pageSize,proto3" json:"pageSize,omitempty"` // 每页数量 +} + +func (x *TaskAssignRecordsQueryRequest) Reset() { + *x = TaskAssignRecordsQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskAssignRecordsQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskAssignRecordsQueryRequest) ProtoMessage() {} + +func (x *TaskAssignRecordsQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[100] + 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 TaskAssignRecordsQueryRequest.ProtoReflect.Descriptor instead. +func (*TaskAssignRecordsQueryRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{100} +} + +func (x *TaskAssignRecordsQueryRequest) GetKeyword() string { + if x != nil { + return x.Keyword + } + return "" +} + +func (x *TaskAssignRecordsQueryRequest) GetTaskAssignee() string { + if x != nil { + return x.TaskAssignee + } + return "" +} + +func (x *TaskAssignRecordsQueryRequest) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *TaskAssignRecordsQueryRequest) GetOperatorNum() string { + if x != nil { + return x.OperatorNum + } + return "" +} + +func (x *TaskAssignRecordsQueryRequest) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *TaskAssignRecordsQueryRequest) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +func (x *TaskAssignRecordsQueryRequest) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *TaskAssignRecordsQueryRequest) GetActualStatus() int32 { + if x != nil { + return x.ActualStatus + } + return 0 +} + +func (x *TaskAssignRecordsQueryRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *TaskAssignRecordsQueryRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type TaskAssignRecordsQueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Records []*TaskAssignRecordInfo `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` + Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *TaskAssignRecordsQueryResponse) Reset() { + *x = TaskAssignRecordsQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskAssignRecordsQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskAssignRecordsQueryResponse) ProtoMessage() {} + +func (x *TaskAssignRecordsQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[101] + 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 TaskAssignRecordsQueryResponse.ProtoReflect.Descriptor instead. +func (*TaskAssignRecordsQueryResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{101} +} + +func (x *TaskAssignRecordsQueryResponse) GetRecords() []*TaskAssignRecordInfo { + if x != nil { + return x.Records + } + return nil +} + +func (x *TaskAssignRecordsQueryResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *TaskAssignRecordsQueryResponse) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *TaskAssignRecordsQueryResponse) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +// 查询艺人套餐剩余数量请求 +type ArtistBundleBalanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CustomerNum string `protobuf:"bytes,1,opt,name=customerNum,proto3" json:"customerNum,omitempty"` // 艺人编号(推荐使用) + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` // 艺人手机号(备选) +} + +func (x *ArtistBundleBalanceRequest) Reset() { + *x = ArtistBundleBalanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtistBundleBalanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistBundleBalanceRequest) ProtoMessage() {} + +func (x *ArtistBundleBalanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[102] + 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 ArtistBundleBalanceRequest.ProtoReflect.Descriptor instead. +func (*ArtistBundleBalanceRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{102} +} + +func (x *ArtistBundleBalanceRequest) GetCustomerNum() string { + if x != nil { + return x.CustomerNum + } + return "" +} + +func (x *ArtistBundleBalanceRequest) GetTelNum() string { + if x != nil { + return x.TelNum + } + return "" +} + +// 艺人套餐剩余数量响应 +type ArtistBundleBalanceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RemainingVideoCount int32 `protobuf:"varint,1,opt,name=remainingVideoCount,proto3" json:"remainingVideoCount,omitempty"` // 剩余视频数量 + RemainingImageCount int32 `protobuf:"varint,2,opt,name=remainingImageCount,proto3" json:"remainingImageCount,omitempty"` // 剩余图片数量 + RemainingDataAnalysisCount int32 `protobuf:"varint,3,opt,name=remainingDataAnalysisCount,proto3" json:"remainingDataAnalysisCount,omitempty"` // 剩余数据分析数量 +} + +func (x *ArtistBundleBalanceResponse) Reset() { + *x = ArtistBundleBalanceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtistBundleBalanceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistBundleBalanceResponse) ProtoMessage() {} + +func (x *ArtistBundleBalanceResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[103] + 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 ArtistBundleBalanceResponse.ProtoReflect.Descriptor instead. +func (*ArtistBundleBalanceResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{103} +} + +func (x *ArtistBundleBalanceResponse) GetRemainingVideoCount() int32 { + if x != nil { + return x.RemainingVideoCount + } + return 0 +} + +func (x *ArtistBundleBalanceResponse) GetRemainingImageCount() int32 { + if x != nil { + return x.RemainingImageCount + } + return 0 +} + +func (x *ArtistBundleBalanceResponse) GetRemainingDataAnalysisCount() int32 { + if x != nil { + return x.RemainingDataAnalysisCount + } + return 0 +} + var File_pb_bundle_proto protoreflect.FileDescriptor var file_pb_bundle_proto_rawDesc = []byte{ @@ -7893,7 +9320,7 @@ var file_pb_bundle_proto_rawDesc = []byte{ 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xe8, 0x03, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x80, 0x04, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4f, 0x6e, 0x18, @@ -7924,162 +9351,165 @@ var file_pb_bundle_proto_rawDesc = []byte{ 0x49, 0x44, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, - 0x65, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, - 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x16, 0x4f, 0x72, + 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x35, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, - 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x61, - 0x74, 0x61, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc3, 0x05, 0x0a, 0x11, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, - 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0x96, 0x02, 0x0a, 0x14, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, - 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, - 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, - 0x46, 0x65, 0x65, 0x22, 0xcd, 0x04, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x22, 0x0a, - 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, - 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, - 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, - 0x45, 0x6e, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x3d, - 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x22, 0xed, 0x02, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, - 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x46, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0xda, 0x03, 0x0a, 0x18, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, + 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x16, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, + 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, + 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc3, 0x05, 0x0a, + 0x11, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x64, + 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x61, 0x64, + 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x4e, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x4e, 0x6f, 0x22, 0x96, 0x02, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, + 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x22, 0xcd, 0x04, 0x0a, 0x15, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, + 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, + 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, + 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x12, 0x30, 0x0a, + 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x2c, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x45, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x34, 0x0a, + 0x15, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, + 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x50, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x16, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x3d, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x85, 0x03, 0x0a, 0x15, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, + 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, + 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0d, 0x61, 0x64, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, + 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, + 0x4e, 0x75, 0x6d, 0x22, 0xda, 0x03, 0x0a, 0x18, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, @@ -9131,273 +10561,557 @@ var file_pb_bundle_proto_rawDesc = []byte{ 0x65, 0x22, 0x31, 0x0a, 0x1f, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x49, 0x44, 0x32, 0x86, 0x21, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, - 0x3f, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, - 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x12, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x42, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x12, 0x18, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x09, 0x48, 0x61, 0x6e, 0x64, 0x53, 0x68, 0x65, - 0x6c, 0x66, 0x12, 0x18, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x48, 0x61, 0x6e, 0x64, - 0x53, 0x68, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0a, 0x53, 0x61, 0x76, 0x65, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x14, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x56, 0x32, 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, + 0x52, 0x02, 0x49, 0x44, 0x22, 0x90, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, + 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, + 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x9c, 0x03, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, + 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, + 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, + 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, + 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xef, 0x02, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, + 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, + 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x61, + 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x28, + 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x50, 0x6f, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xaf, 0x02, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, + 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, + 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x1a, 0x52, 0x65, 0x63, 0x65, + 0x6e, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x41, 0x0a, 0x1b, + 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0xea, 0x02, 0x0a, 0x18, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, + 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, + 0x72, 0x74, 0x42, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x6e, + 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x99, 0x01, 0x0a, + 0x19, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xec, 0x04, 0x0a, 0x14, 0x54, 0x61, 0x73, + 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x55, 0x55, 0x49, 0x44, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x75, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x75, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, + 0x63, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x20, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x75, + 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x73, + 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, + 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, + 0x4e, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, + 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, + 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x75, 0x0a, 0x1b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x55, 0x55, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, + 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xd1, + 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, + 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x55, 0x55, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x55, 0x55, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6d, + 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x4e, 0x75, 0x6d, + 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xbf, 0x02, 0x0a, 0x1d, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x22, + 0x0a, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, + 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x75, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x56, 0x0a, 0x1a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0xc1, 0x01, + 0x0a, 0x1b, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x13, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x30, 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x72, 0x65, + 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x3e, 0x0a, 0x1a, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x61, + 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x32, 0xad, 0x27, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x09, 0x48, 0x61, 0x6e, 0x64, 0x53, 0x68, 0x65, 0x6c, 0x66, 0x12, + 0x18, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x53, 0x68, 0x65, + 0x6c, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0a, 0x53, 0x61, 0x76, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x12, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x14, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x47, 0x0a, 0x0c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, + 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x56, 0x32, 0x12, 0x1b, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0e, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x35, 0x56, 0x32, 0x12, 0x19, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x12, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, + 0x61, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x56, 0x32, 0x12, 0x1b, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, + 0x61, 0x6e, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x56, 0x32, 0x12, 0x1b, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x00, 0x12, 0x49, 0x0a, - 0x0e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x35, 0x56, 0x32, 0x12, - 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x12, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x56, 0x32, 0x12, 0x1b, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4b, 0x0a, 0x0c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x11, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x13, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x1a, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, - 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x11, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x19, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x21, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x13, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x13, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x1a, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x12, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, - 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x1e, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x00, - 0x12, 0x59, 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x19, 0x4f, - 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x79, - 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x14, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x5d, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x63, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x13, 0x53, 0x61, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x1a, 0x14, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x60, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x66, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x24, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, - 0x67, 0x42, 0x79, 0x55, 0x75, 0x69, 0x64, 0x41, 0x6e, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x63, 0x75, - 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1b, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, - 0x0c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x17, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1f, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x20, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x58, - 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x55, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, - 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, - 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x57, 0x6f, 0x72, 0x6b, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x12, - 0x54, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x42, 0x65, - 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x42, 0x65, 0x43, - 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, - 0x72, 0x6b, 0x12, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, + 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x14, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, - 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x79, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x66, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x25, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x6e, 0x66, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x00, 0x12, 0x5d, - 0x0a, 0x18, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x6e, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x6e, - 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x13, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x41, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x13, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, + 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x32, 0x12, 0x1d, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x1a, 0x1e, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x22, 0x00, 0x12, 0x59, 0x0a, + 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x4e, 0x6f, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x19, 0x4f, 0x6e, 0x6c, 0x79, + 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x28, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, + 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, + 0x12, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x14, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x4a, 0x0a, 0x13, 0x53, 0x61, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x1a, 0x14, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, + 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, + 0x13, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x66, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x24, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x42, 0x79, + 0x55, 0x75, 0x69, 0x64, 0x41, 0x6e, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, + 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, + 0x6e, 0x67, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, + 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x57, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, + 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x17, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x26, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x67, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, + 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x56, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x57, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x12, 0x54, 0x6f, 0x42, + 0x65, 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x12, + 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6d, + 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6d, 0x66, + 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x40, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x12, + 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, + 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, + 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x4c, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, + 0x0a, 0x28, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x79, 0x53, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x41, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x79, 0x53, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x25, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x6e, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x18, 0x53, + 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x6e, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x18, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, - 0x08, 0x2e, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x61, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, + 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x20, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, + 0x65, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x23, 0x2e, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x6b, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -9412,7 +11126,7 @@ func file_pb_bundle_proto_rawDescGZIP() []byte { return file_pb_bundle_proto_rawDescData } -var file_pb_bundle_proto_msgTypes = make([]protoimpl.MessageInfo, 88) +var file_pb_bundle_proto_msgTypes = make([]protoimpl.MessageInfo, 104) var file_pb_bundle_proto_goTypes = []interface{}{ (*DeleteValueAddServiceRequest)(nil), // 0: bundle.DeleteValueAddServiceRequest (*GetReconciliationListReq)(nil), // 1: bundle.GetReconciliationListReq @@ -9502,138 +11216,175 @@ var file_pb_bundle_proto_goTypes = []interface{}{ (*UnfinishedInfos)(nil), // 85: bundle.UnfinishedInfos (*UnfinishedInfo)(nil), // 86: bundle.UnfinishedInfo (*SoftDeleteUnfinishedInfoRequest)(nil), // 87: bundle.SoftDeleteUnfinishedInfoRequest + (*TaskQueryRequest)(nil), // 88: bundle.TaskQueryRequest + (*TaskQueryResponse)(nil), // 89: bundle.TaskQueryResponse + (*TaskManagementInfo)(nil), // 90: bundle.TaskManagementInfo + (*TaskAssignRequest)(nil), // 91: bundle.TaskAssignRequest + (*UpdatePendingCountRequest)(nil), // 92: bundle.UpdatePendingCountRequest + (*RecentAssignRecordsRequest)(nil), // 93: bundle.RecentAssignRecordsRequest + (*RecentAssignRecordsResponse)(nil), // 94: bundle.RecentAssignRecordsResponse + (*EmployeeTaskQueryRequest)(nil), // 95: bundle.EmployeeTaskQueryRequest + (*EmployeeTaskQueryResponse)(nil), // 96: bundle.EmployeeTaskQueryResponse + (*TaskAssignRecordInfo)(nil), // 97: bundle.TaskAssignRecordInfo + (*CompleteTaskManuallyRequest)(nil), // 98: bundle.CompleteTaskManuallyRequest + (*UpdateTaskProgressRequest)(nil), // 99: bundle.UpdateTaskProgressRequest + (*TaskAssignRecordsQueryRequest)(nil), // 100: bundle.TaskAssignRecordsQueryRequest + (*TaskAssignRecordsQueryResponse)(nil), // 101: bundle.TaskAssignRecordsQueryResponse + (*ArtistBundleBalanceRequest)(nil), // 102: bundle.ArtistBundleBalanceRequest + (*ArtistBundleBalanceResponse)(nil), // 103: bundle.ArtistBundleBalanceResponse } var file_pb_bundle_proto_depIdxs = []int32{ - 3, // 0: bundle.GetReconciliationListResp.list:type_name -> bundle.ReconciliationInfo - 7, // 1: bundle.OrderCreateRecord.addRecords:type_name -> bundle.OrderCreateAddRecord - 10, // 2: bundle.OrderRecordsResponseV2.bundleInfo:type_name -> bundle.OrderBundleRecordInfo - 11, // 3: bundle.OrderBundleRecordInfo.addBundleInfo:type_name -> bundle.OrderAddBundleRecordInfo - 17, // 4: bundle.BundleProfile.selectValueAddService:type_name -> bundle.SelectValueAddService - 15, // 5: bundle.BundleProfile.bundleProfileLang:type_name -> bundle.BundleProfileLang - 14, // 6: bundle.BundleListResponse.bundles:type_name -> bundle.BundleProfile - 14, // 7: bundle.BundleDetailResponse.bundle:type_name -> bundle.BundleProfile - 14, // 8: bundle.BundleDetailResponseV2.bundle:type_name -> bundle.BundleProfile - 29, // 9: bundle.OrderRecord.priceOptionsInfo:type_name -> bundle.PriceOptionsInfo - 26, // 10: bundle.OrderRecord.addInfos:type_name -> bundle.AddInfo - 28, // 11: bundle.OrderAddRecord.addPriceOptionsList:type_name -> bundle.AddPriceOptionsInfo - 25, // 12: bundle.OrderRecordsResponse.orderRecords:type_name -> bundle.OrderRecord - 25, // 13: bundle.OrderRecordsDetailResponse.orderRecord:type_name -> bundle.OrderRecord - 34, // 14: bundle.ValueAddBundleListResponse.data:type_name -> bundle.ValueAddBundleProfile - 34, // 15: bundle.ValueAddBundleDetailResponse.data:type_name -> bundle.ValueAddBundleProfile - 43, // 16: bundle.ValueAddService.serviceLang:type_name -> bundle.ValueAddServiceLang - 44, // 17: bundle.ValueAddServiceLang.options:type_name -> bundle.ValueAddPriceOptions - 42, // 18: bundle.ValueAddServiceListResponse.valueAddServiceList:type_name -> bundle.ValueAddService - 42, // 19: bundle.ValueAddServiceDetailResponse.valueAddService:type_name -> bundle.ValueAddService - 43, // 20: bundle.BatchGetValueAddServiceLangResponse.valueAddServiceLangList:type_name -> bundle.ValueAddServiceLang - 57, // 21: bundle.BundleExtendRecordsListResponse.data:type_name -> bundle.BundleExtendRecordItem - 60, // 22: bundle.GetBundleBalanceListResp.data:type_name -> bundle.BundleBalanceItem - 68, // 23: bundle.GetUsedRecordListResp.data:type_name -> bundle.WorkCastItem - 74, // 24: bundle.ToBeComfirmedWorksResp.data:type_name -> bundle.workItem - 80, // 25: bundle.OnlyAddValueListByOrderNoResp.AddBundleInfos:type_name -> bundle.AddBundleInfo - 86, // 26: bundle.UnfinishedInfos.unfinishedInfos:type_name -> bundle.UnfinishedInfo - 14, // 27: bundle.Bundle.CreateBundle:input_type -> bundle.BundleProfile - 14, // 28: bundle.Bundle.UpdateBundle:input_type -> bundle.BundleProfile - 18, // 29: bundle.Bundle.DeleteBundle:input_type -> bundle.DelBundleRequest - 22, // 30: bundle.Bundle.HandShelf:input_type -> bundle.HandShelfRequest - 14, // 31: bundle.Bundle.SaveBundle:input_type -> bundle.BundleProfile - 19, // 32: bundle.Bundle.BundleListV2:input_type -> bundle.BundleListRequest - 21, // 33: bundle.Bundle.BundleDetailV2:input_type -> bundle.BundleDetailRequest - 19, // 34: bundle.Bundle.BundleListH5V2:input_type -> bundle.BundleListRequest - 21, // 35: bundle.Bundle.BundleLangDetailV2:input_type -> bundle.BundleDetailRequest - 19, // 36: bundle.Bundle.BundleList:input_type -> bundle.BundleListRequest - 21, // 37: bundle.Bundle.BundleDetail:input_type -> bundle.BundleDetailRequest - 6, // 38: bundle.Bundle.CreateOrderRecord:input_type -> bundle.OrderCreateRecord - 25, // 39: bundle.Bundle.UpdateOrderRecord:input_type -> bundle.OrderRecord - 25, // 40: bundle.Bundle.UpdateOrderRecordByOrderNo:input_type -> bundle.OrderRecord - 30, // 41: bundle.Bundle.OrderRecordsList:input_type -> bundle.OrderRecordsRequest - 32, // 42: bundle.Bundle.OrderRecordsDetail:input_type -> bundle.OrderRecordsDetailRequest - 41, // 43: bundle.Bundle.UpdateFinancialConfirmationStatus:input_type -> bundle.FinancialConfirmationRequest - 27, // 44: bundle.Bundle.CreateOrderAddRecord:input_type -> bundle.OrderAddRecord - 25, // 45: bundle.Bundle.PackagePriceAndTime:input_type -> bundle.OrderRecord - 8, // 46: bundle.Bundle.OrderRecordsListV2:input_type -> bundle.OrderRecordsRequestV2 - 4, // 47: bundle.Bundle.OrderListByOrderNo:input_type -> bundle.OrderInfoByOrderNoRequest - 78, // 48: bundle.Bundle.OnlyAddValueListByOrderNo:input_type -> bundle.OnlyAddValueListByOrderNoRequest - 35, // 49: bundle.Bundle.CreateValueAddBundle:input_type -> bundle.CreateValueAddBundleRequest - 37, // 50: bundle.Bundle.ValueAddBundleList:input_type -> bundle.ValueAddBundleListRequest - 39, // 51: bundle.Bundle.ValueAddBundleDetail:input_type -> bundle.ValueAddBundleDetailRequest - 43, // 52: bundle.Bundle.SaveValueAddService:input_type -> bundle.ValueAddServiceLang - 45, // 53: bundle.Bundle.ValueAddServiceList:input_type -> bundle.ValueAddServiceListRequest - 47, // 54: bundle.Bundle.ValueAddServiceDetail:input_type -> bundle.ValueAddServiceDetailRequest - 47, // 55: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:input_type -> bundle.ValueAddServiceDetailRequest - 49, // 56: bundle.Bundle.CalculatePrice:input_type -> bundle.CalculatePriceRequest - 51, // 57: bundle.Bundle.BatchGetValueAddServiceLang:input_type -> bundle.BatchGetValueAddServiceLangRequest - 0, // 58: bundle.Bundle.DeleteValueAddService:input_type -> bundle.DeleteValueAddServiceRequest - 53, // 59: bundle.Bundle.BundleExtend:input_type -> bundle.BundleExtendRequest - 55, // 60: bundle.Bundle.BundleExtendRecordsList:input_type -> bundle.BundleExtendRecordsListRequest - 58, // 61: bundle.Bundle.GetBundleBalanceList:input_type -> bundle.GetBundleBalanceListReq - 76, // 62: bundle.Bundle.GetBundleBalanceByUserId:input_type -> bundle.GetBundleBalanceByUserIdReq - 62, // 63: bundle.Bundle.CreateBundleBalance:input_type -> bundle.CreateBundleBalanceReq - 64, // 64: bundle.Bundle.AddBundleBalance:input_type -> bundle.AddBundleBalanceReq - 66, // 65: bundle.Bundle.GetUsedRecordList:input_type -> bundle.GetUsedRecordListReq - 69, // 66: bundle.Bundle.GetImageWorkDetail:input_type -> bundle.GetImageWorkDetailReq - 70, // 67: bundle.Bundle.GetVedioWorkDetail:input_type -> bundle.GetVedioWorkDetailReq - 73, // 68: bundle.Bundle.ToBeComfirmedWorks:input_type -> bundle.ToBeComfirmedWorksReq - 82, // 69: bundle.Bundle.ConfirmWork:input_type -> bundle.ConfirmWorkReq - 1, // 70: bundle.Bundle.GetReconciliationList:input_type -> bundle.GetReconciliationListReq - 3, // 71: bundle.Bundle.CreateReconciliation:input_type -> bundle.ReconciliationInfo - 3, // 72: bundle.Bundle.UpdateReconciliation:input_type -> bundle.ReconciliationInfo - 81, // 73: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:input_type -> bundle.UpdateStatusAndPayTimeBySerialNumber - 84, // 74: bundle.Bundle.ListUnfinishedInfos:input_type -> bundle.AutoCreateUserAndOrderRequest - 87, // 75: bundle.Bundle.SoftDeleteUnfinishedInfo:input_type -> bundle.SoftDeleteUnfinishedInfoRequest - 13, // 76: bundle.Bundle.CreateBundle:output_type -> bundle.CommonResponse - 13, // 77: bundle.Bundle.UpdateBundle:output_type -> bundle.CommonResponse - 13, // 78: bundle.Bundle.DeleteBundle:output_type -> bundle.CommonResponse - 13, // 79: bundle.Bundle.HandShelf:output_type -> bundle.CommonResponse - 16, // 80: bundle.Bundle.SaveBundle:output_type -> bundle.SaveResponse - 20, // 81: bundle.Bundle.BundleListV2:output_type -> bundle.BundleListResponse - 24, // 82: bundle.Bundle.BundleDetailV2:output_type -> bundle.BundleDetailResponseV2 - 20, // 83: bundle.Bundle.BundleListH5V2:output_type -> bundle.BundleListResponse - 15, // 84: bundle.Bundle.BundleLangDetailV2:output_type -> bundle.BundleProfileLang - 20, // 85: bundle.Bundle.BundleList:output_type -> bundle.BundleListResponse - 23, // 86: bundle.Bundle.BundleDetail:output_type -> bundle.BundleDetailResponse - 13, // 87: bundle.Bundle.CreateOrderRecord:output_type -> bundle.CommonResponse - 13, // 88: bundle.Bundle.UpdateOrderRecord:output_type -> bundle.CommonResponse - 13, // 89: bundle.Bundle.UpdateOrderRecordByOrderNo:output_type -> bundle.CommonResponse - 31, // 90: bundle.Bundle.OrderRecordsList:output_type -> bundle.OrderRecordsResponse - 33, // 91: bundle.Bundle.OrderRecordsDetail:output_type -> bundle.OrderRecordsDetailResponse - 13, // 92: bundle.Bundle.UpdateFinancialConfirmationStatus:output_type -> bundle.CommonResponse - 13, // 93: bundle.Bundle.CreateOrderAddRecord:output_type -> bundle.CommonResponse - 12, // 94: bundle.Bundle.PackagePriceAndTime:output_type -> bundle.PackagePriceAndTimeResponse - 9, // 95: bundle.Bundle.OrderRecordsListV2:output_type -> bundle.OrderRecordsResponseV2 - 5, // 96: bundle.Bundle.OrderListByOrderNo:output_type -> bundle.OrderInfoByOrderNoResp - 79, // 97: bundle.Bundle.OnlyAddValueListByOrderNo:output_type -> bundle.OnlyAddValueListByOrderNoResp - 36, // 98: bundle.Bundle.CreateValueAddBundle:output_type -> bundle.CreateValueAddBundleResponse - 38, // 99: bundle.Bundle.ValueAddBundleList:output_type -> bundle.ValueAddBundleListResponse - 40, // 100: bundle.Bundle.ValueAddBundleDetail:output_type -> bundle.ValueAddBundleDetailResponse - 16, // 101: bundle.Bundle.SaveValueAddService:output_type -> bundle.SaveResponse - 46, // 102: bundle.Bundle.ValueAddServiceList:output_type -> bundle.ValueAddServiceListResponse - 48, // 103: bundle.Bundle.ValueAddServiceDetail:output_type -> bundle.ValueAddServiceDetailResponse - 43, // 104: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:output_type -> bundle.ValueAddServiceLang - 50, // 105: bundle.Bundle.CalculatePrice:output_type -> bundle.CalculatePriceResponse - 52, // 106: bundle.Bundle.BatchGetValueAddServiceLang:output_type -> bundle.BatchGetValueAddServiceLangResponse - 13, // 107: bundle.Bundle.DeleteValueAddService:output_type -> bundle.CommonResponse - 54, // 108: bundle.Bundle.BundleExtend:output_type -> bundle.BundleExtendResponse - 56, // 109: bundle.Bundle.BundleExtendRecordsList:output_type -> bundle.BundleExtendRecordsListResponse - 61, // 110: bundle.Bundle.GetBundleBalanceList:output_type -> bundle.GetBundleBalanceListResp - 77, // 111: bundle.Bundle.GetBundleBalanceByUserId:output_type -> bundle.GetBundleBalanceByUserIdResp - 63, // 112: bundle.Bundle.CreateBundleBalance:output_type -> bundle.CreateBundleBalanceResp - 65, // 113: bundle.Bundle.AddBundleBalance:output_type -> bundle.AddBundleBalanceResp - 67, // 114: bundle.Bundle.GetUsedRecordList:output_type -> bundle.GetUsedRecordListResp - 71, // 115: bundle.Bundle.GetImageWorkDetail:output_type -> bundle.GetImageWorkDetailResp - 72, // 116: bundle.Bundle.GetVedioWorkDetail:output_type -> bundle.GetVedioeWorkDetailResp - 75, // 117: bundle.Bundle.ToBeComfirmedWorks:output_type -> bundle.ToBeComfirmedWorksResp - 83, // 118: bundle.Bundle.ConfirmWork:output_type -> bundle.ConfirmWorkResp - 2, // 119: bundle.Bundle.GetReconciliationList:output_type -> bundle.GetReconciliationListResp - 13, // 120: bundle.Bundle.CreateReconciliation:output_type -> bundle.CommonResponse - 13, // 121: bundle.Bundle.UpdateReconciliation:output_type -> bundle.CommonResponse - 13, // 122: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:output_type -> bundle.CommonResponse - 85, // 123: bundle.Bundle.ListUnfinishedInfos:output_type -> bundle.UnfinishedInfos - 13, // 124: bundle.Bundle.SoftDeleteUnfinishedInfo:output_type -> bundle.CommonResponse - 76, // [76:125] is the sub-list for method output_type - 27, // [27:76] is the sub-list for method input_type - 27, // [27:27] is the sub-list for extension type_name - 27, // [27:27] is the sub-list for extension extendee - 0, // [0:27] is the sub-list for field type_name + 3, // 0: bundle.GetReconciliationListResp.list:type_name -> bundle.ReconciliationInfo + 7, // 1: bundle.OrderCreateRecord.addRecords:type_name -> bundle.OrderCreateAddRecord + 10, // 2: bundle.OrderRecordsResponseV2.bundleInfo:type_name -> bundle.OrderBundleRecordInfo + 11, // 3: bundle.OrderBundleRecordInfo.addBundleInfo:type_name -> bundle.OrderAddBundleRecordInfo + 17, // 4: bundle.BundleProfile.selectValueAddService:type_name -> bundle.SelectValueAddService + 15, // 5: bundle.BundleProfile.bundleProfileLang:type_name -> bundle.BundleProfileLang + 14, // 6: bundle.BundleListResponse.bundles:type_name -> bundle.BundleProfile + 14, // 7: bundle.BundleDetailResponse.bundle:type_name -> bundle.BundleProfile + 14, // 8: bundle.BundleDetailResponseV2.bundle:type_name -> bundle.BundleProfile + 29, // 9: bundle.OrderRecord.priceOptionsInfo:type_name -> bundle.PriceOptionsInfo + 26, // 10: bundle.OrderRecord.addInfos:type_name -> bundle.AddInfo + 28, // 11: bundle.OrderAddRecord.addPriceOptionsList:type_name -> bundle.AddPriceOptionsInfo + 25, // 12: bundle.OrderRecordsResponse.orderRecords:type_name -> bundle.OrderRecord + 25, // 13: bundle.OrderRecordsDetailResponse.orderRecord:type_name -> bundle.OrderRecord + 34, // 14: bundle.ValueAddBundleListResponse.data:type_name -> bundle.ValueAddBundleProfile + 34, // 15: bundle.ValueAddBundleDetailResponse.data:type_name -> bundle.ValueAddBundleProfile + 43, // 16: bundle.ValueAddService.serviceLang:type_name -> bundle.ValueAddServiceLang + 44, // 17: bundle.ValueAddServiceLang.options:type_name -> bundle.ValueAddPriceOptions + 42, // 18: bundle.ValueAddServiceListResponse.valueAddServiceList:type_name -> bundle.ValueAddService + 42, // 19: bundle.ValueAddServiceDetailResponse.valueAddService:type_name -> bundle.ValueAddService + 43, // 20: bundle.BatchGetValueAddServiceLangResponse.valueAddServiceLangList:type_name -> bundle.ValueAddServiceLang + 57, // 21: bundle.BundleExtendRecordsListResponse.data:type_name -> bundle.BundleExtendRecordItem + 60, // 22: bundle.GetBundleBalanceListResp.data:type_name -> bundle.BundleBalanceItem + 68, // 23: bundle.GetUsedRecordListResp.data:type_name -> bundle.WorkCastItem + 74, // 24: bundle.ToBeComfirmedWorksResp.data:type_name -> bundle.workItem + 80, // 25: bundle.OnlyAddValueListByOrderNoResp.AddBundleInfos:type_name -> bundle.AddBundleInfo + 86, // 26: bundle.UnfinishedInfos.unfinishedInfos:type_name -> bundle.UnfinishedInfo + 90, // 27: bundle.TaskQueryResponse.tasks:type_name -> bundle.TaskManagementInfo + 97, // 28: bundle.EmployeeTaskQueryResponse.records:type_name -> bundle.TaskAssignRecordInfo + 97, // 29: bundle.TaskAssignRecordsQueryResponse.records:type_name -> bundle.TaskAssignRecordInfo + 14, // 30: bundle.Bundle.CreateBundle:input_type -> bundle.BundleProfile + 14, // 31: bundle.Bundle.UpdateBundle:input_type -> bundle.BundleProfile + 18, // 32: bundle.Bundle.DeleteBundle:input_type -> bundle.DelBundleRequest + 22, // 33: bundle.Bundle.HandShelf:input_type -> bundle.HandShelfRequest + 14, // 34: bundle.Bundle.SaveBundle:input_type -> bundle.BundleProfile + 19, // 35: bundle.Bundle.BundleListV2:input_type -> bundle.BundleListRequest + 21, // 36: bundle.Bundle.BundleDetailV2:input_type -> bundle.BundleDetailRequest + 19, // 37: bundle.Bundle.BundleListH5V2:input_type -> bundle.BundleListRequest + 21, // 38: bundle.Bundle.BundleLangDetailV2:input_type -> bundle.BundleDetailRequest + 19, // 39: bundle.Bundle.BundleList:input_type -> bundle.BundleListRequest + 21, // 40: bundle.Bundle.BundleDetail:input_type -> bundle.BundleDetailRequest + 6, // 41: bundle.Bundle.CreateOrderRecord:input_type -> bundle.OrderCreateRecord + 25, // 42: bundle.Bundle.UpdateOrderRecord:input_type -> bundle.OrderRecord + 25, // 43: bundle.Bundle.UpdateOrderRecordByOrderNo:input_type -> bundle.OrderRecord + 30, // 44: bundle.Bundle.OrderRecordsList:input_type -> bundle.OrderRecordsRequest + 32, // 45: bundle.Bundle.OrderRecordsDetail:input_type -> bundle.OrderRecordsDetailRequest + 41, // 46: bundle.Bundle.UpdateFinancialConfirmationStatus:input_type -> bundle.FinancialConfirmationRequest + 27, // 47: bundle.Bundle.CreateOrderAddRecord:input_type -> bundle.OrderAddRecord + 25, // 48: bundle.Bundle.PackagePriceAndTime:input_type -> bundle.OrderRecord + 8, // 49: bundle.Bundle.OrderRecordsListV2:input_type -> bundle.OrderRecordsRequestV2 + 4, // 50: bundle.Bundle.OrderListByOrderNo:input_type -> bundle.OrderInfoByOrderNoRequest + 78, // 51: bundle.Bundle.OnlyAddValueListByOrderNo:input_type -> bundle.OnlyAddValueListByOrderNoRequest + 35, // 52: bundle.Bundle.CreateValueAddBundle:input_type -> bundle.CreateValueAddBundleRequest + 37, // 53: bundle.Bundle.ValueAddBundleList:input_type -> bundle.ValueAddBundleListRequest + 39, // 54: bundle.Bundle.ValueAddBundleDetail:input_type -> bundle.ValueAddBundleDetailRequest + 43, // 55: bundle.Bundle.SaveValueAddService:input_type -> bundle.ValueAddServiceLang + 45, // 56: bundle.Bundle.ValueAddServiceList:input_type -> bundle.ValueAddServiceListRequest + 47, // 57: bundle.Bundle.ValueAddServiceDetail:input_type -> bundle.ValueAddServiceDetailRequest + 47, // 58: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:input_type -> bundle.ValueAddServiceDetailRequest + 49, // 59: bundle.Bundle.CalculatePrice:input_type -> bundle.CalculatePriceRequest + 51, // 60: bundle.Bundle.BatchGetValueAddServiceLang:input_type -> bundle.BatchGetValueAddServiceLangRequest + 0, // 61: bundle.Bundle.DeleteValueAddService:input_type -> bundle.DeleteValueAddServiceRequest + 53, // 62: bundle.Bundle.BundleExtend:input_type -> bundle.BundleExtendRequest + 55, // 63: bundle.Bundle.BundleExtendRecordsList:input_type -> bundle.BundleExtendRecordsListRequest + 58, // 64: bundle.Bundle.GetBundleBalanceList:input_type -> bundle.GetBundleBalanceListReq + 76, // 65: bundle.Bundle.GetBundleBalanceByUserId:input_type -> bundle.GetBundleBalanceByUserIdReq + 62, // 66: bundle.Bundle.CreateBundleBalance:input_type -> bundle.CreateBundleBalanceReq + 64, // 67: bundle.Bundle.AddBundleBalance:input_type -> bundle.AddBundleBalanceReq + 66, // 68: bundle.Bundle.GetUsedRecordList:input_type -> bundle.GetUsedRecordListReq + 69, // 69: bundle.Bundle.GetImageWorkDetail:input_type -> bundle.GetImageWorkDetailReq + 70, // 70: bundle.Bundle.GetVedioWorkDetail:input_type -> bundle.GetVedioWorkDetailReq + 73, // 71: bundle.Bundle.ToBeComfirmedWorks:input_type -> bundle.ToBeComfirmedWorksReq + 82, // 72: bundle.Bundle.ConfirmWork:input_type -> bundle.ConfirmWorkReq + 1, // 73: bundle.Bundle.GetReconciliationList:input_type -> bundle.GetReconciliationListReq + 3, // 74: bundle.Bundle.CreateReconciliation:input_type -> bundle.ReconciliationInfo + 3, // 75: bundle.Bundle.UpdateReconciliation:input_type -> bundle.ReconciliationInfo + 81, // 76: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:input_type -> bundle.UpdateStatusAndPayTimeBySerialNumber + 84, // 77: bundle.Bundle.ListUnfinishedInfos:input_type -> bundle.AutoCreateUserAndOrderRequest + 87, // 78: bundle.Bundle.SoftDeleteUnfinishedInfo:input_type -> bundle.SoftDeleteUnfinishedInfoRequest + 88, // 79: bundle.Bundle.GetPendingTaskList:input_type -> bundle.TaskQueryRequest + 91, // 80: bundle.Bundle.AssignTask:input_type -> bundle.TaskAssignRequest + 92, // 81: bundle.Bundle.UpdatePendingCount:input_type -> bundle.UpdatePendingCountRequest + 93, // 82: bundle.Bundle.GetRecentAssignRecords:input_type -> bundle.RecentAssignRecordsRequest + 95, // 83: bundle.Bundle.GetEmployeeAssignedTasks:input_type -> bundle.EmployeeTaskQueryRequest + 98, // 84: bundle.Bundle.CompleteTaskManually:input_type -> bundle.CompleteTaskManuallyRequest + 99, // 85: bundle.Bundle.UpdateTaskProgress:input_type -> bundle.UpdateTaskProgressRequest + 100, // 86: bundle.Bundle.GetTaskAssignRecordsList:input_type -> bundle.TaskAssignRecordsQueryRequest + 102, // 87: bundle.Bundle.GetArtistBundleBalance:input_type -> bundle.ArtistBundleBalanceRequest + 13, // 88: bundle.Bundle.CreateBundle:output_type -> bundle.CommonResponse + 13, // 89: bundle.Bundle.UpdateBundle:output_type -> bundle.CommonResponse + 13, // 90: bundle.Bundle.DeleteBundle:output_type -> bundle.CommonResponse + 13, // 91: bundle.Bundle.HandShelf:output_type -> bundle.CommonResponse + 16, // 92: bundle.Bundle.SaveBundle:output_type -> bundle.SaveResponse + 20, // 93: bundle.Bundle.BundleListV2:output_type -> bundle.BundleListResponse + 24, // 94: bundle.Bundle.BundleDetailV2:output_type -> bundle.BundleDetailResponseV2 + 20, // 95: bundle.Bundle.BundleListH5V2:output_type -> bundle.BundleListResponse + 15, // 96: bundle.Bundle.BundleLangDetailV2:output_type -> bundle.BundleProfileLang + 20, // 97: bundle.Bundle.BundleList:output_type -> bundle.BundleListResponse + 23, // 98: bundle.Bundle.BundleDetail:output_type -> bundle.BundleDetailResponse + 13, // 99: bundle.Bundle.CreateOrderRecord:output_type -> bundle.CommonResponse + 13, // 100: bundle.Bundle.UpdateOrderRecord:output_type -> bundle.CommonResponse + 13, // 101: bundle.Bundle.UpdateOrderRecordByOrderNo:output_type -> bundle.CommonResponse + 31, // 102: bundle.Bundle.OrderRecordsList:output_type -> bundle.OrderRecordsResponse + 33, // 103: bundle.Bundle.OrderRecordsDetail:output_type -> bundle.OrderRecordsDetailResponse + 13, // 104: bundle.Bundle.UpdateFinancialConfirmationStatus:output_type -> bundle.CommonResponse + 13, // 105: bundle.Bundle.CreateOrderAddRecord:output_type -> bundle.CommonResponse + 12, // 106: bundle.Bundle.PackagePriceAndTime:output_type -> bundle.PackagePriceAndTimeResponse + 9, // 107: bundle.Bundle.OrderRecordsListV2:output_type -> bundle.OrderRecordsResponseV2 + 5, // 108: bundle.Bundle.OrderListByOrderNo:output_type -> bundle.OrderInfoByOrderNoResp + 79, // 109: bundle.Bundle.OnlyAddValueListByOrderNo:output_type -> bundle.OnlyAddValueListByOrderNoResp + 36, // 110: bundle.Bundle.CreateValueAddBundle:output_type -> bundle.CreateValueAddBundleResponse + 38, // 111: bundle.Bundle.ValueAddBundleList:output_type -> bundle.ValueAddBundleListResponse + 40, // 112: bundle.Bundle.ValueAddBundleDetail:output_type -> bundle.ValueAddBundleDetailResponse + 16, // 113: bundle.Bundle.SaveValueAddService:output_type -> bundle.SaveResponse + 46, // 114: bundle.Bundle.ValueAddServiceList:output_type -> bundle.ValueAddServiceListResponse + 48, // 115: bundle.Bundle.ValueAddServiceDetail:output_type -> bundle.ValueAddServiceDetailResponse + 43, // 116: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:output_type -> bundle.ValueAddServiceLang + 50, // 117: bundle.Bundle.CalculatePrice:output_type -> bundle.CalculatePriceResponse + 52, // 118: bundle.Bundle.BatchGetValueAddServiceLang:output_type -> bundle.BatchGetValueAddServiceLangResponse + 13, // 119: bundle.Bundle.DeleteValueAddService:output_type -> bundle.CommonResponse + 54, // 120: bundle.Bundle.BundleExtend:output_type -> bundle.BundleExtendResponse + 56, // 121: bundle.Bundle.BundleExtendRecordsList:output_type -> bundle.BundleExtendRecordsListResponse + 61, // 122: bundle.Bundle.GetBundleBalanceList:output_type -> bundle.GetBundleBalanceListResp + 77, // 123: bundle.Bundle.GetBundleBalanceByUserId:output_type -> bundle.GetBundleBalanceByUserIdResp + 63, // 124: bundle.Bundle.CreateBundleBalance:output_type -> bundle.CreateBundleBalanceResp + 65, // 125: bundle.Bundle.AddBundleBalance:output_type -> bundle.AddBundleBalanceResp + 67, // 126: bundle.Bundle.GetUsedRecordList:output_type -> bundle.GetUsedRecordListResp + 71, // 127: bundle.Bundle.GetImageWorkDetail:output_type -> bundle.GetImageWorkDetailResp + 72, // 128: bundle.Bundle.GetVedioWorkDetail:output_type -> bundle.GetVedioeWorkDetailResp + 75, // 129: bundle.Bundle.ToBeComfirmedWorks:output_type -> bundle.ToBeComfirmedWorksResp + 83, // 130: bundle.Bundle.ConfirmWork:output_type -> bundle.ConfirmWorkResp + 2, // 131: bundle.Bundle.GetReconciliationList:output_type -> bundle.GetReconciliationListResp + 13, // 132: bundle.Bundle.CreateReconciliation:output_type -> bundle.CommonResponse + 13, // 133: bundle.Bundle.UpdateReconciliation:output_type -> bundle.CommonResponse + 13, // 134: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:output_type -> bundle.CommonResponse + 85, // 135: bundle.Bundle.ListUnfinishedInfos:output_type -> bundle.UnfinishedInfos + 13, // 136: bundle.Bundle.SoftDeleteUnfinishedInfo:output_type -> bundle.CommonResponse + 89, // 137: bundle.Bundle.GetPendingTaskList:output_type -> bundle.TaskQueryResponse + 13, // 138: bundle.Bundle.AssignTask:output_type -> bundle.CommonResponse + 13, // 139: bundle.Bundle.UpdatePendingCount:output_type -> bundle.CommonResponse + 94, // 140: bundle.Bundle.GetRecentAssignRecords:output_type -> bundle.RecentAssignRecordsResponse + 96, // 141: bundle.Bundle.GetEmployeeAssignedTasks:output_type -> bundle.EmployeeTaskQueryResponse + 13, // 142: bundle.Bundle.CompleteTaskManually:output_type -> bundle.CommonResponse + 13, // 143: bundle.Bundle.UpdateTaskProgress:output_type -> bundle.CommonResponse + 101, // 144: bundle.Bundle.GetTaskAssignRecordsList:output_type -> bundle.TaskAssignRecordsQueryResponse + 103, // 145: bundle.Bundle.GetArtistBundleBalance:output_type -> bundle.ArtistBundleBalanceResponse + 88, // [88:146] is the sub-list for method output_type + 30, // [30:88] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } func init() { file_pb_bundle_proto_init() } @@ -10698,6 +12449,198 @@ func file_pb_bundle_proto_init() { return nil } } + file_pb_bundle_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskManagementInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskAssignRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdatePendingCountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecentAssignRecordsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RecentAssignRecordsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EmployeeTaskQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EmployeeTaskQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskAssignRecordInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompleteTaskManuallyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateTaskProgressRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskAssignRecordsQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskAssignRecordsQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtistBundleBalanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtistBundleBalanceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -10705,7 +12648,7 @@ func file_pb_bundle_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_bundle_proto_rawDesc, NumEnums: 0, - NumMessages: 88, + NumMessages: 104, NumExtensions: 0, NumServices: 1, }, diff --git a/pb/bundle/bundle.validator.pb.go b/pb/bundle/bundle.validator.pb.go index 24c7d92..41ff596 100644 --- a/pb/bundle/bundle.validator.pb.go +++ b/pb/bundle/bundle.validator.pb.go @@ -466,3 +466,72 @@ func (this *UnfinishedInfo) Validate() error { func (this *SoftDeleteUnfinishedInfoRequest) Validate() error { return nil } +func (this *TaskQueryRequest) Validate() error { + return nil +} +func (this *TaskQueryResponse) Validate() error { + for _, item := range this.Tasks { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tasks", err) + } + } + } + return nil +} +func (this *TaskManagementInfo) Validate() error { + return nil +} +func (this *TaskAssignRequest) Validate() error { + return nil +} +func (this *UpdatePendingCountRequest) Validate() error { + return nil +} +func (this *RecentAssignRecordsRequest) Validate() error { + return nil +} +func (this *RecentAssignRecordsResponse) Validate() error { + return nil +} +func (this *EmployeeTaskQueryRequest) Validate() error { + return nil +} +func (this *EmployeeTaskQueryResponse) Validate() error { + for _, item := range this.Records { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Records", err) + } + } + } + return nil +} +func (this *TaskAssignRecordInfo) Validate() error { + return nil +} +func (this *CompleteTaskManuallyRequest) Validate() error { + return nil +} +func (this *UpdateTaskProgressRequest) Validate() error { + return nil +} +func (this *TaskAssignRecordsQueryRequest) Validate() error { + return nil +} +func (this *TaskAssignRecordsQueryResponse) Validate() error { + for _, item := range this.Records { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Records", err) + } + } + } + return nil +} +func (this *ArtistBundleBalanceRequest) Validate() error { + return nil +} +func (this *ArtistBundleBalanceResponse) Validate() error { + return nil +} diff --git a/pb/bundle/bundle_triple.pb.go b/pb/bundle/bundle_triple.pb.go index da5dc3c..cfe13a0 100644 --- a/pb/bundle/bundle_triple.pb.go +++ b/pb/bundle/bundle_triple.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-triple. DO NOT EDIT. // versions: // - protoc-gen-go-triple v1.0.8 -// - protoc v4.24.0--rc1 +// - protoc v3.21.1 // source: pb/bundle.proto package bundle @@ -50,11 +50,11 @@ type BundleClient interface { OrderRecordsListV2(ctx context.Context, in *OrderRecordsRequestV2, opts ...grpc_go.CallOption) (*OrderRecordsResponseV2, common.ErrorWithAttachment) OrderListByOrderNo(ctx context.Context, in *OrderInfoByOrderNoRequest, opts ...grpc_go.CallOption) (*OrderInfoByOrderNoResp, common.ErrorWithAttachment) OnlyAddValueListByOrderNo(ctx context.Context, in *OnlyAddValueListByOrderNoRequest, opts ...grpc_go.CallOption) (*OnlyAddValueListByOrderNoResp, common.ErrorWithAttachment) - //增值套餐 + // 增值套餐 CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment) ValueAddBundleDetail(ctx context.Context, in *ValueAddBundleDetailRequest, opts ...grpc_go.CallOption) (*ValueAddBundleDetailResponse, common.ErrorWithAttachment) - //新增值服务 + // 新增值服务 SaveValueAddService(ctx context.Context, in *ValueAddServiceLang, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment) ValueAddServiceList(ctx context.Context, in *ValueAddServiceListRequest, opts ...grpc_go.CallOption) (*ValueAddServiceListResponse, common.ErrorWithAttachment) ValueAddServiceDetail(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceDetailResponse, common.ErrorWithAttachment) @@ -75,7 +75,7 @@ type BundleClient interface { GetVedioWorkDetail(ctx context.Context, in *GetVedioWorkDetailReq, opts ...grpc_go.CallOption) (*GetVedioeWorkDetailResp, common.ErrorWithAttachment) ToBeComfirmedWorks(ctx context.Context, in *ToBeComfirmedWorksReq, opts ...grpc_go.CallOption) (*ToBeComfirmedWorksResp, common.ErrorWithAttachment) ConfirmWork(ctx context.Context, in *ConfirmWorkReq, opts ...grpc_go.CallOption) (*ConfirmWorkResp, common.ErrorWithAttachment) - //对账单 + // 对账单 GetReconciliationList(ctx context.Context, in *GetReconciliationListReq, opts ...grpc_go.CallOption) (*GetReconciliationListResp, common.ErrorWithAttachment) CreateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) UpdateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) @@ -83,6 +83,16 @@ type BundleClient interface { // 查出没处理的数据 ListUnfinishedInfos(ctx context.Context, in *AutoCreateUserAndOrderRequest, opts ...grpc_go.CallOption) (*UnfinishedInfos, common.ErrorWithAttachment) SoftDeleteUnfinishedInfo(ctx context.Context, in *SoftDeleteUnfinishedInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + // 任务台 + GetPendingTaskList(ctx context.Context, in *TaskQueryRequest, opts ...grpc_go.CallOption) (*TaskQueryResponse, common.ErrorWithAttachment) + AssignTask(ctx context.Context, in *TaskAssignRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + UpdatePendingCount(ctx context.Context, in *UpdatePendingCountRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + GetRecentAssignRecords(ctx context.Context, in *RecentAssignRecordsRequest, opts ...grpc_go.CallOption) (*RecentAssignRecordsResponse, common.ErrorWithAttachment) + GetEmployeeAssignedTasks(ctx context.Context, in *EmployeeTaskQueryRequest, opts ...grpc_go.CallOption) (*EmployeeTaskQueryResponse, common.ErrorWithAttachment) + CompleteTaskManually(ctx context.Context, in *CompleteTaskManuallyRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + UpdateTaskProgress(ctx context.Context, in *UpdateTaskProgressRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + GetTaskAssignRecordsList(ctx context.Context, in *TaskAssignRecordsQueryRequest, opts ...grpc_go.CallOption) (*TaskAssignRecordsQueryResponse, common.ErrorWithAttachment) + GetArtistBundleBalance(ctx context.Context, in *ArtistBundleBalanceRequest, opts ...grpc_go.CallOption) (*ArtistBundleBalanceResponse, common.ErrorWithAttachment) } type bundleClient struct { @@ -139,6 +149,15 @@ type BundleClientImpl struct { UpdateReconciliationStatusBySerialNumber func(ctx context.Context, in *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error) ListUnfinishedInfos func(ctx context.Context, in *AutoCreateUserAndOrderRequest) (*UnfinishedInfos, error) SoftDeleteUnfinishedInfo func(ctx context.Context, in *SoftDeleteUnfinishedInfoRequest) (*CommonResponse, error) + GetPendingTaskList func(ctx context.Context, in *TaskQueryRequest) (*TaskQueryResponse, error) + AssignTask func(ctx context.Context, in *TaskAssignRequest) (*CommonResponse, error) + UpdatePendingCount func(ctx context.Context, in *UpdatePendingCountRequest) (*CommonResponse, error) + GetRecentAssignRecords func(ctx context.Context, in *RecentAssignRecordsRequest) (*RecentAssignRecordsResponse, error) + GetEmployeeAssignedTasks func(ctx context.Context, in *EmployeeTaskQueryRequest) (*EmployeeTaskQueryResponse, error) + CompleteTaskManually func(ctx context.Context, in *CompleteTaskManuallyRequest) (*CommonResponse, error) + UpdateTaskProgress func(ctx context.Context, in *UpdateTaskProgressRequest) (*CommonResponse, error) + GetTaskAssignRecordsList func(ctx context.Context, in *TaskAssignRecordsQueryRequest) (*TaskAssignRecordsQueryResponse, error) + GetArtistBundleBalance func(ctx context.Context, in *ArtistBundleBalanceRequest) (*ArtistBundleBalanceResponse, error) } func (c *BundleClientImpl) GetDubboStub(cc *triple.TripleConn) BundleClient { @@ -447,6 +466,60 @@ func (c *bundleClient) SoftDeleteUnfinishedInfo(ctx context.Context, in *SoftDel return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SoftDeleteUnfinishedInfo", in, out) } +func (c *bundleClient) GetPendingTaskList(ctx context.Context, in *TaskQueryRequest, opts ...grpc_go.CallOption) (*TaskQueryResponse, common.ErrorWithAttachment) { + out := new(TaskQueryResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPendingTaskList", in, out) +} + +func (c *bundleClient) AssignTask(ctx context.Context, in *TaskAssignRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/AssignTask", in, out) +} + +func (c *bundleClient) UpdatePendingCount(ctx context.Context, in *UpdatePendingCountRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdatePendingCount", in, out) +} + +func (c *bundleClient) GetRecentAssignRecords(ctx context.Context, in *RecentAssignRecordsRequest, opts ...grpc_go.CallOption) (*RecentAssignRecordsResponse, common.ErrorWithAttachment) { + out := new(RecentAssignRecordsResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetRecentAssignRecords", in, out) +} + +func (c *bundleClient) GetEmployeeAssignedTasks(ctx context.Context, in *EmployeeTaskQueryRequest, opts ...grpc_go.CallOption) (*EmployeeTaskQueryResponse, common.ErrorWithAttachment) { + out := new(EmployeeTaskQueryResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetEmployeeAssignedTasks", in, out) +} + +func (c *bundleClient) CompleteTaskManually(ctx context.Context, in *CompleteTaskManuallyRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CompleteTaskManually", in, out) +} + +func (c *bundleClient) UpdateTaskProgress(ctx context.Context, in *UpdateTaskProgressRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateTaskProgress", in, out) +} + +func (c *bundleClient) GetTaskAssignRecordsList(ctx context.Context, in *TaskAssignRecordsQueryRequest, opts ...grpc_go.CallOption) (*TaskAssignRecordsQueryResponse, common.ErrorWithAttachment) { + out := new(TaskAssignRecordsQueryResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetTaskAssignRecordsList", in, out) +} + +func (c *bundleClient) GetArtistBundleBalance(ctx context.Context, in *ArtistBundleBalanceRequest, opts ...grpc_go.CallOption) (*ArtistBundleBalanceResponse, common.ErrorWithAttachment) { + out := new(ArtistBundleBalanceResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetArtistBundleBalance", in, out) +} + // BundleServer is the server API for Bundle service. // All implementations must embed UnimplementedBundleServer // for forward compatibility @@ -473,11 +546,11 @@ type BundleServer interface { OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) OrderListByOrderNo(context.Context, *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error) OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) - //增值套餐 + // 增值套餐 CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) ValueAddBundleDetail(context.Context, *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) - //新增值服务 + // 新增值服务 SaveValueAddService(context.Context, *ValueAddServiceLang) (*SaveResponse, error) ValueAddServiceList(context.Context, *ValueAddServiceListRequest) (*ValueAddServiceListResponse, error) ValueAddServiceDetail(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error) @@ -498,7 +571,7 @@ type BundleServer interface { GetVedioWorkDetail(context.Context, *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error) ToBeComfirmedWorks(context.Context, *ToBeComfirmedWorksReq) (*ToBeComfirmedWorksResp, error) ConfirmWork(context.Context, *ConfirmWorkReq) (*ConfirmWorkResp, error) - //对账单 + // 对账单 GetReconciliationList(context.Context, *GetReconciliationListReq) (*GetReconciliationListResp, error) CreateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error) UpdateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error) @@ -506,6 +579,16 @@ type BundleServer interface { // 查出没处理的数据 ListUnfinishedInfos(context.Context, *AutoCreateUserAndOrderRequest) (*UnfinishedInfos, error) SoftDeleteUnfinishedInfo(context.Context, *SoftDeleteUnfinishedInfoRequest) (*CommonResponse, error) + // 任务台 + GetPendingTaskList(context.Context, *TaskQueryRequest) (*TaskQueryResponse, error) + AssignTask(context.Context, *TaskAssignRequest) (*CommonResponse, error) + UpdatePendingCount(context.Context, *UpdatePendingCountRequest) (*CommonResponse, error) + GetRecentAssignRecords(context.Context, *RecentAssignRecordsRequest) (*RecentAssignRecordsResponse, error) + GetEmployeeAssignedTasks(context.Context, *EmployeeTaskQueryRequest) (*EmployeeTaskQueryResponse, error) + CompleteTaskManually(context.Context, *CompleteTaskManuallyRequest) (*CommonResponse, error) + UpdateTaskProgress(context.Context, *UpdateTaskProgressRequest) (*CommonResponse, error) + GetTaskAssignRecordsList(context.Context, *TaskAssignRecordsQueryRequest) (*TaskAssignRecordsQueryResponse, error) + GetArtistBundleBalance(context.Context, *ArtistBundleBalanceRequest) (*ArtistBundleBalanceResponse, error) mustEmbedUnimplementedBundleServer() } @@ -661,6 +744,33 @@ func (UnimplementedBundleServer) ListUnfinishedInfos(context.Context, *AutoCreat func (UnimplementedBundleServer) SoftDeleteUnfinishedInfo(context.Context, *SoftDeleteUnfinishedInfoRequest) (*CommonResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SoftDeleteUnfinishedInfo not implemented") } +func (UnimplementedBundleServer) GetPendingTaskList(context.Context, *TaskQueryRequest) (*TaskQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPendingTaskList not implemented") +} +func (UnimplementedBundleServer) AssignTask(context.Context, *TaskAssignRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AssignTask not implemented") +} +func (UnimplementedBundleServer) UpdatePendingCount(context.Context, *UpdatePendingCountRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdatePendingCount not implemented") +} +func (UnimplementedBundleServer) GetRecentAssignRecords(context.Context, *RecentAssignRecordsRequest) (*RecentAssignRecordsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRecentAssignRecords not implemented") +} +func (UnimplementedBundleServer) GetEmployeeAssignedTasks(context.Context, *EmployeeTaskQueryRequest) (*EmployeeTaskQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetEmployeeAssignedTasks not implemented") +} +func (UnimplementedBundleServer) CompleteTaskManually(context.Context, *CompleteTaskManuallyRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CompleteTaskManually not implemented") +} +func (UnimplementedBundleServer) UpdateTaskProgress(context.Context, *UpdateTaskProgressRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateTaskProgress not implemented") +} +func (UnimplementedBundleServer) GetTaskAssignRecordsList(context.Context, *TaskAssignRecordsQueryRequest) (*TaskAssignRecordsQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTaskAssignRecordsList not implemented") +} +func (UnimplementedBundleServer) GetArtistBundleBalance(context.Context, *ArtistBundleBalanceRequest) (*ArtistBundleBalanceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetArtistBundleBalance not implemented") +} func (s *UnimplementedBundleServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -2110,6 +2220,267 @@ func _Bundle_SoftDeleteUnfinishedInfo_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _Bundle_GetPendingTaskList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(TaskQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPendingTaskList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_AssignTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(TaskAssignRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("AssignTask", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_UpdatePendingCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePendingCountRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdatePendingCount", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_GetRecentAssignRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(RecentAssignRecordsRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetRecentAssignRecords", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_GetEmployeeAssignedTasks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(EmployeeTaskQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetEmployeeAssignedTasks", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_CompleteTaskManually_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CompleteTaskManuallyRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CompleteTaskManually", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_UpdateTaskProgress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateTaskProgressRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateTaskProgress", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_GetTaskAssignRecordsList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(TaskAssignRecordsQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetTaskAssignRecordsList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_GetArtistBundleBalance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ArtistBundleBalanceRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetArtistBundleBalance", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + // Bundle_ServiceDesc is the grpc_go.ServiceDesc for Bundle service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -2313,6 +2684,42 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "SoftDeleteUnfinishedInfo", Handler: _Bundle_SoftDeleteUnfinishedInfo_Handler, }, + { + MethodName: "GetPendingTaskList", + Handler: _Bundle_GetPendingTaskList_Handler, + }, + { + MethodName: "AssignTask", + Handler: _Bundle_AssignTask_Handler, + }, + { + MethodName: "UpdatePendingCount", + Handler: _Bundle_UpdatePendingCount_Handler, + }, + { + MethodName: "GetRecentAssignRecords", + Handler: _Bundle_GetRecentAssignRecords_Handler, + }, + { + MethodName: "GetEmployeeAssignedTasks", + Handler: _Bundle_GetEmployeeAssignedTasks_Handler, + }, + { + MethodName: "CompleteTaskManually", + Handler: _Bundle_CompleteTaskManually_Handler, + }, + { + MethodName: "UpdateTaskProgress", + Handler: _Bundle_UpdateTaskProgress_Handler, + }, + { + MethodName: "GetTaskAssignRecordsList", + Handler: _Bundle_GetTaskAssignRecordsList_Handler, + }, + { + MethodName: "GetArtistBundleBalance", + Handler: _Bundle_GetArtistBundleBalance_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, Metadata: "pb/bundle.proto", diff --git a/pkg/app/app.go b/pkg/app/app.go index 829ec33..dc369d0 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -3,7 +3,7 @@ package app import ( "github.com/bwmarrin/snowflake" "go.uber.org/zap" - "gorm.io/gorm" + "micro-bundle/pkg/db" "micro-bundle/pkg/tracing" ) @@ -13,6 +13,7 @@ type App struct { Lg *zap.Logger //RedisClient *redis.Client JaegerTracer *tracing.JaegerProvider - BundleDB *gorm.DB SfNode *snowflake.Node + BundleDB *db.BundleDB + TaskBenchDB *db.TaskBenchDB } diff --git a/pkg/db/bundleDB.go b/pkg/db/bundleDB.go index 8b7ea25..469beb9 100644 --- a/pkg/db/bundleDB.go +++ b/pkg/db/bundleDB.go @@ -8,12 +8,17 @@ import ( "gorm.io/gorm" ) +// 定义一个新的类型来区分BundleDB +type BundleDB struct { + *gorm.DB +} + var Provider = wire.NewSet(NewBundleDB) -func NewBundleDB() *gorm.DB { +func NewBundleDB() *BundleDB { connBundleDB := strings.Join([]string{bundleConfig.Data.BundleDB.User, ":", bundleConfig.Data.BundleDB.Password, "@tcp(", bundleConfig.Data.BundleDB.Host, ":", bundleConfig.Data.BundleDB.Port, ")/", bundleConfig.Data.BundleDB.DbName, "?charset=utf8mb4&parseTime=true&loc=Local"}, "") - DciDB := loadMysqlConn(connBundleDB) - return DciDB + db := loadMysqlConn(connBundleDB) + return &BundleDB{DB: db} } diff --git a/pkg/db/mysql.go b/pkg/db/mysql.go index c5dc0eb..d0d5872 100644 --- a/pkg/db/mysql.go +++ b/pkg/db/mysql.go @@ -1,6 +1,8 @@ package db import ( + "fmt" + "log" "time" "github.com/gin-gonic/gin" @@ -36,10 +38,13 @@ func loadMysqlConn(conn string) *gorm.DB { if err != nil { panic(err) } + fmt.Println("[BundleDB] 数据库连接成功, 连接字符串: %s", conn) sqlDB, _ := db.DB() sqlDB.SetMaxIdleConns(20) //设置连接池,空闲 sqlDB.SetMaxOpenConns(100) //打开 sqlDB.SetConnMaxLifetime(time.Second * 30) + + // Bundle数据库的自动迁移 err = db.AutoMigrate( &model.BundleProfile{}, &model.BundleOrderRecords{}, @@ -58,15 +63,60 @@ func loadMysqlConn(conn string) *gorm.DB { ) if err != nil { - return nil + // return nil + panic(err) } return db } +// TaskBench数据库的自动迁移函数 +func loadTaskBenchMysqlConn(conn string) *gorm.DB { + var ormLogger logger.Interface + if gin.Mode() == "debug" { + ormLogger = logger.Default.LogMode(logger.Info) + } else { + ormLogger = logger.Default + } + db, err := gorm.Open(mysql.New(mysql.Config{ + DSN: conn, + DefaultStringSize: 256, + DisableDatetimePrecision: true, + DontSupportRenameIndex: true, + DontSupportRenameColumn: true, + SkipInitializeWithVersion: false, + }), &gorm.Config{ + Logger: ormLogger, + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, + }, + DisableForeignKeyConstraintWhenMigrating: true, + }) + if err != nil { + panic(err) + } + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(20) + sqlDB.SetMaxOpenConns(100) + sqlDB.SetConnMaxLifetime(time.Second * 30) + + // 自动迁移任务管理台相关数据库表 + err = db.AutoMigrate( + &model.TaskManagement{}, + &model.TaskAssignRecords{}, + ) + + if err != nil { + log.Printf("[TaskBenchDB] 数据库迁移失败: %v", err) + panic(err) + } + + log.Printf("[TaskBenchDB] 数据库迁移成功,已创建表: task_management, task_assign_records") + return db +} + func DBMigration() { } func addColumn(dst interface{}, column string) { - return } diff --git a/pkg/db/taskBenchDB.go b/pkg/db/taskBenchDB.go new file mode 100644 index 0000000..67f5d6b --- /dev/null +++ b/pkg/db/taskBenchDB.go @@ -0,0 +1,24 @@ +package db + +import ( + bundleConfig "micro-bundle/config" + "strings" + + "github.com/google/wire" + "gorm.io/gorm" +) + +// 定义一个新的类型来区分TaskBenchDB +type TaskBenchDB struct { + *gorm.DB +} + +var TaskBenchProvider = wire.NewSet(NewTaskBenchDB) + +func NewTaskBenchDB() *TaskBenchDB { + connTaskBenchDB := strings.Join([]string{bundleConfig.Data.TaskBenchDB.User, ":", bundleConfig.Data.TaskBenchDB.Password, + "@tcp(", bundleConfig.Data.TaskBenchDB.Host, ":", bundleConfig.Data.TaskBenchDB.Port, ")/", + bundleConfig.Data.TaskBenchDB.DbName, "?charset=utf8mb4&parseTime=true&loc=Local"}, "") + db := loadTaskBenchMysqlConn(connTaskBenchDB) + return &TaskBenchDB{DB: db} +}