From 2b9e317444e990804bdc58474f38afa741bcbbaf Mon Sep 17 00:00:00 2001 From: songchuang <192749120@qq.com> Date: Mon, 17 Apr 2023 09:35:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E5=8D=95=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/app.go | 2 +- cmd/internal/controller/mgmt_statement.go | 174 +- cmd/internal/controller/statement.go | 64 + cmd/internal/dao/contract.go | 49 + cmd/internal/dao/mgmt_statement.go | 16 +- cmd/internal/dao/statement.go | 214 +- cmd/internal/logic/contract.go | 41 +- cmd/internal/logic/mgmt_statement.go | 476 ++-- cmd/internal/logic/statement.go | 419 ++- cmd/model/contract.go | 6 +- cmd/model/statement.go | 40 +- pb/artistinfoStatement/statement.pb.go | 2283 +++++++++++++++-- pb/artistinfoStatement/statement.proto | 249 +- .../statement.validator.pb.go | 111 +- pb/artistinfoStatement/statement_triple.pb.go | 370 ++- pb/contract/contract.pb.go | 392 +-- pb/contract/contract.proto | 4 +- pkg/util/utils.go | 12 + 18 files changed, 4018 insertions(+), 904 deletions(-) diff --git a/cmd/app.go b/cmd/app.go index 7d7ebca..c7fb662 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -23,7 +23,7 @@ func main() { config.SetProviderService(&controller.ArtistInfoArtshowProvider{}) config.SetProviderService(&controller.ArtistInfoContractProvider{}) config.SetConsumerService(&controller.ArtistInfoStatementProvider{}) - config.SetProviderService(&controller.MgmtStatementProvider{}) + // config.SetProviderService(&controller.MgmtStatementProvider{}) db.Init(m.SERVER_CONFIG) cache.InitRedis(m.SERVER_CONFIG) if err := config.Load(); err != nil { diff --git a/cmd/internal/controller/mgmt_statement.go b/cmd/internal/controller/mgmt_statement.go index e0b77b8..0686fa8 100644 --- a/cmd/internal/controller/mgmt_statement.go +++ b/cmd/internal/controller/mgmt_statement.go @@ -1,99 +1,99 @@ package controller -import ( - "context" +// import ( +// "context" - logic3 "github.com/fonchain/fonchain-artistinfo/cmd/internal/logic" - "github.com/fonchain/fonchain-artistinfo/pb/mgmtStatement" - "github.com/fonchain/fonchain-artistinfo/pkg/m" -) +// logic3 "github.com/fonchain/fonchain-artistinfo/cmd/internal/logic" +// "github.com/fonchain/fonchain-artistinfo/pb/mgmtStatement" +// "github.com/fonchain/fonchain-artistinfo/pkg/m" +// ) -type MgmtStatementProvider struct { - mgmtStatement.UnimplementedMgmtStatementServer - mgmtStatementLogic *logic3.MgmtStatement -} +// type MgmtStatementProvider struct { +// mgmtStatement.UnimplementedMgmtStatementServer +// mgmtStatementLogic *logic3.MgmtStatement +// } -//通过excel获得批次数据 -func (a *MgmtStatementProvider) AddBatchDetail(ctx context.Context, in *mgmtStatement.AddBatchDetailreq) (resp *mgmtStatement.AddBatchDetailres, err error) { - resp = &mgmtStatement.AddBatchDetailres{} - err = nil - if resp, err = a.mgmtStatementLogic.AddBatchDetail(in); err != nil { - return - } - resp.Msg = m.CREATE_SUCCESS - return -} +// // 通过excel获得批次数据 +// func (a *MgmtStatementProvider) AddBatchDetail(ctx context.Context, in *mgmtStatement.AddBatchDetailreq) (resp *mgmtStatement.AddBatchDetailres, err error) { +// resp = &mgmtStatement.AddBatchDetailres{} +// err = nil +// if resp, err = a.mgmtStatementLogic.AddBatchDetail(in); err != nil { +// return +// } +// resp.Msg = m.CREATE_SUCCESS +// return +// } -//通过excel导入数据存入数据库(附件一) -func (a *MgmtStatementProvider) UploadExcelOne(ctx context.Context, in *mgmtStatement.UploadExcelOnereq) (resp *mgmtStatement.UploadExcelOneres, err error) { - resp = &mgmtStatement.UploadExcelOneres{} - err = nil - if resp, err = a.mgmtStatementLogic.UploadExcelOne(in); err != nil { - return - } - resp.Msg = m.CREATE_SUCCESS - return -} +// // 通过excel导入数据存入数据库(附件一) +// func (a *MgmtStatementProvider) UploadExcelOne(ctx context.Context, in *mgmtStatement.UploadExcelOnereq) (resp *mgmtStatement.UploadExcelOneres, err error) { +// resp = &mgmtStatement.UploadExcelOneres{} +// err = nil +// if resp, err = a.mgmtStatementLogic.UploadExcelOne(in); err != nil { +// return +// } +// resp.Msg = m.CREATE_SUCCESS +// return +// } -//通过excel导入数据存入数据库(附件二) -func (a *MgmtStatementProvider) UploadExcelTwo(ctx context.Context, in *mgmtStatement.UploadExcelTworeq) (resp *mgmtStatement.UploadExcelTwores, err error) { - resp = &mgmtStatement.UploadExcelTwores{} - err = nil - if resp, err = a.mgmtStatementLogic.UploadExcelTwo(in); err != nil { - return - } - resp.Msg = m.CREATE_SUCCESS - return -} +// // 通过excel导入数据存入数据库(附件二) +// func (a *MgmtStatementProvider) UploadExcelTwo(ctx context.Context, in *mgmtStatement.UploadExcelTworeq) (resp *mgmtStatement.UploadExcelTwores, err error) { +// resp = &mgmtStatement.UploadExcelTwores{} +// err = nil +// if resp, err = a.mgmtStatementLogic.UploadExcelTwo(in); err != nil { +// return +// } +// resp.Msg = m.CREATE_SUCCESS +// return +// } -//画家对账单列表 -func (a *MgmtStatementProvider) ArtistStatementList(ctx context.Context, in *mgmtStatement.ArtistStatementListreq) (resp *mgmtStatement.ArtistStatementListres, err error) { - resp = &mgmtStatement.ArtistStatementListres{} - err = nil - if resp, err = a.mgmtStatementLogic.ArtistStatementList(in); err != nil { - return - } - resp.Msg = m.SUCCESS - return -} +// // 画家对账单列表 +// func (a *MgmtStatementProvider) ArtistStatementList(ctx context.Context, in *mgmtStatement.ArtistStatementListreq) (resp *mgmtStatement.ArtistStatementListres, err error) { +// resp = &mgmtStatement.ArtistStatementListres{} +// err = nil +// if resp, err = a.mgmtStatementLogic.ArtistStatementList(in); err != nil { +// return +// } +// resp.Msg = m.SUCCESS +// return +// } -//画作对账单列表 -func (a *MgmtStatementProvider) ArtStatementList(ctx context.Context, in *mgmtStatement.ArtStatementListreq) (resp *mgmtStatement.ArtStatementListres, err error) { - resp = &mgmtStatement.ArtStatementListres{} - err = nil - if resp, err = a.mgmtStatementLogic.ArtStatementList(in); err != nil { - return - } - resp.Msg = m.SUCCESS - return -} +// // 画作对账单列表 +// func (a *MgmtStatementProvider) ArtStatementList(ctx context.Context, in *mgmtStatement.ArtStatementListreq) (resp *mgmtStatement.ArtStatementListres, err error) { +// resp = &mgmtStatement.ArtStatementListres{} +// err = nil +// if resp, err = a.mgmtStatementLogic.ArtStatementList(in); err != nil { +// return +// } +// resp.Msg = m.SUCCESS +// return +// } -//更新对账单状态 -func (a *MgmtStatementProvider) UpdateState(ctx context.Context, in *mgmtStatement.UpdateStatementreq) (resp *mgmtStatement.UpdateStatementres, err error) { - resp = &mgmtStatement.UpdateStatementres{} - if err = a.mgmtStatementLogic.UpdateState(in); err != nil { - return - } - resp.Msg = m.UPDATE_SUCCESS - return -} +// // 更新对账单状态 +// func (a *MgmtStatementProvider) UpdateState(ctx context.Context, in *mgmtStatement.UpdateStatementreq) (resp *mgmtStatement.UpdateStatementres, err error) { +// resp = &mgmtStatement.UpdateStatementres{} +// if err = a.mgmtStatementLogic.UpdateState(in); err != nil { +// return +// } +// resp.Msg = m.UPDATE_SUCCESS +// return +// } -//导出合同 -func (a *MgmtStatementProvider) ExportContract(ctx context.Context, in *mgmtStatement.ExportContractreq) (resp *mgmtStatement.ExportContractres, err error) { - resp = &mgmtStatement.ExportContractres{} - err = nil - if resp, err = a.mgmtStatementLogic.ExportContract(in); err != nil { - return - } - return -} +// // 导出合同 +// func (a *MgmtStatementProvider) ExportContract(ctx context.Context, in *mgmtStatement.ExportContractreq) (resp *mgmtStatement.ExportContractres, err error) { +// resp = &mgmtStatement.ExportContractres{} +// err = nil +// if resp, err = a.mgmtStatementLogic.ExportContract(in); err != nil { +// return +// } +// return +// } -//生成管理系统合同 -func (a *MgmtStatementProvider) CreateTxContract(ctx context.Context, in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) { - resp = &mgmtStatement.CreateTxContractres{} - err = nil - if resp, err = a.mgmtStatementLogic.CreateTxContract(in); err != nil { - return - } - return -} +// // 生成管理系统合同 +// func (a *MgmtStatementProvider) CreateTxContract(ctx context.Context, in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) { +// resp = &mgmtStatement.CreateTxContractres{} +// err = nil +// if resp, err = a.mgmtStatementLogic.CreateTxContract(in); err != nil { +// return +// } +// return +// } diff --git a/cmd/internal/controller/statement.go b/cmd/internal/controller/statement.go index deb5b31..cb24b92 100644 --- a/cmd/internal/controller/statement.go +++ b/cmd/internal/controller/statement.go @@ -13,6 +13,70 @@ type ArtistInfoStatementProvider struct { statementLogic *logic.Statement } +func (c *ArtistInfoStatementProvider) UploadExcelOneTx(ctx context.Context, req *statement.UploadExcelOneTxRequest) (rep *statement.UploadExcelOneTxRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.UploadExcelOneTx(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) UploadExcelTwoTx(ctx context.Context, req *statement.UploadExcelTwoTxRequest) (rep *statement.UploadExcelTwoTxRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.UploadExcelTwoTx(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) UploadExcelOneCopy(ctx context.Context, req *statement.UploadExcelOneCopyRequest) (rep *statement.UploadExcelOneCopyRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.UploadExcelOneCopy(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) UploadExcelTwoCopy(ctx context.Context, req *statement.UploadExcelTwoCopyRequest) (rep *statement.UploadExcelTwoCopyRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.UploadExcelTwoCopy(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) GetAllBatchTimeTx(ctx context.Context, req *statement.GetAllBatchTimeTxRequest) (rep *statement.GetAllBatchTimeTxRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.GetAllBatchTimeTx(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) GetAllBatchTimeCopy(ctx context.Context, req *statement.GetAllBatchTimeCopyRequest) (rep *statement.GetAllBatchTimeCopyRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.GetAllBatchTimeCopy(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) GetArtworkSoldTxDetailList(ctx context.Context, req *statement.GetArtworkSoldTxDetailListRequest) (rep *statement.GetArtworkSoldTxDetailListRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.GetArtworkSoldTxDetailList(req); err != nil { + return nil, err + } + return rep, nil +} + +func (c *ArtistInfoStatementProvider) GetArtworkSoldCopyDetailList(ctx context.Context, req *statement.GetArtworkSoldCopyDetailListRequest) (rep *statement.GetArtworkSoldCopyDetailListRespond, err error) { + fmt.Println("第一处") + if rep, err = c.statementLogic.GetArtworkSoldCopyDetailList(req); err != nil { + return nil, err + } + return rep, nil +} + func (c *ArtistInfoStatementProvider) StatementList(ctx context.Context, req *statement.StatementListRequest) (rep *statement.StatementListRespond, err error) { fmt.Println("第一处") if rep, err = c.statementLogic.StatementList(req); err != nil { diff --git a/cmd/internal/dao/contract.go b/cmd/internal/dao/contract.go index cdf1397..656513a 100644 --- a/cmd/internal/dao/contract.go +++ b/cmd/internal/dao/contract.go @@ -95,6 +95,46 @@ func CreateArtworkContract(tx *gorm.DB, artworkUid []string, artistUid string, c return } +func StatementContractNo(artistUid, batchUid string) (err error) { + //画作有合同类型是2,6的都是 点击过"著作权代理转让服务合同"的 + var contract model.Contract + if err = db.DB.Where("artist_uid = ? AND batch_uid = ?", artistUid, batchUid).First(&contract).Error; err != nil && err != gorm.ErrRecordNotFound { + zap.L().Error("get contract info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + + //err 为空则查询到,返回画作合同已存在的错误 + if err == nil { + err = errors.New(m.ARTWORK_CONTRACT_EXISTS) + } + + return +} + +func CreateStatementContract(tx *gorm.DB, artistUid, batchUid, batchTime string, contractType int32) (err error) { + var uid uuid.UUID + if uid, err = uuid.NewV4(); err != nil { + err = errors.New(m.ERROR_UID) + return + } + + contract := &model.Contract{ + Uid: uid.String(), + ArtistUid: artistUid, + Type: contractType, + BatchTime: batchTime, + BatchUid: batchUid, + } + if err = tx.Create(contract).Error; err != nil { + zap.L().Error("create contract err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + func GetArtistNoByUid(artistUid string) (err error) { var user model.User if err = db.DB.Where("mgmt_artist_uid = ?", artistUid).First(&user).Error; err != nil { @@ -286,6 +326,15 @@ func ContractTxList(uid string, state int32) (contracts []model.Contract, err er } +func GetContractUrlTx(batchUid string) (contract model.Contract, err error) { + if err = db.DB.Where("batch_uid = ?", batchUid).First(&contract).Error; err != nil { + zap.L().Error("get contract info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + return +} + // func UpdateArtworkState(tx *gorm.DB, id int32) (err error) { //无用 // var artworkState model.ArtworkState // if err = tx.Where("artwork_id = ? and state = ? ", id, 7).First(&artworkState).Error; err != nil { diff --git a/cmd/internal/dao/mgmt_statement.go b/cmd/internal/dao/mgmt_statement.go index 175cb35..c2619e4 100644 --- a/cmd/internal/dao/mgmt_statement.go +++ b/cmd/internal/dao/mgmt_statement.go @@ -10,7 +10,7 @@ import ( "go.uber.org/zap" ) -//通过excel获得批次数据到数据库 +// 通过excel获得批次数据到数据库 func AddBatchDetail(batch *model.ArtworkTx) (err error) { tx := db.DB.Begin() if tx.Error != nil { @@ -27,7 +27,7 @@ func AddBatchDetail(batch *model.ArtworkTx) (err error) { return } -//通过excel获得数据创建数据到数据库(附件一) +// 通过excel获得数据创建数据到数据库(附件一) func UploadExcelOne(statement *model.ArtworkSoldTxDetail) (err error) { tx := db.DB.Begin() if tx.Error != nil { @@ -44,7 +44,7 @@ func UploadExcelOne(statement *model.ArtworkSoldTxDetail) (err error) { return } -//通过excel获得数据创建数据到数据库(附件二) +// 通过excel获得数据创建数据到数据库(附件二) func UploadExcelTwo(statement *model.ArtworkSoldTxDetail) (err error) { tx := db.DB.Begin() if tx.Error != nil { @@ -61,7 +61,7 @@ func UploadExcelTwo(statement *model.ArtworkSoldTxDetail) (err error) { return } -//画家对账单列表 +// 画家对账单列表 func ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (statement []*model.ArtworkSoldTxDetail, count int64, err error) { offset := (in.Page - 1) * in.PageSize db := db.DB.Model(&statement).Select("artist_uid, artist_name, batch_time, view_url, download_url").Where("st_type = ?", in.StType) @@ -81,7 +81,7 @@ func ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (statement [] return } -//画作基于批次和画家的对账单列表 +// 画作基于批次和画家的对账单列表 func ArtStatementList(in *mgmtStatement.ArtStatementListreq) (statement []*model.ArtworkSoldTxDetail, count int64, err error) { offset := (in.Page - 1) * in.PageSize db := db.DB.Model(&statement).Table("").Select("artwork_name, tf_num, ruler, sale_no, min_price").Where("st_type = ?", in.StType) @@ -101,7 +101,7 @@ func ArtStatementList(in *mgmtStatement.ArtStatementListreq) (statement []*model return } -//更新对账单状态 +// 更新对账单状态 func UpdateState(StatementUid string, columns map[string]interface{}) (err error) { if err = db.DB.Model(&model.ArtworkSoldTxDetail{}).Where("StatementUid = ? ", StatementUid).Updates(columns).Error; err != nil { err = errors.New(m.ERROR_UPDATE_STATEMENT) @@ -109,7 +109,7 @@ func UpdateState(StatementUid string, columns map[string]interface{}) (err error return } -//导出合同 +// 导出合同 func ExportContract(in *mgmtStatement.ExportContractreq) (data []*model.Contract, count int64, err error) { offset := (in.Page - 1) * in.PageSize db := db.DB.Model(&data).Select("artist_uid, view_url, download_url, batch_time").Where("st_type = ?", in.StType) @@ -129,7 +129,7 @@ func ExportContract(in *mgmtStatement.ExportContractreq) (data []*model.Contract return } -//生成合同 +// 生成合同 func CreateTxContract(contract *model.Contract) (err error) { tx := db.DB.Begin() if tx.Error != nil { diff --git a/cmd/internal/dao/statement.go b/cmd/internal/dao/statement.go index de14d3e..4b85e9f 100644 --- a/cmd/internal/dao/statement.go +++ b/cmd/internal/dao/statement.go @@ -8,12 +8,224 @@ import ( db "github.com/fonchain/fonchain-artistinfo/pkg/db" "github.com/fonchain/fonchain-artistinfo/pkg/m" "go.uber.org/zap" + "gorm.io/gorm" ) +func IsExistArtworkTx(batchTime, artistUid string) (exist bool, artworkTx *model.ArtworkTx, err error) { + + if err = db.DB.Where("batch_time = ? AND artist_uid = ?", batchTime, artistUid).First(&artworkTx).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return true, nil, nil + } else { + zap.L().Error("get artworkTx info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + } + + return +} + +func IsExistArtworkCopy(batchTime, artistUid string) (exist bool, artworkCopy *model.ArtworkCopy, err error) { + + if err = db.DB.Where("batch_time = ? AND artist_uid = ?", batchTime, artistUid).First(&artworkCopy).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return true, nil, nil + } else { + zap.L().Error("get artworkCopy info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + } + + return +} + +func CreateArtworkTx(tx *gorm.DB, uid, batchTime, artistUid, asrtistName string) (err error) { + artworkTx := &model.ArtworkTx{ + Uid: uid, + ArtistUid: artistUid, + ArtistName: asrtistName, + BatchTime: batchTime, + } + + if err = tx.Create(&artworkTx).Error; err != nil { + zap.L().Error("create artworkTx err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + +func CreateArtworkCopy(tx *gorm.DB, uid, batchTime, artistUid, asrtistName string) (err error) { + artworkCopy := &model.ArtworkCopy{ + Uid: uid, + ArtistUid: artistUid, + ArtistName: asrtistName, + BatchTime: batchTime, + } + + if err = tx.Create(&artworkCopy).Error; err != nil { + zap.L().Error("create artworkCopy err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + +func CreateArtworkTxDetail(tx *gorm.DB, uid1, uid2 string, excelOneInfo *statement.ExcelOneInfo) (err error) { + artworkTxDetail := &model.ArtworkTxDetail{ + Uid: uid2, + BatchUid: uid1, + TfNum: excelOneInfo.TfNum, + ArtworkName: excelOneInfo.ArtistName, + Ruler: excelOneInfo.Ruler, + MinPrice: excelOneInfo.MinPrice, + GuaranteePrice: excelOneInfo.GuaranteePrice, + } + + if err = tx.Create(&artworkTxDetail).Error; err != nil { + zap.L().Error("create artworkTxDetail err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + +func CreateArtworkCopyDetail(tx *gorm.DB, uid1, uid2 string, excelOneInfo *statement.ExcelOneInfo) (err error) { + artworkCopyDetail := &model.ArtworkCopyDetail{ + Uid: uid2, + BatchUid: uid1, + TfNum: excelOneInfo.TfNum, + ArtworkName: excelOneInfo.ArtistName, + Ruler: excelOneInfo.Ruler, + MinPrice: excelOneInfo.MinPrice, + GuaranteePrice: excelOneInfo.GuaranteePrice, + } + + if err = tx.Create(&artworkCopyDetail).Error; err != nil { + zap.L().Error("create artworkCopyDetail err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + +func CreateArtworkSoldTxDetail(tx *gorm.DB, uid1, uid2 string, excelTwoInfo *statement.ExcelTwoInfo) (err error) { + artworkSoldTxDetail := &model.ArtworkSoldTxDetail{ + Uid: uid2, + BatchUid: uid1, //批次uid + TfNum: excelTwoInfo.TfNum, + ArtworkName: excelTwoInfo.ArtistName, + Ruler: excelTwoInfo.Ruler, + SaleNo: excelTwoInfo.SaleNo, + CompleteDate: excelTwoInfo.CompleteDate, + SalePrice: excelTwoInfo.SalePrice, + } + + if err = tx.Create(&artworkSoldTxDetail).Error; err != nil { + zap.L().Error("create artworkSoldTxDetail err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + +func CreateArtworkSoldCopyDetail(tx *gorm.DB, uid1, uid2 string, excelTwoInfo *statement.ExcelTwoInfo) (err error) { + artworkSoldCopyDetail := &model.ArtworkSoldCopyDetail{ + Uid: uid2, + BatchUid: uid1, //批次uid + TfNum: excelTwoInfo.TfNum, + ArtworkName: excelTwoInfo.ArtistName, + Ruler: excelTwoInfo.Ruler, + SaleNo: excelTwoInfo.SaleNo, + CompleteDate: excelTwoInfo.CompleteDate, + SalePrice: excelTwoInfo.SalePrice, + } + + if err = tx.Create(&artworkSoldCopyDetail).Error; err != nil { + zap.L().Error("create artworkSoldCopyDetail err", zap.Error(err)) + err = errors.New(m.CREATE_ERROR) + return + } + + return +} + +func GetAllBatchTimeTx() (batchTime []string, err error) { + if err = db.DB.Where("DISTINCT batch_time").Find(&model.ArtworkTx{}).Pluck("batch_time", &batchTime).Error; err != nil { + zap.L().Error("get artworkTxList info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + return +} + +func GetAllBatchTimeCopy() (batchTime []string, err error) { + if err = db.DB.Where("DISTINCT batch_time").Find(&model.ArtworkCopy{}).Pluck("batch_time", &batchTime).Error; err != nil { + zap.L().Error("get artworkTxList info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + return +} + +func GetArtworkTxList(query *gorm.DB, num, offset int32) (artworkTxList []model.ArtworkTx, err error) { + if err = query.Model(&artworkTxList).Order("ID asc").Limit(int(num)).Offset(int(offset)).Error; err != nil { + zap.L().Error("get artworkTxList info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + return +} + +func GetArtworkCopyList(query *gorm.DB, num, offset int32) (artworkCopyList []model.ArtworkCopy, err error) { + if err = query.Model(&artworkCopyList).Order("ID asc").Limit(int(num)).Offset(int(offset)).Error; err != nil { + zap.L().Error("get artworkCopyList info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + return +} + +func GetArtworkSoldTxDetailList(batchUid string) (artworkSoldTxDetail []model.ArtworkSoldTxDetail, err error) { + if err = db.DB.Where("batch_uid = ?", batchUid).Find(&artworkSoldTxDetail).Error; err != nil { + zap.L().Error("get artworkSoldTxDetail info err", zap.Error(err)) + err = errors.New(m.ERROR_SELECT) + return + } + return +} + +func UpdateArtworkTxStatus(tx *gorm.DB, batchUid string, state int32) (err error) { + if err = tx.Model(&model.ArtworkTx{}).Where("uid = ?", batchUid).Update("state", 2).Error; err != nil { + zap.L().Error("update artworkTx info err", zap.Error(err)) + err = errors.New(m.UPDATE_FAILED) + return + } + + return +} + +func UpdateArtworkCopyStatus(tx *gorm.DB, batchUid string, state int32) (err error) { + if err = tx.Model(&model.ArtworkCopy{}).Where("uid = ?", batchUid).Update("state", 2).Error; err != nil { + zap.L().Error("update artworkCopy info err", zap.Error(err)) + err = errors.New(m.UPDATE_FAILED) + return + } + + return +} + func StatementList(artistUid string, state int32) (contractData []*statement.Contracts, err error) { var contracts []model.Contract - if err = db.DB.Where("artist_uid = ? AND state = ?", artistUid, state).Where("type == 4 OR type == 7").Find(&contracts).Error; err != nil { + if err = db.DB.Where("artist_uid = ? AND state = ? AND (type == 4 OR type == 7)", artistUid, state).Find(&contracts).Error; err != nil { zap.L().Error("get contracts info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return diff --git a/cmd/internal/logic/contract.go b/cmd/internal/logic/contract.go index 3ae5118..e36419a 100644 --- a/cmd/internal/logic/contract.go +++ b/cmd/internal/logic/contract.go @@ -78,7 +78,6 @@ func (a *Contract) CreateContract(req *contract.CreateContractRequest) (rep *con return } } else { - fmt.Println("第一处112") return } @@ -128,6 +127,26 @@ func (a *Contract) CreateContract(req *contract.CreateContractRequest) (rep *con } } + //这里是对账单的物权合同!!!注意!!! + case 4: + //查看画家该批次是否已经有了合同,没有继续 + if err = dao.StatementContractNo(req.ArtistUid, req.BatchUid); err == gorm.ErrRecordNotFound { + } else { + return + } + + //创建物权合同,类型4 + if err = dao.CreateStatementContract(tx, req.ArtistUid, req.BatchUid, req.BatchTime, 4); err != nil { + tx.Rollback() + return + } + + //修改对账单,将State状态值改为2 + if err = dao.UpdateArtworkTxStatus(tx, req.BatchUid, 2); err != nil { + tx.Rollback() + return + } + case 5: for _, v := range req.ArtworkUid { //查看画作合同是否已经存在,不存在继续,类型5 @@ -146,6 +165,25 @@ func (a *Contract) CreateContract(req *contract.CreateContractRequest) (rep *con } } + //这里是对账单的物权合同!!!注意!!! + case 7: + //查看画家该批次是否已经有了合同,没有继续 + if err = dao.StatementContractNo(req.ArtistUid, req.BatchUid); err == gorm.ErrRecordNotFound { + } else { + return + } + + //创建物权合同,类型4 + if err = dao.CreateStatementContract(tx, req.ArtistUid, req.BatchUid, req.BatchTime, 7); err != nil { + tx.Rollback() + return + } + + //修改对账单,将State状态值改为2 + if err = dao.UpdateArtworkCopyStatus(tx, req.BatchUid, 2); err != nil { + tx.Rollback() + return + } default: err = errors.New("type值出错!") return rep, err @@ -271,7 +309,6 @@ func (a *Contract) GetContractInfoByContractUid(req *contract.GetContractInfoByC SignTime: contractInfo.SignTime, BatchTime: contractInfo.BatchTime, BatchUid: contractInfo.BatchUid, - StType: contractInfo.StType, } rep.Data = contract diff --git a/cmd/internal/logic/mgmt_statement.go b/cmd/internal/logic/mgmt_statement.go index 8b45816..4daf278 100644 --- a/cmd/internal/logic/mgmt_statement.go +++ b/cmd/internal/logic/mgmt_statement.go @@ -1,260 +1,258 @@ package logic -import ( - "errors" +// import ( +// "errors" - "github.com/fonchain/fonchain-artistinfo/cmd/internal/dao" - "github.com/fonchain/fonchain-artistinfo/cmd/model" - "github.com/fonchain/fonchain-artistinfo/pb/mgmtStatement" - db "github.com/fonchain/fonchain-artistinfo/pkg/db" - "github.com/fonchain/fonchain-artistinfo/pkg/m" - uuid "github.com/satori/go.uuid" -) +// "github.com/fonchain/fonchain-artistinfo/cmd/internal/dao" +// "github.com/fonchain/fonchain-artistinfo/cmd/model" +// "github.com/fonchain/fonchain-artistinfo/pb/mgmtStatement" +// db "github.com/fonchain/fonchain-artistinfo/pkg/db" +// "github.com/fonchain/fonchain-artistinfo/pkg/m" +// uuid "github.com/satori/go.uuid" +// ) -type IMgmtStatement interface { - AddBatchDetail(in *mgmtStatement.AddBatchDetailreq) (*mgmtStatement.AddBatchDetailres, error) - UploadExcelOne(in *mgmtStatement.UploadExcelOnereq) (*mgmtStatement.UploadExcelOneres, error) - UploadExcelTwo(in *mgmtStatement.UploadExcelTworeq) (*mgmtStatement.UploadExcelTwores, error) - ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (*mgmtStatement.ArtistStatementListres, error) - ArtStatementList(in *mgmtStatement.ArtStatementListreq) (*mgmtStatement.ArtStatementListres, error) - ExportContract(in *mgmtStatement.ExportContractreq) (*mgmtStatement.ExportContractres, error) - UpdateState(in *mgmtStatement.UpdateStatementreq) error - CreateTxContract(in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) -} +// type IMgmtStatement interface { +// AddBatchDetail(in *mgmtStatement.AddBatchDetailreq) (*mgmtStatement.AddBatchDetailres, error) +// UploadExcelOne(in *mgmtStatement.UploadExcelOnereq) (*mgmtStatement.UploadExcelOneres, error) +// UploadExcelTwo(in *mgmtStatement.UploadExcelTworeq) (*mgmtStatement.UploadExcelTwores, error) +// ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (*mgmtStatement.ArtistStatementListres, error) +// ArtStatementList(in *mgmtStatement.ArtStatementListreq) (*mgmtStatement.ArtStatementListres, error) +// ExportContract(in *mgmtStatement.ExportContractreq) (*mgmtStatement.ExportContractres, error) +// UpdateState(in *mgmtStatement.UpdateStatementreq) error +// CreateTxContract(in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) +// } -func NewMgmtStatement() IMgmtStatement { - return &MgmtStatement{} -} +// func NewMgmtStatement() IMgmtStatement { +// return &MgmtStatement{} +// } -type MgmtStatement struct{} +// type MgmtStatement struct{} -//通过excel生成一条批次数据 -func (a *MgmtStatement) AddBatchDetail(in *mgmtStatement.AddBatchDetailreq) (resp *mgmtStatement.AddBatchDetailres, err error) { - resp = &mgmtStatement.AddBatchDetailres{} - var uid uuid.UUID - if uid, err = uuid.NewV4(); err != nil { - err = errors.New(m.ERROR_UID) - return - } - if err != nil { - return nil, err - } - var data model.ArtworkTx - data.Uid = uid.String() - data.ArtistName = in.ArtistName - data.ArtistUid = in.ArtistUid - data.BatchTime = in.BatchTime - data.StType = in.StType //对账单类型:1=版权 2=物权 - data.Status = 1 //对账单状态 1.未签署 2.已发送未签署 3.已签署 - if err = dao.AddBatchDetail(&data); err != nil { - return - } - respData := &mgmtStatement.AddBatchRes{BatchUid: data.Uid} - resp.Data = respData - return -} +// // 通过excel生成一条批次数据 +// func (a *MgmtStatement) AddBatchDetail(in *mgmtStatement.AddBatchDetailreq) (resp *mgmtStatement.AddBatchDetailres, err error) { +// resp = &mgmtStatement.AddBatchDetailres{} +// var uid uuid.UUID +// if uid, err = uuid.NewV4(); err != nil { +// err = errors.New(m.ERROR_UID) +// return +// } +// if err != nil { +// return nil, err +// } +// var data model.ArtworkTx +// data.Uid = uid.String() +// data.ArtistName = in.ArtistName +// data.ArtistUid = in.ArtistUid +// data.BatchTime = in.BatchTime +// if err = dao.AddBatchDetail(&data); err != nil { +// return +// } +// respData := &mgmtStatement.AddBatchRes{BatchUid: data.Uid} +// resp.Data = respData +// return +// } -//生成一条对账单记录(附件一) -func (a *MgmtStatement) UploadExcelOne(in *mgmtStatement.UploadExcelOnereq) (resp *mgmtStatement.UploadExcelOneres, err error) { - resp = &mgmtStatement.UploadExcelOneres{} - var uid uuid.UUID - if uid, err = uuid.NewV4(); err != nil { - err = errors.New(m.ERROR_UID) - return - } - if err != nil { - return nil, err - } - var data model.ArtworkSoldTxDetail //物权版权的对账单 +// // 生成一条对账单记录(附件一) +// func (a *MgmtStatement) UploadExcelOne(in *mgmtStatement.UploadExcelOnereq) (resp *mgmtStatement.UploadExcelOneres, err error) { +// resp = &mgmtStatement.UploadExcelOneres{} +// var uid uuid.UUID +// if uid, err = uuid.NewV4(); err != nil { +// err = errors.New(m.ERROR_UID) +// return +// } +// if err != nil { +// return nil, err +// } +// var data model.ArtworkSoldTxDetail //物权版权的对账单 - sqlSelect := `select uid from artwork_tx where artistid = ? and batchtime = ?` - var batchid string - if err := db.DB.Raw(sqlSelect, data.ArtistUid, data.BatchTime).Find(&batchid).Error; err != nil { - return nil, err - } +// sqlSelect := `select uid from artwork_tx where artistid = ? and batchtime = ?` +// var batchid string +// if err := db.DB.Raw(sqlSelect, data.ArtistUid, data.BatchTime).Find(&batchid).Error; err != nil { +// return nil, err +// } - data.Uid = uid.String() - data.BatchUid = batchid - data.ArtworkName = in.ArtworkName - data.ArtistName = in.ArtistName - data.ArtistUid = in.ArtistUid - data.TfNum = in.TfNum - data.BatchTime = in.BatchTime - data.GuaranteePrice = in.GuaranteePrice - data.Ruler = in.Ruler - data.MinPrice = in.MinPrice - data.StType = in.StType //对账单类型:1=版权 2=物权 - if err = dao.UploadExcelOne(&data); err != nil { - return - } - respData := &mgmtStatement.StatementAddRes{StatementUid: data.Uid} - resp.Data = respData - return -} +// data.Uid = uid.String() +// data.BatchUid = batchid +// data.ArtworkName = in.ArtworkName +// data.ArtistName = in.ArtistName +// data.ArtistUid = in.ArtistUid +// data.TfNum = in.TfNum +// data.BatchTime = in.BatchTime +// data.GuaranteePrice = in.GuaranteePrice +// data.Ruler = in.Ruler +// data.MinPrice = in.MinPrice +// data.StType = in.StType //对账单类型:1=版权 2=物权 +// if err = dao.UploadExcelOne(&data); err != nil { +// return +// } +// respData := &mgmtStatement.StatementAddRes{StatementUid: data.Uid} +// resp.Data = respData +// return +// } -//生成一条对账单记录(附件二) -func (a *MgmtStatement) UploadExcelTwo(in *mgmtStatement.UploadExcelTworeq) (resp *mgmtStatement.UploadExcelTwores, err error) { - resp = &mgmtStatement.UploadExcelTwores{} - var uid uuid.UUID - if uid, err = uuid.NewV4(); err != nil { - err = errors.New(m.ERROR_UID) - return - } - if err != nil { - return nil, err - } - var data model.ArtworkSoldTxDetail //物权版权的对账单 +// // 生成一条对账单记录(附件二) +// func (a *MgmtStatement) UploadExcelTwo(in *mgmtStatement.UploadExcelTworeq) (resp *mgmtStatement.UploadExcelTwores, err error) { +// resp = &mgmtStatement.UploadExcelTwores{} +// var uid uuid.UUID +// if uid, err = uuid.NewV4(); err != nil { +// err = errors.New(m.ERROR_UID) +// return +// } +// if err != nil { +// return nil, err +// } +// var data model.ArtworkSoldTxDetail //物权版权的对账单 - sqlSelect := `select uid from artwork_tx_batch where artistid = ? and batchtime = ?` - var batchid string - if err := db.DB.Raw(sqlSelect, data.ArtistUid, data.BatchTime).Find(&batchid).Error; err != nil { - return nil, err - } +// sqlSelect := `select uid from artwork_tx_batch where artistid = ? and batchtime = ?` +// var batchid string +// if err := db.DB.Raw(sqlSelect, data.ArtistUid, data.BatchTime).Find(&batchid).Error; err != nil { +// return nil, err +// } - data.Uid = uid.String() - data.BatchUid = batchid - data.ArtworkName = in.ArtworkName - data.ArtistName = in.ArtistName - data.ArtistUid = in.ArtistUid - data.TfNum = in.TfNum - data.BatchTime = in.BatchTime - data.Ruler = in.Ruler - data.MinPrice = in.MinPrice - data.StType = in.StType //对账单类型:1=版权 2=物权 - if err = dao.UploadExcelTwo(&data); err != nil { - return - } - respData := &mgmtStatement.StatementAddRes{StatementUid: data.Uid} - resp.Data = respData - return -} +// data.Uid = uid.String() +// data.BatchUid = batchid +// data.ArtworkName = in.ArtworkName +// data.ArtistName = in.ArtistName +// data.ArtistUid = in.ArtistUid +// data.TfNum = in.TfNum +// data.BatchTime = in.BatchTime +// data.Ruler = in.Ruler +// data.MinPrice = in.MinPrice +// data.StType = in.StType //对账单类型:1=版权 2=物权 +// if err = dao.UploadExcelTwo(&data); err != nil { +// return +// } +// respData := &mgmtStatement.StatementAddRes{StatementUid: data.Uid} +// resp.Data = respData +// return +// } -//画家对账单列表 -func (a *MgmtStatement) ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (resp *mgmtStatement.ArtistStatementListres, err error) { - resp = &mgmtStatement.ArtistStatementListres{} - if in.Page < model.InitPage { - in.Page = model.InitPage - } - if in.PageSize < 1 { - in.PageSize = model.PageSize - } - var list []*model.ArtworkSoldTxDetail - var count int64 - if list, count, err = dao.ArtistStatementList(in); err != nil { - return - } - resp.Count = int32(count) - resp.Page = in.Page - resp.PageSize = in.PageSize - for _, v := range list { - temp := mgmtStatement.ArtistStatementListres_Info{} - temp.ArtistName = v.ArtistName - temp.ArtistUid = v.ArtistUid - temp.BatchTime = v.BatchTime - resp.Data = append(resp.Data, &temp) - } - return -} +// // 画家对账单列表 +// func (a *MgmtStatement) ArtistStatementList(in *mgmtStatement.ArtistStatementListreq) (resp *mgmtStatement.ArtistStatementListres, err error) { +// resp = &mgmtStatement.ArtistStatementListres{} +// if in.Page < model.InitPage { +// in.Page = model.InitPage +// } +// if in.PageSize < 1 { +// in.PageSize = model.PageSize +// } +// var list []*model.ArtworkSoldTxDetail +// var count int64 +// if list, count, err = dao.ArtistStatementList(in); err != nil { +// return +// } +// resp.Count = int32(count) +// resp.Page = in.Page +// resp.PageSize = in.PageSize +// for _, v := range list { +// temp := mgmtStatement.ArtistStatementListres_Info{} +// temp.ArtistName = v.ArtistName +// temp.ArtistUid = v.ArtistUid +// temp.BatchTime = v.BatchTime +// resp.Data = append(resp.Data, &temp) +// } +// return +// } -//画作列表,根据画家和批次 -func (a *MgmtStatement) ArtStatementList(in *mgmtStatement.ArtStatementListreq) (resp *mgmtStatement.ArtStatementListres, err error) { - resp = &mgmtStatement.ArtStatementListres{} - if in.Page < model.InitPage { - in.Page = model.InitPage - } - if in.PageSize < 1 { - in.PageSize = model.PageSize - } - var list []*model.ArtworkSoldTxDetail - var count int64 - if list, count, err = dao.ArtStatementList(in); err != nil { - return - } - resp.Count = int32(count) - resp.Page = in.Page - resp.PageSize = in.PageSize - for _, v := range list { - temp := mgmtStatement.ArtStatementListres_Info{} - temp.ArtistName = v.ArtworkName - temp.ArtistUid = v.ArtistUid - temp.ArtworkName = v.ArtworkName - temp.Ruler = v.Ruler - temp.SaleNo = v.SaleNo - temp.TfNum = v.TfNum - temp.CompleteDate = v.CompleteDate - temp.MinPrice = v.MinPrice - } - return -} +// // 画作列表,根据画家和批次 +// func (a *MgmtStatement) ArtStatementList(in *mgmtStatement.ArtStatementListreq) (resp *mgmtStatement.ArtStatementListres, err error) { +// resp = &mgmtStatement.ArtStatementListres{} +// if in.Page < model.InitPage { +// in.Page = model.InitPage +// } +// if in.PageSize < 1 { +// in.PageSize = model.PageSize +// } +// var list []*model.ArtworkSoldTxDetail +// var count int64 +// if list, count, err = dao.ArtStatementList(in); err != nil { +// return +// } +// resp.Count = int32(count) +// resp.Page = in.Page +// resp.PageSize = in.PageSize +// for _, v := range list { +// temp := mgmtStatement.ArtStatementListres_Info{} +// temp.ArtistName = v.ArtworkName +// temp.ArtistUid = v.ArtistUid +// temp.ArtworkName = v.ArtworkName +// temp.Ruler = v.Ruler +// temp.SaleNo = v.SaleNo +// temp.TfNum = v.TfNum +// temp.CompleteDate = v.CompleteDate +// temp.MinPrice = v.MinPrice +// } +// return +// } -//更新对账单状态 -func (a *MgmtStatement) UpdateState(in *mgmtStatement.UpdateStatementreq) (err error) { - columns := map[string]interface{}{ - "status": in.Status, //状态 - } - if err = dao.UpdateState(in.StatementUid, columns); err != nil { - return - } - return -} +// // 更新对账单状态 +// func (a *MgmtStatement) UpdateState(in *mgmtStatement.UpdateStatementreq) (err error) { +// columns := map[string]interface{}{ +// "status": in.Status, //状态 +// } +// if err = dao.UpdateState(in.StatementUid, columns); err != nil { +// return +// } +// return +// } -//导出合同 -func (a *MgmtStatement) ExportContract(in *mgmtStatement.ExportContractreq) (resp *mgmtStatement.ExportContractres, err error) { - resp = &mgmtStatement.ExportContractres{} - if in.Page < model.InitPage { - in.Page = model.InitPage - } - if in.PageSize < 1 { - in.PageSize = model.PageSize - } +// // 导出合同 +// func (a *MgmtStatement) ExportContract(in *mgmtStatement.ExportContractreq) (resp *mgmtStatement.ExportContractres, err error) { +// resp = &mgmtStatement.ExportContractres{} +// if in.Page < model.InitPage { +// in.Page = model.InitPage +// } +// if in.PageSize < 1 { +// in.PageSize = model.PageSize +// } - var list []*model.Contract - var count int64 - if list, count, err = dao.ExportContract(in); err != nil { - return - } - resp.Count = int32(count) - for _, v := range list { - temp := mgmtStatement.ExportContractres_Info{} - temp.DownloadUrl = v.DownloadUrl - temp.BatchTime = v.BatchTime - temp.StType = v.StType - temp.ViewUrl = v.ViewUrl - temp.BatchUid = v.BatchUid - temp.ArtistUid = v.ArtistUid - resp.Data = append(resp.Data, &temp) - } - return -} +// var list []*model.Contract +// var count int64 +// if list, count, err = dao.ExportContract(in); err != nil { +// return +// } +// resp.Count = int32(count) +// for _, v := range list { +// temp := mgmtStatement.ExportContractres_Info{} +// temp.DownloadUrl = v.DownloadUrl +// temp.BatchTime = v.BatchTime +// temp.StType = v.StType +// temp.ViewUrl = v.ViewUrl +// temp.BatchUid = v.BatchUid +// temp.ArtistUid = v.ArtistUid +// resp.Data = append(resp.Data, &temp) +// } +// return +// } -//生成合同 -func (a *MgmtStatement) CreateTxContract(in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) { - resp = &mgmtStatement.CreateTxContractres{} +// // 生成合同 +// func (a *MgmtStatement) CreateTxContract(in *mgmtStatement.CreateTxContractreq) (resp *mgmtStatement.CreateTxContractres, err error) { +// resp = &mgmtStatement.CreateTxContractres{} - var uid uuid.UUID - if uid, err = uuid.NewV4(); err != nil { - err = errors.New(m.ERROR_UID) - return - } - if err != nil { - return nil, err - } +// var uid uuid.UUID +// if uid, err = uuid.NewV4(); err != nil { +// err = errors.New(m.ERROR_UID) +// return +// } +// if err != nil { +// return nil, err +// } - var data model.Contract - data.Uid = uid.String() - data.ArtistUid = in.ArtistUid - data.BatchTime = in.BatchTime - data.BatchUid = in.BatchUid - data.ContractId = in.ContractId - data.StType = in.StType - data.Status = 1 - data.DownloadUrl = in.DownloadUrl - data.ViewUrl = in.ViewUrl - data.CardId = in.CardId - if err = dao.CreateTxContract(&data); err != nil { - return - } - respData := &mgmtStatement.AddContractRes{BatchUid: data.Uid} - resp.Data = respData - return -} +// var data model.Contract +// data.Uid = uid.String() +// data.ArtistUid = in.ArtistUid +// data.BatchTime = in.BatchTime +// data.BatchUid = in.BatchUid +// data.ContractId = in.ContractId +// data.StType = in.StType +// data.Status = 1 +// data.DownloadUrl = in.DownloadUrl +// data.ViewUrl = in.ViewUrl +// data.CardId = in.CardId +// if err = dao.CreateTxContract(&data); err != nil { +// return +// } +// respData := &mgmtStatement.AddContractRes{BatchUid: data.Uid} +// resp.Data = respData +// return +// } diff --git a/cmd/internal/logic/statement.go b/cmd/internal/logic/statement.go index 63917bb..9ee8cf8 100644 --- a/cmd/internal/logic/statement.go +++ b/cmd/internal/logic/statement.go @@ -3,9 +3,18 @@ package logic import ( "github.com/fonchain/fonchain-artistinfo/cmd/internal/dao" statement "github.com/fonchain/fonchain-artistinfo/pb/artistinfoStatement" + db "github.com/fonchain/fonchain-artistinfo/pkg/db" + "github.com/fonchain/fonchain-artistinfo/pkg/util" + "gorm.io/gorm" ) type IStatement interface { + UploadExcelOneTx(req *statement.UploadExcelOneTxRequest) (rep *statement.UploadExcelOneTxRespond, err error) + UploadExcelTwoTx(req *statement.UploadExcelTwoTxRequest) (rep *statement.UploadExcelTwoTxRespond, err error) + UploadExcelOneCopy(req *statement.UploadExcelOneCopyRequest) (rep *statement.UploadExcelOneCopyRespond, err error) + UploadExcelTwoCopy(req *statement.UploadExcelTwoCopyRequest) (rep *statement.UploadExcelTwoCopyRespond, err error) + GetAllBatchTimeTx(req *statement.GetAllBatchTimeTxRequest) (rep *statement.GetAllBatchTimeTxRespond, err error) + GetArtworkSoldTxDetailList(req *statement.GetArtworkSoldTxDetailListRequest) (rep *statement.GetArtworkSoldTxDetailListRespond, err error) StatementList(req *statement.StatementListRequest) (rep *statement.StatementListRespond, err error) GetTxInfoByBatchUid(req *statement.GetTxInfoByBatchUidRequest) (rep *statement.GetTxInfoByBatchUidRespond, err error) GetCopyInfoByBatchUid(req *statement.GetCopyInfoByBatchUidRequest) (rep *statement.GetCopyInfoByBatchUidRespond, err error) @@ -18,6 +27,414 @@ func NewStatement() IStatement { type Statement struct { } +func (a *Statement) UploadExcelOneTx(req *statement.UploadExcelOneTxRequest) (rep *statement.UploadExcelOneTxRespond, err error) { + rep = &statement.UploadExcelOneTxRespond{} + //开启事务,遇到错误就回滚 + tx := db.DB.Begin() + defer func() { + if err != nil { + tx.Rollback() + } else { + tx.Commit() + } + }() + for _, v := range req.ExcelOneInfo { + //查看是否已经被生成了批次,没有的就生成物权批次 + exist, artworkTx, err := dao.IsExistArtworkTx(v.BatchTime, v.ArtistUid) + if err != nil { + return rep, err + } + + if exist { + //获取批次uid + uid1, err := util.GetUid() + if err != nil { + return rep, err + } + //生成批次 + err = dao.CreateArtworkTx(tx, uid1, v.BatchTime, v.ArtistUid, v.ArtistName) + if err != nil { + return rep, err + } + + //对账单画作物权委托详情uid + uid2, err := util.GetUid() + if err != nil { + return rep, err + } + //将数据插入对账单画作物权委托详情 + err = dao.CreateArtworkTxDetail(tx, uid1, uid2, v) + if err != nil { + return rep, err + } + } else { + //获取批次uid + uid, err := util.GetUid() + if err != nil { + return rep, err + } + err = dao.CreateArtworkTxDetail(tx, artworkTx.Uid, uid, v) + if err != nil { + return rep, err + } + } + + } + + return +} + +func (a *Statement) UploadExcelTwoTx(req *statement.UploadExcelTwoTxRequest) (rep *statement.UploadExcelTwoTxRespond, err error) { + rep = &statement.UploadExcelTwoTxRespond{} + //开启事务,遇到错误就回滚 + tx := db.DB.Begin() + defer func() { + if err != nil { + tx.Rollback() + } else { + tx.Commit() + } + }() + for _, v := range req.ExcelTwoInfo { + //查看是否已经被生成了物权批次 + exist, artworkTx, err := dao.IsExistArtworkTx(v.BatchTime, v.ArtistUid) + if err != nil { + return rep, err + } + //没有的就生成物权批次 + if exist { + //获取批次uid + uid1, err := util.GetUid() + if err != nil { + return rep, err + } + //生成批次 + err = dao.CreateArtworkTx(tx, uid1, v.BatchTime, v.ArtistUid, v.ArtistName) + if err != nil { + return rep, err + } + + //对账单画作物权委托详情uid + uid2, err := util.GetUid() + if err != nil { + return rep, err + } + //将数据插入对账单画作物权销售委托详情 + err = dao.CreateArtworkSoldTxDetail(tx, uid1, uid2, v) + if err != nil { + return rep, err + } + } else { + //获取批次uid + uid, err := util.GetUid() + if err != nil { + return rep, err + } + err = dao.CreateArtworkSoldTxDetail(tx, artworkTx.Uid, uid, v) + if err != nil { + return rep, err + } + } + + } + + return +} + +func (a *Statement) UploadExcelOneCopy(req *statement.UploadExcelOneCopyRequest) (rep *statement.UploadExcelOneCopyRespond, err error) { + rep = &statement.UploadExcelOneCopyRespond{} + //开启事务,遇到错误就回滚 + tx := db.DB.Begin() + defer func() { + if err != nil { + tx.Rollback() + } else { + tx.Commit() + } + }() + + for _, v := range req.ExcelOneInfo { + //查看是否已经被生成了批次,没有的就生成版权批次 + exist, artworkCopy, err := dao.IsExistArtworkCopy(v.BatchTime, v.ArtistUid) + if err != nil { + return rep, err + } + + if exist { + //获取批次uid + uid1, err := util.GetUid() + if err != nil { + return rep, err + } + //生成批次 + err = dao.CreateArtworkCopy(tx, uid1, v.BatchTime, v.ArtistUid, v.ArtistName) + if err != nil { + tx.Rollback() + return rep, err + } + + //对账单画作物权委托详情uid + uid2, err := util.GetUid() + if err != nil { + return rep, err + } + //将数据插入对账单画作物权委托详情 + err = dao.CreateArtworkCopyDetail(tx, uid1, uid2, v) + if err != nil { + return rep, err + } + } else { + //获取批次uid + uid, err := util.GetUid() + if err != nil { + return rep, err + } + err = dao.CreateArtworkCopyDetail(tx, artworkCopy.Uid, uid, v) + if err != nil { + return rep, err + } + } + + } + + return +} + +func (a *Statement) UploadExcelTwoCopy(req *statement.UploadExcelTwoCopyRequest) (rep *statement.UploadExcelTwoCopyRespond, err error) { + rep = &statement.UploadExcelTwoCopyRespond{} + //开启事务,遇到错误就回滚 + tx := db.DB.Begin() + defer func() { + if err != nil { + tx.Rollback() + } else { + tx.Commit() + } + }() + + for _, v := range req.ExcelTwoInfo { + //查看是否已经被生成了物权批次 + exist, artworkCopy, err := dao.IsExistArtworkCopy(v.BatchTime, v.ArtistUid) + if err != nil { + return rep, err + } + //没有的就生成物权批次 + if exist { + //获取批次uid + uid1, err := util.GetUid() + if err != nil { + return rep, err + } + //生成批次 + err = dao.CreateArtworkCopy(tx, uid1, v.BatchTime, v.ArtistUid, v.ArtistName) + if err != nil { + tx.Rollback() + return rep, err + } + + //对账单画作物权委托详情uid + uid2, err := util.GetUid() + if err != nil { + return rep, err + } + //将数据插入对账单画作物权销售委托详情 + err = dao.CreateArtworkSoldCopyDetail(tx, uid1, uid2, v) + if err != nil { + return rep, err + } + } else { + //获取批次uid + uid, err := util.GetUid() + if err != nil { + return rep, err + } + err = dao.CreateArtworkSoldCopyDetail(tx, artworkCopy.Uid, uid, v) + if err != nil { + return rep, err + } + } + + } + + return +} + +func (a *Statement) GetAllBatchTimeTx(req *statement.GetAllBatchTimeTxRequest) (rep *statement.GetAllBatchTimeTxRespond, err error) { + rep = &statement.GetAllBatchTimeTxRespond{} + //batchTime去重查询,只获取batchTime字段值 + batchTime, err := dao.GetAllBatchTimeTx() + if err != nil { + return + } + + rep.BatchTime = batchTime + return +} + +func (a *Statement) GetAllBatchTimeCopy(req *statement.GetAllBatchTimeCopyRequest) (rep *statement.GetAllBatchTimeCopyRespond, err error) { + rep = &statement.GetAllBatchTimeCopyRespond{} + //batchTime去重查询,只获取batchTime字段值 + batchTime, err := dao.GetAllBatchTimeCopy() + if err != nil { + return + } + + rep.BatchTime = batchTime + return +} + +func (a *Statement) GetArtworkSoldTxDetailList(req *statement.GetArtworkSoldTxDetailListRequest) (rep *statement.GetArtworkSoldTxDetailListRespond, err error) { + rep = &statement.GetArtworkSoldTxDetailListRespond{} + artistList := &statement.ArtistList{} + artworkSoldDetailList := &statement.ArtworkSoldDetailList{} + + var query *gorm.DB = db.DB // 初始化query变量 + + //画家姓名不为空,模糊查询(根据画家姓名的某个字也可以查询) + if req.ArtistName != "" { + query = query.Where("artist_name LiKE ?", "%"+req.ArtistName+"%") + } + //批次不为空 + if req.BatchTime != "" { + query = query.Where("batch_time = ?", req.BatchTime) + } + //画家姓名不为空 + if req.State != 0 { + query = query.Where("state = ?", req.State) + } + + //合同分页查询操作 + if req.Page < 1 { + req.Page = 1 + } + if req.Num < 1 { + req.Num = 15 + } + offset := (req.Page - 1) * req.Num + + artworkTxList, err := dao.GetArtworkTxList(query, req.Num, offset) + if err != nil { + return + } + + for _, v := range artworkTxList { + artistList.BatchUid = v.Uid + artistList.ArtistName = v.ArtistName + artistList.BatchTime = v.BatchTime + artistList.State = v.State + + //当已经签署了合同时 + if v.State == 3 { + //获取合同预览和下载链接 + contract, err := dao.GetContractUrlTx(v.Uid) + if err != nil { + return rep, err + } + artistList.ViewUrl = contract.ViewUrl + artistList.DownloadUrl = contract.DownloadUrl + } else { + artistList.ViewUrl = "" + artistList.DownloadUrl = "" + } + + //查询对账单画作物权销售委托详情 + artworkSoldTxDetail, err := dao.GetArtworkSoldTxDetailList(v.Uid) + if err != nil { + return rep, err + } + + //获取该画家该批次所有的已售出的画信息 + for _, m := range artworkSoldTxDetail { + artworkSoldDetailList.ArtworkName = m.ArtworkName + artworkSoldDetailList.TfNum = m.TfNum + artworkSoldDetailList.Ruler = m.Ruler + artworkSoldDetailList.SaleNo = m.SaleNo + artworkSoldDetailList.CompleteDate = m.CompleteDate + artworkSoldDetailList.SalePrice = m.SalePrice + artistList.ArtworkSoldDetailList = append(artistList.ArtworkSoldDetailList, artworkSoldDetailList) + } + rep.ArtistList = append(rep.ArtistList, artistList) + } + + return +} + +func (a *Statement) GetArtworkSoldCopyDetailList(req *statement.GetArtworkSoldCopyDetailListRequest) (rep *statement.GetArtworkSoldCopyDetailListRespond, err error) { + rep = &statement.GetArtworkSoldCopyDetailListRespond{} + artistList := &statement.ArtistList{} + artworkSoldDetailList := &statement.ArtworkSoldDetailList{} + + var query *gorm.DB = db.DB // 初始化query变量 + + //画家姓名不为空 + if req.ArtistName != "" { + query = query.Where("artist_name LiKE ?", "%"+req.ArtistName+"%") + } + //批次不为空 + if req.BatchTime != "" { + query = query.Where("batch_time = ?", req.BatchTime) + } + //画家姓名不为空 + if req.State != 0 { + query = query.Where("state = ?", req.State) + } + + //合同分页查询操作 + if req.Page < 1 { + req.Page = 1 + } + if req.Num < 1 { + req.Num = 15 + } + offset := (req.Page - 1) * req.Num + + artworkCopyList, err := dao.GetArtworkCopyList(query, req.Num, offset) + if err != nil { + return + } + + for _, v := range artworkCopyList { + artistList.BatchUid = v.Uid + artistList.ArtistName = v.ArtistName + artistList.BatchTime = v.BatchTime + artistList.State = v.State + + //当已经签署了合同时 + if v.State == 3 { + //获取合同预览和下载链接 + contract, err := dao.GetContractUrlTx(v.Uid) + if err != nil { + return rep, err + } + artistList.ViewUrl = contract.ViewUrl + artistList.DownloadUrl = contract.DownloadUrl + } else { + artistList.ViewUrl = "" + artistList.DownloadUrl = "" + } + + //查询对账单画作物权销售委托详情 + artworkSoldTxDetail, err := dao.GetArtworkSoldTxDetailList(v.Uid) + if err != nil { + return rep, err + } + + //获取该画家该批次所有的已售出的画信息 + for _, m := range artworkSoldTxDetail { + artworkSoldDetailList.ArtworkName = m.ArtworkName + artworkSoldDetailList.TfNum = m.TfNum + artworkSoldDetailList.Ruler = m.Ruler + artworkSoldDetailList.SaleNo = m.SaleNo + artworkSoldDetailList.CompleteDate = m.CompleteDate + artworkSoldDetailList.SalePrice = m.SalePrice + artistList.ArtworkSoldDetailList = append(artistList.ArtworkSoldDetailList, artworkSoldDetailList) + } + rep.ArtistList = append(rep.ArtistList, artistList) + } + + return +} + func (a *Statement) StatementList(req *statement.StatementListRequest) (rep *statement.StatementListRespond, err error) { //查看是否有该画家 user, err := dao.GetArtistInfoById(req.ArtistUid) @@ -79,9 +496,7 @@ func (a *Statement) GetTxInfoByBatchUid(req *statement.GetTxInfoByBatchUidReques artworkSoldTxDetail.Ruler = v.Ruler artworkSoldTxDetail.SaleNo = v.SaleNo artworkSoldTxDetail.CompleteDate = v.CompleteDate - artworkSoldTxDetail.MinPrice = v.MinPrice artworkSoldTxDetail.SalePrice = v.SalePrice - artworkSoldTxDetail.GuaranteePrice = v.GuaranteePrice rep.ArtworkSoldTxDetail = append(rep.ArtworkSoldTxDetail, artworkSoldTxDetail) } diff --git a/cmd/model/contract.go b/cmd/model/contract.go index d60f5c1..35917a4 100644 --- a/cmd/model/contract.go +++ b/cmd/model/contract.go @@ -12,15 +12,13 @@ type Contract struct { TransactionId string `gorm:"column:transaction_id;type:varchar(300);comment:交易id" json:"transaction_id"` Type int32 `gorm:"column:type;type:int(1);comment:合同类型 (1);NOT NULL" json:"type"` ViewUrl string `gorm:"column:view_url;type:varchar(500);comment:在线查看合同链接" json:"view_url"` - CardId string `gorm:"column:card_id;type:varchar(500);comment:银行卡号" json:"card_id"` DownloadUrl string `gorm:"column:download_url;type:varchar(500);comment:合同下载链接" json:"download_url"` - State int32 `gorm:"column:state;type:int(1);comment:合同状态,1:未签署2:已签署;NOT NULL" json:"state"` //1 未签署 2 已签署 - Status int32 `gorm:"column:status;default:2;comment:2=锁定 3=解锁" json:"status" ` //跟随用户的锁定和解锁状态,用于控制数据的展示 + State int32 `gorm:"column:state;default:1;type:int(1);comment:合同状态,1:未签署2:已签署;NOT NULL" json:"state"` //1 未签署 2 已签署 + Status int32 `gorm:"column:status;default:2;comment:2=锁定 3=解锁" json:"status" ` //跟随用户的锁定和解锁状态,用于控制数据的展示 LockTime string `gorm:"column:lock_time;comment:锁定时间" json:"lockTime"` SignTime string `gorm:"column:sign_time;comment:签署时间" json:"sign_time"` BatchTime string `gorm:"column:batch_time;comment:批次时间" json:"batch_time"` BatchUid string `gorm:"column:batch_uid;comment:批次ID" json:"batch_uid"` - StType int32 `gorm:"column:st_type;unqiueIndex:stype_uid_batchtime_idx;comment:对账单类型 1=版权 2=物权;"` ArtworkTx *ArtworkTx `gorm:"foreignKey:BatchUid;references:Uid"` //当前批次的物权委托单 ArtworkCopy *ArtworkCopy `gorm:"foreignKey:BatchUid;references:Uid"` //当前批次的版权委托单 ArtworkTxDetail []ArtworkTxDetail `gorm:"foreignKey:BatchUid;references:BatchUid"` //当前批次的物权委托单详情 diff --git a/cmd/model/statement.go b/cmd/model/statement.go index 10ed601..7d87a86 100644 --- a/cmd/model/statement.go +++ b/cmd/model/statement.go @@ -14,8 +14,7 @@ type ArtworkTx struct { ArtistUid string `gorm:"column:artist_uid;type:varchar(100);comment:画家Uid;NOT NULL" json:"artist_uid"` ArtistName string `gorm:"column:artist_name;type:varchar(100);comment:画家名;NOT NULL" json:"artist_name"` BatchTime string `gorm:"column:batch_time;comment:批次时间" json:"batch_time"` - StType int32 `gorm:"column:st_type;comment:对账单类型 1=版权 2=物权"` - Status int32 `gorm:"column:st_type;comment:对账单状态 1:未签署;2:已生成,未签署;3:已签署"` + State int32 `gorm:"column:state;default:1;type:int(1);comment:对账单状态,1:未生成合同 2:已生成数据库一条合同数据(不管画家有没有点击过都是已生成未签署) 3:已签署(画家在画家宝那边签署了合同);NOT NULL" json:"state"` CreatedAt int32 `gorm:"column:created_at;autoCreateTime"` UpdatedAt int32 `gorm:"column:updated_at;autoCreateTime"` DeletedAt soft_delete.DeletedAt @@ -28,7 +27,7 @@ type ArtworkTxDetail struct { BatchUid string `gorm:"column:batch_uid;type:varchar(100);comment:对账单画作物权表的唯一表示,即批次Uid;NOT NULL" json:"batch_uid"` TfNum string `gorm:"column:tf_num;unqiueIndex:batchid_tfnum_idx;comment:"泰丰画作编号"` ArtworkName string `gorm:"column:artwork_name;comment:画作名称"` - Ruler string `gorm:"column:ruler;comment:平尺"` + Ruler float32 `gorm:"column:ruler;comment:平尺"` MinPrice float32 `gorm:"column:min_price;comment:委托销售底价"` GuaranteePrice float32 `gorm:"column:guarantee_price;comment:已收取保证金;"` CreatedAt int32 `gorm:"column:created_at;autoCreateTime"` @@ -38,24 +37,18 @@ type ArtworkTxDetail struct { // 对账单画作物权销售委托详情(该画家一个批次的全部已被售卖了的画作) type ArtworkSoldTxDetail struct { - ID int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"` - Uid string `gorm:"column:uid;type:varchar(100);comment:对账单画作物权详情表的唯一表示;NOT NULL" json:"uid"` - BatchUid string `gorm:"column:batch_uid;type:varchar(100);comment:对账单画作物权表的唯一表示,即批次Uid;NOT NULL" json:"batch_uid"` - BatchTime string `gorm:"column:batch_time;comment:批次时间"` - TfNum string `gorm:"column:tf_num;unqiueIndex:batchid_tfnum_idx;comment:"泰丰画作编号"` - ArtworkName string `gorm:"column:artwork_name;comment:画作名称"` - ArtistName string `gorm:"column:artist_name;comment:画家名称"` - ArtistUid string `gorm:"column:artist_uid;comment:画家uid"` - Ruler string `gorm:"column:ruler;comment:平尺"` - SaleNo string `gorm:"column:sale_no;comment:销售单号"` - CompleteDate string `gorm:"column:complete_date;comment:成交日期"` - MinPrice float32 `gorm:"column:min_price;comment:委托销售底价"` - SalePrice float32 `gorm:"column:sale_price;comment:画作售价"` - GuaranteePrice float32 `gorm:"column:guarantee_price;comment:已收取保证金;"` - StType int32 `gorm:"column:st_type;comment:对账单类型 1=版权 2=物权"` - CreatedAt int32 `gorm:"column:created_at;autoCreateTime"` - UpdatedAt int32 `gorm:"column:updated_at;autoCreateTime"` - DeletedAt soft_delete.DeletedAt + ID int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"` + Uid string `gorm:"column:uid;type:varchar(100);comment:对账单画作物权委托详情表的唯一表示;NOT NULL" json:"uid"` + BatchUid string `gorm:"column:batch_uid;type:varchar(100);comment:对账单画作物权表的唯一表示,即批次Uid;NOT NULL" json:"batch_uid"` + TfNum string `gorm:"column:tf_num;unqiueIndex:batchid_tfnum_idx;comment:"泰丰画作编号"` + ArtworkName string `gorm:"column:artwork_name;comment:画作名称"` + Ruler float32 `gorm:"column:ruler;comment:平尺"` + SaleNo string `gorm:"column:sale_no;comment:销售单号"` + CompleteDate string `gorm:"column:complete_date;comment:成交日期"` + SalePrice float32 `gorm:"column:sale_price;comment:画作售价"` + CreatedAt int32 `gorm:"column:created_at;autoCreateTime"` + UpdatedAt int32 `gorm:"column:updated_at;autoCreateTime"` + DeletedAt soft_delete.DeletedAt } //对账单画作版权 @@ -65,6 +58,7 @@ type ArtworkCopy struct { ArtistUid string `gorm:"column:artist_uid;type:varchar(100);comment:画家Uid;NOT NULL" json:"artist_uid"` ArtistName string `gorm:"column:artist_name;type:varchar(100);comment:画家名;NOT NULL" json:"artist_name"` BatchTime string `gorm:"column:batch_time;comment:批次时间" json:"batch_time"` + State int32 `gorm:"column:state;default:1;type:int(1);comment:对账单状态,1:未生成合同 2:已生成数据库一条合同数据(不管画家有没有点击过都是已生成未签署) 3:已签署(画家在画家宝那边签署了合同);NOT NULL" json:"state"` CreatedAt int32 `gorm:"column:created_at;autoCreateTime"` UpdatedAt int32 `gorm:"column:updated_at;autoCreateTime"` DeletedAt soft_delete.DeletedAt @@ -77,7 +71,7 @@ type ArtworkCopyDetail struct { BatchUid string `gorm:"column:batch_uid;type:varchar(100);comment:对账单画作版权表的唯一表示,即批次Uid;NOT NULL" json:"batch_uid"` TfNum string `gorm:"column:tf_num;unqiueIndex:batchid_tfnum_idx;comment:"泰丰画作编号"` ArtworkName string `gorm:"column:artwork_name;comment:画作名称"` - Ruler string `gorm:"column:ruler;comment:平尺"` + Ruler float32 `gorm:"column:ruler;comment:平尺"` MinPrice float32 `gorm:"column:min_price;comment:委托销售底价"` GuaranteePrice float32 `gorm:"column:guarantee_price;comment:已收取保证金;"` CreatedAt int32 `gorm:"column:created_at;autoCreateTime"` @@ -92,7 +86,7 @@ type ArtworkSoldCopyDetail struct { BatchUid string `gorm:"column:batch_uid;type:varchar(100);comment:对账单画作版权表的唯一表示,即批次Uid;NOT NULL" json:"batch_uid"` TfNum string `gorm:"column:tf_num;unqiueIndex:batchid_tfnum_idx;comment:"泰丰画作编号"` ArtworkName string `gorm:"column:artwork_name;comment:画作名称"` - Ruler string `gorm:"column:ruler;comment:平尺"` + Ruler float32 `gorm:"column:ruler;comment:平尺"` SaleNo string `gorm:"column:sale_no;comment:销售单号"` CompleteDate string `gorm:"column:complete_date;comment:成交日期"` MinPrice float32 `gorm:"column:min_price;comment:委托销售底价"` diff --git a/pb/artistinfoStatement/statement.pb.go b/pb/artistinfoStatement/statement.pb.go index 8b00a95..26809d4 100644 --- a/pb/artistinfoStatement/statement.pb.go +++ b/pb/artistinfoStatement/statement.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.28.1 // protoc v3.21.8 -// source: statement.proto +// source: Statement.proto package statement @@ -25,27 +25,27 @@ type Contracts struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ContractUid string `protobuf:"bytes,1,opt,name=ContractUid,json=contract_uid,proto3" json:"ContractUid,omitempty"` - ArtistUid string `protobuf:"bytes,2,opt,name=ArtistUid,json=artist_uid,proto3" json:"ArtistUid,omitempty"` - ArtworkUid string `protobuf:"bytes,3,opt,name=ArtworkUid,json=artwork_uid,proto3" json:"ArtworkUid,omitempty"` - ContractId string `protobuf:"bytes,4,opt,name=ContractId,json=contract_id,proto3" json:"ContractId,omitempty"` - TransactionId string `protobuf:"bytes,5,opt,name=TransactionId,json=transaction_id,proto3" json:"TransactionId,omitempty"` - Type int32 `protobuf:"varint,6,opt,name=Type,json=type,proto3" json:"Type,omitempty"` - ViewUrl string `protobuf:"bytes,7,opt,name=ViewUrl,json=view_url,proto3" json:"ViewUrl,omitempty"` - DownloadUrl string `protobuf:"bytes,8,opt,name=DownloadUrl,json=download_url,proto3" json:"DownloadUrl,omitempty"` - State int32 `protobuf:"varint,9,opt,name=State,json=state,proto3" json:"State,omitempty"` - Status int32 `protobuf:"varint,10,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - ExpirationTime string `protobuf:"bytes,11,opt,name=ExpirationTime,json=expiration_time,proto3" json:"ExpirationTime,omitempty"` - LockTime string `protobuf:"bytes,12,opt,name=LockTime,json=lock_time,proto3" json:"LockTime,omitempty"` - SignTime string `protobuf:"bytes,13,opt,name=SignTime,json=sign_time,proto3" json:"SignTime,omitempty"` - BatchTime string `protobuf:"bytes,14,opt,name=BatchTime,json=batch_time,proto3" json:"BatchTime,omitempty"` - BatchUid string `protobuf:"bytes,15,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` + ContractUid string `protobuf:"bytes,1,opt,name=contractUid,json=contract_uid,proto3" json:"contractUid,omitempty"` + ArtistUid string `protobuf:"bytes,2,opt,name=artistUid,json=artist_uid,proto3" json:"artistUid,omitempty"` + ArtworkUid string `protobuf:"bytes,3,opt,name=artworkUid,json=artwork_uid,proto3" json:"artworkUid,omitempty"` + ContractId string `protobuf:"bytes,4,opt,name=contractId,json=contract_id,proto3" json:"contractId,omitempty"` + TransactionId string `protobuf:"bytes,5,opt,name=transactionId,json=transaction_id,proto3" json:"transactionId,omitempty"` + Type int32 `protobuf:"varint,6,opt,name=type,proto3" json:"type,omitempty"` + ViewUrl string `protobuf:"bytes,7,opt,name=viewUrl,json=view_url,proto3" json:"viewUrl,omitempty"` + DownloadUrl string `protobuf:"bytes,8,opt,name=downloadUrl,json=download_url,proto3" json:"downloadUrl,omitempty"` + State int32 `protobuf:"varint,9,opt,name=state,proto3" json:"state,omitempty"` + Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` + ExpirationTime string `protobuf:"bytes,11,opt,name=expirationTime,json=expiration_time,proto3" json:"expirationTime,omitempty"` + LockTime string `protobuf:"bytes,12,opt,name=lockTime,json=lock_time,proto3" json:"lockTime,omitempty"` + SignTime string `protobuf:"bytes,13,opt,name=signTime,json=sign_time,proto3" json:"signTime,omitempty"` + BatchTime string `protobuf:"bytes,14,opt,name=batchTime,json=batch_time,proto3" json:"batchTime,omitempty"` + BatchUid string `protobuf:"bytes,15,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` } func (x *Contracts) Reset() { *x = Contracts{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[0] + mi := &file_Statement_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -58,7 +58,7 @@ func (x *Contracts) String() string { func (*Contracts) ProtoMessage() {} func (x *Contracts) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[0] + mi := &file_Statement_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71,7 +71,7 @@ func (x *Contracts) ProtoReflect() protoreflect.Message { // Deprecated: Use Contracts.ProtoReflect.Descriptor instead. func (*Contracts) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{0} + return file_Statement_proto_rawDescGZIP(), []int{0} } func (x *Contracts) GetContractUid() string { @@ -184,18 +184,18 @@ type ArtworkTxDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BatchUid string `protobuf:"bytes,1,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` - TfNum string `protobuf:"bytes,2,opt,name=TfNum,proto3" json:"TfNum,omitempty"` - ArtworkName string `protobuf:"bytes,3,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` - Ruler string `protobuf:"bytes,4,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - MinPrice float32 `protobuf:"fixed32,5,opt,name=MinPrice,json=min_price,proto3" json:"MinPrice,omitempty"` - GuaranteePrice float32 `protobuf:"fixed32,6,opt,name=GuaranteePrice,json=guarantee_price,proto3" json:"GuaranteePrice,omitempty"` + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` + TfNum string `protobuf:"bytes,2,opt,name=tfNum,json=TfNum,proto3" json:"tfNum,omitempty"` + ArtworkName string `protobuf:"bytes,3,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + Ruler float32 `protobuf:"fixed32,4,opt,name=ruler,proto3" json:"ruler,omitempty"` + MinPrice float32 `protobuf:"fixed32,5,opt,name=minPrice,json=min_price,proto3" json:"minPrice,omitempty"` + GuaranteePrice float32 `protobuf:"fixed32,6,opt,name=guaranteePrice,json=guarantee_price,proto3" json:"guaranteePrice,omitempty"` } func (x *ArtworkTxDetail) Reset() { *x = ArtworkTxDetail{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[1] + mi := &file_Statement_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -208,7 +208,7 @@ func (x *ArtworkTxDetail) String() string { func (*ArtworkTxDetail) ProtoMessage() {} func (x *ArtworkTxDetail) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[1] + mi := &file_Statement_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -221,7 +221,7 @@ func (x *ArtworkTxDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkTxDetail.ProtoReflect.Descriptor instead. func (*ArtworkTxDetail) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{1} + return file_Statement_proto_rawDescGZIP(), []int{1} } func (x *ArtworkTxDetail) GetBatchUid() string { @@ -245,11 +245,11 @@ func (x *ArtworkTxDetail) GetArtworkName() string { return "" } -func (x *ArtworkTxDetail) GetRuler() string { +func (x *ArtworkTxDetail) GetRuler() float32 { if x != nil { return x.Ruler } - return "" + return 0 } func (x *ArtworkTxDetail) GetMinPrice() float32 { @@ -271,21 +271,21 @@ type ArtworkSoldTxDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BatchUid string `protobuf:"bytes,1,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` - TfNum string `protobuf:"bytes,2,opt,name=TfNum,proto3" json:"TfNum,omitempty"` - ArtworkName string `protobuf:"bytes,3,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` - Ruler string `protobuf:"bytes,4,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - SaleNo string `protobuf:"bytes,5,opt,name=SaleNo,json=sale_no,proto3" json:"SaleNo,omitempty"` - CompleteDate string `protobuf:"bytes,6,opt,name=CompleteDate,json=complete_date,proto3" json:"CompleteDate,omitempty"` - MinPrice float32 `protobuf:"fixed32,7,opt,name=MinPrice,json=min_price,proto3" json:"MinPrice,omitempty"` - SalePrice float32 `protobuf:"fixed32,8,opt,name=SalePrice,json=sale_price,proto3" json:"SalePrice,omitempty"` - GuaranteePrice float32 `protobuf:"fixed32,9,opt,name=GuaranteePrice,json=guarantee_price,proto3" json:"GuaranteePrice,omitempty"` + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` + TfNum string `protobuf:"bytes,2,opt,name=tfNum,json=TfNum,proto3" json:"tfNum,omitempty"` + ArtworkName string `protobuf:"bytes,3,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + Ruler float32 `protobuf:"fixed32,4,opt,name=ruler,proto3" json:"ruler,omitempty"` + SaleNo string `protobuf:"bytes,5,opt,name=saleNo,json=sale_no,proto3" json:"saleNo,omitempty"` + CompleteDate string `protobuf:"bytes,6,opt,name=completeDate,json=complete_date,proto3" json:"completeDate,omitempty"` + MinPrice float32 `protobuf:"fixed32,7,opt,name=minPrice,json=min_price,proto3" json:"minPrice,omitempty"` + SalePrice float32 `protobuf:"fixed32,8,opt,name=salePrice,json=sale_price,proto3" json:"salePrice,omitempty"` + GuaranteePrice float32 `protobuf:"fixed32,9,opt,name=guaranteePrice,json=guarantee_price,proto3" json:"guaranteePrice,omitempty"` } func (x *ArtworkSoldTxDetail) Reset() { *x = ArtworkSoldTxDetail{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[2] + mi := &file_Statement_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -298,7 +298,7 @@ func (x *ArtworkSoldTxDetail) String() string { func (*ArtworkSoldTxDetail) ProtoMessage() {} func (x *ArtworkSoldTxDetail) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[2] + mi := &file_Statement_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -311,7 +311,7 @@ func (x *ArtworkSoldTxDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkSoldTxDetail.ProtoReflect.Descriptor instead. func (*ArtworkSoldTxDetail) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{2} + return file_Statement_proto_rawDescGZIP(), []int{2} } func (x *ArtworkSoldTxDetail) GetBatchUid() string { @@ -335,11 +335,11 @@ func (x *ArtworkSoldTxDetail) GetArtworkName() string { return "" } -func (x *ArtworkSoldTxDetail) GetRuler() string { +func (x *ArtworkSoldTxDetail) GetRuler() float32 { if x != nil { return x.Ruler } - return "" + return 0 } func (x *ArtworkSoldTxDetail) GetSaleNo() string { @@ -382,18 +382,18 @@ type ArtworkCopyDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BatchUid string `protobuf:"bytes,1,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` - TfNum string `protobuf:"bytes,2,opt,name=TfNum,proto3" json:"TfNum,omitempty"` - ArtworkName string `protobuf:"bytes,3,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` - Ruler string `protobuf:"bytes,4,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - MinPrice float32 `protobuf:"fixed32,5,opt,name=MinPrice,json=min_price,proto3" json:"MinPrice,omitempty"` - GuaranteePrice float32 `protobuf:"fixed32,6,opt,name=GuaranteePrice,json=guarantee_price,proto3" json:"GuaranteePrice,omitempty"` + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` + TfNum string `protobuf:"bytes,2,opt,name=tfNum,json=TfNum,proto3" json:"tfNum,omitempty"` + ArtworkName string `protobuf:"bytes,3,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + Ruler float32 `protobuf:"fixed32,4,opt,name=ruler,proto3" json:"ruler,omitempty"` + MinPrice float32 `protobuf:"fixed32,5,opt,name=minPrice,json=min_price,proto3" json:"minPrice,omitempty"` + GuaranteePrice float32 `protobuf:"fixed32,6,opt,name=guaranteePrice,json=guarantee_price,proto3" json:"guaranteePrice,omitempty"` } func (x *ArtworkCopyDetail) Reset() { *x = ArtworkCopyDetail{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[3] + mi := &file_Statement_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -406,7 +406,7 @@ func (x *ArtworkCopyDetail) String() string { func (*ArtworkCopyDetail) ProtoMessage() {} func (x *ArtworkCopyDetail) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[3] + mi := &file_Statement_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -419,7 +419,7 @@ func (x *ArtworkCopyDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkCopyDetail.ProtoReflect.Descriptor instead. func (*ArtworkCopyDetail) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{3} + return file_Statement_proto_rawDescGZIP(), []int{3} } func (x *ArtworkCopyDetail) GetBatchUid() string { @@ -443,11 +443,11 @@ func (x *ArtworkCopyDetail) GetArtworkName() string { return "" } -func (x *ArtworkCopyDetail) GetRuler() string { +func (x *ArtworkCopyDetail) GetRuler() float32 { if x != nil { return x.Ruler } - return "" + return 0 } func (x *ArtworkCopyDetail) GetMinPrice() float32 { @@ -469,21 +469,21 @@ type ArtworkSoldCopyDetail struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BatchUid string `protobuf:"bytes,1,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` - TfNum string `protobuf:"bytes,2,opt,name=TfNum,proto3" json:"TfNum,omitempty"` - ArtworkName string `protobuf:"bytes,3,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` - Ruler string `protobuf:"bytes,4,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - SaleNo string `protobuf:"bytes,5,opt,name=SaleNo,json=sale_no,proto3" json:"SaleNo,omitempty"` - CompleteDate string `protobuf:"bytes,6,opt,name=CompleteDate,json=complete_date,proto3" json:"CompleteDate,omitempty"` - MinPrice float32 `protobuf:"fixed32,7,opt,name=MinPrice,json=min_price,proto3" json:"MinPrice,omitempty"` - SalePrice float32 `protobuf:"fixed32,8,opt,name=SalePrice,json=sale_price,proto3" json:"SalePrice,omitempty"` - GuaranteePrice float32 `protobuf:"fixed32,9,opt,name=GuaranteePrice,json=guarantee_price,proto3" json:"GuaranteePrice,omitempty"` + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` + TfNum string `protobuf:"bytes,2,opt,name=tfNum,json=TfNum,proto3" json:"tfNum,omitempty"` + ArtworkName string `protobuf:"bytes,3,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + Ruler float32 `protobuf:"fixed32,4,opt,name=ruler,proto3" json:"ruler,omitempty"` + SaleNo string `protobuf:"bytes,5,opt,name=saleNo,json=sale_no,proto3" json:"saleNo,omitempty"` + CompleteDate string `protobuf:"bytes,6,opt,name=completeDate,json=complete_date,proto3" json:"completeDate,omitempty"` + MinPrice float32 `protobuf:"fixed32,7,opt,name=minPrice,json=min_price,proto3" json:"minPrice,omitempty"` + SalePrice float32 `protobuf:"fixed32,8,opt,name=salePrice,json=sale_price,proto3" json:"salePrice,omitempty"` + GuaranteePrice float32 `protobuf:"fixed32,9,opt,name=guaranteePrice,json=guarantee_price,proto3" json:"guaranteePrice,omitempty"` } func (x *ArtworkSoldCopyDetail) Reset() { *x = ArtworkSoldCopyDetail{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[4] + mi := &file_Statement_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -496,7 +496,7 @@ func (x *ArtworkSoldCopyDetail) String() string { func (*ArtworkSoldCopyDetail) ProtoMessage() {} func (x *ArtworkSoldCopyDetail) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[4] + mi := &file_Statement_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -509,7 +509,7 @@ func (x *ArtworkSoldCopyDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkSoldCopyDetail.ProtoReflect.Descriptor instead. func (*ArtworkSoldCopyDetail) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{4} + return file_Statement_proto_rawDescGZIP(), []int{4} } func (x *ArtworkSoldCopyDetail) GetBatchUid() string { @@ -533,11 +533,11 @@ func (x *ArtworkSoldCopyDetail) GetArtworkName() string { return "" } -func (x *ArtworkSoldCopyDetail) GetRuler() string { +func (x *ArtworkSoldCopyDetail) GetRuler() float32 { if x != nil { return x.Ruler } - return "" + return 0 } func (x *ArtworkSoldCopyDetail) GetSaleNo() string { @@ -575,21 +575,1255 @@ func (x *ArtworkSoldCopyDetail) GetGuaranteePrice() float32 { return 0 } +type ExcelOneInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistUid string `protobuf:"bytes,1,opt,name=artistUid,json=artist_uid,proto3" json:"artistUid,omitempty"` + BatchTime string `protobuf:"bytes,2,opt,name=batchTime,json=batch_time,proto3" json:"batchTime,omitempty"` + ArtistName string `protobuf:"bytes,3,opt,name=artistName,json=artist_uid,proto3" json:"artistName,omitempty"` + TfNum string `protobuf:"bytes,4,opt,name=tfNum,json=tf_num,proto3" json:"tfNum,omitempty"` + ArtworkName string `protobuf:"bytes,5,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + Ruler float32 `protobuf:"fixed32,6,opt,name=ruler,proto3" json:"ruler,omitempty"` + MinPrice float32 `protobuf:"fixed32,7,opt,name=minPrice,json=min_price,proto3" json:"minPrice,omitempty"` + GuaranteePrice float32 `protobuf:"fixed32,8,opt,name=guaranteePrice,json=guarantee_price,proto3" json:"guaranteePrice,omitempty"` +} + +func (x *ExcelOneInfo) Reset() { + *x = ExcelOneInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExcelOneInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExcelOneInfo) ProtoMessage() {} + +func (x *ExcelOneInfo) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[5] + 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 ExcelOneInfo.ProtoReflect.Descriptor instead. +func (*ExcelOneInfo) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{5} +} + +func (x *ExcelOneInfo) GetArtistUid() string { + if x != nil { + return x.ArtistUid + } + return "" +} + +func (x *ExcelOneInfo) GetBatchTime() string { + if x != nil { + return x.BatchTime + } + return "" +} + +func (x *ExcelOneInfo) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *ExcelOneInfo) GetTfNum() string { + if x != nil { + return x.TfNum + } + return "" +} + +func (x *ExcelOneInfo) GetArtworkName() string { + if x != nil { + return x.ArtworkName + } + return "" +} + +func (x *ExcelOneInfo) GetRuler() float32 { + if x != nil { + return x.Ruler + } + return 0 +} + +func (x *ExcelOneInfo) GetMinPrice() float32 { + if x != nil { + return x.MinPrice + } + return 0 +} + +func (x *ExcelOneInfo) GetGuaranteePrice() float32 { + if x != nil { + return x.GuaranteePrice + } + return 0 +} + +type ExcelTwoInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistUid string `protobuf:"bytes,1,opt,name=artistUid,json=artist_uid,proto3" json:"artistUid,omitempty"` + BatchTime string `protobuf:"bytes,2,opt,name=batchTime,json=batch_time,proto3" json:"batchTime,omitempty"` + ArtistName string `protobuf:"bytes,3,opt,name=artistName,json=artist_uid,proto3" json:"artistName,omitempty"` + TfNum string `protobuf:"bytes,4,opt,name=tfNum,json=tf_num,proto3" json:"tfNum,omitempty"` + ArtworkName string `protobuf:"bytes,5,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + Ruler float32 `protobuf:"fixed32,6,opt,name=ruler,proto3" json:"ruler,omitempty"` + SaleNo string `protobuf:"bytes,7,opt,name=saleNo,proto3" json:"saleNo,omitempty"` + CompleteDate string `protobuf:"bytes,8,opt,name=completeDate,json=complete_date,proto3" json:"completeDate,omitempty"` + SalePrice float32 `protobuf:"fixed32,9,opt,name=salePrice,proto3" json:"salePrice,omitempty"` +} + +func (x *ExcelTwoInfo) Reset() { + *x = ExcelTwoInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExcelTwoInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExcelTwoInfo) ProtoMessage() {} + +func (x *ExcelTwoInfo) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[6] + 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 ExcelTwoInfo.ProtoReflect.Descriptor instead. +func (*ExcelTwoInfo) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{6} +} + +func (x *ExcelTwoInfo) GetArtistUid() string { + if x != nil { + return x.ArtistUid + } + return "" +} + +func (x *ExcelTwoInfo) GetBatchTime() string { + if x != nil { + return x.BatchTime + } + return "" +} + +func (x *ExcelTwoInfo) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *ExcelTwoInfo) GetTfNum() string { + if x != nil { + return x.TfNum + } + return "" +} + +func (x *ExcelTwoInfo) GetArtworkName() string { + if x != nil { + return x.ArtworkName + } + return "" +} + +func (x *ExcelTwoInfo) GetRuler() float32 { + if x != nil { + return x.Ruler + } + return 0 +} + +func (x *ExcelTwoInfo) GetSaleNo() string { + if x != nil { + return x.SaleNo + } + return "" +} + +func (x *ExcelTwoInfo) GetCompleteDate() string { + if x != nil { + return x.CompleteDate + } + return "" +} + +func (x *ExcelTwoInfo) GetSalePrice() float32 { + if x != nil { + return x.SalePrice + } + return 0 +} + +type ArtworkSoldDetailList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtworkName string `protobuf:"bytes,6,opt,name=artworkName,json=artwork_name,proto3" json:"artworkName,omitempty"` + TfNum string `protobuf:"bytes,7,opt,name=tfNum,json=tf_num,proto3" json:"tfNum,omitempty"` + Ruler float32 `protobuf:"fixed32,8,opt,name=ruler,proto3" json:"ruler,omitempty"` + SaleNo string `protobuf:"bytes,9,opt,name=saleNo,proto3" json:"saleNo,omitempty"` + CompleteDate string `protobuf:"bytes,10,opt,name=completeDate,json=complete_date,proto3" json:"completeDate,omitempty"` + SalePrice float32 `protobuf:"fixed32,11,opt,name=salePrice,proto3" json:"salePrice,omitempty"` +} + +func (x *ArtworkSoldDetailList) Reset() { + *x = ArtworkSoldDetailList{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtworkSoldDetailList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtworkSoldDetailList) ProtoMessage() {} + +func (x *ArtworkSoldDetailList) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[7] + 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 ArtworkSoldDetailList.ProtoReflect.Descriptor instead. +func (*ArtworkSoldDetailList) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{7} +} + +func (x *ArtworkSoldDetailList) GetArtworkName() string { + if x != nil { + return x.ArtworkName + } + return "" +} + +func (x *ArtworkSoldDetailList) GetTfNum() string { + if x != nil { + return x.TfNum + } + return "" +} + +func (x *ArtworkSoldDetailList) GetRuler() float32 { + if x != nil { + return x.Ruler + } + return 0 +} + +func (x *ArtworkSoldDetailList) GetSaleNo() string { + if x != nil { + return x.SaleNo + } + return "" +} + +func (x *ArtworkSoldDetailList) GetCompleteDate() string { + if x != nil { + return x.CompleteDate + } + return "" +} + +func (x *ArtworkSoldDetailList) GetSalePrice() float32 { + if x != nil { + return x.SalePrice + } + return 0 +} + +type ArtistList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` + ArtistName string `protobuf:"bytes,2,opt,name=artistName,json=artist_uid,proto3" json:"artistName,omitempty"` + BatchTime string `protobuf:"bytes,3,opt,name=batchTime,json=batch_time,proto3" json:"batchTime,omitempty"` + State int32 `protobuf:"varint,4,opt,name=state,proto3" json:"state,omitempty"` + Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + ViewUrl string `protobuf:"bytes,6,opt,name=viewUrl,json=view_url,proto3" json:"viewUrl,omitempty"` + DownloadUrl string `protobuf:"bytes,7,opt,name=downloadUrl,json=download_url,proto3" json:"downloadUrl,omitempty"` + ArtworkSoldDetailList []*ArtworkSoldDetailList `protobuf:"bytes,8,rep,name=artworkSoldDetailList,json=artwork_sold_detail_list,proto3" json:"artworkSoldDetailList,omitempty"` +} + +func (x *ArtistList) Reset() { + *x = ArtistList{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtistList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistList) ProtoMessage() {} + +func (x *ArtistList) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[8] + 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 ArtistList.ProtoReflect.Descriptor instead. +func (*ArtistList) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{8} +} + +func (x *ArtistList) GetBatchUid() string { + if x != nil { + return x.BatchUid + } + return "" +} + +func (x *ArtistList) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *ArtistList) GetBatchTime() string { + if x != nil { + return x.BatchTime + } + return "" +} + +func (x *ArtistList) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *ArtistList) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ArtistList) GetViewUrl() string { + if x != nil { + return x.ViewUrl + } + return "" +} + +func (x *ArtistList) GetDownloadUrl() string { + if x != nil { + return x.DownloadUrl + } + return "" +} + +func (x *ArtistList) GetArtworkSoldDetailList() []*ArtworkSoldDetailList { + if x != nil { + return x.ArtworkSoldDetailList + } + return nil +} + +type UploadExcelOneTxRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExcelOneInfo []*ExcelOneInfo `protobuf:"bytes,1,rep,name=excelOneInfo,json=excel_one_info,proto3" json:"excelOneInfo,omitempty"` +} + +func (x *UploadExcelOneTxRequest) Reset() { + *x = UploadExcelOneTxRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelOneTxRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelOneTxRequest) ProtoMessage() {} + +func (x *UploadExcelOneTxRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[9] + 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 UploadExcelOneTxRequest.ProtoReflect.Descriptor instead. +func (*UploadExcelOneTxRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{9} +} + +func (x *UploadExcelOneTxRequest) GetExcelOneInfo() []*ExcelOneInfo { + if x != nil { + return x.ExcelOneInfo + } + return nil +} + +type UploadExcelOneTxRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *UploadExcelOneTxRespond) Reset() { + *x = UploadExcelOneTxRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelOneTxRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelOneTxRespond) ProtoMessage() {} + +func (x *UploadExcelOneTxRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[10] + 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 UploadExcelOneTxRespond.ProtoReflect.Descriptor instead. +func (*UploadExcelOneTxRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{10} +} + +func (x *UploadExcelOneTxRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type UploadExcelTwoTxRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExcelTwoInfo []*ExcelTwoInfo `protobuf:"bytes,1,rep,name=excelTwoInfo,json=excel_one_info,proto3" json:"excelTwoInfo,omitempty"` +} + +func (x *UploadExcelTwoTxRequest) Reset() { + *x = UploadExcelTwoTxRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelTwoTxRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelTwoTxRequest) ProtoMessage() {} + +func (x *UploadExcelTwoTxRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[11] + 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 UploadExcelTwoTxRequest.ProtoReflect.Descriptor instead. +func (*UploadExcelTwoTxRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{11} +} + +func (x *UploadExcelTwoTxRequest) GetExcelTwoInfo() []*ExcelTwoInfo { + if x != nil { + return x.ExcelTwoInfo + } + return nil +} + +type UploadExcelTwoTxRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *UploadExcelTwoTxRespond) Reset() { + *x = UploadExcelTwoTxRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelTwoTxRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelTwoTxRespond) ProtoMessage() {} + +func (x *UploadExcelTwoTxRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[12] + 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 UploadExcelTwoTxRespond.ProtoReflect.Descriptor instead. +func (*UploadExcelTwoTxRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{12} +} + +func (x *UploadExcelTwoTxRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type UploadExcelOneCopyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExcelOneInfo []*ExcelOneInfo `protobuf:"bytes,1,rep,name=excelOneInfo,json=excel_one_info,proto3" json:"excelOneInfo,omitempty"` +} + +func (x *UploadExcelOneCopyRequest) Reset() { + *x = UploadExcelOneCopyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelOneCopyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelOneCopyRequest) ProtoMessage() {} + +func (x *UploadExcelOneCopyRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[13] + 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 UploadExcelOneCopyRequest.ProtoReflect.Descriptor instead. +func (*UploadExcelOneCopyRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{13} +} + +func (x *UploadExcelOneCopyRequest) GetExcelOneInfo() []*ExcelOneInfo { + if x != nil { + return x.ExcelOneInfo + } + return nil +} + +type UploadExcelOneCopyRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *UploadExcelOneCopyRespond) Reset() { + *x = UploadExcelOneCopyRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelOneCopyRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelOneCopyRespond) ProtoMessage() {} + +func (x *UploadExcelOneCopyRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[14] + 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 UploadExcelOneCopyRespond.ProtoReflect.Descriptor instead. +func (*UploadExcelOneCopyRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{14} +} + +func (x *UploadExcelOneCopyRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type UploadExcelTwoCopyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExcelTwoInfo []*ExcelTwoInfo `protobuf:"bytes,1,rep,name=excelTwoInfo,json=excel_one_info,proto3" json:"excelTwoInfo,omitempty"` +} + +func (x *UploadExcelTwoCopyRequest) Reset() { + *x = UploadExcelTwoCopyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelTwoCopyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelTwoCopyRequest) ProtoMessage() {} + +func (x *UploadExcelTwoCopyRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[15] + 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 UploadExcelTwoCopyRequest.ProtoReflect.Descriptor instead. +func (*UploadExcelTwoCopyRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{15} +} + +func (x *UploadExcelTwoCopyRequest) GetExcelTwoInfo() []*ExcelTwoInfo { + if x != nil { + return x.ExcelTwoInfo + } + return nil +} + +type UploadExcelTwoCopyRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *UploadExcelTwoCopyRespond) Reset() { + *x = UploadExcelTwoCopyRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadExcelTwoCopyRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadExcelTwoCopyRespond) ProtoMessage() {} + +func (x *UploadExcelTwoCopyRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[16] + 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 UploadExcelTwoCopyRespond.ProtoReflect.Descriptor instead. +func (*UploadExcelTwoCopyRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{16} +} + +func (x *UploadExcelTwoCopyRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type GetAllBatchTimeTxRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetAllBatchTimeTxRequest) Reset() { + *x = GetAllBatchTimeTxRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllBatchTimeTxRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllBatchTimeTxRequest) ProtoMessage() {} + +func (x *GetAllBatchTimeTxRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[17] + 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 GetAllBatchTimeTxRequest.ProtoReflect.Descriptor instead. +func (*GetAllBatchTimeTxRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{17} +} + +type GetAllBatchTimeTxRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BatchTime []string `protobuf:"bytes,1,rep,name=BatchTime,json=batch_time,proto3" json:"BatchTime,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *GetAllBatchTimeTxRespond) Reset() { + *x = GetAllBatchTimeTxRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllBatchTimeTxRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllBatchTimeTxRespond) ProtoMessage() {} + +func (x *GetAllBatchTimeTxRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[18] + 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 GetAllBatchTimeTxRespond.ProtoReflect.Descriptor instead. +func (*GetAllBatchTimeTxRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{18} +} + +func (x *GetAllBatchTimeTxRespond) GetBatchTime() []string { + if x != nil { + return x.BatchTime + } + return nil +} + +func (x *GetAllBatchTimeTxRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type GetAllBatchTimeCopyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetAllBatchTimeCopyRequest) Reset() { + *x = GetAllBatchTimeCopyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllBatchTimeCopyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllBatchTimeCopyRequest) ProtoMessage() {} + +func (x *GetAllBatchTimeCopyRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[19] + 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 GetAllBatchTimeCopyRequest.ProtoReflect.Descriptor instead. +func (*GetAllBatchTimeCopyRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{19} +} + +type GetAllBatchTimeCopyRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BatchTime []string `protobuf:"bytes,1,rep,name=BatchTime,json=batch_time,proto3" json:"BatchTime,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *GetAllBatchTimeCopyRespond) Reset() { + *x = GetAllBatchTimeCopyRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllBatchTimeCopyRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllBatchTimeCopyRespond) ProtoMessage() {} + +func (x *GetAllBatchTimeCopyRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[20] + 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 GetAllBatchTimeCopyRespond.ProtoReflect.Descriptor instead. +func (*GetAllBatchTimeCopyRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{20} +} + +func (x *GetAllBatchTimeCopyRespond) GetBatchTime() []string { + if x != nil { + return x.BatchTime + } + return nil +} + +func (x *GetAllBatchTimeCopyRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type GetArtworkSoldTxDetailListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistName string `protobuf:"bytes,1,opt,name=artistName,json=artist_name,proto3" json:"artistName,omitempty"` + BatchTime string `protobuf:"bytes,2,opt,name=batchTime,json=batch_time,proto3" json:"batchTime,omitempty"` + State int32 `protobuf:"varint,3,opt,name=state,proto3" json:"state,omitempty"` + Page int32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` + Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num,omitempty"` +} + +func (x *GetArtworkSoldTxDetailListRequest) Reset() { + *x = GetArtworkSoldTxDetailListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetArtworkSoldTxDetailListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtworkSoldTxDetailListRequest) ProtoMessage() {} + +func (x *GetArtworkSoldTxDetailListRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[21] + 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 GetArtworkSoldTxDetailListRequest.ProtoReflect.Descriptor instead. +func (*GetArtworkSoldTxDetailListRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{21} +} + +func (x *GetArtworkSoldTxDetailListRequest) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *GetArtworkSoldTxDetailListRequest) GetBatchTime() string { + if x != nil { + return x.BatchTime + } + return "" +} + +func (x *GetArtworkSoldTxDetailListRequest) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *GetArtworkSoldTxDetailListRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetArtworkSoldTxDetailListRequest) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +type GetArtworkSoldTxDetailListRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistList []*ArtistList `protobuf:"bytes,1,rep,name=artist_list,proto3" json:"artist_list,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *GetArtworkSoldTxDetailListRespond) Reset() { + *x = GetArtworkSoldTxDetailListRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetArtworkSoldTxDetailListRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtworkSoldTxDetailListRespond) ProtoMessage() {} + +func (x *GetArtworkSoldTxDetailListRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[22] + 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 GetArtworkSoldTxDetailListRespond.ProtoReflect.Descriptor instead. +func (*GetArtworkSoldTxDetailListRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{22} +} + +func (x *GetArtworkSoldTxDetailListRespond) GetArtistList() []*ArtistList { + if x != nil { + return x.ArtistList + } + return nil +} + +func (x *GetArtworkSoldTxDetailListRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type GetArtworkSoldCopyDetailListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistName string `protobuf:"bytes,1,opt,name=artistName,json=artist_name,proto3" json:"artistName,omitempty"` + BatchTime string `protobuf:"bytes,2,opt,name=batchTime,json=batch_time,proto3" json:"batchTime,omitempty"` + State int32 `protobuf:"varint,3,opt,name=state,proto3" json:"state,omitempty"` + Page int32 `protobuf:"varint,4,opt,name=page,proto3" json:"page,omitempty"` + Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num,omitempty"` +} + +func (x *GetArtworkSoldCopyDetailListRequest) Reset() { + *x = GetArtworkSoldCopyDetailListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetArtworkSoldCopyDetailListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtworkSoldCopyDetailListRequest) ProtoMessage() {} + +func (x *GetArtworkSoldCopyDetailListRequest) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[23] + 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 GetArtworkSoldCopyDetailListRequest.ProtoReflect.Descriptor instead. +func (*GetArtworkSoldCopyDetailListRequest) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{23} +} + +func (x *GetArtworkSoldCopyDetailListRequest) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *GetArtworkSoldCopyDetailListRequest) GetBatchTime() string { + if x != nil { + return x.BatchTime + } + return "" +} + +func (x *GetArtworkSoldCopyDetailListRequest) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *GetArtworkSoldCopyDetailListRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetArtworkSoldCopyDetailListRequest) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +type GetArtworkSoldCopyDetailListRespond struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistList []*ArtistList `protobuf:"bytes,1,rep,name=artist_list,proto3" json:"artist_list,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *GetArtworkSoldCopyDetailListRespond) Reset() { + *x = GetArtworkSoldCopyDetailListRespond{} + if protoimpl.UnsafeEnabled { + mi := &file_Statement_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetArtworkSoldCopyDetailListRespond) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtworkSoldCopyDetailListRespond) ProtoMessage() {} + +func (x *GetArtworkSoldCopyDetailListRespond) ProtoReflect() protoreflect.Message { + mi := &file_Statement_proto_msgTypes[24] + 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 GetArtworkSoldCopyDetailListRespond.ProtoReflect.Descriptor instead. +func (*GetArtworkSoldCopyDetailListRespond) Descriptor() ([]byte, []int) { + return file_Statement_proto_rawDescGZIP(), []int{24} +} + +func (x *GetArtworkSoldCopyDetailListRespond) GetArtistList() []*ArtistList { + if x != nil { + return x.ArtistList + } + return nil +} + +func (x *GetArtworkSoldCopyDetailListRespond) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + type StatementListRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtistUid string `protobuf:"bytes,1,opt,name=ArtistUid,json=artist_uid,proto3" json:"ArtistUid,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=PageSize,json=pageSize,proto3" json:"PageSize,omitempty"` - Page int32 `protobuf:"varint,3,opt,name=Page,json=page,proto3" json:"Page,omitempty"` - State int32 `protobuf:"varint,4,opt,name=State,json=state,proto3" json:"State,omitempty"` + ArtistUid string `protobuf:"bytes,1,opt,name=artistUid,json=artist_uid,proto3" json:"artistUid,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + State int32 `protobuf:"varint,4,opt,name=state,proto3" json:"state,omitempty"` } func (x *StatementListRequest) Reset() { *x = StatementListRequest{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[5] + mi := &file_Statement_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -602,7 +1836,7 @@ func (x *StatementListRequest) String() string { func (*StatementListRequest) ProtoMessage() {} func (x *StatementListRequest) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[5] + mi := &file_Statement_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -615,7 +1849,7 @@ func (x *StatementListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatementListRequest.ProtoReflect.Descriptor instead. func (*StatementListRequest) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{5} + return file_Statement_proto_rawDescGZIP(), []int{25} } func (x *StatementListRequest) GetArtistUid() string { @@ -651,14 +1885,14 @@ type StatementListRespond struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*Contracts `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + Data []*Contracts `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *StatementListRespond) Reset() { *x = StatementListRespond{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[6] + mi := &file_Statement_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -671,7 +1905,7 @@ func (x *StatementListRespond) String() string { func (*StatementListRespond) ProtoMessage() {} func (x *StatementListRespond) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[6] + mi := &file_Statement_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -684,7 +1918,7 @@ func (x *StatementListRespond) ProtoReflect() protoreflect.Message { // Deprecated: Use StatementListRespond.ProtoReflect.Descriptor instead. func (*StatementListRespond) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{6} + return file_Statement_proto_rawDescGZIP(), []int{26} } func (x *StatementListRespond) GetData() []*Contracts { @@ -706,13 +1940,13 @@ type GetTxInfoByBatchUidRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BatchUid string `protobuf:"bytes,1,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` } func (x *GetTxInfoByBatchUidRequest) Reset() { *x = GetTxInfoByBatchUidRequest{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[7] + mi := &file_Statement_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -725,7 +1959,7 @@ func (x *GetTxInfoByBatchUidRequest) String() string { func (*GetTxInfoByBatchUidRequest) ProtoMessage() {} func (x *GetTxInfoByBatchUidRequest) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[7] + mi := &file_Statement_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -738,7 +1972,7 @@ func (x *GetTxInfoByBatchUidRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTxInfoByBatchUidRequest.ProtoReflect.Descriptor instead. func (*GetTxInfoByBatchUidRequest) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{7} + return file_Statement_proto_rawDescGZIP(), []int{27} } func (x *GetTxInfoByBatchUidRequest) GetBatchUid() string { @@ -753,16 +1987,16 @@ type GetTxInfoByBatchUidRespond struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtistName string `protobuf:"bytes,1,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - ArtworkTxDetail []*ArtworkTxDetail `protobuf:"bytes,2,rep,name=ArtworkTxDetail,json=artwork_tx_detail,proto3" json:"ArtworkTxDetail,omitempty"` - ArtworkSoldTxDetail []*ArtworkSoldTxDetail `protobuf:"bytes,3,rep,name=ArtworkSoldTxDetail,json=artwork_sold_tx_detail,proto3" json:"ArtworkSoldTxDetail,omitempty"` - Msg string `protobuf:"bytes,4,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + ArtistName string `protobuf:"bytes,1,opt,name=artistName,json=artist_name,proto3" json:"artistName,omitempty"` + ArtworkTxDetail []*ArtworkTxDetail `protobuf:"bytes,2,rep,name=artworkTxDetail,json=artwork_tx_detail,proto3" json:"artworkTxDetail,omitempty"` + ArtworkSoldTxDetail []*ArtworkSoldTxDetail `protobuf:"bytes,3,rep,name=artworkSoldTxDetail,json=artwork_sold_tx_detail,proto3" json:"artworkSoldTxDetail,omitempty"` + Msg string `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *GetTxInfoByBatchUidRespond) Reset() { *x = GetTxInfoByBatchUidRespond{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[8] + mi := &file_Statement_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -775,7 +2009,7 @@ func (x *GetTxInfoByBatchUidRespond) String() string { func (*GetTxInfoByBatchUidRespond) ProtoMessage() {} func (x *GetTxInfoByBatchUidRespond) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[8] + mi := &file_Statement_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -788,7 +2022,7 @@ func (x *GetTxInfoByBatchUidRespond) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTxInfoByBatchUidRespond.ProtoReflect.Descriptor instead. func (*GetTxInfoByBatchUidRespond) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{8} + return file_Statement_proto_rawDescGZIP(), []int{28} } func (x *GetTxInfoByBatchUidRespond) GetArtistName() string { @@ -824,13 +2058,13 @@ type GetCopyInfoByBatchUidRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BatchUid string `protobuf:"bytes,1,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` + BatchUid string `protobuf:"bytes,1,opt,name=batchUid,json=batch_uid,proto3" json:"batchUid,omitempty"` } func (x *GetCopyInfoByBatchUidRequest) Reset() { *x = GetCopyInfoByBatchUidRequest{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[9] + mi := &file_Statement_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -843,7 +2077,7 @@ func (x *GetCopyInfoByBatchUidRequest) String() string { func (*GetCopyInfoByBatchUidRequest) ProtoMessage() {} func (x *GetCopyInfoByBatchUidRequest) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[9] + mi := &file_Statement_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -856,7 +2090,7 @@ func (x *GetCopyInfoByBatchUidRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCopyInfoByBatchUidRequest.ProtoReflect.Descriptor instead. func (*GetCopyInfoByBatchUidRequest) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{9} + return file_Statement_proto_rawDescGZIP(), []int{29} } func (x *GetCopyInfoByBatchUidRequest) GetBatchUid() string { @@ -871,16 +2105,16 @@ type GetCopyInfoByBatchUidRespond struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ArtistName string `protobuf:"bytes,1,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - ArtworkCopyDetail []*ArtworkCopyDetail `protobuf:"bytes,2,rep,name=ArtworkCopyDetail,json=artwork_copy_detail,proto3" json:"ArtworkCopyDetail,omitempty"` - ArtworkSoldCopyDetail []*ArtworkSoldCopyDetail `protobuf:"bytes,3,rep,name=ArtworkSoldCopyDetail,json=artwork_sold_copy_detail,proto3" json:"ArtworkSoldCopyDetail,omitempty"` - Msg string `protobuf:"bytes,4,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` + ArtistName string `protobuf:"bytes,1,opt,name=artistName,json=artist_name,proto3" json:"artistName,omitempty"` + ArtworkCopyDetail []*ArtworkCopyDetail `protobuf:"bytes,2,rep,name=artworkCopyDetail,json=artwork_copy_detail,proto3" json:"artworkCopyDetail,omitempty"` + ArtworkSoldCopyDetail []*ArtworkSoldCopyDetail `protobuf:"bytes,3,rep,name=artworkSoldCopyDetail,json=artwork_sold_copy_detail,proto3" json:"artworkSoldCopyDetail,omitempty"` + Msg string `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` } func (x *GetCopyInfoByBatchUidRespond) Reset() { *x = GetCopyInfoByBatchUidRespond{} if protoimpl.UnsafeEnabled { - mi := &file_statement_proto_msgTypes[10] + mi := &file_Statement_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -893,7 +2127,7 @@ func (x *GetCopyInfoByBatchUidRespond) String() string { func (*GetCopyInfoByBatchUidRespond) ProtoMessage() {} func (x *GetCopyInfoByBatchUidRespond) ProtoReflect() protoreflect.Message { - mi := &file_statement_proto_msgTypes[10] + mi := &file_Statement_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -906,7 +2140,7 @@ func (x *GetCopyInfoByBatchUidRespond) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCopyInfoByBatchUidRespond.ProtoReflect.Descriptor instead. func (*GetCopyInfoByBatchUidRespond) Descriptor() ([]byte, []int) { - return file_statement_proto_rawDescGZIP(), []int{10} + return file_Statement_proto_rawDescGZIP(), []int{30} } func (x *GetCopyInfoByBatchUidRespond) GetArtistName() string { @@ -937,229 +2171,472 @@ func (x *GetCopyInfoByBatchUidRespond) GetMsg() string { return "" } -var File_statement_proto protoreflect.FileDescriptor +var File_Statement_proto protoreflect.FileDescriptor -var file_statement_proto_rawDesc = []byte{ - 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, +var file_Statement_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xd5, 0x03, 0x0a, - 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x43, 0x6f, + 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1d, 0x0a, - 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, - 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, - 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x25, - 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, + 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x56, 0x69, 0x65, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, - 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x53, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, + 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, + 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, - 0x68, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x41, + 0x68, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, - 0x75, 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x47, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, + 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0xa4, 0x02, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x14, 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x17, - 0x0a, 0x06, 0x53, 0x61, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x12, 0x23, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x17, + 0x0a, 0x06, 0x73, 0x61, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x08, - 0x4d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, - 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x53, 0x61, 0x6c, + 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, + 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x73, 0x61, - 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x47, 0x75, 0x61, 0x72, + 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x70, - 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, + 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, - 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x75, + 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x27, 0x0a, 0x0e, 0x47, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, 0x69, + 0x12, 0x27, 0x0a, 0x0e, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0xa6, 0x02, 0x0a, 0x15, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, + 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x54, 0x66, 0x4e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, - 0x17, 0x0a, 0x06, 0x53, 0x61, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x12, 0x23, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, + 0x17, 0x0a, 0x06, 0x73, 0x61, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x61, 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, - 0x08, 0x4d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x53, 0x61, + 0x08, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x73, - 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x47, 0x75, 0x61, + 0x61, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x5f, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x22, 0x7b, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x52, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, - 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xec, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, - 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x46, - 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x78, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x11, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x78, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x53, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x16, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6f, 0x6c, - 0x64, 0x5f, 0x74, 0x78, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, - 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x3b, 0x0a, - 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x1c, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x11, - 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x70, 0x79, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x13, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, - 0x6f, 0x70, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x59, 0x0a, 0x15, 0x41, 0x72, + 0x63, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, + 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 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, 0x5f, 0x75, 0x69, + 0x64, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, + 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, + 0x0a, 0x0e, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, + 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x97, 0x02, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x65, + 0x6c, 0x54, 0x77, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x21, 0x0a, + 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x61, 0x6c, 0x65, 0x4e, 0x6f, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x61, 0x6c, 0x65, 0x4e, 0x6f, 0x12, 0x23, + 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x73, 0x61, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x15, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, + 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x61, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, + 0x0a, 0x05, 0x74, 0x66, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, + 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x61, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x61, 0x6c, + 0x65, 0x4e, 0x6f, 0x12, 0x23, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x61, 0x6c, 0x65, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x73, 0x61, 0x6c, + 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, + 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 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, + 0x19, 0x0a, 0x07, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x59, 0x0a, + 0x15, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x53, 0x6f, 0x6c, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x18, + 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6f, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x17, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x22, 0x2b, 0x0a, 0x17, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, + 0x6c, 0x4f, 0x6e, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, + 0x58, 0x0a, 0x17, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, + 0x6f, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, + 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x63, + 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x6c, + 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x2b, 0x0a, 0x17, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x54, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x5a, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x22, 0x2d, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, + 0x6c, 0x4f, 0x6e, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x22, 0x5a, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, + 0x54, 0x77, 0x6f, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, + 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x65, + 0x78, 0x63, 0x65, 0x6c, 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x2d, 0x0a, + 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x43, + 0x6f, 0x70, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x1a, 0x0a, 0x18, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x22, 0x9f, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x6e, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6d, 0x73, 0x67, 0x22, 0xa1, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x70, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, + 0x37, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0b, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x7b, 0x0a, 0x14, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x52, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, + 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x1a, 0x47, + 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x22, 0xec, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x78, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, 0x61, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x78, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x53, + 0x0a, 0x13, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, + 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x16, 0x61, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x78, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x3b, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, + 0x69, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, + 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x11, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x13, 0x61, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x59, 0x0a, 0x15, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, + 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, - 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x18, 0x61, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x32, 0xb4, 0x02, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, - 0x64, 0x12, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, + 0x61, 0x69, 0x6c, 0x52, 0x18, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6f, 0x6c, + 0x64, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x32, + 0xff, 0x08, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, + 0x10, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x54, + 0x78, 0x12, 0x22, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x54, 0x78, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, + 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x10, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x54, 0x78, 0x12, + 0x22, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x54, 0x78, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x12, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x12, + 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x4f, 0x6e, 0x65, + 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x62, 0x0a, + 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x43, + 0x6f, 0x70, 0x79, 0x12, 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, 0x6c, 0x54, 0x77, 0x6f, 0x43, 0x6f, + 0x70, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x63, 0x65, + 0x6c, 0x54, 0x77, 0x6f, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, + 0x00, 0x12, 0x5f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x69, 0x6d, 0x65, 0x54, 0x78, 0x12, 0x23, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, + 0x22, 0x00, 0x12, 0x65, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x12, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x70, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x70, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, + 0x6c, 0x64, 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, + 0x54, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, + 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6f, 0x6c, + 0x64, 0x43, 0x6f, 0x70, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x53, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x65, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x55, 0x69, 0x64, 0x12, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x78, 0x49, 0x6e, 0x66, + 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x64, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, + 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x12, 0x27, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, - 0x00, 0x12, 0x6b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x66, 0x6f, - 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x12, 0x27, 0x2e, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x70, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x42, 0x0e, - 0x5a, 0x0c, 0x2e, 0x2f, 0x3b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x00, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2f, 0x3b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_statement_proto_rawDescOnce sync.Once - file_statement_proto_rawDescData = file_statement_proto_rawDesc + file_Statement_proto_rawDescOnce sync.Once + file_Statement_proto_rawDescData = file_Statement_proto_rawDesc ) -func file_statement_proto_rawDescGZIP() []byte { - file_statement_proto_rawDescOnce.Do(func() { - file_statement_proto_rawDescData = protoimpl.X.CompressGZIP(file_statement_proto_rawDescData) +func file_Statement_proto_rawDescGZIP() []byte { + file_Statement_proto_rawDescOnce.Do(func() { + file_Statement_proto_rawDescData = protoimpl.X.CompressGZIP(file_Statement_proto_rawDescData) }) - return file_statement_proto_rawDescData + return file_Statement_proto_rawDescData } -var file_statement_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_statement_proto_goTypes = []interface{}{ - (*Contracts)(nil), // 0: statement.Contracts - (*ArtworkTxDetail)(nil), // 1: statement.ArtworkTxDetail - (*ArtworkSoldTxDetail)(nil), // 2: statement.ArtworkSoldTxDetail - (*ArtworkCopyDetail)(nil), // 3: statement.ArtworkCopyDetail - (*ArtworkSoldCopyDetail)(nil), // 4: statement.ArtworkSoldCopyDetail - (*StatementListRequest)(nil), // 5: statement.StatementListRequest - (*StatementListRespond)(nil), // 6: statement.StatementListRespond - (*GetTxInfoByBatchUidRequest)(nil), // 7: statement.GetTxInfoByBatchUidRequest - (*GetTxInfoByBatchUidRespond)(nil), // 8: statement.GetTxInfoByBatchUidRespond - (*GetCopyInfoByBatchUidRequest)(nil), // 9: statement.GetCopyInfoByBatchUidRequest - (*GetCopyInfoByBatchUidRespond)(nil), // 10: statement.GetCopyInfoByBatchUidRespond +var file_Statement_proto_msgTypes = make([]protoimpl.MessageInfo, 31) +var file_Statement_proto_goTypes = []interface{}{ + (*Contracts)(nil), // 0: statement.Contracts + (*ArtworkTxDetail)(nil), // 1: statement.ArtworkTxDetail + (*ArtworkSoldTxDetail)(nil), // 2: statement.ArtworkSoldTxDetail + (*ArtworkCopyDetail)(nil), // 3: statement.ArtworkCopyDetail + (*ArtworkSoldCopyDetail)(nil), // 4: statement.ArtworkSoldCopyDetail + (*ExcelOneInfo)(nil), // 5: statement.ExcelOneInfo + (*ExcelTwoInfo)(nil), // 6: statement.ExcelTwoInfo + (*ArtworkSoldDetailList)(nil), // 7: statement.ArtworkSoldDetailList + (*ArtistList)(nil), // 8: statement.ArtistList + (*UploadExcelOneTxRequest)(nil), // 9: statement.UploadExcelOneTxRequest + (*UploadExcelOneTxRespond)(nil), // 10: statement.UploadExcelOneTxRespond + (*UploadExcelTwoTxRequest)(nil), // 11: statement.UploadExcelTwoTxRequest + (*UploadExcelTwoTxRespond)(nil), // 12: statement.UploadExcelTwoTxRespond + (*UploadExcelOneCopyRequest)(nil), // 13: statement.UploadExcelOneCopyRequest + (*UploadExcelOneCopyRespond)(nil), // 14: statement.UploadExcelOneCopyRespond + (*UploadExcelTwoCopyRequest)(nil), // 15: statement.UploadExcelTwoCopyRequest + (*UploadExcelTwoCopyRespond)(nil), // 16: statement.UploadExcelTwoCopyRespond + (*GetAllBatchTimeTxRequest)(nil), // 17: statement.GetAllBatchTimeTxRequest + (*GetAllBatchTimeTxRespond)(nil), // 18: statement.GetAllBatchTimeTxRespond + (*GetAllBatchTimeCopyRequest)(nil), // 19: statement.GetAllBatchTimeCopyRequest + (*GetAllBatchTimeCopyRespond)(nil), // 20: statement.GetAllBatchTimeCopyRespond + (*GetArtworkSoldTxDetailListRequest)(nil), // 21: statement.GetArtworkSoldTxDetailListRequest + (*GetArtworkSoldTxDetailListRespond)(nil), // 22: statement.GetArtworkSoldTxDetailListRespond + (*GetArtworkSoldCopyDetailListRequest)(nil), // 23: statement.GetArtworkSoldCopyDetailListRequest + (*GetArtworkSoldCopyDetailListRespond)(nil), // 24: statement.GetArtworkSoldCopyDetailListRespond + (*StatementListRequest)(nil), // 25: statement.StatementListRequest + (*StatementListRespond)(nil), // 26: statement.StatementListRespond + (*GetTxInfoByBatchUidRequest)(nil), // 27: statement.GetTxInfoByBatchUidRequest + (*GetTxInfoByBatchUidRespond)(nil), // 28: statement.GetTxInfoByBatchUidRespond + (*GetCopyInfoByBatchUidRequest)(nil), // 29: statement.GetCopyInfoByBatchUidRequest + (*GetCopyInfoByBatchUidRespond)(nil), // 30: statement.GetCopyInfoByBatchUidRespond } -var file_statement_proto_depIdxs = []int32{ - 0, // 0: statement.StatementListRespond.Data:type_name -> statement.Contracts - 1, // 1: statement.GetTxInfoByBatchUidRespond.ArtworkTxDetail:type_name -> statement.ArtworkTxDetail - 2, // 2: statement.GetTxInfoByBatchUidRespond.ArtworkSoldTxDetail:type_name -> statement.ArtworkSoldTxDetail - 3, // 3: statement.GetCopyInfoByBatchUidRespond.ArtworkCopyDetail:type_name -> statement.ArtworkCopyDetail - 4, // 4: statement.GetCopyInfoByBatchUidRespond.ArtworkSoldCopyDetail:type_name -> statement.ArtworkSoldCopyDetail - 5, // 5: statement.Statement.StatementList:input_type -> statement.StatementListRequest - 7, // 6: statement.Statement.GetTxInfoByBatchUid:input_type -> statement.GetTxInfoByBatchUidRequest - 9, // 7: statement.Statement.GetCopyInfoByBatchUid:input_type -> statement.GetCopyInfoByBatchUidRequest - 6, // 8: statement.Statement.StatementList:output_type -> statement.StatementListRespond - 8, // 9: statement.Statement.GetTxInfoByBatchUid:output_type -> statement.GetTxInfoByBatchUidRespond - 10, // 10: statement.Statement.GetCopyInfoByBatchUid:output_type -> statement.GetCopyInfoByBatchUidRespond - 8, // [8:11] is the sub-list for method output_type - 5, // [5:8] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name +var file_Statement_proto_depIdxs = []int32{ + 7, // 0: statement.ArtistList.artworkSoldDetailList:type_name -> statement.ArtworkSoldDetailList + 5, // 1: statement.UploadExcelOneTxRequest.excelOneInfo:type_name -> statement.ExcelOneInfo + 6, // 2: statement.UploadExcelTwoTxRequest.excelTwoInfo:type_name -> statement.ExcelTwoInfo + 5, // 3: statement.UploadExcelOneCopyRequest.excelOneInfo:type_name -> statement.ExcelOneInfo + 6, // 4: statement.UploadExcelTwoCopyRequest.excelTwoInfo:type_name -> statement.ExcelTwoInfo + 8, // 5: statement.GetArtworkSoldTxDetailListRespond.artist_list:type_name -> statement.ArtistList + 8, // 6: statement.GetArtworkSoldCopyDetailListRespond.artist_list:type_name -> statement.ArtistList + 0, // 7: statement.StatementListRespond.data:type_name -> statement.Contracts + 1, // 8: statement.GetTxInfoByBatchUidRespond.artworkTxDetail:type_name -> statement.ArtworkTxDetail + 2, // 9: statement.GetTxInfoByBatchUidRespond.artworkSoldTxDetail:type_name -> statement.ArtworkSoldTxDetail + 3, // 10: statement.GetCopyInfoByBatchUidRespond.artworkCopyDetail:type_name -> statement.ArtworkCopyDetail + 4, // 11: statement.GetCopyInfoByBatchUidRespond.artworkSoldCopyDetail:type_name -> statement.ArtworkSoldCopyDetail + 9, // 12: statement.Statement.UploadExcelOneTx:input_type -> statement.UploadExcelOneTxRequest + 11, // 13: statement.Statement.UploadExcelTwoTx:input_type -> statement.UploadExcelTwoTxRequest + 13, // 14: statement.Statement.UploadExcelOneCopy:input_type -> statement.UploadExcelOneCopyRequest + 15, // 15: statement.Statement.UploadExcelTwoCopy:input_type -> statement.UploadExcelTwoCopyRequest + 17, // 16: statement.Statement.GetAllBatchTimeTx:input_type -> statement.GetAllBatchTimeTxRequest + 19, // 17: statement.Statement.GetAllBatchTimeCopy:input_type -> statement.GetAllBatchTimeCopyRequest + 21, // 18: statement.Statement.GetArtworkSoldTxDetailList:input_type -> statement.GetArtworkSoldTxDetailListRequest + 23, // 19: statement.Statement.GetArtworkSoldCopyDetailList:input_type -> statement.GetArtworkSoldCopyDetailListRequest + 25, // 20: statement.Statement.StatementList:input_type -> statement.StatementListRequest + 27, // 21: statement.Statement.GetTxInfoByBatchUid:input_type -> statement.GetTxInfoByBatchUidRequest + 29, // 22: statement.Statement.GetCopyInfoByBatchUid:input_type -> statement.GetCopyInfoByBatchUidRequest + 10, // 23: statement.Statement.UploadExcelOneTx:output_type -> statement.UploadExcelOneTxRespond + 12, // 24: statement.Statement.UploadExcelTwoTx:output_type -> statement.UploadExcelTwoTxRespond + 14, // 25: statement.Statement.UploadExcelOneCopy:output_type -> statement.UploadExcelOneCopyRespond + 16, // 26: statement.Statement.UploadExcelTwoCopy:output_type -> statement.UploadExcelTwoCopyRespond + 18, // 27: statement.Statement.GetAllBatchTimeTx:output_type -> statement.GetAllBatchTimeTxRespond + 20, // 28: statement.Statement.GetAllBatchTimeCopy:output_type -> statement.GetAllBatchTimeCopyRespond + 22, // 29: statement.Statement.GetArtworkSoldTxDetailList:output_type -> statement.GetArtworkSoldTxDetailListRespond + 24, // 30: statement.Statement.GetArtworkSoldCopyDetailList:output_type -> statement.GetArtworkSoldCopyDetailListRespond + 26, // 31: statement.Statement.StatementList:output_type -> statement.StatementListRespond + 28, // 32: statement.Statement.GetTxInfoByBatchUid:output_type -> statement.GetTxInfoByBatchUidRespond + 30, // 33: statement.Statement.GetCopyInfoByBatchUid:output_type -> statement.GetCopyInfoByBatchUidRespond + 23, // [23:34] is the sub-list for method output_type + 12, // [12:23] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } -func init() { file_statement_proto_init() } -func file_statement_proto_init() { - if File_statement_proto != nil { +func init() { file_Statement_proto_init() } +func file_Statement_proto_init() { + if File_Statement_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_statement_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Contracts); i { case 0: return &v.state @@ -1171,7 +2648,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtworkTxDetail); i { case 0: return &v.state @@ -1183,7 +2660,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtworkSoldTxDetail); i { case 0: return &v.state @@ -1195,7 +2672,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtworkCopyDetail); i { case 0: return &v.state @@ -1207,7 +2684,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtworkSoldCopyDetail); i { case 0: return &v.state @@ -1219,7 +2696,247 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExcelOneInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExcelTwoInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtworkSoldDetailList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtistList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelOneTxRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelOneTxRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelTwoTxRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelTwoTxRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelOneCopyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelOneCopyRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelTwoCopyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadExcelTwoCopyRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllBatchTimeTxRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllBatchTimeTxRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllBatchTimeCopyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllBatchTimeCopyRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetArtworkSoldTxDetailListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetArtworkSoldTxDetailListRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetArtworkSoldCopyDetailListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetArtworkSoldCopyDetailListRespond); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Statement_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatementListRequest); i { case 0: return &v.state @@ -1231,7 +2948,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatementListRespond); i { case 0: return &v.state @@ -1243,7 +2960,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTxInfoByBatchUidRequest); i { case 0: return &v.state @@ -1255,7 +2972,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTxInfoByBatchUidRespond); i { case 0: return &v.state @@ -1267,7 +2984,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCopyInfoByBatchUidRequest); i { case 0: return &v.state @@ -1279,7 +2996,7 @@ func file_statement_proto_init() { return nil } } - file_statement_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_Statement_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCopyInfoByBatchUidRespond); i { case 0: return &v.state @@ -1296,18 +3013,18 @@ func file_statement_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_statement_proto_rawDesc, + RawDescriptor: file_Statement_proto_rawDesc, NumEnums: 0, - NumMessages: 11, + NumMessages: 31, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_statement_proto_goTypes, - DependencyIndexes: file_statement_proto_depIdxs, - MessageInfos: file_statement_proto_msgTypes, + GoTypes: file_Statement_proto_goTypes, + DependencyIndexes: file_Statement_proto_depIdxs, + MessageInfos: file_Statement_proto_msgTypes, }.Build() - File_statement_proto = out.File - file_statement_proto_rawDesc = nil - file_statement_proto_goTypes = nil - file_statement_proto_depIdxs = nil + File_Statement_proto = out.File + file_Statement_proto_rawDesc = nil + file_Statement_proto_goTypes = nil + file_Statement_proto_depIdxs = nil } diff --git a/pb/artistinfoStatement/statement.proto b/pb/artistinfoStatement/statement.proto index 5d66ad5..1f53352 100644 --- a/pb/artistinfoStatement/statement.proto +++ b/pb/artistinfoStatement/statement.proto @@ -3,101 +3,228 @@ package statement; option go_package = "./;statement"; service Statement { + rpc UploadExcelOneTx (UploadExcelOneTxRequest) returns (UploadExcelOneTxRespond) {} + rpc UploadExcelTwoTx (UploadExcelTwoTxRequest) returns (UploadExcelTwoTxRespond) {} + rpc UploadExcelOneCopy (UploadExcelOneCopyRequest) returns (UploadExcelOneCopyRespond) {} + rpc UploadExcelTwoCopy (UploadExcelTwoCopyRequest) returns (UploadExcelTwoCopyRespond) {} + rpc GetAllBatchTimeTx (GetAllBatchTimeTxRequest) returns (GetAllBatchTimeTxRespond) {} + rpc GetAllBatchTimeCopy (GetAllBatchTimeCopyRequest) returns (GetAllBatchTimeCopyRespond) {} + rpc GetArtworkSoldTxDetailList (GetArtworkSoldTxDetailListRequest) returns (GetArtworkSoldTxDetailListRespond) {} + rpc GetArtworkSoldCopyDetailList (GetArtworkSoldCopyDetailListRequest) returns (GetArtworkSoldCopyDetailListRespond) {} rpc StatementList (StatementListRequest) returns (StatementListRespond) {} rpc GetTxInfoByBatchUid (GetTxInfoByBatchUidRequest) returns (GetTxInfoByBatchUidRespond) {} rpc GetCopyInfoByBatchUid (GetCopyInfoByBatchUidRequest) returns (GetCopyInfoByBatchUidRespond) {} } message Contracts{ - string ContractUid = 1 [json_name = "contract_uid"]; - string ArtistUid = 2 [json_name = "artist_uid"]; - string ArtworkUid = 3 [json_name = "artwork_uid"]; - string ContractId = 4 [json_name = "contract_id"]; - string TransactionId = 5 [json_name = "transaction_id"]; - int32 Type = 6 [json_name = "type"]; - string ViewUrl = 7 [json_name = "view_url"]; - string DownloadUrl = 8 [json_name = "download_url"]; - int32 State = 9 [json_name = "state"]; - int32 Status = 10 [json_name = "status"]; - string ExpirationTime = 11 [json_name = "expiration_time"]; - string LockTime = 12 [json_name = "lock_time"]; - string SignTime = 13 [json_name = "sign_time"]; - string BatchTime = 14 [json_name = "batch_time"]; - string BatchUid = 15 [json_name = "batch_uid"]; + string contractUid = 1 [json_name = "contract_uid"]; + string artistUid = 2 [json_name = "artist_uid"]; + string artworkUid = 3 [json_name = "artwork_uid"]; + string contractId = 4 [json_name = "contract_id"]; + string transactionId = 5 [json_name = "transaction_id"]; + int32 type = 6 [json_name = "type"]; + string viewUrl = 7 [json_name = "view_url"]; + string downloadUrl = 8 [json_name = "download_url"]; + int32 state = 9 [json_name = "state"]; + int32 status = 10 [json_name = "status"]; + string expirationTime = 11 [json_name = "expiration_time"]; + string lockTime = 12 [json_name = "lock_time"]; + string signTime = 13 [json_name = "sign_time"]; + string batchTime = 14 [json_name = "batch_time"]; + string batchUid = 15 [json_name = "batch_uid"]; } message ArtworkTxDetail{ - string BatchUid = 1 [json_name = "batch_uid"]; - string TfNum = 2 [json_name = "TfNum"]; - string ArtworkName = 3 [json_name = "artwork_name"]; - string Ruler = 4 [json_name = "ruler"]; - float MinPrice = 5 [json_name = "min_price"]; - float GuaranteePrice = 6 [json_name = "guarantee_price"]; + string batchUid = 1 [json_name = "batch_uid"]; + string tfNum = 2 [json_name = "TfNum"]; + string artworkName = 3 [json_name = "artwork_name"]; + float ruler = 4 [json_name = "ruler"]; + float minPrice = 5 [json_name = "min_price"]; + float guaranteePrice = 6 [json_name = "guarantee_price"]; } message ArtworkSoldTxDetail{ - string BatchUid = 1 [json_name = "batch_uid"]; - string TfNum = 2 [json_name = "TfNum"]; - string ArtworkName = 3 [json_name = "artwork_name"]; - string Ruler = 4 [json_name = "ruler"]; - string SaleNo = 5 [json_name = "sale_no"]; - string CompleteDate = 6 [json_name = "complete_date"]; - float MinPrice = 7 [json_name = "min_price"]; - float SalePrice = 8 [json_name = "sale_price"]; - float GuaranteePrice = 9 [json_name = "guarantee_price"]; + string batchUid = 1 [json_name = "batch_uid"]; + string tfNum = 2 [json_name = "TfNum"]; + string artworkName = 3 [json_name = "artwork_name"]; + float ruler = 4 [json_name = "ruler"]; + string saleNo = 5 [json_name = "sale_no"]; + string completeDate = 6 [json_name = "complete_date"]; + float minPrice = 7 [json_name = "min_price"]; + float salePrice = 8 [json_name = "sale_price"]; + float guaranteePrice = 9 [json_name = "guarantee_price"]; } message ArtworkCopyDetail{ - string BatchUid = 1 [json_name = "batch_uid"]; - string TfNum = 2 [json_name = "TfNum"]; - string ArtworkName = 3 [json_name = "artwork_name"]; - string Ruler = 4 [json_name = "ruler"]; - float MinPrice = 5 [json_name = "min_price"]; - float GuaranteePrice = 6 [json_name = "guarantee_price"]; + string batchUid = 1 [json_name = "batch_uid"]; + string tfNum = 2 [json_name = "TfNum"]; + string artworkName = 3 [json_name = "artwork_name"]; + float ruler = 4 [json_name = "ruler"]; + float minPrice = 5 [json_name = "min_price"]; + float guaranteePrice = 6 [json_name = "guarantee_price"]; } message ArtworkSoldCopyDetail{ - string BatchUid = 1 [json_name = "batch_uid"]; - string TfNum = 2 [json_name = "TfNum"]; - string ArtworkName = 3 [json_name = "artwork_name"]; - string Ruler = 4 [json_name = "ruler"]; - string SaleNo = 5 [json_name = "sale_no"]; - string CompleteDate = 6 [json_name = "complete_date"]; - float MinPrice = 7 [json_name = "min_price"]; - float SalePrice = 8 [json_name = "sale_price"]; - float GuaranteePrice = 9 [json_name = "guarantee_price"]; + string batchUid = 1 [json_name = "batch_uid"]; + string tfNum = 2 [json_name = "TfNum"]; + string artworkName = 3 [json_name = "artwork_name"]; + float ruler = 4 [json_name = "ruler"]; + string saleNo = 5 [json_name = "sale_no"]; + string completeDate = 6 [json_name = "complete_date"]; + float minPrice = 7 [json_name = "min_price"]; + float salePrice = 8 [json_name = "sale_price"]; + float guaranteePrice = 9 [json_name = "guarantee_price"]; } + message ExcelOneInfo { + string artistUid = 1 [json_name = "artist_uid"]; + string batchTime = 2 [json_name = "batch_time"]; + string artistName = 3 [json_name = "artist_uid"]; + string tfNum = 4 [json_name = "tf_num"]; + string artworkName = 5 [json_name = "artwork_name"]; + float ruler = 6 [json_name = "ruler"]; + float minPrice = 7 [json_name = "min_price"]; + float guaranteePrice = 8 [json_name = "guarantee_price"]; +} + +message ExcelTwoInfo{ + string artistUid = 1 [json_name = "artist_uid"]; + string batchTime = 2 [json_name = "batch_time"]; + string artistName = 3 [json_name = "artist_uid"]; + string tfNum = 4 [json_name = "tf_num"]; + string artworkName = 5 [json_name = "artwork_name"]; + float ruler = 6 [json_name = "ruler"]; + string saleNo = 7 [json_name = "saleNo"]; + string completeDate = 8 [json_name = "complete_date"]; + float salePrice = 9 [json_name = "salePrice"]; +} + +message ArtworkSoldDetailList{ + string artworkName = 6 [json_name = "artwork_name"]; + string tfNum = 7 [json_name = "tf_num"]; + float ruler = 8 [json_name = "ruler"]; + string saleNo = 9 [json_name = "saleNo"]; + string completeDate = 10 [json_name = "complete_date"]; + float salePrice = 11 [json_name = "salePrice"]; +} + +message ArtistList { + string batchUid = 1 [json_name = "batch_uid"]; + string artistName = 2 [json_name = "artist_uid"]; + string batchTime = 3 [json_name = "batch_time"]; + int32 state = 4 [json_name = "state"]; + int32 status = 5 [json_name = "status"]; + string viewUrl = 6 [json_name = "view_url"]; + string downloadUrl = 7 [json_name = "download_url"]; + repeated ArtworkSoldDetailList artworkSoldDetailList = 8 [json_name = "artwork_sold_detail_list"]; +} + +message UploadExcelOneTxRequest { + repeated ExcelOneInfo excelOneInfo = 1 [json_name = "excel_one_info"]; +} + +message UploadExcelOneTxRespond { + string msg = 1 [json_name = "msg"]; +} + +message UploadExcelTwoTxRequest { + repeated ExcelTwoInfo excelTwoInfo = 1 [json_name = "excel_one_info"]; +} + +message UploadExcelTwoTxRespond { + string msg = 1 [json_name = "msg"]; +} + +message UploadExcelOneCopyRequest { + repeated ExcelOneInfo excelOneInfo = 1 [json_name = "excel_one_info"]; +} + +message UploadExcelOneCopyRespond { + string msg = 1 [json_name = "msg"]; +} + +message UploadExcelTwoCopyRequest { + repeated ExcelTwoInfo excelTwoInfo = 1 [json_name = "excel_one_info"]; +} + +message UploadExcelTwoCopyRespond { + string msg = 1 [json_name = "msg"]; +} + +message GetAllBatchTimeTxRequest { + +} + +message GetAllBatchTimeTxRespond { + repeated string BatchTime = 1 [json_name = "batch_time"]; + string msg = 2 [json_name = "msg"]; +} + +message GetAllBatchTimeCopyRequest { + +} + +message GetAllBatchTimeCopyRespond { + repeated string BatchTime = 1 [json_name = "batch_time"]; + string msg = 2 [json_name = "msg"]; +} + +message GetArtworkSoldTxDetailListRequest { + string artistName = 1 [json_name = "artist_name"]; + string batchTime = 2 [json_name = "batch_time"]; + int32 state = 3 [json_name = "state"]; + int32 page = 4 [json_name = "page"]; + int32 num = 5 [json_name = "num"]; +} + +message GetArtworkSoldTxDetailListRespond { + repeated ArtistList artist_list = 1 [json_name = "artist_list"]; + string msg = 2 [json_name = "msg"]; +} + +message GetArtworkSoldCopyDetailListRequest { + string artistName = 1 [json_name = "artist_name"]; + string batchTime = 2 [json_name = "batch_time"]; + int32 state = 3 [json_name = "state"]; + int32 page = 4 [json_name = "page"]; + int32 num = 5 [json_name = "num"]; +} + +message GetArtworkSoldCopyDetailListRespond { + repeated ArtistList artist_list = 1 [json_name = "artist_list"]; + string msg = 2 [json_name = "msg"]; +} + message StatementListRequest { - string ArtistUid = 1 [json_name = "artist_uid"]; - int32 PageSize = 2 [json_name="pageSize"]; - int32 Page = 3 [json_name="page"]; - int32 State = 4 [json_name="state"]; + string artistUid = 1 [json_name = "artist_uid"]; + int32 pageSize = 2 [json_name="pageSize"]; + int32 page = 3 [json_name="page"]; + int32 state = 4 [json_name="state"]; } message StatementListRespond { - repeated Contracts Data = 1 [json_name = "data"]; - string Msg = 2 [json_name = "msg"]; + repeated Contracts data = 1 [json_name = "data"]; + string msg = 2 [json_name = "msg"]; } message GetTxInfoByBatchUidRequest { - string BatchUid = 1 [json_name = "batch_uid"]; + string batchUid = 1 [json_name = "batch_uid"]; } message GetTxInfoByBatchUidRespond { - string ArtistName = 1 [json_name = "artist_name"]; - repeated ArtworkTxDetail ArtworkTxDetail = 2 [json_name = "artwork_tx_detail"]; - repeated ArtworkSoldTxDetail ArtworkSoldTxDetail = 3 [json_name = "artwork_sold_tx_detail"]; - string Msg = 4 [json_name = "msg"]; + string artistName = 1 [json_name = "artist_name"]; + repeated ArtworkTxDetail artworkTxDetail = 2 [json_name = "artwork_tx_detail"]; + repeated ArtworkSoldTxDetail artworkSoldTxDetail = 3 [json_name = "artwork_sold_tx_detail"]; + string msg = 4 [json_name = "msg"]; } message GetCopyInfoByBatchUidRequest { - string BatchUid = 1 [json_name = "batch_uid"]; + string batchUid = 1 [json_name = "batch_uid"]; } message GetCopyInfoByBatchUidRespond { - string ArtistName = 1 [json_name = "artist_name"]; - repeated ArtworkCopyDetail ArtworkCopyDetail = 2 [json_name = "artwork_copy_detail"]; - repeated ArtworkSoldCopyDetail ArtworkSoldCopyDetail = 3 [json_name = "artwork_sold_copy_detail"]; - string Msg = 4 [json_name = "msg"]; + string artistName = 1 [json_name = "artist_name"]; + repeated ArtworkCopyDetail artworkCopyDetail = 2 [json_name = "artwork_copy_detail"]; + repeated ArtworkSoldCopyDetail artworkSoldCopyDetail = 3 [json_name = "artwork_sold_copy_detail"]; + string msg = 4 [json_name = "msg"]; } \ No newline at end of file diff --git a/pb/artistinfoStatement/statement.validator.pb.go b/pb/artistinfoStatement/statement.validator.pb.go index e8a1a37..8ef471b 100644 --- a/pb/artistinfoStatement/statement.validator.pb.go +++ b/pb/artistinfoStatement/statement.validator.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: statement.proto +// source: Statement.proto package statement @@ -30,6 +30,115 @@ func (this *ArtworkCopyDetail) Validate() error { func (this *ArtworkSoldCopyDetail) Validate() error { return nil } +func (this *ExcelOneInfo) Validate() error { + return nil +} +func (this *ExcelTwoInfo) Validate() error { + return nil +} +func (this *ArtworkSoldDetailList) Validate() error { + return nil +} +func (this *ArtistList) Validate() error { + for _, item := range this.ArtworkSoldDetailList { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ArtworkSoldDetailList", err) + } + } + } + return nil +} +func (this *UploadExcelOneTxRequest) Validate() error { + for _, item := range this.ExcelOneInfo { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ExcelOneInfo", err) + } + } + } + return nil +} +func (this *UploadExcelOneTxRespond) Validate() error { + return nil +} +func (this *UploadExcelTwoTxRequest) Validate() error { + for _, item := range this.ExcelTwoInfo { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ExcelTwoInfo", err) + } + } + } + return nil +} +func (this *UploadExcelTwoTxRespond) Validate() error { + return nil +} +func (this *UploadExcelOneCopyRequest) Validate() error { + for _, item := range this.ExcelOneInfo { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ExcelOneInfo", err) + } + } + } + return nil +} +func (this *UploadExcelOneCopyRespond) Validate() error { + return nil +} +func (this *UploadExcelTwoCopyRequest) Validate() error { + for _, item := range this.ExcelTwoInfo { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ExcelTwoInfo", err) + } + } + } + return nil +} +func (this *UploadExcelTwoCopyRespond) Validate() error { + return nil +} +func (this *GetAllBatchTimeTxRequest) Validate() error { + return nil +} +func (this *GetAllBatchTimeTxRespond) Validate() error { + return nil +} +func (this *GetAllBatchTimeCopyRequest) Validate() error { + return nil +} +func (this *GetAllBatchTimeCopyRespond) Validate() error { + return nil +} +func (this *GetArtworkSoldTxDetailListRequest) Validate() error { + return nil +} +func (this *GetArtworkSoldTxDetailListRespond) Validate() error { + for _, item := range this.ArtistList { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ArtistList", err) + } + } + } + return nil +} +func (this *GetArtworkSoldCopyDetailListRequest) Validate() error { + return nil +} +func (this *GetArtworkSoldCopyDetailListRespond) Validate() error { + for _, item := range this.ArtistList { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("ArtistList", err) + } + } + } + return nil +} func (this *StatementListRequest) Validate() error { return nil } diff --git a/pb/artistinfoStatement/statement_triple.pb.go b/pb/artistinfoStatement/statement_triple.pb.go index 6f73cec..dd09bb3 100644 --- a/pb/artistinfoStatement/statement_triple.pb.go +++ b/pb/artistinfoStatement/statement_triple.pb.go @@ -2,7 +2,7 @@ // versions: // - protoc-gen-go-triple v1.0.8 // - protoc v3.21.8 -// source: statement.proto +// source: Statement.proto package statement @@ -28,6 +28,14 @@ const _ = grpc_go.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type StatementClient interface { + UploadExcelOneTx(ctx context.Context, in *UploadExcelOneTxRequest, opts ...grpc_go.CallOption) (*UploadExcelOneTxRespond, common.ErrorWithAttachment) + UploadExcelTwoTx(ctx context.Context, in *UploadExcelTwoTxRequest, opts ...grpc_go.CallOption) (*UploadExcelTwoTxRespond, common.ErrorWithAttachment) + UploadExcelOneCopy(ctx context.Context, in *UploadExcelOneCopyRequest, opts ...grpc_go.CallOption) (*UploadExcelOneCopyRespond, common.ErrorWithAttachment) + UploadExcelTwoCopy(ctx context.Context, in *UploadExcelTwoCopyRequest, opts ...grpc_go.CallOption) (*UploadExcelTwoCopyRespond, common.ErrorWithAttachment) + GetAllBatchTimeTx(ctx context.Context, in *GetAllBatchTimeTxRequest, opts ...grpc_go.CallOption) (*GetAllBatchTimeTxRespond, common.ErrorWithAttachment) + GetAllBatchTimeCopy(ctx context.Context, in *GetAllBatchTimeCopyRequest, opts ...grpc_go.CallOption) (*GetAllBatchTimeCopyRespond, common.ErrorWithAttachment) + GetArtworkSoldTxDetailList(ctx context.Context, in *GetArtworkSoldTxDetailListRequest, opts ...grpc_go.CallOption) (*GetArtworkSoldTxDetailListRespond, common.ErrorWithAttachment) + GetArtworkSoldCopyDetailList(ctx context.Context, in *GetArtworkSoldCopyDetailListRequest, opts ...grpc_go.CallOption) (*GetArtworkSoldCopyDetailListRespond, common.ErrorWithAttachment) StatementList(ctx context.Context, in *StatementListRequest, opts ...grpc_go.CallOption) (*StatementListRespond, common.ErrorWithAttachment) GetTxInfoByBatchUid(ctx context.Context, in *GetTxInfoByBatchUidRequest, opts ...grpc_go.CallOption) (*GetTxInfoByBatchUidRespond, common.ErrorWithAttachment) GetCopyInfoByBatchUid(ctx context.Context, in *GetCopyInfoByBatchUidRequest, opts ...grpc_go.CallOption) (*GetCopyInfoByBatchUidRespond, common.ErrorWithAttachment) @@ -38,9 +46,17 @@ type statementClient struct { } type StatementClientImpl struct { - StatementList func(ctx context.Context, in *StatementListRequest) (*StatementListRespond, error) - GetTxInfoByBatchUid func(ctx context.Context, in *GetTxInfoByBatchUidRequest) (*GetTxInfoByBatchUidRespond, error) - GetCopyInfoByBatchUid func(ctx context.Context, in *GetCopyInfoByBatchUidRequest) (*GetCopyInfoByBatchUidRespond, error) + UploadExcelOneTx func(ctx context.Context, in *UploadExcelOneTxRequest) (*UploadExcelOneTxRespond, error) + UploadExcelTwoTx func(ctx context.Context, in *UploadExcelTwoTxRequest) (*UploadExcelTwoTxRespond, error) + UploadExcelOneCopy func(ctx context.Context, in *UploadExcelOneCopyRequest) (*UploadExcelOneCopyRespond, error) + UploadExcelTwoCopy func(ctx context.Context, in *UploadExcelTwoCopyRequest) (*UploadExcelTwoCopyRespond, error) + GetAllBatchTimeTx func(ctx context.Context, in *GetAllBatchTimeTxRequest) (*GetAllBatchTimeTxRespond, error) + GetAllBatchTimeCopy func(ctx context.Context, in *GetAllBatchTimeCopyRequest) (*GetAllBatchTimeCopyRespond, error) + GetArtworkSoldTxDetailList func(ctx context.Context, in *GetArtworkSoldTxDetailListRequest) (*GetArtworkSoldTxDetailListRespond, error) + GetArtworkSoldCopyDetailList func(ctx context.Context, in *GetArtworkSoldCopyDetailListRequest) (*GetArtworkSoldCopyDetailListRespond, error) + StatementList func(ctx context.Context, in *StatementListRequest) (*StatementListRespond, error) + GetTxInfoByBatchUid func(ctx context.Context, in *GetTxInfoByBatchUidRequest) (*GetTxInfoByBatchUidRespond, error) + GetCopyInfoByBatchUid func(ctx context.Context, in *GetCopyInfoByBatchUidRequest) (*GetCopyInfoByBatchUidRespond, error) } func (c *StatementClientImpl) GetDubboStub(cc *triple.TripleConn) StatementClient { @@ -55,6 +71,54 @@ func NewStatementClient(cc *triple.TripleConn) StatementClient { return &statementClient{cc} } +func (c *statementClient) UploadExcelOneTx(ctx context.Context, in *UploadExcelOneTxRequest, opts ...grpc_go.CallOption) (*UploadExcelOneTxRespond, common.ErrorWithAttachment) { + out := new(UploadExcelOneTxRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UploadExcelOneTx", in, out) +} + +func (c *statementClient) UploadExcelTwoTx(ctx context.Context, in *UploadExcelTwoTxRequest, opts ...grpc_go.CallOption) (*UploadExcelTwoTxRespond, common.ErrorWithAttachment) { + out := new(UploadExcelTwoTxRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UploadExcelTwoTx", in, out) +} + +func (c *statementClient) UploadExcelOneCopy(ctx context.Context, in *UploadExcelOneCopyRequest, opts ...grpc_go.CallOption) (*UploadExcelOneCopyRespond, common.ErrorWithAttachment) { + out := new(UploadExcelOneCopyRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UploadExcelOneCopy", in, out) +} + +func (c *statementClient) UploadExcelTwoCopy(ctx context.Context, in *UploadExcelTwoCopyRequest, opts ...grpc_go.CallOption) (*UploadExcelTwoCopyRespond, common.ErrorWithAttachment) { + out := new(UploadExcelTwoCopyRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UploadExcelTwoCopy", in, out) +} + +func (c *statementClient) GetAllBatchTimeTx(ctx context.Context, in *GetAllBatchTimeTxRequest, opts ...grpc_go.CallOption) (*GetAllBatchTimeTxRespond, common.ErrorWithAttachment) { + out := new(GetAllBatchTimeTxRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetAllBatchTimeTx", in, out) +} + +func (c *statementClient) GetAllBatchTimeCopy(ctx context.Context, in *GetAllBatchTimeCopyRequest, opts ...grpc_go.CallOption) (*GetAllBatchTimeCopyRespond, common.ErrorWithAttachment) { + out := new(GetAllBatchTimeCopyRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetAllBatchTimeCopy", in, out) +} + +func (c *statementClient) GetArtworkSoldTxDetailList(ctx context.Context, in *GetArtworkSoldTxDetailListRequest, opts ...grpc_go.CallOption) (*GetArtworkSoldTxDetailListRespond, common.ErrorWithAttachment) { + out := new(GetArtworkSoldTxDetailListRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetArtworkSoldTxDetailList", in, out) +} + +func (c *statementClient) GetArtworkSoldCopyDetailList(ctx context.Context, in *GetArtworkSoldCopyDetailListRequest, opts ...grpc_go.CallOption) (*GetArtworkSoldCopyDetailListRespond, common.ErrorWithAttachment) { + out := new(GetArtworkSoldCopyDetailListRespond) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetArtworkSoldCopyDetailList", in, out) +} + func (c *statementClient) StatementList(ctx context.Context, in *StatementListRequest, opts ...grpc_go.CallOption) (*StatementListRespond, common.ErrorWithAttachment) { out := new(StatementListRespond) interfaceKey := ctx.Value(constant.InterfaceKey).(string) @@ -77,6 +141,14 @@ func (c *statementClient) GetCopyInfoByBatchUid(ctx context.Context, in *GetCopy // All implementations must embed UnimplementedStatementServer // for forward compatibility type StatementServer interface { + UploadExcelOneTx(context.Context, *UploadExcelOneTxRequest) (*UploadExcelOneTxRespond, error) + UploadExcelTwoTx(context.Context, *UploadExcelTwoTxRequest) (*UploadExcelTwoTxRespond, error) + UploadExcelOneCopy(context.Context, *UploadExcelOneCopyRequest) (*UploadExcelOneCopyRespond, error) + UploadExcelTwoCopy(context.Context, *UploadExcelTwoCopyRequest) (*UploadExcelTwoCopyRespond, error) + GetAllBatchTimeTx(context.Context, *GetAllBatchTimeTxRequest) (*GetAllBatchTimeTxRespond, error) + GetAllBatchTimeCopy(context.Context, *GetAllBatchTimeCopyRequest) (*GetAllBatchTimeCopyRespond, error) + GetArtworkSoldTxDetailList(context.Context, *GetArtworkSoldTxDetailListRequest) (*GetArtworkSoldTxDetailListRespond, error) + GetArtworkSoldCopyDetailList(context.Context, *GetArtworkSoldCopyDetailListRequest) (*GetArtworkSoldCopyDetailListRespond, error) StatementList(context.Context, *StatementListRequest) (*StatementListRespond, error) GetTxInfoByBatchUid(context.Context, *GetTxInfoByBatchUidRequest) (*GetTxInfoByBatchUidRespond, error) GetCopyInfoByBatchUid(context.Context, *GetCopyInfoByBatchUidRequest) (*GetCopyInfoByBatchUidRespond, error) @@ -88,6 +160,30 @@ type UnimplementedStatementServer struct { proxyImpl protocol.Invoker } +func (UnimplementedStatementServer) UploadExcelOneTx(context.Context, *UploadExcelOneTxRequest) (*UploadExcelOneTxRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method UploadExcelOneTx not implemented") +} +func (UnimplementedStatementServer) UploadExcelTwoTx(context.Context, *UploadExcelTwoTxRequest) (*UploadExcelTwoTxRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method UploadExcelTwoTx not implemented") +} +func (UnimplementedStatementServer) UploadExcelOneCopy(context.Context, *UploadExcelOneCopyRequest) (*UploadExcelOneCopyRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method UploadExcelOneCopy not implemented") +} +func (UnimplementedStatementServer) UploadExcelTwoCopy(context.Context, *UploadExcelTwoCopyRequest) (*UploadExcelTwoCopyRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method UploadExcelTwoCopy not implemented") +} +func (UnimplementedStatementServer) GetAllBatchTimeTx(context.Context, *GetAllBatchTimeTxRequest) (*GetAllBatchTimeTxRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAllBatchTimeTx not implemented") +} +func (UnimplementedStatementServer) GetAllBatchTimeCopy(context.Context, *GetAllBatchTimeCopyRequest) (*GetAllBatchTimeCopyRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAllBatchTimeCopy not implemented") +} +func (UnimplementedStatementServer) GetArtworkSoldTxDetailList(context.Context, *GetArtworkSoldTxDetailListRequest) (*GetArtworkSoldTxDetailListRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetArtworkSoldTxDetailList not implemented") +} +func (UnimplementedStatementServer) GetArtworkSoldCopyDetailList(context.Context, *GetArtworkSoldCopyDetailListRequest) (*GetArtworkSoldCopyDetailListRespond, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetArtworkSoldCopyDetailList not implemented") +} func (UnimplementedStatementServer) StatementList(context.Context, *StatementListRequest) (*StatementListRespond, error) { return nil, status.Errorf(codes.Unimplemented, "method StatementList not implemented") } @@ -125,6 +221,238 @@ func RegisterStatementServer(s grpc_go.ServiceRegistrar, srv StatementServer) { s.RegisterService(&Statement_ServiceDesc, srv) } +func _Statement_UploadExcelOneTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadExcelOneTxRequest) + 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("UploadExcelOneTx", 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 _Statement_UploadExcelTwoTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadExcelTwoTxRequest) + 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("UploadExcelTwoTx", 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 _Statement_UploadExcelOneCopy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadExcelOneCopyRequest) + 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("UploadExcelOneCopy", 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 _Statement_UploadExcelTwoCopy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadExcelTwoCopyRequest) + 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("UploadExcelTwoCopy", 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 _Statement_GetAllBatchTimeTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAllBatchTimeTxRequest) + 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("GetAllBatchTimeTx", 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 _Statement_GetAllBatchTimeCopy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAllBatchTimeCopyRequest) + 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("GetAllBatchTimeCopy", 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 _Statement_GetArtworkSoldTxDetailList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetArtworkSoldTxDetailListRequest) + 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("GetArtworkSoldTxDetailList", 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 _Statement_GetArtworkSoldCopyDetailList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetArtworkSoldCopyDetailListRequest) + 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("GetArtworkSoldCopyDetailList", 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 _Statement_StatementList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { in := new(StatementListRequest) if err := dec(in); err != nil { @@ -219,6 +547,38 @@ var Statement_ServiceDesc = grpc_go.ServiceDesc{ ServiceName: "statement.Statement", HandlerType: (*StatementServer)(nil), Methods: []grpc_go.MethodDesc{ + { + MethodName: "UploadExcelOneTx", + Handler: _Statement_UploadExcelOneTx_Handler, + }, + { + MethodName: "UploadExcelTwoTx", + Handler: _Statement_UploadExcelTwoTx_Handler, + }, + { + MethodName: "UploadExcelOneCopy", + Handler: _Statement_UploadExcelOneCopy_Handler, + }, + { + MethodName: "UploadExcelTwoCopy", + Handler: _Statement_UploadExcelTwoCopy_Handler, + }, + { + MethodName: "GetAllBatchTimeTx", + Handler: _Statement_GetAllBatchTimeTx_Handler, + }, + { + MethodName: "GetAllBatchTimeCopy", + Handler: _Statement_GetAllBatchTimeCopy_Handler, + }, + { + MethodName: "GetArtworkSoldTxDetailList", + Handler: _Statement_GetArtworkSoldTxDetailList_Handler, + }, + { + MethodName: "GetArtworkSoldCopyDetailList", + Handler: _Statement_GetArtworkSoldCopyDetailList_Handler, + }, { MethodName: "StatementList", Handler: _Statement_StatementList_Handler, @@ -233,5 +593,5 @@ var Statement_ServiceDesc = grpc_go.ServiceDesc{ }, }, Streams: []grpc_go.StreamDesc{}, - Metadata: "statement.proto", + Metadata: "Statement.proto", } diff --git a/pb/contract/contract.pb.go b/pb/contract/contract.pb.go index b68255c..83d39af 100644 --- a/pb/contract/contract.pb.go +++ b/pb/contract/contract.pb.go @@ -40,7 +40,7 @@ type Contracts struct { SignTime string `protobuf:"bytes,13,opt,name=SignTime,json=sign_time,proto3" json:"SignTime,omitempty"` BatchTime string `protobuf:"bytes,14,opt,name=BatchTime,json=batch_time,proto3" json:"BatchTime,omitempty"` BatchUid string `protobuf:"bytes,15,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` - StType int32 `protobuf:"varint,16,opt,name=StType,json=st_yype,proto3" json:"StType,omitempty"` + StType int32 `protobuf:"varint,16,opt,name=StType,json=st_type,proto3" json:"StType,omitempty"` } func (x *Contracts) Reset() { @@ -194,7 +194,9 @@ type CreateContractRequest struct { ArtistUid string `protobuf:"bytes,1,opt,name=ArtistUid,json=artist_uid,proto3" json:"ArtistUid,omitempty"` ArtworkUid []string `protobuf:"bytes,2,rep,name=ArtworkUid,json=artwork_uid,proto3" json:"ArtworkUid,omitempty"` - Type int32 `protobuf:"varint,3,opt,name=Type,json=type,proto3" json:"Type,omitempty"` + BatchUid string `protobuf:"bytes,3,opt,name=BatchUid,json=batch_uid,proto3" json:"BatchUid,omitempty"` + BatchTime string `protobuf:"bytes,4,opt,name=BatchTime,json=batch_time,proto3" json:"BatchTime,omitempty"` + Type int32 `protobuf:"varint,5,opt,name=Type,json=type,proto3" json:"Type,omitempty"` } func (x *CreateContractRequest) Reset() { @@ -243,6 +245,20 @@ func (x *CreateContractRequest) GetArtworkUid() []string { return nil } +func (x *CreateContractRequest) GetBatchUid() string { + if x != nil { + return x.BatchUid + } + return "" +} + +func (x *CreateContractRequest) GetBatchTime() string { + if x != nil { + return x.BatchTime + } + return "" +} + func (x *CreateContractRequest) GetType() int32 { if x != nil { return x.Type @@ -1441,194 +1457,198 @@ var file_contract_proto_rawDesc = []byte{ 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x5f, 0x79, 0x79, 0x70, - 0x65, 0x22, 0x6b, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, - 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x29, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x76, 0x0a, 0x17, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, - 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x50, - 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, - 0x6d, 0x22, 0x5a, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x7a, 0x0a, - 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, - 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x56, 0x0a, 0x13, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, + 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, + 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x15, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x76, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x5a, + 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, + 0x6d, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x7a, 0x0a, 0x13, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x56, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, + 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xb2, + 0x02, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, + 0x0a, 0x08, 0x48, 0x74, 0x6d, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x68, 0x74, 0x6d, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x45, + 0x6e, 0x76, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, + 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0a, 0x56, 0x69, 0x65, 0x77, 0x50, 0x64, + 0x66, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x69, 0x65, 0x77, + 0x5f, 0x70, 0x64, 0x66, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x6f, 0x12, 0x25, 0x0a, 0x0d, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x4a, 0x75, + 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x75, 0x6d, + 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x61, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x5b, 0x0a, 0x15, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x6e, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x22, 0xb2, 0x02, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x1b, 0x0a, 0x08, 0x48, 0x74, 0x6d, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x74, 0x6d, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, - 0x0a, 0x07, 0x45, 0x6e, 0x76, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x6e, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0a, 0x56, 0x69, 0x65, - 0x77, 0x50, 0x64, 0x66, 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, - 0x69, 0x65, 0x77, 0x5f, 0x70, 0x64, 0x66, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0b, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x1f, - 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x6f, 0x12, - 0x25, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x19, 0x0a, - 0x07, 0x4a, 0x75, 0x6d, 0x70, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x61, 0x0a, 0x15, 0x46, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x22, 0x5b, 0x0a, - 0x15, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x73, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x6e, 0x0a, 0x15, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6d, 0x73, 0x67, 0x22, 0x49, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0b, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x66, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xfd, 0x03, - 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x67, 0x6d, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x67, 0x6d, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x69, 0x65, 0x77, 0x55, - 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, - 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x17, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x4f, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x64, 0x32, 0xe3, 0x05, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x60, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x12, 0x27, 0x2e, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, - 0x5a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x23, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, 0x53, - 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x53, 0x69, 0x67, - 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x1c, + 0x67, 0x22, 0x49, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, - 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x12, 0x33, 0x2e, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x2e, 0x2f, 0x3b, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6d, 0x73, 0x67, 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xfd, 0x03, 0x0a, 0x15, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, + 0x72, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x67, 0x6d, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x67, 0x6d, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12, 0x20, + 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x22, 0x4f, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x24, + 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x32, + 0xe3, 0x05, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x12, 0x60, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x64, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x12, 0x27, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x4d, + 0x67, 0x6d, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x53, + 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x64, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x78, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x12, 0x33, 0x2e, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, + 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x42, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x55, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x64, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x2e, 0x2f, 0x3b, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/pb/contract/contract.proto b/pb/contract/contract.proto index f762394..4f9f68f 100644 --- a/pb/contract/contract.proto +++ b/pb/contract/contract.proto @@ -39,7 +39,9 @@ message Contracts{ message CreateContractRequest { string ArtistUid = 1 [json_name="artist_uid"]; repeated string ArtworkUid = 2 [json_name="artwork_uid"]; - int32 Type = 3 [json_name="type"]; + string BatchUid = 3 [json_name="batch_uid"]; + string BatchTime = 4 [json_name="batch_time"]; + int32 Type = 5 [json_name="type"]; } message CreateContractRespond{ diff --git a/pkg/util/utils.go b/pkg/util/utils.go index 28bee94..b4a975f 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -2,6 +2,7 @@ package util import ( "bytes" + "errors" "fmt" "io" "io/ioutil" @@ -14,6 +15,7 @@ import ( "github.com/fonchain/fonchain-artistinfo/pkg/m" "github.com/fonchain/utils/objstorage" + uuid "github.com/satori/go.uuid" ) // IdCardTurnAge 身份证号读取年龄 @@ -165,3 +167,13 @@ func Post(url, data string) (string, error) { // str := (*string)(unsafe.Pointer(&respBytes)) return string(respBytes), nil } + +// 生成uid +func GetUid() (uuids string, err error) { + var uid uuid.UUID + if uid, err = uuid.NewV4(); err != nil { + err = errors.New(m.ERROR_UID) + return "", err + } + return uid.String(), nil +}