diff --git a/cmd/controller/art_show.go b/cmd/controller/art_show.go index fa9d92c..d917514 100644 --- a/cmd/controller/art_show.go +++ b/cmd/controller/art_show.go @@ -42,7 +42,7 @@ func (p *ArtShowProvider) UpdateShow(ctx context.Context, req *artShow.SaveShowR res = new(artShow.SaveShowRes) if req.IsShow == m.ARTSHOW_INSIDE { showRel := new(model.ShowRel) - err, showRel = service.QueryShowRel(uint(req.ID)) + err, showRel = service.QueryShowRel_showId(req.ID) if err != nil { return res, err } @@ -64,6 +64,7 @@ func (p *ArtShowProvider) UpdateShow(ctx context.Context, req *artShow.SaveShowR } func (p *ArtShowProvider) DelShow(ctx context.Context, req *artShow.DelShowReq) (res *artShow.CommonRes, err error) { + res = new(artShow.CommonRes) if len(req.ShowID) < 1 { err = errors.New(m.ERROR_INVALID_ID) return @@ -95,8 +96,18 @@ func (p *ArtShowProvider) ShowList(ctx context.Context, req *artShow.ShowListReq return } -func (p *ArtShowProvider) ShowInfo(ctx context.Context, req *artShow.ShowDetailReq) (res *artShow.ShowArtworkDetailRes, err error) { - err, res = service.ShowInfo(req) +func (p *ArtShowProvider) ShowArtworkInfo(ctx context.Context, req *artShow.ShowDetailReq) (res *artShow.ShowArtworkDetailRes, err error) { + err, res = service.ShowArtworkInfo(req) + if err != nil { + res.Msg = err.Error() + err = errors.New(m.ERROR_QUERY) + return + } + return +} + +func (p *ArtShowProvider) ShowDetail(ctx context.Context, req *artShow.ShowDetailReq) (res *artShow.ShowDetailRes, err error) { + err, res = service.ShowDetail(req) if err != nil { res.Msg = err.Error() err = errors.New(m.ERROR_QUERY) diff --git a/cmd/dao/art_show.go b/cmd/dao/art_show.go index a9c7cfd..0d7cc8d 100644 --- a/cmd/dao/art_show.go +++ b/cmd/dao/art_show.go @@ -6,14 +6,15 @@ import ( "fonchain-artshow/pkg/db" "go.uber.org/zap" "gorm.io/gorm" + "log" ) func SaveArtShow(tx *gorm.DB, artShow *model.ArtShow) (err error) { if artShow.ID != uint(0) { - err = tx.Model(&model.ArtShow{}).Omit("id").Where("id = ?", artShow.ID).Updates(&artShow).Error + err = tx.Model(&model.ArtShow{}).Omit("id").Where("id = ?", artShow.ID).Updates(artShow).Error } else { - err = tx.Model(&model.ArtShow{}).Create(artShow).Error + err = tx.Model(&model.ArtShow{}).Create(&artShow).Error } if err != nil { zap.L().Error("ArtShow err", zap.Error(err)) @@ -82,8 +83,8 @@ func ArtShowListByApplyStatus(in *artShow.ShowListReq) (err error, total int64, return } -func DelArtShow(in *artShow.DelShowReq) (err error) { - err = db.DbArtShow.Where("id = ?", in.ShowID).Delete(&model.ArtShow{}).Error +func DelArtShow(tx *gorm.DB, show_id int64) (err error) { + err = tx.Where("id = ?", show_id).Delete(&model.ArtShow{}).Error if err != nil { zap.L().Error("ArtShow delete err", zap.Error(err)) return @@ -97,21 +98,45 @@ func QueryArtShow(id uint) (err error, out *model.ArtShow) { zap.L().Error("ArtShow Find err", zap.Error(err)) return } + log.Println(out) return } -func ShowStatistical(isShow int32) (err error, artistNum int64, packageNum int64) { +func ShowStatistical(isShow int32) (err error, artistNum, packageNum, totalNum, NotShowNum, ShowHisNum int64) { + artistNum = 0 err = db.DbArtShow.Model(&model.ArtShow{}).Distinct("artist_name").Where("is_show = ?", isShow).Count(&artistNum).Error if err != nil { zap.L().Error("ShowStatistical artistNum count err", zap.Error(err)) return } + packageNum = 0 err = db.DbArtShow.Model(&model.ArtShow{}).Where("is_show = ?", isShow).Count(&packageNum).Error if err != nil { zap.L().Error("ShowStatistical packageNum count err", zap.Error(err)) return } + + totalNum = 0 + err = db.DbArtShow.Model(&model.ArtShow{}).Count(&totalNum).Error + if err != nil { + zap.L().Error("ShowStatistical totalNum count err", zap.Error(err)) + return + } + + NotShowNum = 0 + err = db.DbArtShow.Table("art_show as a").Distinct("b.artist_name").Joins(" join artwork_price as b on b.show_id = a.id").Where("a.is_show in (1,2)").Count(&NotShowNum).Error + if err != nil { + zap.L().Error("ShowStatistical totalNum count err", zap.Error(err)) + return + } + + ShowHisNum = 0 + err = db.DbArtShow.Table("art_show as a").Distinct("b.artist_name").Joins(" join artwork_price as b on b.show_id = a.id").Where("a.is_show = 3 ").Count(&ShowHisNum).Error + if err != nil { + zap.L().Error("ShowStatistical totalNum count err", zap.Error(err)) + return + } return } diff --git a/cmd/dao/artwork_price.go b/cmd/dao/artwork_price.go index e5d99f2..ee822b9 100644 --- a/cmd/dao/artwork_price.go +++ b/cmd/dao/artwork_price.go @@ -14,7 +14,13 @@ func SaveArtworkPrice(tx *gorm.DB, artworks []*model.ArtworkPrice) (err error, i if artworks[i].ID != 0 { err = tx.Model(&model.ArtworkPrice{}).Omit("id").Where("id = ?", artworks[i].ID).Updates(artworks[i]).Error } else { - err = tx.Model(&model.ArtworkPrice{}).Create(&artworks[i]).Error + artworkPrice := new(model.ArtworkPrice) + results := tx.Model(&model.ArtworkPrice{}).Where("show_id = ? and artwork_id = ?", artworks[i].ShowID, artworks[i].ArtworkID).First(&artworkPrice) + if results.Error == nil || artworkPrice.ID == 0 { + err = tx.Model(&model.ArtworkPrice{}).Create(&artworks[i]).Error + } else { + err = tx.Model(&model.ArtworkPrice{}).Where("show_id = ? and artwork_id = ?", artworks[i].ShowID, artworks[i].ArtworkID).Updates(artworks[i]).Error + } } if err != nil { zap.L().Error("Artwork price save err", zap.Error(err)) @@ -55,8 +61,17 @@ func QueryArtworkPrice_id(id uint) (err error, out *model.ArtworkPrice) { return } -func DelArtworkPrice(tx *gorm.DB, ids []uint) (err error) { - err = tx.Where("id in (?)", ids).Delete(&model.ArtworkPrice{}, ids).Error +func DelArtworkPrice(tx *gorm.DB, ids []int64) (err error) { + err = tx.Where("id in (?)", ids).Delete(&model.ArtworkPrice{}).Error + if err != nil { + zap.L().Error("Artwork delete err", zap.Error(err)) + return + } + return +} + +func DelArtworkPrice_showId(tx *gorm.DB, id int64) (err error) { + err = tx.Where("show_id = ? ", id).Delete(&model.ArtworkPrice{}).Error if err != nil { zap.L().Error("Artwork delete err", zap.Error(err)) return diff --git a/cmd/dao/show_apply.go b/cmd/dao/show_apply.go index 7e4659a..1ec091b 100644 --- a/cmd/dao/show_apply.go +++ b/cmd/dao/show_apply.go @@ -15,7 +15,7 @@ func SaveShowApply(showApply *model.ShowApply) (tx *gorm.DB, err error) { if showApply.ID != uint(0) { err = tx.Model(&model.ShowApply{}).Omit("id").Where("id = ?", showApply.ID).Updates(showApply).Error } else { - err = tx.Model(&model.ShowApply{}).Create(showApply).Error + err = tx.Model(&model.ShowApply{}).Create(&showApply).Error } if err != nil { zap.L().Error("ShowApply err", zap.Error(err)) @@ -60,6 +60,7 @@ func ShowApplyDetail(applyID uint) (err error, out *model.ShowApply) { } return } + func DelShowApply(in *artShow.DelApplyReq) (tx *gorm.DB, err error) { tx = db.DbArtShow.Begin() err = tx.Delete(&model.ShowApply{}, in.ApplyID).Error diff --git a/cmd/dao/show_rel.go b/cmd/dao/show_rel.go index 5c9edcd..eaa2191 100644 --- a/cmd/dao/show_rel.go +++ b/cmd/dao/show_rel.go @@ -13,7 +13,13 @@ func SaveShowRels(tx *gorm.DB, showRels []*model.ShowRel) (err error, out []uint if showRels[i].ID != 0 { err = tx.Model(&model.ShowRel{}).Omit("id").Where("id = ?", showRels[i].ID).Updates(showRels[i]).Error } else { - err = tx.Model(&model.ShowRel{}).Create(&showRels[i]).Error + showRel := new(model.ShowRel) + results := tx.Model(&model.ArtworkPrice{}).Where("show_id = ? and apply_id = ?", showRels[i].ShowID, showRels[i].ApplyID).First(&showRel) + if results.Error == nil || showRel.ID == 0 { + err = tx.Model(&model.ArtworkPrice{}).Create(&showRels[i]).Error + } else { + err = tx.Model(&model.ArtworkPrice{}).Where("show_id = ? and apply_id = ?", showRels[i].ShowID, showRels[i].ApplyID).Updates(showRels[i]).Error + } } if err != nil { zap.L().Error("ShowRels err", zap.Error(err)) @@ -33,7 +39,7 @@ func SaveShowRel(tx *gorm.DB, showRel *model.ShowRel) (err error) { return } -func DelShowRel(tx *gorm.DB, ids []uint) (err error) { +func DelShowRel(tx *gorm.DB, ids []int64) (err error) { err = tx.Where("id in (?)", ids).Delete(&model.ShowRel{}).Error if err != nil { zap.L().Error("ShowRel delete err", zap.Error(err)) @@ -51,11 +57,11 @@ func DelShowRelByApplyID(tx *gorm.DB, applyID uint) (err error) { return } -func QueryShowRel(showID uint) (err error, out *model.ShowRel) { +func QueryShowRel_showId(showID int64) (err error, out *model.ShowRel) { out = new(model.ShowRel) findDB := db.DbArtShow.Model(&model.ShowRel{}) if showID != 0 { - findDB = findDB.Where("id = ? ", showID) + findDB = findDB.Where("show_id = ? ", showID) } err = findDB.Find(&out).Error if err != nil { diff --git a/cmd/main.go b/cmd/main.go index d4601dc..a06c451 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -2,12 +2,12 @@ package main import ( "fmt" - "fonchain-artshow/pb/artShow" - "google.golang.org/grpc" + grpc2 "fonchain-artshow/pb/grpc" - //grpc_go "github.com/dubbogo/grpc-go" "net" + "google.golang.org/grpc" + "fonchain-artshow/cmd/controller" "fonchain-artshow/pkg/db" "fonchain-artshow/pkg/logger" @@ -15,7 +15,7 @@ import ( ) type server struct { - artShow.UnimplementedArtShowServer + grpc2.UnimplementedArtShowServer } func main() { @@ -25,8 +25,8 @@ func main() { return } - s := grpc.NewServer() // 创建gRPC服务器 - artShow.RegisterArtShowServer(s, &controller.ArtShowProvider{}) // 在gRPC服务端注册服务 + s := grpc.NewServer() // 创建gRPC服务器 + grpc2.RegisterArtShowServer(s, &controller.ArtShowProvider{}) // 在gRPC服务端注册服务 db.Init(m.SERVER_CONFIG) //初始化zap diff --git a/cmd/model/artwork_price.go b/cmd/model/artwork_price.go index f525cb3..d74251c 100644 --- a/cmd/model/artwork_price.go +++ b/cmd/model/artwork_price.go @@ -12,6 +12,8 @@ type ArtworkPrice struct { SmallPic string `json:"small_pic" gorm:"small_pic"` // 画作小图 Price int64 `json:"price" gorm:"price"` // 总价 RulerPrice int64 `json:"ruler_price" gorm:"ruler_price"` // 平尺价 + Length int32 `json:"length" gorm:"length"` // 画作长度 + Width int32 `json:"width" gorm:"width"` // 画作宽度 Ruler int32 `json:"ruler" gorm:"ruler"` // 画作平尺 ArtworkPrice int64 `json:"artwork_price" gorm:"artwork_price"` // 画作价格 MarketPrice int64 `json:"market_price" gorm:"market_price"` // 市场价 diff --git a/cmd/service/art_show.go b/cmd/service/art_show.go index 8c9cd22..a770471 100644 --- a/cmd/service/art_show.go +++ b/cmd/service/art_show.go @@ -1,13 +1,14 @@ package service import ( + "errors" + "fmt" "fonchain-artshow/cmd/dao" "fonchain-artshow/cmd/model" "fonchain-artshow/pb/artShow" "fonchain-artshow/pkg/db" "fonchain-artshow/pkg/m" "fonchain-artshow/pkg/serializer" - "fonchain-artshow/pkg/utils" ) func CreateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showID uint) { @@ -21,21 +22,21 @@ func CreateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showID u return } - artworks := serializer.BuildShowArtworkM(in.ShowArtwork, artShowM.ID) + if len(in.ShowArtwork) > 0 { + artworks := serializer.BuildShowArtworkM(in.ShowArtwork, artShowM.ID) - err, artworks = serializer.CalcPrice(artworks, artShowM.Ruler, artShowM.Price) - if err != nil { - return - } - err, artworks = serializer.CalcReward(artworks, artShowM.Reward) - if err != nil { - return - } + artworks = serializer.CalcPrice(artShowM.Price, artShowM.Ruler, artworks) - err, _ = dao.SaveArtworkPrice(tx, artworks) - if err != nil { - tx.Rollback() - return + err, artworks = serializer.CalcReward(artworks, artShowM.Reward) + if err != nil { + return + } + + err, _ = dao.SaveArtworkPrice(tx, artworks) + if err != nil { + tx.Rollback() + return + } } err = tx.Commit().Error @@ -57,23 +58,11 @@ func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showID u artworks = artworkPrices } else { artworks = serializer.BuildShowArtworkM(in.ShowArtwork, uint(in.ID)) - for i := 0; i < len(artworks); i++ { // 查找 已存在 artwork_price 获取 ruler 信息 - if artworks[i].Ruler == 0 { - err, artwork := dao.QueryArtworkPrice_id(artworks[i].ID) - if err != nil { - return err, 0 - } - artworks[i].Ruler = artwork.Ruler - } - } } if len(artworks) > 0 { if in.Price != 0 { - err, artworks = serializer.CalcPrice(artworks, artShowM.Ruler, artShowM.Price) - if err != nil { - return - } + artworks = serializer.CalcPrice(artShowM.Price, artShowM.Ruler, artworks) } if in.Reward != 0 { err, artworks = serializer.CalcReward(artworks, artShowM.Reward) @@ -82,14 +71,18 @@ func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showID u } } // 更新画作价格 - err, newIDs := dao.SaveArtworkPrice(tx, artworks) + err, _ := dao.SaveArtworkPrice(tx, artworks) if err != nil { tx.Rollback() return err, 0 } // 删除旧画作 - _, del, _ := utils.BeUniqueSlice_uint(serializer.BuildArtworkPriceIDs(artworkPrices), newIDs) - if len(del) > 0 { + //_, del, _ := utils.BeUniqueSlice_uint(serializer.BuildArtworkPriceIDs(artworkPrices), newIDs) + if len(in.DelShowArtwork) > 0 { + del := make([]int64, 0) + for i := 0; i < len(in.DelShowArtwork); i++ { + del = append(del, in.DelShowArtwork[i].ID) + } err = dao.DelArtworkPrice(tx, del) if err != nil { tx.Rollback() @@ -110,11 +103,27 @@ func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showID u } func DelArtShow(in *artShow.DelShowReq) (err error) { - err = dao.DelArtShow(in) - if err != nil { - return + tx := db.DbArtShow.Begin() + for i := 0; i < len(in.ShowID); i++ { + queryShowRelErr, show_rel := dao.QueryShowRel_showId(in.ShowID[i]) + if queryShowRelErr == nil && show_rel.ID == 0 { + delArtShowErr := dao.DelArtShow(tx, in.ShowID[i]) + if err != nil { + tx.Rollback() + return delArtShowErr + } + delArtworkPriceErr := dao.DelArtworkPrice_showId(tx, in.ShowID[i]) + if err != nil { + tx.Rollback() + return delArtworkPriceErr + } + } else if show_rel.ShowID != 0 { + tx.Rollback() + return errors.New("存在画展包被使用,无法删除") + } + } - // 暂不处理 画展包里的 画作 + err = tx.Commit().Error return } @@ -125,7 +134,7 @@ func ArtShowList(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) if err != nil { return } - err, out.TotalArtistNum, out.TotalPackageNum = dao.ShowStatistical(m.ARTSHOW_PASS) + err, out.TotalArtistNum, out.TotalPackageNum, _, _, _ = dao.ShowStatistical(m.ARTSHOW_PASS) if err != nil { return } @@ -133,7 +142,7 @@ func ArtShowList(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) return } -func ShowInfo(in *artShow.ShowDetailReq) (err error, out *artShow.ShowArtworkDetailRes) { +func ShowArtworkInfo(in *artShow.ShowDetailReq) (err error, out *artShow.ShowArtworkDetailRes) { out = new(artShow.ShowArtworkDetailRes) artworkPriceS := make([]*model.ArtworkPrice, 0) err, artworkPriceS = dao.ArtworkPriceList(uint(in.ShowID)) @@ -144,11 +153,23 @@ func ShowInfo(in *artShow.ShowDetailReq) (err error, out *artShow.ShowArtworkDet return } +func ShowDetail(in *artShow.ShowDetailReq) (err error, out *artShow.ShowDetailRes) { + out = new(artShow.ShowDetailRes) + show := new(model.ArtShow) + err, show = dao.QueryArtShow(uint(in.ShowID)) + if err != nil { + return + } + out.Data = serializer.BuildArtShowRpc(show) + fmt.Println(out.Data) + return +} + func ArtShowListWithApply(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) { out = new(artShow.ShowListRes) artShows := make([]*model.ArtShow, 0) err, out.Total, artShows = dao.ArtShowListByApplyStatus(in) - err, out.TotalArtistNum, out.TotalPackageNum = dao.ShowStatistical(m.ARTSHOW_PASS) + err, out.TotalArtistNum, out.TotalPackageNum, _, _, _ = dao.ShowStatistical(m.ARTSHOW_PASS) if err != nil { return } @@ -158,7 +179,7 @@ func ArtShowListWithApply(in *artShow.ShowListReq) (err error, out *artShow.Show func ShowStatisticalInfo(in *artShow.ShowStatisticalInfoReq) (err error, out *artShow.ShowStatisticalInfoRes_Num) { out = new(artShow.ShowStatisticalInfoRes_Num) - err, out.ArtistNum, out.PackageNum = dao.ShowStatistical(in.IsShow) + err, out.ArtistNum, out.PackageNum, out.TotalNum, out.NotShowNum, out.ShowHisNum = dao.ShowStatistical(in.IsShow) if err != nil { return } diff --git a/cmd/service/show_apply.go b/cmd/service/show_apply.go index e99228b..9daed55 100644 --- a/cmd/service/show_apply.go +++ b/cmd/service/show_apply.go @@ -4,8 +4,8 @@ import ( "fonchain-artshow/cmd/dao" "fonchain-artshow/cmd/model" "fonchain-artshow/pb/artShow" + "fonchain-artshow/pkg/m" "fonchain-artshow/pkg/serializer" - "fonchain-artshow/pkg/utils" "gorm.io/gorm" ) @@ -42,24 +42,39 @@ func UpdateShowApplyWithShowRel(in *artShow.SaveApplyReq) (err error, applyID ui // 更新画展包申请关系 if len(in.Rel) > 0 { - err, oldShowRelS := dao.QueryShowRelList(showApply.ID) // 查找 旧 show_rel - if err != nil { - tx.Rollback() - return err, showApply.ID + // 保存 新 show_rel + newShowRelS := serializer.BuildShowRelM(in.Rel, showApply.ID) + err, _ := dao.SaveShowRels(tx, newShowRelS) + + for i := 0; i < len(newShowRelS); i++ { + // 更新 画展包状态 为 已展 + show := serializer.BuildArtShowIsShowM(newShowRelS[i].ShowID, m.ARTSHOW_SHOWING) + err := dao.SaveArtShow(tx, show) + if err != nil { + tx.Rollback() + return err, showApply.ID + } } - newShowRelS := serializer.BuildShowRelM(in.Rel, showApply.ID) - err, newIds := dao.SaveShowRels(tx, newShowRelS) // 保存 新 show_rel + if len(in.DelRel) > 0 { // 如果 旧 show_rel 有数据 则 删除 旧记录(去除 保留下来的) + del := make([]int64, 0) + for i := 0; i < len(in.DelRel); i++ { + del = append(del, in.DelRel[i].ID) - if len(oldShowRelS) > 0 { // 如果 旧 show_rel 有数据 则 删除 旧记录(去除 保留下来的) - _, del, _ := utils.BeUniqueSlice_uint(serializer.BuildShowRelIDs(oldShowRelS), newIds) - if len(del) > 0 { - err = dao.DelShowRel(tx, del) + // 更新 画展包状态 为 可展 + show := serializer.BuildArtShowIsShowM(newShowRelS[i].ShowID, m.ARTSHOW_PASS) + err := dao.SaveArtShow(tx, show) if err != nil { tx.Rollback() return err, showApply.ID } } + err = dao.DelShowRel(tx, del) + if err != nil { + tx.Rollback() + return err, showApply.ID + } + } } err = tx.Commit().Error @@ -133,9 +148,9 @@ func DelApplyByApplyID(in *artShow.DelApplyReq) (err error) { return } -func QueryShowRel(showID uint) (err error, out *model.ShowRel) { +func QueryShowRel_showId(showID int64) (err error, out *model.ShowRel) { out = new(model.ShowRel) - err, out = dao.QueryShowRel(showID) + err, out = dao.QueryShowRel_showId(showID) if err != nil { return err, nil } diff --git a/conf/conf.ini b/conf/conf.ini index 60617ff..4383fec 100644 --- a/conf/conf.ini +++ b/conf/conf.ini @@ -1,14 +1,51 @@ [system] -mode = prod #正式prod #测试dev +;mode = prod #正式prod #测试dev +mode = dev #正式prod #测试dev +;本地测试 +;[mysql] +;Db = mysql +;DbHost = 127.0.0.1 +;DbPort = 3306 +;DbUser = root +;DbPassWord = 123456 +;DbName = art_show + +;正式服 +;[mysql] +;Db = mysql +;DbHost = mysql +;DbPort = 3306 +;DbUser = root +;DbPassWord = sLl0b7stlbwvZ883TV +;DbName = art_show + +;188 +;[mysql] +;Db = mysql +;DbHost = 172.16.100.22 +;DbPort = 9005 +;DbUser = root +;DbPassWord = sLl0b7stlbwvZ883TV +;DbName = art_show + +;214 [mysql] Db = mysql -DbHost = 172.16.100.22 -DbPort = 9005 -DbUser = root -DbPassWord = sLl0b7stlbwvZ883TV +DbHost = 172.16.100.99 #214 +DbPort = 9007 +DbUser = artuser +DbPassWord = "C250PflXIWv2SQm8" DbName = art_show +;[mysql] +;Db = mysql +;DbHost = 121.229.45.214 #214 +;DbPort = 9007 +;DbUser = artuser +;DbPassWord = "C250PflXIWv2SQm8" +;DbName = art_show + [redis] RedisDB = RedisAddr = 127.0.0.1:6379 diff --git a/conf/dubbogo.yaml b/conf/dubbogo.yaml index 891b572..378db6c 100644 --- a/conf/dubbogo.yaml +++ b/conf/dubbogo.yaml @@ -3,7 +3,8 @@ dubbo: demoZK: protocol: zookeeper timeout: 3s - address: 172.16.100.22:2181 +# address: zookeeper:2181 + address: 127.0.0.1:2181 protocols: triple: #triple name: tri diff --git a/pb/artShow/artshow.pb.go b/pb/artShow/artshow.pb.go index dff0062..2cf4780 100644 --- a/pb/artShow/artshow.pb.go +++ b/pb/artShow/artshow.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 -// protoc v3.21.4 +// protoc-gen-go v1.26.0 +// protoc v3.10.1 // source: pb/artshow.proto package artShow @@ -26,17 +26,18 @@ type SaveShowReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ShowName string `protobuf:"bytes,1,opt,name=ShowName,json=show_name,proto3" json:"ShowName,omitempty"` - ArtistName string `protobuf:"bytes,2,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - ArtistID string `protobuf:"bytes,3,opt,name=ArtistID,json=artist_id,proto3" json:"ArtistID,omitempty"` - ArtworkNum int32 `protobuf:"varint,4,opt,name=ArtworkNum,json=artwork_num,proto3" json:"ArtworkNum,omitempty"` - Ruler int32 `protobuf:"varint,5,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - Price int64 `protobuf:"varint,6,opt,name=Price,json=price,proto3" json:"Price,omitempty"` - Reward int64 `protobuf:"varint,7,opt,name=Reward,json=reward,proto3" json:"Reward,omitempty"` - IsShow int32 `protobuf:"varint,8,opt,name=IsShow,json=is_show,proto3" json:"IsShow,omitempty"` - ShowTime string `protobuf:"bytes,9,opt,name=ShowTime,json=show_time,proto3" json:"ShowTime,omitempty"` - ShowArtwork []*ShowArtworkDetail `protobuf:"bytes,10,rep,name=ShowArtwork,json=show_artwork,proto3" json:"ShowArtwork,omitempty"` - ID int64 `protobuf:"varint,11,opt,name=ID,json=id,proto3" json:"ID,omitempty"` + ShowName string `protobuf:"bytes,1,opt,name=ShowName,json=show_name,proto3" json:"ShowName,omitempty"` + ArtistName string `protobuf:"bytes,2,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` + ArtistID string `protobuf:"bytes,3,opt,name=ArtistID,json=artist_id,proto3" json:"ArtistID,omitempty"` + ArtworkNum int32 `protobuf:"varint,4,opt,name=ArtworkNum,json=artwork_num,proto3" json:"ArtworkNum,omitempty"` + Ruler int32 `protobuf:"varint,5,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` + Price int64 `protobuf:"varint,6,opt,name=Price,json=price,proto3" json:"Price,omitempty"` + Reward int64 `protobuf:"varint,7,opt,name=Reward,json=reward,proto3" json:"Reward,omitempty"` + IsShow int32 `protobuf:"varint,8,opt,name=IsShow,json=is_show,proto3" json:"IsShow,omitempty"` + ShowTime string `protobuf:"bytes,9,opt,name=ShowTime,json=show_time,proto3" json:"ShowTime,omitempty"` + ShowArtwork []*ShowArtworkDetail `protobuf:"bytes,10,rep,name=ShowArtwork,json=show_artwork,proto3" json:"ShowArtwork,omitempty"` + DelShowArtwork []*DelArtworkDetail `protobuf:"bytes,11,rep,name=DelShowArtwork,json=del_show_artwork,proto3" json:"DelShowArtwork,omitempty"` + ID int64 `protobuf:"varint,12,opt,name=ID,json=id,proto3" json:"ID,omitempty"` } func (x *SaveShowReq) Reset() { @@ -141,6 +142,13 @@ func (x *SaveShowReq) GetShowArtwork() []*ShowArtworkDetail { return nil } +func (x *SaveShowReq) GetDelShowArtwork() []*DelArtworkDetail { + if x != nil { + return x.DelShowArtwork + } + return nil +} + func (x *SaveShowReq) GetID() int64 { if x != nil { return x.ID @@ -425,6 +433,61 @@ func (x *ShowDetail) GetIsShow() int32 { return 0 } +type ShowDetailRes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *ShowDetail `protobuf:"bytes,1,opt,name=Data,json=data,proto3" json:"Data,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,json=msg,proto3" json:"Msg,omitempty"` +} + +func (x *ShowDetailRes) Reset() { + *x = ShowDetailRes{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_artshow_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShowDetailRes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShowDetailRes) ProtoMessage() {} + +func (x *ShowDetailRes) ProtoReflect() protoreflect.Message { + mi := &file_pb_artshow_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShowDetailRes.ProtoReflect.Descriptor instead. +func (*ShowDetailRes) Descriptor() ([]byte, []int) { + return file_pb_artshow_proto_rawDescGZIP(), []int{5} +} + +func (x *ShowDetailRes) GetData() *ShowDetail { + if x != nil { + return x.Data + } + return nil +} + +func (x *ShowDetailRes) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + type ShowArtworkDetailRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -437,7 +500,7 @@ type ShowArtworkDetailRes struct { func (x *ShowArtworkDetailRes) Reset() { *x = ShowArtworkDetailRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[5] + mi := &file_pb_artshow_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -450,7 +513,7 @@ func (x *ShowArtworkDetailRes) String() string { func (*ShowArtworkDetailRes) ProtoMessage() {} func (x *ShowArtworkDetailRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[5] + mi := &file_pb_artshow_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -463,7 +526,7 @@ func (x *ShowArtworkDetailRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowArtworkDetailRes.ProtoReflect.Descriptor instead. func (*ShowArtworkDetailRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{5} + return file_pb_artshow_proto_rawDescGZIP(), []int{6} } func (x *ShowArtworkDetailRes) GetData() []*ShowArtworkDetail { @@ -497,7 +560,7 @@ type ShowListReq struct { func (x *ShowListReq) Reset() { *x = ShowListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[6] + mi := &file_pb_artshow_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -510,7 +573,7 @@ func (x *ShowListReq) String() string { func (*ShowListReq) ProtoMessage() {} func (x *ShowListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[6] + mi := &file_pb_artshow_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -523,7 +586,7 @@ func (x *ShowListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowListReq.ProtoReflect.Descriptor instead. func (*ShowListReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{6} + return file_pb_artshow_proto_rawDescGZIP(), []int{7} } func (x *ShowListReq) GetPage() int32 { @@ -583,7 +646,7 @@ type ShowListRes struct { func (x *ShowListRes) Reset() { *x = ShowListRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[7] + mi := &file_pb_artshow_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -596,7 +659,7 @@ func (x *ShowListRes) String() string { func (*ShowListRes) ProtoMessage() {} func (x *ShowListRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[7] + mi := &file_pb_artshow_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -609,7 +672,7 @@ func (x *ShowListRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowListRes.ProtoReflect.Descriptor instead. func (*ShowListRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{7} + return file_pb_artshow_proto_rawDescGZIP(), []int{8} } func (x *ShowListRes) GetTotal() int64 { @@ -659,7 +722,7 @@ type DelShowReq struct { func (x *DelShowReq) Reset() { *x = DelShowReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[8] + mi := &file_pb_artshow_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -672,7 +735,7 @@ func (x *DelShowReq) String() string { func (*DelShowReq) ProtoMessage() {} func (x *DelShowReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[8] + mi := &file_pb_artshow_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -685,7 +748,7 @@ func (x *DelShowReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelShowReq.ProtoReflect.Descriptor instead. func (*DelShowReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{8} + return file_pb_artshow_proto_rawDescGZIP(), []int{9} } func (x *DelShowReq) GetShowID() []int64 { @@ -706,14 +769,16 @@ type ShowArtworkDetail struct { ArtworkID int64 `protobuf:"varint,3,opt,name=ArtworkID,json=artwork_id,proto3" json:"ArtworkID,omitempty"` ArtworkName string `protobuf:"bytes,4,opt,name=ArtworkName,json=artwork_name,proto3" json:"ArtworkName,omitempty"` ArtistName string `protobuf:"bytes,5,opt,name=ArtistName,json=artist_name,proto3" json:"ArtistName,omitempty"` - Ruler int32 `protobuf:"varint,6,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` - SmallPic string `protobuf:"bytes,7,opt,name=SmallPic,json=small_pic,proto3" json:"SmallPic,omitempty"` + Length int32 `protobuf:"varint,6,opt,name=Length,json=length,proto3" json:"Length,omitempty"` + Width int32 `protobuf:"varint,7,opt,name=Width,json=width,proto3" json:"Width,omitempty"` + Ruler int32 `protobuf:"varint,8,opt,name=Ruler,json=ruler,proto3" json:"Ruler,omitempty"` + SmallPic string `protobuf:"bytes,9,opt,name=SmallPic,json=small_pic,proto3" json:"SmallPic,omitempty"` } func (x *ShowArtworkDetail) Reset() { *x = ShowArtworkDetail{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[9] + mi := &file_pb_artshow_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -726,7 +791,7 @@ func (x *ShowArtworkDetail) String() string { func (*ShowArtworkDetail) ProtoMessage() {} func (x *ShowArtworkDetail) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[9] + mi := &file_pb_artshow_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -739,7 +804,7 @@ func (x *ShowArtworkDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowArtworkDetail.ProtoReflect.Descriptor instead. func (*ShowArtworkDetail) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{9} + return file_pb_artshow_proto_rawDescGZIP(), []int{10} } func (x *ShowArtworkDetail) GetID() int64 { @@ -777,6 +842,20 @@ func (x *ShowArtworkDetail) GetArtistName() string { return "" } +func (x *ShowArtworkDetail) GetLength() int32 { + if x != nil { + return x.Length + } + return 0 +} + +func (x *ShowArtworkDetail) GetWidth() int32 { + if x != nil { + return x.Width + } + return 0 +} + func (x *ShowArtworkDetail) GetRuler() int32 { if x != nil { return x.Ruler @@ -791,6 +870,62 @@ func (x *ShowArtworkDetail) GetSmallPic() string { return "" } +// 画展包 删除的画作信息 +type DelArtworkDetail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID int64 `protobuf:"varint,1,opt,name=ID,json=id,proto3" json:"ID,omitempty"` + ArtworkID int64 `protobuf:"varint,2,opt,name=ArtworkID,json=artwork_id,proto3" json:"ArtworkID,omitempty"` +} + +func (x *DelArtworkDetail) Reset() { + *x = DelArtworkDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_artshow_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelArtworkDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelArtworkDetail) ProtoMessage() {} + +func (x *DelArtworkDetail) ProtoReflect() protoreflect.Message { + mi := &file_pb_artshow_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DelArtworkDetail.ProtoReflect.Descriptor instead. +func (*DelArtworkDetail) Descriptor() ([]byte, []int) { + return file_pb_artshow_proto_rawDescGZIP(), []int{11} +} + +func (x *DelArtworkDetail) GetID() int64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *DelArtworkDetail) GetArtworkID() int64 { + if x != nil { + return x.ArtworkID + } + return 0 +} + // 画展包 画家 画作 统计数据 type ShowStatisticalInfoReq struct { state protoimpl.MessageState @@ -803,7 +938,7 @@ type ShowStatisticalInfoReq struct { func (x *ShowStatisticalInfoReq) Reset() { *x = ShowStatisticalInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[10] + mi := &file_pb_artshow_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -816,7 +951,7 @@ func (x *ShowStatisticalInfoReq) String() string { func (*ShowStatisticalInfoReq) ProtoMessage() {} func (x *ShowStatisticalInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[10] + mi := &file_pb_artshow_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -829,7 +964,7 @@ func (x *ShowStatisticalInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowStatisticalInfoReq.ProtoReflect.Descriptor instead. func (*ShowStatisticalInfoReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{10} + return file_pb_artshow_proto_rawDescGZIP(), []int{12} } func (x *ShowStatisticalInfoReq) GetIsShow() int32 { @@ -851,7 +986,7 @@ type ShowStatisticalInfoRes struct { func (x *ShowStatisticalInfoRes) Reset() { *x = ShowStatisticalInfoRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[11] + mi := &file_pb_artshow_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -864,7 +999,7 @@ func (x *ShowStatisticalInfoRes) String() string { func (*ShowStatisticalInfoRes) ProtoMessage() {} func (x *ShowStatisticalInfoRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[11] + mi := &file_pb_artshow_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -877,7 +1012,7 @@ func (x *ShowStatisticalInfoRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowStatisticalInfoRes.ProtoReflect.Descriptor instead. func (*ShowStatisticalInfoRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{11} + return file_pb_artshow_proto_rawDescGZIP(), []int{13} } func (x *ShowStatisticalInfoRes) GetData() *ShowStatisticalInfoRes_Num { @@ -905,7 +1040,7 @@ type ArtworkPriceReq struct { func (x *ArtworkPriceReq) Reset() { *x = ArtworkPriceReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[12] + mi := &file_pb_artshow_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -918,7 +1053,7 @@ func (x *ArtworkPriceReq) String() string { func (*ArtworkPriceReq) ProtoMessage() {} func (x *ArtworkPriceReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[12] + mi := &file_pb_artshow_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -931,7 +1066,7 @@ func (x *ArtworkPriceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkPriceReq.ProtoReflect.Descriptor instead. func (*ArtworkPriceReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{12} + return file_pb_artshow_proto_rawDescGZIP(), []int{14} } func (x *ArtworkPriceReq) GetArtworkID() int64 { @@ -953,7 +1088,7 @@ type ArtworkPriceRes struct { func (x *ArtworkPriceRes) Reset() { *x = ArtworkPriceRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[13] + mi := &file_pb_artshow_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -966,7 +1101,7 @@ func (x *ArtworkPriceRes) String() string { func (*ArtworkPriceRes) ProtoMessage() {} func (x *ArtworkPriceRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[13] + mi := &file_pb_artshow_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -979,7 +1114,7 @@ func (x *ArtworkPriceRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkPriceRes.ProtoReflect.Descriptor instead. func (*ArtworkPriceRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{13} + return file_pb_artshow_proto_rawDescGZIP(), []int{15} } func (x *ArtworkPriceRes) GetData() *ArtworkPriceRes_PriceInfo { @@ -1011,7 +1146,7 @@ type ShowRel struct { func (x *ShowRel) Reset() { *x = ShowRel{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[14] + mi := &file_pb_artshow_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1024,7 +1159,7 @@ func (x *ShowRel) String() string { func (*ShowRel) ProtoMessage() {} func (x *ShowRel) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[14] + mi := &file_pb_artshow_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1037,7 +1172,7 @@ func (x *ShowRel) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowRel.ProtoReflect.Descriptor instead. func (*ShowRel) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{14} + return file_pb_artshow_proto_rawDescGZIP(), []int{16} } func (x *ShowRel) GetID() int64 { @@ -1075,25 +1210,81 @@ func (x *ShowRel) GetAddress() string { return "" } +type DelShowRel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID int64 `protobuf:"varint,1,opt,name=ID,json=id,proto3" json:"ID,omitempty"` + ShowID int64 `protobuf:"varint,2,opt,name=ShowID,json=show_id,proto3" json:"ShowID,omitempty"` +} + +func (x *DelShowRel) Reset() { + *x = DelShowRel{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_artshow_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelShowRel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelShowRel) ProtoMessage() {} + +func (x *DelShowRel) ProtoReflect() protoreflect.Message { + mi := &file_pb_artshow_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DelShowRel.ProtoReflect.Descriptor instead. +func (*DelShowRel) Descriptor() ([]byte, []int) { + return file_pb_artshow_proto_rawDescGZIP(), []int{17} +} + +func (x *DelShowRel) GetID() int64 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *DelShowRel) GetShowID() int64 { + if x != nil { + return x.ShowID + } + return 0 +} + type SaveApplyReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Applicant string `protobuf:"bytes,1,opt,name=Applicant,json=applicant,proto3" json:"Applicant,omitempty"` - ApplicantID int64 `protobuf:"varint,2,opt,name=ApplicantID,json=applicant_id,proto3" json:"ApplicantID,omitempty"` - Num int32 `protobuf:"varint,3,opt,name=Num,json=num,proto3" json:"Num,omitempty"` - ApplyTime string `protobuf:"bytes,4,opt,name=ApplyTime,json=apply_time,proto3" json:"ApplyTime,omitempty"` - ID int64 `protobuf:"varint,5,opt,name=ID,json=id,proto3" json:"ID,omitempty"` - Status int32 `protobuf:"varint,6,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Remark string `protobuf:"bytes,7,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` - Rel []*ShowRel `protobuf:"bytes,8,rep,name=Rel,json=rel,proto3" json:"Rel,omitempty"` + Applicant string `protobuf:"bytes,1,opt,name=Applicant,json=applicant,proto3" json:"Applicant,omitempty"` + ApplicantID int64 `protobuf:"varint,2,opt,name=ApplicantID,json=applicant_id,proto3" json:"ApplicantID,omitempty"` + Num int32 `protobuf:"varint,3,opt,name=Num,json=num,proto3" json:"Num,omitempty"` + ApplyTime string `protobuf:"bytes,4,opt,name=ApplyTime,json=apply_time,proto3" json:"ApplyTime,omitempty"` + ID int64 `protobuf:"varint,5,opt,name=ID,json=id,proto3" json:"ID,omitempty"` + Status int32 `protobuf:"varint,6,opt,name=Status,json=status,proto3" json:"Status,omitempty"` + Remark string `protobuf:"bytes,7,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` + Rel []*ShowRel `protobuf:"bytes,8,rep,name=Rel,json=rel,proto3" json:"Rel,omitempty"` + DelRel []*DelShowRel `protobuf:"bytes,9,rep,name=DelRel,json=del_rel,proto3" json:"DelRel,omitempty"` } func (x *SaveApplyReq) Reset() { *x = SaveApplyReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[15] + mi := &file_pb_artshow_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1106,7 +1297,7 @@ func (x *SaveApplyReq) String() string { func (*SaveApplyReq) ProtoMessage() {} func (x *SaveApplyReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[15] + mi := &file_pb_artshow_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1119,7 +1310,7 @@ func (x *SaveApplyReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveApplyReq.ProtoReflect.Descriptor instead. func (*SaveApplyReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{15} + return file_pb_artshow_proto_rawDescGZIP(), []int{18} } func (x *SaveApplyReq) GetApplicant() string { @@ -1178,6 +1369,13 @@ func (x *SaveApplyReq) GetRel() []*ShowRel { return nil } +func (x *SaveApplyReq) GetDelRel() []*DelShowRel { + if x != nil { + return x.DelRel + } + return nil +} + type SaveApplyRes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1190,7 +1388,7 @@ type SaveApplyRes struct { func (x *SaveApplyRes) Reset() { *x = SaveApplyRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[16] + mi := &file_pb_artshow_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1203,7 +1401,7 @@ func (x *SaveApplyRes) String() string { func (*SaveApplyRes) ProtoMessage() {} func (x *SaveApplyRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[16] + mi := &file_pb_artshow_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1216,7 +1414,7 @@ func (x *SaveApplyRes) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveApplyRes.ProtoReflect.Descriptor instead. func (*SaveApplyRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{16} + return file_pb_artshow_proto_rawDescGZIP(), []int{19} } func (x *SaveApplyRes) GetMsg() string { @@ -1246,7 +1444,7 @@ type ApplyListReq struct { func (x *ApplyListReq) Reset() { *x = ApplyListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[17] + mi := &file_pb_artshow_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1259,7 +1457,7 @@ func (x *ApplyListReq) String() string { func (*ApplyListReq) ProtoMessage() {} func (x *ApplyListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[17] + mi := &file_pb_artshow_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1272,7 +1470,7 @@ func (x *ApplyListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyListReq.ProtoReflect.Descriptor instead. func (*ApplyListReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{17} + return file_pb_artshow_proto_rawDescGZIP(), []int{20} } func (x *ApplyListReq) GetPage() int32 { @@ -1309,7 +1507,7 @@ type ApplyListRes struct { func (x *ApplyListRes) Reset() { *x = ApplyListRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[18] + mi := &file_pb_artshow_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1322,7 +1520,7 @@ func (x *ApplyListRes) String() string { func (*ApplyListRes) ProtoMessage() {} func (x *ApplyListRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[18] + mi := &file_pb_artshow_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1335,7 +1533,7 @@ func (x *ApplyListRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyListRes.ProtoReflect.Descriptor instead. func (*ApplyListRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{18} + return file_pb_artshow_proto_rawDescGZIP(), []int{21} } func (x *ApplyListRes) GetTotal() int64 { @@ -1370,7 +1568,7 @@ type ApplyShowReq struct { func (x *ApplyShowReq) Reset() { *x = ApplyShowReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[19] + mi := &file_pb_artshow_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1383,7 +1581,7 @@ func (x *ApplyShowReq) String() string { func (*ApplyShowReq) ProtoMessage() {} func (x *ApplyShowReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[19] + mi := &file_pb_artshow_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1396,7 +1594,7 @@ func (x *ApplyShowReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyShowReq.ProtoReflect.Descriptor instead. func (*ApplyShowReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{19} + return file_pb_artshow_proto_rawDescGZIP(), []int{22} } func (x *ApplyShowReq) GetApplyID() int64 { @@ -1419,7 +1617,7 @@ type ApplyShowRes struct { func (x *ApplyShowRes) Reset() { *x = ApplyShowRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[20] + mi := &file_pb_artshow_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1432,7 +1630,7 @@ func (x *ApplyShowRes) String() string { func (*ApplyShowRes) ProtoMessage() {} func (x *ApplyShowRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[20] + mi := &file_pb_artshow_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1445,7 +1643,7 @@ func (x *ApplyShowRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyShowRes.ProtoReflect.Descriptor instead. func (*ApplyShowRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{20} + return file_pb_artshow_proto_rawDescGZIP(), []int{23} } func (x *ApplyShowRes) GetApply() *ApplyDetail { @@ -1487,7 +1685,7 @@ type ApplyDetail struct { func (x *ApplyDetail) Reset() { *x = ApplyDetail{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[21] + mi := &file_pb_artshow_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1500,7 +1698,7 @@ func (x *ApplyDetail) String() string { func (*ApplyDetail) ProtoMessage() {} func (x *ApplyDetail) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[21] + mi := &file_pb_artshow_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1513,7 +1711,7 @@ func (x *ApplyDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyDetail.ProtoReflect.Descriptor instead. func (*ApplyDetail) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{21} + return file_pb_artshow_proto_rawDescGZIP(), []int{24} } func (x *ApplyDetail) GetID() int64 { @@ -1583,7 +1781,7 @@ type ShowRelListReq struct { func (x *ShowRelListReq) Reset() { *x = ShowRelListReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[22] + mi := &file_pb_artshow_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1596,7 +1794,7 @@ func (x *ShowRelListReq) String() string { func (*ShowRelListReq) ProtoMessage() {} func (x *ShowRelListReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[22] + mi := &file_pb_artshow_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1609,7 +1807,7 @@ func (x *ShowRelListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowRelListReq.ProtoReflect.Descriptor instead. func (*ShowRelListReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{22} + return file_pb_artshow_proto_rawDescGZIP(), []int{25} } func (x *ShowRelListReq) GetApplyID() int64 { @@ -1631,7 +1829,7 @@ type ShowRelListRes struct { func (x *ShowRelListRes) Reset() { *x = ShowRelListRes{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[23] + mi := &file_pb_artshow_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1644,7 +1842,7 @@ func (x *ShowRelListRes) String() string { func (*ShowRelListRes) ProtoMessage() {} func (x *ShowRelListRes) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[23] + mi := &file_pb_artshow_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1657,7 +1855,7 @@ func (x *ShowRelListRes) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowRelListRes.ProtoReflect.Descriptor instead. func (*ShowRelListRes) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{23} + return file_pb_artshow_proto_rawDescGZIP(), []int{26} } func (x *ShowRelListRes) GetMsg() string { @@ -1687,7 +1885,7 @@ type UpdateApplyStatusReq struct { func (x *UpdateApplyStatusReq) Reset() { *x = UpdateApplyStatusReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[24] + mi := &file_pb_artshow_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1700,7 +1898,7 @@ func (x *UpdateApplyStatusReq) String() string { func (*UpdateApplyStatusReq) ProtoMessage() {} func (x *UpdateApplyStatusReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[24] + mi := &file_pb_artshow_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1713,7 +1911,7 @@ func (x *UpdateApplyStatusReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateApplyStatusReq.ProtoReflect.Descriptor instead. func (*UpdateApplyStatusReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{24} + return file_pb_artshow_proto_rawDescGZIP(), []int{27} } func (x *UpdateApplyStatusReq) GetStatus() int32 { @@ -1748,7 +1946,7 @@ type DelApplyReq struct { func (x *DelApplyReq) Reset() { *x = DelApplyReq{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[25] + mi := &file_pb_artshow_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1959,7 @@ func (x *DelApplyReq) String() string { func (*DelApplyReq) ProtoMessage() {} func (x *DelApplyReq) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[25] + mi := &file_pb_artshow_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1972,7 @@ func (x *DelApplyReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DelApplyReq.ProtoReflect.Descriptor instead. func (*DelApplyReq) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{25} + return file_pb_artshow_proto_rawDescGZIP(), []int{28} } func (x *DelApplyReq) GetApplyID() []int64 { @@ -1791,12 +1989,15 @@ type ShowStatisticalInfoRes_Num struct { ArtistNum int64 `protobuf:"varint,1,opt,name=ArtistNum,json=artist_num,proto3" json:"ArtistNum,omitempty"` PackageNum int64 `protobuf:"varint,2,opt,name=PackageNum,json=package_num,proto3" json:"PackageNum,omitempty"` + TotalNum int64 `protobuf:"varint,3,opt,name=TotalNum,json=total_num,proto3" json:"TotalNum,omitempty"` + NotShowNum int64 `protobuf:"varint,4,opt,name=NotShowNum,json=not_show_num,proto3" json:"NotShowNum,omitempty"` + ShowHisNum int64 `protobuf:"varint,5,opt,name=ShowHisNum,json=show_his_num,proto3" json:"ShowHisNum,omitempty"` } func (x *ShowStatisticalInfoRes_Num) Reset() { *x = ShowStatisticalInfoRes_Num{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[26] + mi := &file_pb_artshow_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1809,7 +2010,7 @@ func (x *ShowStatisticalInfoRes_Num) String() string { func (*ShowStatisticalInfoRes_Num) ProtoMessage() {} func (x *ShowStatisticalInfoRes_Num) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[26] + mi := &file_pb_artshow_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1822,7 +2023,7 @@ func (x *ShowStatisticalInfoRes_Num) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowStatisticalInfoRes_Num.ProtoReflect.Descriptor instead. func (*ShowStatisticalInfoRes_Num) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{11, 0} + return file_pb_artshow_proto_rawDescGZIP(), []int{13, 0} } func (x *ShowStatisticalInfoRes_Num) GetArtistNum() int64 { @@ -1839,6 +2040,27 @@ func (x *ShowStatisticalInfoRes_Num) GetPackageNum() int64 { return 0 } +func (x *ShowStatisticalInfoRes_Num) GetTotalNum() int64 { + if x != nil { + return x.TotalNum + } + return 0 +} + +func (x *ShowStatisticalInfoRes_Num) GetNotShowNum() int64 { + if x != nil { + return x.NotShowNum + } + return 0 +} + +func (x *ShowStatisticalInfoRes_Num) GetShowHisNum() int64 { + if x != nil { + return x.ShowHisNum + } + return 0 +} + type ArtworkPriceRes_PriceInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1854,7 +2076,7 @@ type ArtworkPriceRes_PriceInfo struct { func (x *ArtworkPriceRes_PriceInfo) Reset() { *x = ArtworkPriceRes_PriceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pb_artshow_proto_msgTypes[27] + mi := &file_pb_artshow_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1867,7 +2089,7 @@ func (x *ArtworkPriceRes_PriceInfo) String() string { func (*ArtworkPriceRes_PriceInfo) ProtoMessage() {} func (x *ArtworkPriceRes_PriceInfo) ProtoReflect() protoreflect.Message { - mi := &file_pb_artshow_proto_msgTypes[27] + mi := &file_pb_artshow_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1880,7 +2102,7 @@ func (x *ArtworkPriceRes_PriceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtworkPriceRes_PriceInfo.ProtoReflect.Descriptor instead. func (*ArtworkPriceRes_PriceInfo) Descriptor() ([]byte, []int) { - return file_pb_artshow_proto_rawDescGZIP(), []int{13, 0} + return file_pb_artshow_proto_rawDescGZIP(), []int{15, 0} } func (x *ArtworkPriceRes_PriceInfo) GetPrice() int64 { @@ -1922,7 +2144,7 @@ var File_pb_artshow_proto protoreflect.FileDescriptor var file_pb_artshow_proto_rawDesc = []byte{ 0x0a, 0x10, 0x70, 0x62, 0x2f, 0x61, 0x72, 0x74, 0x73, 0x68, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x07, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x22, 0xd2, 0x02, 0x0a, 0x0b, + 0x74, 0x6f, 0x12, 0x07, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x97, 0x03, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, @@ -1943,210 +2165,243 @@ var file_pb_artshow_proto_rawDesc = []byte{ 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x38, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x09, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x28, 0x0a, 0x0d, 0x53, 0x68, 0x6f, - 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, - 0x6f, 0x77, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, - 0x5f, 0x69, 0x64, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1b, 0x0a, - 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x41, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x75, 0x6c, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, - 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, - 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, - 0x68, 0x6f, 0x77, 0x22, 0x58, 0x0a, 0x14, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x41, 0x72, 0x74, 0x53, - 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xae, 0x01, - 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, - 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 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, 0x1d, - 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, - 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, 0xb4, - 0x01, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, 0x6d, - 0x12, 0x28, 0x0a, 0x0e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, - 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, - 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x22, 0xd2, 0x01, 0x0a, - 0x11, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x41, - 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, - 0x75, 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x50, 0x69, 0x63, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x69, - 0x63, 0x22, 0x31, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x06, 0x49, - 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, - 0x73, 0x68, 0x6f, 0x77, 0x22, 0xaa, 0x01, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, - 0x37, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x2e, 0x4e, - 0x75, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x1a, 0x45, 0x0a, 0x03, 0x4e, 0x75, - 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, - 0x12, 0x1f, 0x0a, 0x0a, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, - 0x6d, 0x22, 0x30, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x69, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, - 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x2e, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x1a, 0xb3, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x75, 0x6c, 0x65, 0x72, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x61, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x27, - 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x7d, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x52, - 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x12, 0x17, 0x0a, - 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, - 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x41, - 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x03, 0x52, 0x65, 0x6c, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, - 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x52, 0x03, 0x72, 0x65, 0x6c, 0x22, 0x3b, 0x0a, - 0x0c, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, - 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x0c, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 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, 0x16, 0x0a, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, - 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x29, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, - 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, - 0x22, 0x75, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, - 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, - 0x53, 0x68, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, - 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, - 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xdc, 0x01, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, - 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, - 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, - 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x2b, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, - 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, - 0x5f, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, - 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, - 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, - 0x22, 0x28, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, - 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x32, 0x96, 0x07, 0x0a, 0x07, 0x41, - 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x3a, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, - 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, - 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, - 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, - 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, - 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, - 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x34, - 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, - 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x12, - 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, - 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x43, - 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, + 0x12, 0x43, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, + 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x10, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x61, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, + 0x77, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x22, + 0x1d, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x28, + 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, + 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x53, 0x68, 0x6f, + 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x53, + 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, + 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x1f, 0x0a, + 0x0a, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x14, + 0x0a, 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, 0x4a, 0x0a, 0x0d, 0x53, 0x68, 0x6f, 0x77, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0x58, 0x0a, 0x14, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x41, 0x72, 0x74, + 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 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, 0xae, + 0x01, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, + 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 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, + 0x1d, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, + 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, + 0xb4, 0x01, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x0f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x12, 0x28, 0x0a, 0x0e, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x25, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, + 0x77, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x22, 0x80, 0x02, + 0x0a, 0x11, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x14, 0x0a, + 0x05, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, + 0x6c, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x08, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x50, 0x69, 0x63, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x69, 0x63, + 0x22, 0x41, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, + 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x69, + 0x73, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x22, 0x8c, 0x02, 0x0a, 0x16, 0x53, 0x68, 0x6f, 0x77, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x12, 0x37, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x2e, 0x4e, 0x75, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x1a, 0xa6, 0x01, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x5f, + 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x5f, 0x6e, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x75, + 0x6d, 0x12, 0x20, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x6e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x48, 0x69, 0x73, 0x4e, 0x75, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x68, 0x69, + 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x22, 0x30, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x04, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x1a, 0xb3, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x52, 0x75, 0x6c, + 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, + 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x21, 0x0a, 0x0b, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x70, 0x79, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x7d, 0x0a, 0x07, 0x53, + 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x35, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, + 0x64, 0x22, 0x92, 0x02, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, + 0x12, 0x21, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x03, 0x52, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, + 0x52, 0x65, 0x6c, 0x52, 0x03, 0x72, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x52, + 0x65, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, + 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x52, 0x07, 0x64, + 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x22, 0x3b, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, + 0x79, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, + 0x5f, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 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, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x60, 0x0a, 0x0c, + 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x29, + 0x0a, 0x0c, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x12, 0x19, + 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x75, 0x0a, 0x0c, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, + 0x6f, 0x77, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, + 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x22, 0xdc, 0x01, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1b, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x73, 0x65, 0x71, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0b, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, + 0x12, 0x1d, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, + 0x2b, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0e, + 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x12, 0x24, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x6c, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x61, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x19, + 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x0b, 0x44, 0x65, 0x6c, + 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x6c, + 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x6c, 0x79, + 0x5f, 0x69, 0x64, 0x32, 0xdd, 0x07, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, + 0x3a, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x2e, + 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, + 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0a, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, + 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x68, + 0x6f, 0x77, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x53, 0x68, + 0x6f, 0x77, 0x12, 0x13, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x44, 0x65, 0x6c, + 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x38, 0x0a, + 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x14, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0f, 0x53, 0x68, 0x6f, 0x77, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x73, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x41, 0x72, 0x74, 0x53, + 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x13, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x41, 0x72, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, @@ -2201,81 +2456,89 @@ func file_pb_artshow_proto_rawDescGZIP() []byte { return file_pb_artshow_proto_rawDescData } -var file_pb_artshow_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_pb_artshow_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_pb_artshow_proto_goTypes = []interface{}{ (*SaveShowReq)(nil), // 0: ArtShow.SaveShowReq (*SaveShowRes)(nil), // 1: ArtShow.SaveShowRes (*CommonRes)(nil), // 2: ArtShow.CommonRes (*ShowDetailReq)(nil), // 3: ArtShow.ShowDetailReq (*ShowDetail)(nil), // 4: ArtShow.ShowDetail - (*ShowArtworkDetailRes)(nil), // 5: ArtShow.ShowArtworkDetailRes - (*ShowListReq)(nil), // 6: ArtShow.ShowListReq - (*ShowListRes)(nil), // 7: ArtShow.ShowListRes - (*DelShowReq)(nil), // 8: ArtShow.DelShowReq - (*ShowArtworkDetail)(nil), // 9: ArtShow.ShowArtworkDetail - (*ShowStatisticalInfoReq)(nil), // 10: ArtShow.ShowStatisticalInfoReq - (*ShowStatisticalInfoRes)(nil), // 11: ArtShow.ShowStatisticalInfoRes - (*ArtworkPriceReq)(nil), // 12: ArtShow.ArtworkPriceReq - (*ArtworkPriceRes)(nil), // 13: ArtShow.ArtworkPriceRes - (*ShowRel)(nil), // 14: ArtShow.ShowRel - (*SaveApplyReq)(nil), // 15: ArtShow.SaveApplyReq - (*SaveApplyRes)(nil), // 16: ArtShow.SaveApplyRes - (*ApplyListReq)(nil), // 17: ArtShow.ApplyListReq - (*ApplyListRes)(nil), // 18: ArtShow.ApplyListRes - (*ApplyShowReq)(nil), // 19: ArtShow.ApplyShowReq - (*ApplyShowRes)(nil), // 20: ArtShow.ApplyShowRes - (*ApplyDetail)(nil), // 21: ArtShow.ApplyDetail - (*ShowRelListReq)(nil), // 22: ArtShow.ShowRelListReq - (*ShowRelListRes)(nil), // 23: ArtShow.ShowRelListRes - (*UpdateApplyStatusReq)(nil), // 24: ArtShow.UpdateApplyStatusReq - (*DelApplyReq)(nil), // 25: ArtShow.DelApplyReq - (*ShowStatisticalInfoRes_Num)(nil), // 26: ArtShow.ShowStatisticalInfoRes.Num - (*ArtworkPriceRes_PriceInfo)(nil), // 27: ArtShow.ArtworkPriceRes.PriceInfo + (*ShowDetailRes)(nil), // 5: ArtShow.ShowDetailRes + (*ShowArtworkDetailRes)(nil), // 6: ArtShow.ShowArtworkDetailRes + (*ShowListReq)(nil), // 7: ArtShow.ShowListReq + (*ShowListRes)(nil), // 8: ArtShow.ShowListRes + (*DelShowReq)(nil), // 9: ArtShow.DelShowReq + (*ShowArtworkDetail)(nil), // 10: ArtShow.ShowArtworkDetail + (*DelArtworkDetail)(nil), // 11: ArtShow.DelArtworkDetail + (*ShowStatisticalInfoReq)(nil), // 12: ArtShow.ShowStatisticalInfoReq + (*ShowStatisticalInfoRes)(nil), // 13: ArtShow.ShowStatisticalInfoRes + (*ArtworkPriceReq)(nil), // 14: ArtShow.ArtworkPriceReq + (*ArtworkPriceRes)(nil), // 15: ArtShow.ArtworkPriceRes + (*ShowRel)(nil), // 16: ArtShow.ShowRel + (*DelShowRel)(nil), // 17: ArtShow.DelShowRel + (*SaveApplyReq)(nil), // 18: ArtShow.SaveApplyReq + (*SaveApplyRes)(nil), // 19: ArtShow.SaveApplyRes + (*ApplyListReq)(nil), // 20: ArtShow.ApplyListReq + (*ApplyListRes)(nil), // 21: ArtShow.ApplyListRes + (*ApplyShowReq)(nil), // 22: ArtShow.ApplyShowReq + (*ApplyShowRes)(nil), // 23: ArtShow.ApplyShowRes + (*ApplyDetail)(nil), // 24: ArtShow.ApplyDetail + (*ShowRelListReq)(nil), // 25: ArtShow.ShowRelListReq + (*ShowRelListRes)(nil), // 26: ArtShow.ShowRelListRes + (*UpdateApplyStatusReq)(nil), // 27: ArtShow.UpdateApplyStatusReq + (*DelApplyReq)(nil), // 28: ArtShow.DelApplyReq + (*ShowStatisticalInfoRes_Num)(nil), // 29: ArtShow.ShowStatisticalInfoRes.Num + (*ArtworkPriceRes_PriceInfo)(nil), // 30: ArtShow.ArtworkPriceRes.PriceInfo } var file_pb_artshow_proto_depIdxs = []int32{ - 9, // 0: ArtShow.SaveShowReq.ShowArtwork:type_name -> ArtShow.ShowArtworkDetail - 9, // 1: ArtShow.ShowArtworkDetailRes.data:type_name -> ArtShow.ShowArtworkDetail - 4, // 2: ArtShow.ShowListRes.Data:type_name -> ArtShow.ShowDetail - 26, // 3: ArtShow.ShowStatisticalInfoRes.Data:type_name -> ArtShow.ShowStatisticalInfoRes.Num - 27, // 4: ArtShow.ArtworkPriceRes.Data:type_name -> ArtShow.ArtworkPriceRes.PriceInfo - 14, // 5: ArtShow.SaveApplyReq.Rel:type_name -> ArtShow.ShowRel - 21, // 6: ArtShow.ApplyListRes.Data:type_name -> ArtShow.ApplyDetail - 21, // 7: ArtShow.ApplyShowRes.Apply:type_name -> ArtShow.ApplyDetail - 4, // 8: ArtShow.ApplyShowRes.Show:type_name -> ArtShow.ShowDetail - 14, // 9: ArtShow.ShowRelListRes.Data:type_name -> ArtShow.ShowRel - 0, // 10: ArtShow.ArtShow.CreateShow:input_type -> ArtShow.SaveShowReq - 0, // 11: ArtShow.ArtShow.UpdateShow:input_type -> ArtShow.SaveShowReq - 8, // 12: ArtShow.ArtShow.DelShow:input_type -> ArtShow.DelShowReq - 6, // 13: ArtShow.ArtShow.ShowList:input_type -> ArtShow.ShowListReq - 3, // 14: ArtShow.ArtShow.ShowInfo:input_type -> ArtShow.ShowDetailReq - 10, // 15: ArtShow.ArtShow.ShowStatisticalInfo:input_type -> ArtShow.ShowStatisticalInfoReq - 12, // 16: ArtShow.ArtShow.ArtworkPrice:input_type -> ArtShow.ArtworkPriceReq - 15, // 17: ArtShow.ArtShow.CreateApply:input_type -> ArtShow.SaveApplyReq - 15, // 18: ArtShow.ArtShow.UpdateApply:input_type -> ArtShow.SaveApplyReq - 25, // 19: ArtShow.ArtShow.DelApply:input_type -> ArtShow.DelApplyReq - 6, // 20: ArtShow.ArtShow.ShowListWithApply:input_type -> ArtShow.ShowListReq - 24, // 21: ArtShow.ArtShow.UpdateApplyStatus:input_type -> ArtShow.UpdateApplyStatusReq - 17, // 22: ArtShow.ArtShow.ApplyList:input_type -> ArtShow.ApplyListReq - 19, // 23: ArtShow.ArtShow.ApplyDetail:input_type -> ArtShow.ApplyShowReq - 1, // 24: ArtShow.ArtShow.CreateShow:output_type -> ArtShow.SaveShowRes - 1, // 25: ArtShow.ArtShow.UpdateShow:output_type -> ArtShow.SaveShowRes - 2, // 26: ArtShow.ArtShow.DelShow:output_type -> ArtShow.CommonRes - 7, // 27: ArtShow.ArtShow.ShowList:output_type -> ArtShow.ShowListRes - 5, // 28: ArtShow.ArtShow.ShowInfo:output_type -> ArtShow.ShowArtworkDetailRes - 11, // 29: ArtShow.ArtShow.ShowStatisticalInfo:output_type -> ArtShow.ShowStatisticalInfoRes - 13, // 30: ArtShow.ArtShow.ArtworkPrice:output_type -> ArtShow.ArtworkPriceRes - 16, // 31: ArtShow.ArtShow.CreateApply:output_type -> ArtShow.SaveApplyRes - 16, // 32: ArtShow.ArtShow.UpdateApply:output_type -> ArtShow.SaveApplyRes - 2, // 33: ArtShow.ArtShow.DelApply:output_type -> ArtShow.CommonRes - 7, // 34: ArtShow.ArtShow.ShowListWithApply:output_type -> ArtShow.ShowListRes - 2, // 35: ArtShow.ArtShow.UpdateApplyStatus:output_type -> ArtShow.CommonRes - 18, // 36: ArtShow.ArtShow.ApplyList:output_type -> ArtShow.ApplyListRes - 20, // 37: ArtShow.ArtShow.ApplyDetail:output_type -> ArtShow.ApplyShowRes - 24, // [24:38] is the sub-list for method output_type - 10, // [10:24] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 10, // 0: ArtShow.SaveShowReq.ShowArtwork:type_name -> ArtShow.ShowArtworkDetail + 11, // 1: ArtShow.SaveShowReq.DelShowArtwork:type_name -> ArtShow.DelArtworkDetail + 4, // 2: ArtShow.ShowDetailRes.Data:type_name -> ArtShow.ShowDetail + 10, // 3: ArtShow.ShowArtworkDetailRes.data:type_name -> ArtShow.ShowArtworkDetail + 4, // 4: ArtShow.ShowListRes.Data:type_name -> ArtShow.ShowDetail + 29, // 5: ArtShow.ShowStatisticalInfoRes.Data:type_name -> ArtShow.ShowStatisticalInfoRes.Num + 30, // 6: ArtShow.ArtworkPriceRes.Data:type_name -> ArtShow.ArtworkPriceRes.PriceInfo + 16, // 7: ArtShow.SaveApplyReq.Rel:type_name -> ArtShow.ShowRel + 17, // 8: ArtShow.SaveApplyReq.DelRel:type_name -> ArtShow.DelShowRel + 24, // 9: ArtShow.ApplyListRes.Data:type_name -> ArtShow.ApplyDetail + 24, // 10: ArtShow.ApplyShowRes.Apply:type_name -> ArtShow.ApplyDetail + 4, // 11: ArtShow.ApplyShowRes.Show:type_name -> ArtShow.ShowDetail + 16, // 12: ArtShow.ShowRelListRes.Data:type_name -> ArtShow.ShowRel + 0, // 13: ArtShow.ArtShow.CreateShow:input_type -> ArtShow.SaveShowReq + 0, // 14: ArtShow.ArtShow.UpdateShow:input_type -> ArtShow.SaveShowReq + 9, // 15: ArtShow.ArtShow.DelShow:input_type -> ArtShow.DelShowReq + 7, // 16: ArtShow.ArtShow.ShowList:input_type -> ArtShow.ShowListReq + 3, // 17: ArtShow.ArtShow.ShowArtworkInfo:input_type -> ArtShow.ShowDetailReq + 3, // 18: ArtShow.ArtShow.ShowDetail:input_type -> ArtShow.ShowDetailReq + 12, // 19: ArtShow.ArtShow.ShowStatisticalInfo:input_type -> ArtShow.ShowStatisticalInfoReq + 14, // 20: ArtShow.ArtShow.ArtworkPrice:input_type -> ArtShow.ArtworkPriceReq + 18, // 21: ArtShow.ArtShow.CreateApply:input_type -> ArtShow.SaveApplyReq + 18, // 22: ArtShow.ArtShow.UpdateApply:input_type -> ArtShow.SaveApplyReq + 28, // 23: ArtShow.ArtShow.DelApply:input_type -> ArtShow.DelApplyReq + 7, // 24: ArtShow.ArtShow.ShowListWithApply:input_type -> ArtShow.ShowListReq + 27, // 25: ArtShow.ArtShow.UpdateApplyStatus:input_type -> ArtShow.UpdateApplyStatusReq + 20, // 26: ArtShow.ArtShow.ApplyList:input_type -> ArtShow.ApplyListReq + 22, // 27: ArtShow.ArtShow.ApplyDetail:input_type -> ArtShow.ApplyShowReq + 1, // 28: ArtShow.ArtShow.CreateShow:output_type -> ArtShow.SaveShowRes + 1, // 29: ArtShow.ArtShow.UpdateShow:output_type -> ArtShow.SaveShowRes + 2, // 30: ArtShow.ArtShow.DelShow:output_type -> ArtShow.CommonRes + 8, // 31: ArtShow.ArtShow.ShowList:output_type -> ArtShow.ShowListRes + 6, // 32: ArtShow.ArtShow.ShowArtworkInfo:output_type -> ArtShow.ShowArtworkDetailRes + 5, // 33: ArtShow.ArtShow.ShowDetail:output_type -> ArtShow.ShowDetailRes + 13, // 34: ArtShow.ArtShow.ShowStatisticalInfo:output_type -> ArtShow.ShowStatisticalInfoRes + 15, // 35: ArtShow.ArtShow.ArtworkPrice:output_type -> ArtShow.ArtworkPriceRes + 19, // 36: ArtShow.ArtShow.CreateApply:output_type -> ArtShow.SaveApplyRes + 19, // 37: ArtShow.ArtShow.UpdateApply:output_type -> ArtShow.SaveApplyRes + 2, // 38: ArtShow.ArtShow.DelApply:output_type -> ArtShow.CommonRes + 8, // 39: ArtShow.ArtShow.ShowListWithApply:output_type -> ArtShow.ShowListRes + 2, // 40: ArtShow.ArtShow.UpdateApplyStatus:output_type -> ArtShow.CommonRes + 21, // 41: ArtShow.ArtShow.ApplyList:output_type -> ArtShow.ApplyListRes + 23, // 42: ArtShow.ArtShow.ApplyDetail:output_type -> ArtShow.ApplyShowRes + 28, // [28:43] is the sub-list for method output_type + 13, // [13:28] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_pb_artshow_proto_init() } @@ -2345,7 +2608,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowArtworkDetailRes); i { + switch v := v.(*ShowDetailRes); i { case 0: return &v.state case 1: @@ -2357,7 +2620,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowListReq); i { + switch v := v.(*ShowArtworkDetailRes); i { case 0: return &v.state case 1: @@ -2369,7 +2632,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowListRes); i { + switch v := v.(*ShowListReq); i { case 0: return &v.state case 1: @@ -2381,7 +2644,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelShowReq); i { + switch v := v.(*ShowListRes); i { case 0: return &v.state case 1: @@ -2393,7 +2656,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowArtworkDetail); i { + switch v := v.(*DelShowReq); i { case 0: return &v.state case 1: @@ -2405,7 +2668,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowStatisticalInfoReq); i { + switch v := v.(*ShowArtworkDetail); i { case 0: return &v.state case 1: @@ -2417,7 +2680,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowStatisticalInfoRes); i { + switch v := v.(*DelArtworkDetail); i { case 0: return &v.state case 1: @@ -2429,7 +2692,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtworkPriceReq); i { + switch v := v.(*ShowStatisticalInfoReq); i { case 0: return &v.state case 1: @@ -2441,7 +2704,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArtworkPriceRes); i { + switch v := v.(*ShowStatisticalInfoRes); i { case 0: return &v.state case 1: @@ -2453,7 +2716,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowRel); i { + switch v := v.(*ArtworkPriceReq); i { case 0: return &v.state case 1: @@ -2465,7 +2728,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SaveApplyReq); i { + switch v := v.(*ArtworkPriceRes); i { case 0: return &v.state case 1: @@ -2477,7 +2740,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SaveApplyRes); i { + switch v := v.(*ShowRel); i { case 0: return &v.state case 1: @@ -2489,7 +2752,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyListReq); i { + switch v := v.(*DelShowRel); i { case 0: return &v.state case 1: @@ -2501,7 +2764,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyListRes); i { + switch v := v.(*SaveApplyReq); i { case 0: return &v.state case 1: @@ -2513,7 +2776,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyShowReq); i { + switch v := v.(*SaveApplyRes); i { case 0: return &v.state case 1: @@ -2525,7 +2788,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyShowRes); i { + switch v := v.(*ApplyListReq); i { case 0: return &v.state case 1: @@ -2537,7 +2800,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyDetail); i { + switch v := v.(*ApplyListRes); i { case 0: return &v.state case 1: @@ -2549,7 +2812,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowRelListReq); i { + switch v := v.(*ApplyShowReq); i { case 0: return &v.state case 1: @@ -2561,7 +2824,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowRelListRes); i { + switch v := v.(*ApplyShowRes); i { case 0: return &v.state case 1: @@ -2573,7 +2836,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateApplyStatusReq); i { + switch v := v.(*ApplyDetail); i { case 0: return &v.state case 1: @@ -2585,7 +2848,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DelApplyReq); i { + switch v := v.(*ShowRelListReq); i { case 0: return &v.state case 1: @@ -2597,7 +2860,7 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowStatisticalInfoRes_Num); i { + switch v := v.(*ShowRelListRes); i { case 0: return &v.state case 1: @@ -2609,6 +2872,42 @@ func file_pb_artshow_proto_init() { } } file_pb_artshow_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateApplyStatusReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_artshow_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelApplyReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_artshow_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShowStatisticalInfoRes_Num); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_artshow_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtworkPriceRes_PriceInfo); i { case 0: return &v.state @@ -2627,7 +2926,7 @@ func file_pb_artshow_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_artshow_proto_rawDesc, NumEnums: 0, - NumMessages: 28, + NumMessages: 31, NumExtensions: 0, NumServices: 1, }, diff --git a/pb/artShow/artshow.validator.pb.go b/pb/artShow/artshow.validator.pb.go index 1d098d3..03db267 100644 --- a/pb/artShow/artshow.validator.pb.go +++ b/pb/artShow/artshow.validator.pb.go @@ -23,6 +23,13 @@ func (this *SaveShowReq) Validate() error { } } } + for _, item := range this.DelShowArtwork { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DelShowArtwork", err) + } + } + } return nil } func (this *SaveShowRes) Validate() error { @@ -37,6 +44,14 @@ func (this *ShowDetailReq) Validate() error { func (this *ShowDetail) Validate() error { return nil } +func (this *ShowDetailRes) Validate() error { + if this.Data != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + return nil +} func (this *ShowArtworkDetailRes) Validate() error { for _, item := range this.Data { if item != nil { @@ -66,6 +81,9 @@ func (this *DelShowReq) Validate() error { func (this *ShowArtworkDetail) Validate() error { return nil } +func (this *DelArtworkDetail) Validate() error { + return nil +} func (this *ShowStatisticalInfoReq) Validate() error { return nil } @@ -97,6 +115,9 @@ func (this *ArtworkPriceRes_PriceInfo) Validate() error { func (this *ShowRel) Validate() error { return nil } +func (this *DelShowRel) Validate() error { + return nil +} func (this *SaveApplyReq) Validate() error { for _, item := range this.Rel { if item != nil { @@ -105,6 +126,13 @@ func (this *SaveApplyReq) Validate() error { } } } + for _, item := range this.DelRel { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DelRel", err) + } + } + } return nil } func (this *SaveApplyRes) Validate() error { diff --git a/pb/artShow/artshow_triple.pb.go b/pb/artShow/artshow_triple.pb.go index 958edae..edda47b 100644 --- a/pb/artShow/artshow_triple.pb.go +++ b/pb/artShow/artshow_triple.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-triple. DO NOT EDIT. // versions: // - protoc-gen-go-triple v1.0.8 -// - protoc v3.21.4 +// - protoc v3.10.1 // source: pb/artshow.proto package artShow @@ -32,7 +32,8 @@ type ArtShowClient interface { UpdateShow(ctx context.Context, in *SaveShowReq, opts ...grpc_go.CallOption) (*SaveShowRes, common.ErrorWithAttachment) DelShow(ctx context.Context, in *DelShowReq, opts ...grpc_go.CallOption) (*CommonRes, common.ErrorWithAttachment) ShowList(ctx context.Context, in *ShowListReq, opts ...grpc_go.CallOption) (*ShowListRes, common.ErrorWithAttachment) - ShowInfo(ctx context.Context, in *ShowDetailReq, opts ...grpc_go.CallOption) (*ShowArtworkDetailRes, common.ErrorWithAttachment) + ShowArtworkInfo(ctx context.Context, in *ShowDetailReq, opts ...grpc_go.CallOption) (*ShowArtworkDetailRes, common.ErrorWithAttachment) + ShowDetail(ctx context.Context, in *ShowDetailReq, opts ...grpc_go.CallOption) (*ShowDetailRes, common.ErrorWithAttachment) ShowStatisticalInfo(ctx context.Context, in *ShowStatisticalInfoReq, opts ...grpc_go.CallOption) (*ShowStatisticalInfoRes, common.ErrorWithAttachment) ArtworkPrice(ctx context.Context, in *ArtworkPriceReq, opts ...grpc_go.CallOption) (*ArtworkPriceRes, common.ErrorWithAttachment) CreateApply(ctx context.Context, in *SaveApplyReq, opts ...grpc_go.CallOption) (*SaveApplyRes, common.ErrorWithAttachment) @@ -53,7 +54,8 @@ type ArtShowClientImpl struct { UpdateShow func(ctx context.Context, in *SaveShowReq) (*SaveShowRes, error) DelShow func(ctx context.Context, in *DelShowReq) (*CommonRes, error) ShowList func(ctx context.Context, in *ShowListReq) (*ShowListRes, error) - ShowInfo func(ctx context.Context, in *ShowDetailReq) (*ShowArtworkDetailRes, error) + ShowArtworkInfo func(ctx context.Context, in *ShowDetailReq) (*ShowArtworkDetailRes, error) + ShowDetail func(ctx context.Context, in *ShowDetailReq) (*ShowDetailRes, error) ShowStatisticalInfo func(ctx context.Context, in *ShowStatisticalInfoReq) (*ShowStatisticalInfoRes, error) ArtworkPrice func(ctx context.Context, in *ArtworkPriceReq) (*ArtworkPriceRes, error) CreateApply func(ctx context.Context, in *SaveApplyReq) (*SaveApplyRes, error) @@ -101,10 +103,16 @@ func (c *artShowClient) ShowList(ctx context.Context, in *ShowListReq, opts ...g return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ShowList", in, out) } -func (c *artShowClient) ShowInfo(ctx context.Context, in *ShowDetailReq, opts ...grpc_go.CallOption) (*ShowArtworkDetailRes, common.ErrorWithAttachment) { +func (c *artShowClient) ShowArtworkInfo(ctx context.Context, in *ShowDetailReq, opts ...grpc_go.CallOption) (*ShowArtworkDetailRes, common.ErrorWithAttachment) { out := new(ShowArtworkDetailRes) interfaceKey := ctx.Value(constant.InterfaceKey).(string) - return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ShowInfo", in, out) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ShowArtworkInfo", in, out) +} + +func (c *artShowClient) ShowDetail(ctx context.Context, in *ShowDetailReq, opts ...grpc_go.CallOption) (*ShowDetailRes, common.ErrorWithAttachment) { + out := new(ShowDetailRes) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ShowDetail", in, out) } func (c *artShowClient) ShowStatisticalInfo(ctx context.Context, in *ShowStatisticalInfoReq, opts ...grpc_go.CallOption) (*ShowStatisticalInfoRes, common.ErrorWithAttachment) { @@ -169,7 +177,8 @@ type ArtShowServer interface { UpdateShow(context.Context, *SaveShowReq) (*SaveShowRes, error) DelShow(context.Context, *DelShowReq) (*CommonRes, error) ShowList(context.Context, *ShowListReq) (*ShowListRes, error) - ShowInfo(context.Context, *ShowDetailReq) (*ShowArtworkDetailRes, error) + ShowArtworkInfo(context.Context, *ShowDetailReq) (*ShowArtworkDetailRes, error) + ShowDetail(context.Context, *ShowDetailReq) (*ShowDetailRes, error) ShowStatisticalInfo(context.Context, *ShowStatisticalInfoReq) (*ShowStatisticalInfoRes, error) ArtworkPrice(context.Context, *ArtworkPriceReq) (*ArtworkPriceRes, error) CreateApply(context.Context, *SaveApplyReq) (*SaveApplyRes, error) @@ -199,8 +208,11 @@ func (UnimplementedArtShowServer) DelShow(context.Context, *DelShowReq) (*Common func (UnimplementedArtShowServer) ShowList(context.Context, *ShowListReq) (*ShowListRes, error) { return nil, status.Errorf(codes.Unimplemented, "method ShowList not implemented") } -func (UnimplementedArtShowServer) ShowInfo(context.Context, *ShowDetailReq) (*ShowArtworkDetailRes, error) { - return nil, status.Errorf(codes.Unimplemented, "method ShowInfo not implemented") +func (UnimplementedArtShowServer) ShowArtworkInfo(context.Context, *ShowDetailReq) (*ShowArtworkDetailRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowArtworkInfo not implemented") +} +func (UnimplementedArtShowServer) ShowDetail(context.Context, *ShowDetailReq) (*ShowDetailRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowDetail not implemented") } func (UnimplementedArtShowServer) ShowStatisticalInfo(context.Context, *ShowStatisticalInfoReq) (*ShowStatisticalInfoRes, error) { return nil, status.Errorf(codes.Unimplemented, "method ShowStatisticalInfo not implemented") @@ -373,7 +385,7 @@ func _ArtShow_ShowList_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -func _ArtShow_ShowInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { +func _ArtShow_ShowArtworkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { in := new(ShowDetailReq) if err := dec(in); err != nil { return nil, err @@ -386,7 +398,36 @@ func _ArtShow_ShowInfo_Handler(srv interface{}, ctx context.Context, dec func(in for k, v := range md { invAttachment[k] = v } - invo := invocation.NewRPCInvocation("ShowInfo", args, invAttachment) + invo := invocation.NewRPCInvocation("ShowArtworkInfo", 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 _ArtShow_ShowDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ShowDetailReq) + 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("ShowDetail", args, invAttachment) if interceptor == nil { result := base.XXX_GetProxyImpl().Invoke(ctx, invo) return result, result.Error() @@ -687,8 +728,12 @@ var ArtShow_ServiceDesc = grpc_go.ServiceDesc{ Handler: _ArtShow_ShowList_Handler, }, { - MethodName: "ShowInfo", - Handler: _ArtShow_ShowInfo_Handler, + MethodName: "ShowArtworkInfo", + Handler: _ArtShow_ShowArtworkInfo_Handler, + }, + { + MethodName: "ShowDetail", + Handler: _ArtShow_ShowDetail_Handler, }, { MethodName: "ShowStatisticalInfo", diff --git a/pb/artshow.proto b/pb/artshow.proto index 76706fb..6b4f17e 100644 --- a/pb/artshow.proto +++ b/pb/artshow.proto @@ -8,7 +8,8 @@ service ArtShow { rpc UpdateShow (SaveShowReq) returns (SaveShowRes) {} // 画展包更新操作 rpc DelShow (DelShowReq) returns (CommonRes) {} // 画展包删除操作 rpc ShowList (ShowListReq) returns (ShowListRes) {} // 画展包列表展示 - rpc ShowInfo (ShowDetailReq) returns (ShowArtworkDetailRes) {} // 画展包展示 + rpc ShowArtworkInfo (ShowDetailReq) returns (ShowArtworkDetailRes) {} // 画展包画作展示 + rpc ShowDetail (ShowDetailReq) returns (ShowDetailRes) {} // 画展包展示 rpc ShowStatisticalInfo (ShowStatisticalInfoReq) returns (ShowStatisticalInfoRes) {} // 画展统计(画作数量、画家数量) rpc ArtworkPrice (ArtworkPriceReq) returns (ArtworkPriceRes) {} // 画作价格 rpc CreateApply (SaveApplyReq) returns (SaveApplyRes) {} // 创建画展包申请 @@ -33,8 +34,9 @@ message SaveShowReq { string ShowTime = 9 [json_name = "show_time"]; repeated ShowArtworkDetail ShowArtwork = 10 [json_name = "show_artwork"]; + repeated DelArtworkDetail DelShowArtwork = 11 [json_name = "del_show_artwork"]; - int64 ID = 11 [json_name = "id"]; + int64 ID = 12 [json_name = "id"]; } message SaveShowRes { @@ -65,6 +67,11 @@ message ShowDetail { int32 IsShow = 11 [json_name = "is_show"]; } +message ShowDetailRes { + ShowDetail Data = 1 [json_name = "data"]; + string Msg = 2 [json_name = "msg"]; +} + message ShowArtworkDetailRes { repeated ShowArtworkDetail data = 1 [json_name = "data"]; string Msg = 2 [json_name = "msg"]; @@ -102,8 +109,16 @@ message ShowArtworkDetail { int64 ArtworkID = 3 [json_name = "artwork_id"]; string ArtworkName = 4 [json_name = "artwork_name"]; string ArtistName = 5 [json_name = "artist_name"]; - int32 Ruler = 6 [json_name = "ruler"]; - string SmallPic = 7 [json_name = "small_pic"]; + int32 Length = 6 [json_name = "length"]; + int32 Width = 7 [json_name = "width"]; + int32 Ruler = 8 [json_name = "ruler"]; + string SmallPic = 9 [json_name = "small_pic"]; +} + +// 画展包 删除的画作信息 +message DelArtworkDetail { + int64 ID = 1 [json_name = "id"]; + int64 ArtworkID = 2 [json_name = "artwork_id"]; } // 画展包 画家 画作 统计数据 @@ -115,6 +130,9 @@ message ShowStatisticalInfoRes { message Num { int64 ArtistNum = 1 [json_name = "artist_num"]; int64 PackageNum = 2 [json_name = "package_num"]; + int64 TotalNum = 3 [json_name = "total_num"]; + int64 NotShowNum = 4 [json_name = "not_show_num"]; + int64 ShowHisNum = 5 [json_name = "show_his_num"]; } Num Data = 1 [json_name = "data"]; @@ -146,6 +164,11 @@ message ShowRel { string Address = 5 [json_name = "address"]; } +message DelShowRel { + int64 ID = 1 [json_name = "id"]; + int64 ShowID = 2 [json_name = "show_id"]; +} + message SaveApplyReq { string Applicant = 1 [json_name = "applicant"]; @@ -157,6 +180,7 @@ message SaveApplyReq { string Remark = 7 [json_name = "remark"]; repeated ShowRel Rel = 8 [json_name = "rel"]; + repeated DelShowRel DelRel = 9 [json_name = "del_rel"]; } message SaveApplyRes { @@ -183,7 +207,7 @@ message ApplyShowReq { message ApplyShowRes { ApplyDetail Apply = 1 [json_name = "apply"]; repeated ShowDetail Show = 2 [json_name = "show"]; - string Msg = 3 [json_name = "msg"]; + string Msg = 3 [json_name = "msg"]; } message ApplyDetail { diff --git a/pb/grpc/artshow_grpc.pb.go b/pb/grpc/artshow_grpc.pb.go new file mode 100644 index 0000000..fd5aad1 --- /dev/null +++ b/pb/grpc/artshow_grpc.pb.go @@ -0,0 +1,610 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.10.1 +// source: pb/artshow.proto + +package grpc + +import ( + context "context" + "fonchain-artshow/pb/artShow" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// ArtShowClient is the client API for ArtShow service. +// +// 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 ArtShowClient interface { + CreateShow(ctx context.Context, in *artShow.SaveShowReq, opts ...grpc.CallOption) (*artShow.SaveShowRes, error) + UpdateShow(ctx context.Context, in *artShow.SaveShowReq, opts ...grpc.CallOption) (*artShow.SaveShowRes, error) + DelShow(ctx context.Context, in *artShow.DelShowReq, opts ...grpc.CallOption) (*artShow.CommonRes, error) + ShowList(ctx context.Context, in *artShow.ShowListReq, opts ...grpc.CallOption) (*artShow.ShowListRes, error) + ShowArtworkInfo(ctx context.Context, in *artShow.ShowDetailReq, opts ...grpc.CallOption) (*artShow.ShowArtworkDetailRes, error) + ShowDetail(ctx context.Context, in *artShow.ShowDetailReq, opts ...grpc.CallOption) (*artShow.ShowDetailRes, error) + ShowStatisticalInfo(ctx context.Context, in *artShow.ShowStatisticalInfoReq, opts ...grpc.CallOption) (*artShow.ShowStatisticalInfoRes, error) + ArtworkPrice(ctx context.Context, in *artShow.ArtworkPriceReq, opts ...grpc.CallOption) (*artShow.ArtworkPriceRes, error) + CreateApply(ctx context.Context, in *artShow.SaveApplyReq, opts ...grpc.CallOption) (*artShow.SaveApplyRes, error) + UpdateApply(ctx context.Context, in *artShow.SaveApplyReq, opts ...grpc.CallOption) (*artShow.SaveApplyRes, error) + DelApply(ctx context.Context, in *artShow.DelApplyReq, opts ...grpc.CallOption) (*artShow.CommonRes, error) + ShowListWithApply(ctx context.Context, in *artShow.ShowListReq, opts ...grpc.CallOption) (*artShow.ShowListRes, error) + UpdateApplyStatus(ctx context.Context, in *artShow.UpdateApplyStatusReq, opts ...grpc.CallOption) (*artShow.CommonRes, error) + ApplyList(ctx context.Context, in *artShow.ApplyListReq, opts ...grpc.CallOption) (*artShow.ApplyListRes, error) + ApplyDetail(ctx context.Context, in *artShow.ApplyShowReq, opts ...grpc.CallOption) (*artShow.ApplyShowRes, error) +} + +type artShowClient struct { + cc grpc.ClientConnInterface +} + +func NewArtShowClient(cc grpc.ClientConnInterface) ArtShowClient { + return &artShowClient{cc} +} + +func (c *artShowClient) CreateShow(ctx context.Context, in *artShow.SaveShowReq, opts ...grpc.CallOption) (*artShow.SaveShowRes, error) { + out := new(artShow.SaveShowRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/CreateShow", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) UpdateShow(ctx context.Context, in *artShow.SaveShowReq, opts ...grpc.CallOption) (*artShow.SaveShowRes, error) { + out := new(artShow.SaveShowRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/UpdateShow", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) DelShow(ctx context.Context, in *artShow.DelShowReq, opts ...grpc.CallOption) (*artShow.CommonRes, error) { + out := new(artShow.CommonRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/DelShow", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ShowList(ctx context.Context, in *artShow.ShowListReq, opts ...grpc.CallOption) (*artShow.ShowListRes, error) { + out := new(artShow.ShowListRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ShowList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ShowArtworkInfo(ctx context.Context, in *artShow.ShowDetailReq, opts ...grpc.CallOption) (*artShow.ShowArtworkDetailRes, error) { + out := new(artShow.ShowArtworkDetailRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ShowArtworkInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ShowDetail(ctx context.Context, in *artShow.ShowDetailReq, opts ...grpc.CallOption) (*artShow.ShowDetailRes, error) { + out := new(artShow.ShowDetailRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ShowDetail", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ShowStatisticalInfo(ctx context.Context, in *artShow.ShowStatisticalInfoReq, opts ...grpc.CallOption) (*artShow.ShowStatisticalInfoRes, error) { + out := new(artShow.ShowStatisticalInfoRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ShowStatisticalInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ArtworkPrice(ctx context.Context, in *artShow.ArtworkPriceReq, opts ...grpc.CallOption) (*artShow.ArtworkPriceRes, error) { + out := new(artShow.ArtworkPriceRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ArtworkPrice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) CreateApply(ctx context.Context, in *artShow.SaveApplyReq, opts ...grpc.CallOption) (*artShow.SaveApplyRes, error) { + out := new(artShow.SaveApplyRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/CreateApply", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) UpdateApply(ctx context.Context, in *artShow.SaveApplyReq, opts ...grpc.CallOption) (*artShow.SaveApplyRes, error) { + out := new(artShow.SaveApplyRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/UpdateApply", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) DelApply(ctx context.Context, in *artShow.DelApplyReq, opts ...grpc.CallOption) (*artShow.CommonRes, error) { + out := new(artShow.CommonRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/DelApply", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ShowListWithApply(ctx context.Context, in *artShow.ShowListReq, opts ...grpc.CallOption) (*artShow.ShowListRes, error) { + out := new(artShow.ShowListRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ShowListWithApply", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) UpdateApplyStatus(ctx context.Context, in *artShow.UpdateApplyStatusReq, opts ...grpc.CallOption) (*artShow.CommonRes, error) { + out := new(artShow.CommonRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/UpdateApplyStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ApplyList(ctx context.Context, in *artShow.ApplyListReq, opts ...grpc.CallOption) (*artShow.ApplyListRes, error) { + out := new(artShow.ApplyListRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ApplyList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *artShowClient) ApplyDetail(ctx context.Context, in *artShow.ApplyShowReq, opts ...grpc.CallOption) (*artShow.ApplyShowRes, error) { + out := new(artShow.ApplyShowRes) + err := c.cc.Invoke(ctx, "/ArtShow.ArtShow/ApplyDetail", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ArtShowServer is the server API for ArtShow service. +// All implementations must embed UnimplementedArtShowServer +// for forward compatibility +type ArtShowServer interface { + CreateShow(context.Context, *artShow.SaveShowReq) (*artShow.SaveShowRes, error) + UpdateShow(context.Context, *artShow.SaveShowReq) (*artShow.SaveShowRes, error) + DelShow(context.Context, *artShow.DelShowReq) (*artShow.CommonRes, error) + ShowList(context.Context, *artShow.ShowListReq) (*artShow.ShowListRes, error) + ShowArtworkInfo(context.Context, *artShow.ShowDetailReq) (*artShow.ShowArtworkDetailRes, error) + ShowDetail(context.Context, *artShow.ShowDetailReq) (*artShow.ShowDetailRes, error) + ShowStatisticalInfo(context.Context, *artShow.ShowStatisticalInfoReq) (*artShow.ShowStatisticalInfoRes, error) + ArtworkPrice(context.Context, *artShow.ArtworkPriceReq) (*artShow.ArtworkPriceRes, error) + CreateApply(context.Context, *artShow.SaveApplyReq) (*artShow.SaveApplyRes, error) + UpdateApply(context.Context, *artShow.SaveApplyReq) (*artShow.SaveApplyRes, error) + DelApply(context.Context, *artShow.DelApplyReq) (*artShow.CommonRes, error) + ShowListWithApply(context.Context, *artShow.ShowListReq) (*artShow.ShowListRes, error) + UpdateApplyStatus(context.Context, *artShow.UpdateApplyStatusReq) (*artShow.CommonRes, error) + ApplyList(context.Context, *artShow.ApplyListReq) (*artShow.ApplyListRes, error) + ApplyDetail(context.Context, *artShow.ApplyShowReq) (*artShow.ApplyShowRes, error) + mustEmbedUnimplementedArtShowServer() +} + +// UnimplementedArtShowServer must be embedded to have forward compatible implementations. +type UnimplementedArtShowServer struct { +} + +func (UnimplementedArtShowServer) CreateShow(context.Context, *artShow.SaveShowReq) (*artShow.SaveShowRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateShow not implemented") +} +func (UnimplementedArtShowServer) UpdateShow(context.Context, *artShow.SaveShowReq) (*artShow.SaveShowRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateShow not implemented") +} +func (UnimplementedArtShowServer) DelShow(context.Context, *artShow.DelShowReq) (*artShow.CommonRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelShow not implemented") +} +func (UnimplementedArtShowServer) ShowList(context.Context, *artShow.ShowListReq) (*artShow.ShowListRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowList not implemented") +} +func (UnimplementedArtShowServer) ShowArtworkInfo(context.Context, *artShow.ShowDetailReq) (*artShow.ShowArtworkDetailRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowArtworkInfo not implemented") +} +func (UnimplementedArtShowServer) ShowDetail(context.Context, *artShow.ShowDetailReq) (*artShow.ShowDetailRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowDetail not implemented") +} +func (UnimplementedArtShowServer) ShowStatisticalInfo(context.Context, *artShow.ShowStatisticalInfoReq) (*artShow.ShowStatisticalInfoRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowStatisticalInfo not implemented") +} +func (UnimplementedArtShowServer) ArtworkPrice(context.Context, *artShow.ArtworkPriceReq) (*artShow.ArtworkPriceRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ArtworkPrice not implemented") +} +func (UnimplementedArtShowServer) CreateApply(context.Context, *artShow.SaveApplyReq) (*artShow.SaveApplyRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateApply not implemented") +} +func (UnimplementedArtShowServer) UpdateApply(context.Context, *artShow.SaveApplyReq) (*artShow.SaveApplyRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateApply not implemented") +} +func (UnimplementedArtShowServer) DelApply(context.Context, *artShow.DelApplyReq) (*artShow.CommonRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelApply not implemented") +} +func (UnimplementedArtShowServer) ShowListWithApply(context.Context, *artShow.ShowListReq) (*artShow.ShowListRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ShowListWithApply not implemented") +} +func (UnimplementedArtShowServer) UpdateApplyStatus(context.Context, *artShow.UpdateApplyStatusReq) (*artShow.CommonRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateApplyStatus not implemented") +} +func (UnimplementedArtShowServer) ApplyList(context.Context, *artShow.ApplyListReq) (*artShow.ApplyListRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ApplyList not implemented") +} +func (UnimplementedArtShowServer) ApplyDetail(context.Context, *artShow.ApplyShowReq) (*artShow.ApplyShowRes, error) { + return nil, status.Errorf(codes.Unimplemented, "method ApplyDetail not implemented") +} +func (UnimplementedArtShowServer) mustEmbedUnimplementedArtShowServer() {} + +// UnsafeArtShowServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ArtShowServer will +// result in compilation errors. +type UnsafeArtShowServer interface { + mustEmbedUnimplementedArtShowServer() +} + +func RegisterArtShowServer(s grpc.ServiceRegistrar, srv ArtShowServer) { + s.RegisterService(&ArtShow_ServiceDesc, srv) +} + +func _ArtShow_CreateShow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.SaveShowReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).CreateShow(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/CreateShow", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).CreateShow(ctx, req.(*artShow.SaveShowReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_UpdateShow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.SaveShowReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).UpdateShow(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/UpdateShow", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).UpdateShow(ctx, req.(*artShow.SaveShowReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_DelShow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.DelShowReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).DelShow(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/DelShow", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).DelShow(ctx, req.(*artShow.DelShowReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ShowList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ShowListReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ShowList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ShowList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ShowList(ctx, req.(*artShow.ShowListReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ShowArtworkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ShowDetailReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ShowArtworkInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ShowArtworkInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ShowArtworkInfo(ctx, req.(*artShow.ShowDetailReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ShowDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ShowDetailReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ShowDetail(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ShowDetail", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ShowDetail(ctx, req.(*artShow.ShowDetailReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ShowStatisticalInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ShowStatisticalInfoReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ShowStatisticalInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ShowStatisticalInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ShowStatisticalInfo(ctx, req.(*artShow.ShowStatisticalInfoReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ArtworkPrice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ArtworkPriceReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ArtworkPrice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ArtworkPrice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ArtworkPrice(ctx, req.(*artShow.ArtworkPriceReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_CreateApply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.SaveApplyReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).CreateApply(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/CreateApply", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).CreateApply(ctx, req.(*artShow.SaveApplyReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_UpdateApply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.SaveApplyReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).UpdateApply(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/UpdateApply", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).UpdateApply(ctx, req.(*artShow.SaveApplyReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_DelApply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.DelApplyReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).DelApply(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/DelApply", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).DelApply(ctx, req.(*artShow.DelApplyReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ShowListWithApply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ShowListReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ShowListWithApply(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ShowListWithApply", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ShowListWithApply(ctx, req.(*artShow.ShowListReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_UpdateApplyStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.UpdateApplyStatusReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).UpdateApplyStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/UpdateApplyStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).UpdateApplyStatus(ctx, req.(*artShow.UpdateApplyStatusReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ApplyList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ApplyListReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ApplyList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ApplyList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ApplyList(ctx, req.(*artShow.ApplyListReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _ArtShow_ApplyDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(artShow.ApplyShowReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArtShowServer).ApplyDetail(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ArtShow.ArtShow/ApplyDetail", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArtShowServer).ApplyDetail(ctx, req.(*artShow.ApplyShowReq)) + } + return interceptor(ctx, in, info, handler) +} + +// ArtShow_ServiceDesc is the grpc.ServiceDesc for ArtShow service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ArtShow_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "ArtShow.ArtShow", + HandlerType: (*ArtShowServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateShow", + Handler: _ArtShow_CreateShow_Handler, + }, + { + MethodName: "UpdateShow", + Handler: _ArtShow_UpdateShow_Handler, + }, + { + MethodName: "DelShow", + Handler: _ArtShow_DelShow_Handler, + }, + { + MethodName: "ShowList", + Handler: _ArtShow_ShowList_Handler, + }, + { + MethodName: "ShowArtworkInfo", + Handler: _ArtShow_ShowArtworkInfo_Handler, + }, + { + MethodName: "ShowDetail", + Handler: _ArtShow_ShowDetail_Handler, + }, + { + MethodName: "ShowStatisticalInfo", + Handler: _ArtShow_ShowStatisticalInfo_Handler, + }, + { + MethodName: "ArtworkPrice", + Handler: _ArtShow_ArtworkPrice_Handler, + }, + { + MethodName: "CreateApply", + Handler: _ArtShow_CreateApply_Handler, + }, + { + MethodName: "UpdateApply", + Handler: _ArtShow_UpdateApply_Handler, + }, + { + MethodName: "DelApply", + Handler: _ArtShow_DelApply_Handler, + }, + { + MethodName: "ShowListWithApply", + Handler: _ArtShow_ShowListWithApply_Handler, + }, + { + MethodName: "UpdateApplyStatus", + Handler: _ArtShow_UpdateApplyStatus_Handler, + }, + { + MethodName: "ApplyList", + Handler: _ArtShow_ApplyList_Handler, + }, + { + MethodName: "ApplyDetail", + Handler: _ArtShow_ApplyDetail_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "pb/artshow.proto", +} diff --git a/pkg/serializer/art_show.go b/pkg/serializer/art_show.go index 08bdd1c..58f742d 100644 --- a/pkg/serializer/art_show.go +++ b/pkg/serializer/art_show.go @@ -47,6 +47,7 @@ func BuildArtShowRpc(artShowM *model.ArtShow) (out *artShow.ShowDetail) { out.ShowSeq = artShowM.ShowSeq out.ShowName = artShowM.ShowName out.ArtistName = artShowM.ArtistName + out.ArtistID = artShowM.ArtistID out.ArtworkNum = artShowM.ArtworkNum out.Ruler = artShowM.Ruler out.Price = artShowM.Price @@ -55,3 +56,10 @@ func BuildArtShowRpc(artShowM *model.ArtShow) (out *artShow.ShowDetail) { out.IsShow = int32(artShowM.IsShow) return } + +func BuildArtShowIsShowM(artShowIds uint, isShow int8) (out *model.ArtShow) { + out = new(model.ArtShow) + out.ID = artShowIds + out.IsShow = isShow + return +} diff --git a/pkg/serializer/artwork_price.go b/pkg/serializer/artwork_price.go index 22ba6bf..3dcdfd5 100644 --- a/pkg/serializer/artwork_price.go +++ b/pkg/serializer/artwork_price.go @@ -14,6 +14,8 @@ func BuildShowArtworkM(in []*artShow.ShowArtworkDetail, showID uint) (out []*mod artworkPrice.ArtistName = in[i].ArtistName artworkPrice.SmallPic = in[i].SmallPic artworkPrice.Ruler = in[i].Ruler + artworkPrice.Length = in[i].Length + artworkPrice.Width = in[i].Width if in[i].ID != 0 { artworkPrice.ID = uint(in[i].ID) } @@ -31,12 +33,15 @@ func BuildShowArtworkRpc(in []*model.ArtworkPrice) (out []*artShow.ShowArtworkDe out = make([]*artShow.ShowArtworkDetail, len(in)) for i := 0; i < len(in); i++ { artworkPrice := new(artShow.ShowArtworkDetail) + artworkPrice.ID = int64(in[i].ID) artworkPrice.ShowID = int64(in[i].ShowID) artworkPrice.ArtworkID = in[i].ArtworkID artworkPrice.ArtworkName = in[i].ArtworkName artworkPrice.ArtistName = in[i].ArtistName artworkPrice.SmallPic = in[i].SmallPic artworkPrice.Ruler = in[i].Ruler + artworkPrice.Length = in[i].Length + artworkPrice.Width = in[i].Width out[i] = artworkPrice } @@ -61,3 +66,11 @@ func BuildArtworkPriceIDs(in []*model.ArtworkPrice) (out []uint) { } return } + +func BuildArtworkIDs(in []*model.ArtworkPrice) (out []int64) { + out = make([]int64, len(in)) + for i := 0; i < len(in); i++ { + out[i] = in[i].ArtworkID + } + return +} diff --git a/pkg/serializer/calc_price.go b/pkg/serializer/calc_price.go index d9472af..4338169 100644 --- a/pkg/serializer/calc_price.go +++ b/pkg/serializer/calc_price.go @@ -2,69 +2,173 @@ package serializer import ( "fonchain-artshow/cmd/model" - "fonchain-artshow/pkg/utils" "math" ) -func CalcPrice(artworks []*model.ArtworkPrice, ruler int32, totalPrice int64) (err error, save []*model.ArtworkPrice) { - if totalPrice == 0 || ruler == 0 { - return nil, artworks +func CalcPrice(total_price int64, total_ruler int32, artworksPrices []*model.ArtworkPrice) []*model.ArtworkPrice { + price := math.Floor(float64(total_price) / float64(total_ruler)) + _, f := math.Modf(float64(total_price) / float64(total_ruler)) + if f >= 0.5 { + price += 1 } + var ( + current_total_price int64 + current_artwork_price int64 + current_copyright_price int64 - save = make([]*model.ArtworkPrice, 0) + add_total_balance int64 + add_artwork_balance int64 + add_copyright_balance int64 - var ( - needAddPriceArtworkIndex int - currentArtworkRuler int - currentTotalPrice int64 - maxRulerIndex int - totalDiv float64 + loss_total_price int64 + loss_artwork_price int64 + loss_copyright_price int64 ) - price := utils.FormatFloat(float64(totalPrice)/float64(ruler)/10, 2) * 10 // 用于计算的单价 - //ruler_price := math.Floor(float64(total_price)/float64(ruler)/10) * 10 // 保存的单价 + for total_price-current_total_price != 0 { + current_total_price = calcTotalPrice(artworksPrices, add_total_balance, int64(price)) + if current_total_price != 0 { + add_total_balance = total_price - current_total_price + } + if int(math.Abs(float64(add_total_balance))) < len(artworksPrices) { + loss_total_price = add_total_balance + break + } + } - for i := 0; i < len(artworks); i++ { - if currentArtworkRuler < int(artworks[i].Ruler) { - currentArtworkRuler = int(artworks[i].Ruler) - needAddPriceArtworkIndex = i - maxRulerIndex = i - } else if currentArtworkRuler == int(artworks[i].Ruler) { - currentArtworkRuler = 0 - needAddPriceArtworkIndex = -1 + maxId, dirId := findArtworkToAdd(artworksPrices, int64(price)) + + if dirId > 0 { + artworksPrices[dirId].Price = artworksPrices[dirId].Price + loss_total_price + } else { + artworksPrices[maxId].Price = artworksPrices[maxId].Price + loss_total_price + } + + for int64(float64(total_price)*0.95)-current_artwork_price != 0 { + current_artwork_price = calcArtworkPrice(artworksPrices, add_artwork_balance) + if current_artwork_price != 0 { + add_artwork_balance = int64(float64(total_price)*0.95) - current_artwork_price + } + if int(math.Abs(float64(add_artwork_balance))) < len(artworksPrices) { + _, f := math.Modf(float64(total_price) * 0.95) + if f >= 0.5 { + add_artwork_balance += 1 + } + loss_artwork_price = add_artwork_balance + break + } + } + + if dirId > 0 { + artworksPrices[dirId].ArtworkPrice = artworksPrices[dirId].ArtworkPrice + loss_artwork_price + } else { + artworksPrices[maxId].ArtworkPrice = artworksPrices[maxId].ArtworkPrice + loss_artwork_price + } + + for int64(float64(total_price)*0.05)-current_copyright_price != 0 { + current_copyright_price = calcCopyrightPrice(artworksPrices, add_copyright_balance) + if current_copyright_price != 0 { + add_copyright_balance = int64(float64(total_price)*0.05) - current_copyright_price + } + if int(math.Abs(float64(add_copyright_balance))) < len(artworksPrices) { + loss_copyright_price = add_copyright_balance + break + } + } + + if dirId > 0 { + artworksPrices[dirId].CopyrightPrice = artworksPrices[dirId].CopyrightPrice + loss_copyright_price + } else { + artworksPrices[maxId].CopyrightPrice = artworksPrices[maxId].CopyrightPrice + loss_copyright_price + } + + return artworksPrices +} + +func calcArtworkPrice(artworks []*model.ArtworkPrice, add_balance int64) int64 { + var ( + current_artwork_price int64 + add_balance_single float64 + ) + if math.Abs(float64(add_balance)) > 0 { + add_balance_single = math.Floor(math.Abs(float64(add_balance)) / float64(len(artworks))) + if add_balance < 0 { + add_balance_single = 0 - add_balance_single } - artworks[i].RulerPrice = int64(price) - artworks[i].Price = int64(price * float64(artworks[i].Ruler)) - artworkPrice := float64(artworks[i].Price) * 0.95 - artworkPrice, div1 := math.Modf(artworkPrice) - artworks[i].ArtworkPrice = int64(artworkPrice) - totalDiv += div1 // 小数点 省略掉的 0.5 - - copyrightPrice := artworks[i].Price - artworks[i].ArtworkPrice - artworks[i].CopyrightPrice = copyrightPrice - currentTotalPrice += artworks[i].Price } + for i := 0; i < len(artworks); i++ { + artworks[i].ArtworkPrice = int64(math.Floor(float64(artworks[i].Price) * 0.95)) + artworks[i].ArtworkPrice += int64(add_balance_single) - if needAddPriceArtworkIndex == -1 { - needAddPriceArtworkIndex = maxRulerIndex + current_artwork_price += artworks[i].ArtworkPrice } + return current_artwork_price +} - artworks[needAddPriceArtworkIndex].RulerPrice = int64(price) - artworks[needAddPriceArtworkIndex].FloatPrice = totalPrice - currentTotalPrice - artworks[needAddPriceArtworkIndex].Price - artworks[needAddPriceArtworkIndex].Price = int64(float32(totalPrice) - float32(currentTotalPrice) + float32(artworks[needAddPriceArtworkIndex].Price)) - artworks[needAddPriceArtworkIndex].ArtworkPrice = int64((float64(artworks[needAddPriceArtworkIndex].Price) * 0.95) + totalDiv) - artworks[needAddPriceArtworkIndex].CopyrightPrice = artworks[needAddPriceArtworkIndex].Price - artworks[needAddPriceArtworkIndex].ArtworkPrice +func calcCopyrightPrice(artworks []*model.ArtworkPrice, add_balance int64) int64 { + var ( + current_copyright_price int64 + add_balance_single float64 + ) + if math.Abs(float64(add_balance)) > 0 { + add_balance_single = math.Floor(math.Abs(float64(add_balance)) / float64(len(artworks))) + if add_balance < 0 { + add_balance_single = 0 - add_balance_single + } + } + for i := 0; i < len(artworks); i++ { + artworks[i].CopyrightPrice = int64(math.Floor(float64(artworks[i].Price) * 0.05)) + artworks[i].CopyrightPrice += int64(add_balance_single) - return nil, artworks + current_copyright_price += artworks[i].CopyrightPrice + } + return current_copyright_price } -func CalcReward(artworks []*model.ArtworkPrice, reward int64) (err error, save []*model.ArtworkPrice) { - save = artworks - if reward == 0 { - return nil, artworks +func calcTotalPrice(artworks []*model.ArtworkPrice, add_balance, price int64) int64 { + var ( + current_total_price int64 + add_balance_single float64 + ) + if math.Abs(float64(add_balance)) > 0 { + add_balance_single = math.Floor(math.Abs(float64(add_balance)) / float64(len(artworks))) + if add_balance < 0 { + add_balance_single = 0 - add_balance_single + } + } + for i := 0; i < len(artworks); i++ { + artworks[i].Price = int64(add_balance_single) + artworks[i].Price += int64(artworks[i].Ruler) * price + + current_total_price += artworks[i].Price } + return current_total_price +} + +func findArtworkToAdd(artworks []*model.ArtworkPrice, ruler_price int64) (int, int) { + var ( + current_ruler int + max_ruler int + maxIndex int + difIndex int + ) + for i := 0; i < len(artworks); i++ { - artworks[i].ArtistPrice = reward * int64(artworks[i].Ruler) + if artworks[i].Ruler > int32(max_ruler) { + maxIndex = i + max_ruler = int(artworks[i].Ruler) + } + + if artworks[i].Ruler > int32(current_ruler) { + difIndex = i + current_ruler = int(artworks[i].Ruler) + } else if artworks[i].Ruler == int32(current_ruler) { + current_ruler = 0 + difIndex = 0 + } + //artworks[i].ShowID = show_id + artworks[i].RulerPrice = ruler_price } - return nil, save + + return maxIndex, difIndex } diff --git a/pkg/serializer/calc_price_old.go b/pkg/serializer/calc_price_old.go new file mode 100644 index 0000000..e29d07f --- /dev/null +++ b/pkg/serializer/calc_price_old.go @@ -0,0 +1,70 @@ +package serializer + +import ( + "fonchain-artshow/cmd/model" + "fonchain-artshow/pkg/utils" + "math" +) + +func _CalcPrice(artworks []*model.ArtworkPrice, ruler int32, totalPrice int64) (err error, save []*model.ArtworkPrice) { + if totalPrice == 0 || ruler == 0 { + return nil, artworks + } + + save = make([]*model.ArtworkPrice, 0) + + var ( + needAddPriceArtworkIndex int + currentArtworkRuler int + currentTotalPrice int64 + maxRulerIndex int + totalDiv float64 + ) + + price := utils.FormatFloat(float64(totalPrice)/float64(ruler)/10, 2) * 10 // 用于计算的单价 + //ruler_price := math.Floor(float64(total_price)/float64(ruler)/10) * 10 // 保存的单价 + + for i := 0; i < len(artworks); i++ { + if currentArtworkRuler < int(artworks[i].Ruler) { + currentArtworkRuler = int(artworks[i].Ruler) + needAddPriceArtworkIndex = i + maxRulerIndex = i + } else if currentArtworkRuler == int(artworks[i].Ruler) { + currentArtworkRuler = 0 + needAddPriceArtworkIndex = -1 + } + artworks[i].RulerPrice = int64(price) + artworks[i].Price = int64(price * float64(artworks[i].Ruler)) + artworkPrice := float64(artworks[i].Price) * 0.95 + artworkPrice, div1 := math.Modf(artworkPrice) + artworks[i].ArtworkPrice = int64(artworkPrice) + totalDiv += div1 // 小数点 省略掉的 0.5 + + copyrightPrice := artworks[i].Price - artworks[i].ArtworkPrice + artworks[i].CopyrightPrice = copyrightPrice + currentTotalPrice += artworks[i].Price + } + + if needAddPriceArtworkIndex == -1 { + needAddPriceArtworkIndex = maxRulerIndex + } + + artworks[needAddPriceArtworkIndex].RulerPrice = int64(price) + artworks[needAddPriceArtworkIndex].FloatPrice = totalPrice - currentTotalPrice - artworks[needAddPriceArtworkIndex].Price + artworks[needAddPriceArtworkIndex].Price = int64(float32(totalPrice) - float32(currentTotalPrice) + float32(artworks[needAddPriceArtworkIndex].Price)) + artworks[needAddPriceArtworkIndex].ArtworkPrice = int64((float64(artworks[needAddPriceArtworkIndex].Price) * 0.95) + totalDiv) + artworks[needAddPriceArtworkIndex].CopyrightPrice = artworks[needAddPriceArtworkIndex].Price - artworks[needAddPriceArtworkIndex].ArtworkPrice + + return nil, artworks +} + +func CalcReward(artworks []*model.ArtworkPrice, reward int64) (err error, save []*model.ArtworkPrice) { + save = artworks + if reward == 0 { + return nil, artworks + } + for i := 0; i < len(artworks); i++ { + artworks[i].ArtistPrice = reward * int64(artworks[i].Ruler) + } + return nil, save +}