对账单后台管理部分代码提交

This commit is contained in:
songchuang 2023-04-17 09:35:03 +08:00
parent 6d247aa4a4
commit 2b9e317444
18 changed files with 4018 additions and 904 deletions

View File

@ -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 {

View File

@ -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
// }

View File

@ -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 {

View File

@ -95,6 +95,46 @@ func CreateArtworkContract(tx *gorm.DB, artworkUid []string, artistUid string, c
return
}
func StatementContractNo(artistUid, batchUid string) (err error) {
//画作有合同类型是26的都是 点击过"著作权代理转让服务合同"的
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 {

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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
// }

View File

@ -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)
}

View File

@ -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"` //当前批次的物权委托单详情

View File

@ -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:委托销售底价"`

File diff suppressed because it is too large Load Diff

View File

@ -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"];
}

View File

@ -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
}

View File

@ -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",
}

View File

@ -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 (

View File

@ -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{

View File

@ -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
}