From 3009a0cbd664a4a555f67e86948dfb9218051653 Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Mon, 13 Mar 2023 14:24:11 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=94=BB=E5=AE=B6?= =?UTF-8?q?=E7=94=BB=E4=BD=9C=E7=BB=9F=E8=AE=A1=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/internal/controller/artistInfo_artwork.go | 4 + cmd/internal/dao/artistinfo_artwork.go | 82 +++ cmd/internal/logic/artistinfo_artwork.go | 77 ++- cmd/model/view_passed_artwork_static.go | 50 ++ cmd/model/{user_view.go => view_user.go} | 2 +- pb/artistInfoArtwork/artistinfoArtwork.pb.go | 596 ++++++++++++++---- .../artistinfoArtwork.pb.validate.go | 382 +++++++++++ .../artistinfoArtwork_triple.pb.go | 45 ++ pb/artistinfoArtwork.proto | 28 + pkg/db/init.go | 3 +- 10 files changed, 1159 insertions(+), 110 deletions(-) create mode 100644 cmd/model/view_passed_artwork_static.go rename cmd/model/{user_view.go => view_user.go} (99%) diff --git a/cmd/internal/controller/artistInfo_artwork.go b/cmd/internal/controller/artistInfo_artwork.go index 3791897..1edcc8d 100644 --- a/cmd/internal/controller/artistInfo_artwork.go +++ b/cmd/internal/controller/artistInfo_artwork.go @@ -21,6 +21,10 @@ type ArtistInfoArtworkProvider struct { artistInfoLogic logic.ArtistInfoArtworkLogic } +func (a ArtistInfoArtworkProvider) ArtistArtworkStatic(ctx context.Context, request *artistInfoArtwork.ArtistArtworkStaticRequest) (*artistInfoArtwork.ArtistArtworkStaticResponse, error) { + return a.artistInfoLogic.ArtworkStatic(request) +} + // 进入画作补充信息的流程 func (a ArtistInfoArtworkProvider) GenerateArtworkSupplementInfo(ctx context.Context, request *artistInfoArtwork.ArtworkUidsRequest) (*emptypb.Empty, error) { return a.artistInfoLogic.GenerateArtworkSupplementInfo(request) diff --git a/cmd/internal/dao/artistinfo_artwork.go b/cmd/internal/dao/artistinfo_artwork.go index a707cdd..997938c 100644 --- a/cmd/internal/dao/artistinfo_artwork.go +++ b/cmd/internal/dao/artistinfo_artwork.go @@ -7,10 +7,14 @@ package dao import ( + "context" "errors" + "fmt" "github.com/fonchain/fonchain-artistinfo/cmd/model" "github.com/fonchain/fonchain-artistinfo/pb/artistInfoArtwork" + "github.com/fonchain/fonchain-artistinfo/pb/artwork_query" db "github.com/fonchain/fonchain-artistinfo/pkg/db" + "github.com/fonchain/fonchain-artistinfo/pkg/service" "github.com/fonchain/fonchain-artistinfo/pkg/util/stime" "gorm.io/gorm" "time" @@ -220,3 +224,81 @@ func GenerateArtworkSupplementInfo(artworkUids []string) error { } return db.DB.Model(model.ArtworkLockRecord{}).Where("artwork_uid in ?", artworkUids).Updates(&updateData).Error } + +func PassedArtworkStatic(request *artistInfoArtwork.ArtistArtworkStaticRequest, uids []string) (res []model.ViewPassedArtworkStatic, err error) { + var tx = db.DB.Model(&model.ViewPassedArtworkStatic{}) + err = tx.Where("artist_uid in ?", uids).Scopes(db.Pagination(request.Page, request.PageSize)).Find(&res).Error + return +} + +// CountArtworkTotalWhichAuditPassed 单个统计画家已通过的画作数量和已通过的平尺数 +func CountArtworkTotalWhichAuditPassed(artistUid string) (rulerPassedTotal int64, artworkPassedCount int64) { + artworkList, err := GetArtworkLockRecords(&artistInfoArtwork.GetArtworkLockRecordsRequest{ + ArtistUid: artistUid, + QueryType: artistInfoArtwork.ArtworkQueryMode_AllAuditPassArtwork, + }) + if err != nil { + fmt.Println("service.GrpcArtistInfoArtworkImpl.GetArtworkLockRecords Error:", err.Error()) + return 0, 0 + } + if len(artworkList.Data) > 0 { + fmt.Println("service.GrpcArtistInfoArtworkImpl.GetArtworkLockRecords :画作数量为0") + return 0, 0 + } + var artworkUids = []string{} + for _, v := range artworkList.Data { + artworkUids = append(artworkUids, v.ArtworkUid) + } + //搜索画作信息 + var ( + defultPageSize int32 = 500 + nowPageIndex int32 + artworkNumber int32 + artworkRulerTotal int32 + artworkTotal int32 + ) + for { + nowPageIndex++ + res, err := service.ArtworkQueryImpl.ArtworkPreviewList(context.Background(), &artwork_query.ArtworkPreviewListRequest{ + Page: nowPageIndex, + PageSize: defultPageSize, + ArtistUid: artistUid, + ArtworkUids: artworkUids, + }) + if err != nil { + fmt.Println(err.Error()) + return 0, 0 + } + if artworkNumber == 0 { + artworkNumber = res.Page.Total + artworkTotal += res.Page.Total + } + artworkNumber -= defultPageSize + for _, v := range res.Data { + artworkRulerTotal += v.Ruler + } + if artworkNumber <= 0 { + break + } + } + return int64(artworkRulerTotal), int64(artworkTotal) +} + +// CountAllArtworkTotal 单个统计画家所有的画作数量和平尺数 +func CountAllArtworkTotal(artistUid string) (artworkTotal int64, artworkRulerTotal int64) { + //查询此画家的所有画作 + artworkList, err := service.ArtworkQueryImpl.ArtworkList(context.Background(), &artwork_query.ArtworkListRequest{ + Page: 1, + PageSize: -1, + ArtistUid: artistUid, + }) + if err != nil { + fmt.Println("画作列表查询失败", err.Error()) + return 0, 0 + } + for _, v := range artworkList.Data { + artworkTotal++ + artworkRulerTotal += int64(v.Ruler) + } + return artworkRulerTotal, artworkTotal +} diff --git a/cmd/internal/logic/artistinfo_artwork.go b/cmd/internal/logic/artistinfo_artwork.go index 29a7a55..c409a0a 100644 --- a/cmd/internal/logic/artistinfo_artwork.go +++ b/cmd/internal/logic/artistinfo_artwork.go @@ -12,6 +12,7 @@ import ( "fmt" "github.com/fonchain/fonchain-artistinfo/cmd/internal/dao" "github.com/fonchain/fonchain-artistinfo/cmd/model" + "github.com/fonchain/fonchain-artistinfo/pb/artist" "github.com/fonchain/fonchain-artistinfo/pb/artistInfoArtwork" "github.com/fonchain/fonchain-artistinfo/pb/artwork_query" "github.com/fonchain/fonchain-artistinfo/pkg/m" @@ -203,5 +204,79 @@ func (a ArtistInfoArtworkLogic) GenerateArtworkSupplementInfo(request *artistInf //更新画作流程 err := dao.GenerateArtworkSupplementInfo(request.ArtworkUids) return nil, err - +} + +func (a ArtistInfoArtworkLogic) ArtworkStatic(request *artistInfoArtwork.ArtistArtworkStaticRequest) (res *artistInfoArtwork.ArtistArtworkStaticResponse, err error) { + var gender int32 = -1 + if request.ArtistGender != 1 { + gender = 0 + } + if request.ArtistGender != 2 { + gender = 1 + } + //查询匹配的画家数据列表 + artistList, err := service.GrpcArtistImpl.ArtistList(context.Background(), &artist.ArtistListRequest{ + Keyword: request.ArtistKeyWords, + Page: int32(request.Page), + PageSize: int32(request.PageSize), + Gender: gender, + }) + if err != nil { + return nil, err + } + if artistList.Data == nil || len(artistList.Data) == 0 { + return nil, nil + } + var artistUids []string + for _, v := range artistList.Data { + artistUids = append(artistUids, v.Uid) + } + + //查询这些画家审核通过的画作数据统计 + res = &artistInfoArtwork.ArtistArtworkStaticResponse{ + Page: int64(artistList.Count), + PageSize: int64(artistList.Page), + Total: request.PageSize, + } + viewDatas, err := dao.PassedArtworkStatic(request, artistUids) + if err != nil { + return nil, err + } + for i, v := range viewDatas { + var ( + penName string + stageName string + artworkTotal int64 + rulerTotal int64 + passedRulerTotal int64 + passedArtworkTotal int64 + ) + //统计画家素有画作的总数和总平尺数 + artworkTotal, rulerTotal = dao.CountAllArtworkTotal(v.ArtistUid) + //统计审核通过的画作总数和平尺总数 + passedArtworkTotal, passedRulerTotal = dao.CountArtworkTotalWhichAuditPassed(v.ArtistUid) + //补充画家信息 + for _, artistData := range artistList.Data { + if artistData.Uid == v.ArtistUid { + penName = artistData.PenName + stageName = artistData.StageName + } + } + //补充画作信息 + res.Data = append(res.Data, &artistInfoArtwork.ArtistArtworkStaticStaticData{ + Idx: int64(i + 1), + IsLock: v.IsLock, + ArtistUid: v.ArtistUid, + LatestLockTime: v.LatestLockTime, + LatestUpdatedAt: v.LatestUpdatedAt, + RealName: v.RealName, + PenName: penName, + StageName: stageName, + ArtworkTotal: artworkTotal, + RulerTotal: rulerTotal, + PassedRulerTotal: passedRulerTotal, + PassedArtworkTotal: passedArtworkTotal, + }) + } + return } diff --git a/cmd/model/view_passed_artwork_static.go b/cmd/model/view_passed_artwork_static.go new file mode 100644 index 0000000..2508d66 --- /dev/null +++ b/cmd/model/view_passed_artwork_static.go @@ -0,0 +1,50 @@ +// Package model ----------------------------- +// @file : view_passed_artwork_static.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2023/3/11 11:13 +// ------------------------------------------- +package model + +import "gorm.io/gorm" + +type ViewPassedArtworkStatic struct { + ArtistUid string `json:"artistUid" gorm:"column:artist_uid;comment:画家uid"` + IsLock bool `json:"isLock" gorm:"column:is_lock;comment:是否锁定"` + LatestLockTime string `json:"latestLockTime" gorm:"column:latest_lock_time;comment:最近一次锁定时间"` + PasswdArtworkNumber int64 `json:"passwdArtworkNumber" gorm:"column:passwd_artwork_number;comment:审核通过的画作总数"` + LatestUpdatedAt string `json:"latestUpdatedAt" gorm:"column:latest_updated_at;comment:最近一次更新时间"` + RealName string `json:"realName" gorm:"column:real_name;comment:真实姓名"` + //---补充字段,转到pb文件 + //Idx int64 `json:"idx" gorm:"-"` + //PenName string `json:"penName" gorm:"-"` + //StageName string `json:"stageName" gorm:"-"` + //ArtworkTotal string `json:"artworkTotal" gorm:"-"` + //RulerTotal int64 `json:"rulerTotal" gorm:"-"` + //PassedRulerTotal int64 `json:"passedRulerTotal" gorm:"-"` +} + +func (p ViewPassedArtworkStatic) TableName() string { + return "view_passed_artwork_static" +} + +func CreateViewPassedArtworkStatic(db *gorm.DB) error { + // 已通过画作统计 + var sql = ` +CREATE OR REPLACE VIEW view_passed_artwork_static AS +-- 查询审核通过的画作数量以及相关数据 +SELECT +su.mgmt_artist_uid artist_uid +,MAX(su.is_lock) is_lock +,max(su.latest_lock_time) latest_lock_time +,count(alr.artwork_uid) passed_artwork_number +,MAX(alr.updated_at) latest_updated_at +,MAX(rn.name) real_name +FROM sys_user su +LEFT JOIN artwork_lock_record alr ON alr.artist_uid = su.mgmt_artist_uid AND alr.audit_flow_index=3 AND alr.supplement_audit_status=4 AND alr.deleted_at = 0 +LEFT JOIN real_name rn ON rn.id = su.real_name_id +GROUP BY su.mgmt_artist_uid,alr.artwork_uid HAVING su.mgmt_artist_uid !='' +` + db.Exec(sql) + return nil +} diff --git a/cmd/model/user_view.go b/cmd/model/view_user.go similarity index 99% rename from cmd/model/user_view.go rename to cmd/model/view_user.go index 33d1c9c..d05efc5 100644 --- a/cmd/model/user_view.go +++ b/cmd/model/view_user.go @@ -1,5 +1,5 @@ // Package model ----------------------------- -// @file : user_view.go +// @file : view_user.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2023/2/27 13:51 diff --git a/pb/artistInfoArtwork/artistinfoArtwork.pb.go b/pb/artistInfoArtwork/artistinfoArtwork.pb.go index 2168d84..bba0388 100644 --- a/pb/artistInfoArtwork/artistinfoArtwork.pb.go +++ b/pb/artistInfoArtwork/artistinfoArtwork.pb.go @@ -1270,6 +1270,291 @@ func (x *CheckArtworkEditableResponse) GetEditable() bool { return false } +type ArtistArtworkStaticRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page int64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + ArtistKeyWords string `protobuf:"bytes,3,opt,name=artistKeyWords,proto3" json:"artistKeyWords,omitempty"` //包括通过 画家名称 、画家tnum、画家手机号、关联的经纪人来查询画家 。 + ArtistGender int32 `protobuf:"varint,5,opt,name=artistGender,proto3" json:"artistGender,omitempty"` //画家性别 + ArtworkName string `protobuf:"bytes,4,opt,name=artworkName,proto3" json:"artworkName,omitempty"` //画作名称 +} + +func (x *ArtistArtworkStaticRequest) Reset() { + *x = ArtistArtworkStaticRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_artistinfoArtwork_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtistArtworkStaticRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistArtworkStaticRequest) ProtoMessage() {} + +func (x *ArtistArtworkStaticRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_artistinfoArtwork_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 ArtistArtworkStaticRequest.ProtoReflect.Descriptor instead. +func (*ArtistArtworkStaticRequest) Descriptor() ([]byte, []int) { + return file_pb_artistinfoArtwork_proto_rawDescGZIP(), []int{17} +} + +func (x *ArtistArtworkStaticRequest) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ArtistArtworkStaticRequest) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ArtistArtworkStaticRequest) GetArtistKeyWords() string { + if x != nil { + return x.ArtistKeyWords + } + return "" +} + +func (x *ArtistArtworkStaticRequest) GetArtistGender() int32 { + if x != nil { + return x.ArtistGender + } + return 0 +} + +func (x *ArtistArtworkStaticRequest) GetArtworkName() string { + if x != nil { + return x.ArtworkName + } + return "" +} + +type ArtistArtworkStaticStaticData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Idx int64 `protobuf:"varint,1,opt,name=Idx,proto3" json:"Idx,omitempty"` + IsLock bool `protobuf:"varint,2,opt,name=IsLock,proto3" json:"IsLock,omitempty"` + ArtistUid string `protobuf:"bytes,3,opt,name=ArtistUid,proto3" json:"ArtistUid,omitempty"` + LatestLockTime string `protobuf:"bytes,4,opt,name=LatestLockTime,proto3" json:"LatestLockTime,omitempty"` + LatestUpdatedAt string `protobuf:"bytes,6,opt,name=LatestUpdatedAt,proto3" json:"LatestUpdatedAt,omitempty"` + RealName string `protobuf:"bytes,7,opt,name=RealName,proto3" json:"RealName,omitempty"` + PenName string `protobuf:"bytes,8,opt,name=PenName,proto3" json:"PenName,omitempty"` + StageName string `protobuf:"bytes,9,opt,name=StageName,proto3" json:"StageName,omitempty"` + ArtworkTotal int64 `protobuf:"varint,10,opt,name=ArtworkTotal,proto3" json:"ArtworkTotal,omitempty"` + RulerTotal int64 `protobuf:"varint,11,opt,name=RulerTotal,proto3" json:"RulerTotal,omitempty"` + PassedRulerTotal int64 `protobuf:"varint,12,opt,name=PassedRulerTotal,proto3" json:"PassedRulerTotal,omitempty"` + PassedArtworkTotal int64 `protobuf:"varint,13,opt,name=PassedArtworkTotal,proto3" json:"PassedArtworkTotal,omitempty"` +} + +func (x *ArtistArtworkStaticStaticData) Reset() { + *x = ArtistArtworkStaticStaticData{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_artistinfoArtwork_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtistArtworkStaticStaticData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistArtworkStaticStaticData) ProtoMessage() {} + +func (x *ArtistArtworkStaticStaticData) ProtoReflect() protoreflect.Message { + mi := &file_pb_artistinfoArtwork_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtistArtworkStaticStaticData.ProtoReflect.Descriptor instead. +func (*ArtistArtworkStaticStaticData) Descriptor() ([]byte, []int) { + return file_pb_artistinfoArtwork_proto_rawDescGZIP(), []int{18} +} + +func (x *ArtistArtworkStaticStaticData) GetIdx() int64 { + if x != nil { + return x.Idx + } + return 0 +} + +func (x *ArtistArtworkStaticStaticData) GetIsLock() bool { + if x != nil { + return x.IsLock + } + return false +} + +func (x *ArtistArtworkStaticStaticData) GetArtistUid() string { + if x != nil { + return x.ArtistUid + } + return "" +} + +func (x *ArtistArtworkStaticStaticData) GetLatestLockTime() string { + if x != nil { + return x.LatestLockTime + } + return "" +} + +func (x *ArtistArtworkStaticStaticData) GetLatestUpdatedAt() string { + if x != nil { + return x.LatestUpdatedAt + } + return "" +} + +func (x *ArtistArtworkStaticStaticData) GetRealName() string { + if x != nil { + return x.RealName + } + return "" +} + +func (x *ArtistArtworkStaticStaticData) GetPenName() string { + if x != nil { + return x.PenName + } + return "" +} + +func (x *ArtistArtworkStaticStaticData) GetStageName() string { + if x != nil { + return x.StageName + } + return "" +} + +func (x *ArtistArtworkStaticStaticData) GetArtworkTotal() int64 { + if x != nil { + return x.ArtworkTotal + } + return 0 +} + +func (x *ArtistArtworkStaticStaticData) GetRulerTotal() int64 { + if x != nil { + return x.RulerTotal + } + return 0 +} + +func (x *ArtistArtworkStaticStaticData) GetPassedRulerTotal() int64 { + if x != nil { + return x.PassedRulerTotal + } + return 0 +} + +func (x *ArtistArtworkStaticStaticData) GetPassedArtworkTotal() int64 { + if x != nil { + return x.PassedArtworkTotal + } + return 0 +} + +type ArtistArtworkStaticResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*ArtistArtworkStaticStaticData `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Page int64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize int64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Total int64 `protobuf:"varint,4,opt,name=total,proto3" json:"total,omitempty"` +} + +func (x *ArtistArtworkStaticResponse) Reset() { + *x = ArtistArtworkStaticResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_artistinfoArtwork_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtistArtworkStaticResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistArtworkStaticResponse) ProtoMessage() {} + +func (x *ArtistArtworkStaticResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_artistinfoArtwork_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtistArtworkStaticResponse.ProtoReflect.Descriptor instead. +func (*ArtistArtworkStaticResponse) Descriptor() ([]byte, []int) { + return file_pb_artistinfoArtwork_proto_rawDescGZIP(), []int{19} +} + +func (x *ArtistArtworkStaticResponse) GetData() []*ArtistArtworkStaticStaticData { + if x != nil { + return x.Data + } + return nil +} + +func (x *ArtistArtworkStaticResponse) GetPage() int64 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ArtistArtworkStaticResponse) GetPageSize() int64 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ArtistArtworkStaticResponse) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + var File_pb_artistinfoArtwork_proto protoreflect.FileDescriptor var file_pb_artistinfoArtwork_proto_rawDesc = []byte{ @@ -1455,87 +1740,142 @@ var file_pb_artistinfoArtwork_proto_rawDesc = []byte{ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2a, 0xc0, 0x01, 0x0a, 0x10, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x65, - 0x53, 0x61, 0x76, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x00, 0x12, 0x14, 0x0a, - 0x10, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x53, 0x61, 0x76, - 0x65, 0x41, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, - 0x4e, 0x6f, 0x77, 0x41, 0x75, 0x64, 0x69, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x66, 0x42, 0x61, - 0x73, 0x65, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x4e, 0x6f, 0x77, 0x41, 0x75, 0x64, 0x69, 0x74, - 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x66, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x69, 0x6e, 0x67, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, - 0x63, 0x6b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x41, - 0x6c, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x50, 0x61, 0x73, 0x73, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x10, 0x06, 0x32, 0x9a, 0x08, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x66, 0x0a, 0x17, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x26, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, - 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x65, 0x22, 0xba, 0x01, 0x0a, 0x1a, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x57, 0x6f, 0x72, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x4b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, + 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xad, + 0x03, 0x0a, 0x1d, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x49, + 0x64, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, + 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, + 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x65, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x65, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, + 0x72, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x50, 0x61, + 0x73, 0x73, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, + 0x0a, 0x12, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x50, 0x61, 0x73, 0x73, + 0x65, 0x64, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa2, + 0x01, 0x0a, 0x1b, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x2a, 0xc0, 0x01, 0x0a, 0x10, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x6f, 0x77, 0x50, + 0x72, 0x65, 0x53, 0x61, 0x76, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x4e, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x72, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x53, + 0x61, 0x76, 0x65, 0x41, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0x02, 0x12, 0x16, + 0x0a, 0x12, 0x4e, 0x6f, 0x77, 0x41, 0x75, 0x64, 0x69, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x66, + 0x42, 0x61, 0x73, 0x65, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x4e, 0x6f, 0x77, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x66, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x05, 0x12, 0x17, 0x0a, + 0x13, 0x41, 0x6c, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x50, 0x61, 0x73, 0x73, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x10, 0x06, 0x32, 0x84, 0x09, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x66, 0x0a, 0x17, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, + 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x26, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, + 0x21, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, + 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, + 0x63, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x21, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, + 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x12, 0x26, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x00, 0x12, + 0x5d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, + 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x27, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, + 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x6c, + 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x1c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x73, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x22, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0x00, 0x12, 0x60, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x28, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, - 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x12, 0x26, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x00, 0x12, 0x5d, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x6b, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x27, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, - 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x18, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, - 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4e, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x1c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x72, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x72, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x22, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x72, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x72, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x72, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x72, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x1d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x69, 0x64, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x3b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x72, 0x6b, 0x55, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, + 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x1d, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x70, 0x70, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x69, + 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x68, 0x0a, 0x13, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, 0x26, 0x2e, 0x61, 0x72, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x2e, + 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x16, 0x5a, + 0x14, 0x2e, 0x2f, 0x3b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x72, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1551,7 +1891,7 @@ func file_pb_artistinfoArtwork_proto_rawDescGZIP() []byte { } var file_pb_artistinfoArtwork_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_pb_artistinfoArtwork_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_pb_artistinfoArtwork_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_pb_artistinfoArtwork_proto_goTypes = []interface{}{ (ArtworkQueryMode)(0), // 0: artistinfo.ArtworkQueryMode (*ArtworkCommonNoParams)(nil), // 1: artistinfo.ArtworkCommonNoParams @@ -1571,38 +1911,44 @@ var file_pb_artistinfoArtwork_proto_goTypes = []interface{}{ (*ArtworkLockRecord)(nil), // 15: artistinfo.ArtworkLockRecord (*UpdateArtworkAuditStatusRequest)(nil), // 16: artistinfo.UpdateArtworkAuditStatusRequest (*CheckArtworkEditableResponse)(nil), // 17: artistinfo.CheckArtworkEditableResponse - (*emptypb.Empty)(nil), // 18: google.protobuf.Empty + (*ArtistArtworkStaticRequest)(nil), // 18: artistinfo.ArtistArtworkStaticRequest + (*ArtistArtworkStaticStaticData)(nil), // 19: artistinfo.ArtistArtworkStaticStaticData + (*ArtistArtworkStaticResponse)(nil), // 20: artistinfo.ArtistArtworkStaticResponse + (*emptypb.Empty)(nil), // 21: google.protobuf.Empty } var file_pb_artistinfoArtwork_proto_depIdxs = []int32{ 0, // 0: artistinfo.GetArtworkLockRecordsRequest.queryType:type_name -> artistinfo.ArtworkQueryMode 7, // 1: artistinfo.ArtworkLockList.data:type_name -> artistinfo.ArtistLockInfo 15, // 2: artistinfo.GetArtworkLockHistoryResponse.groupList:type_name -> artistinfo.ArtworkLockRecord 13, // 3: artistinfo.ArtworkLockRecord.dataList:type_name -> artistinfo.ArtworkPreviewInfo - 4, // 4: artistinfo.ArtistInfoArtwork.CreateArtworkLockRecord:input_type -> artistinfo.CreateArtworkLockRecordReq - 5, // 5: artistinfo.ArtistInfoArtwork.ArtworkLockAction:input_type -> artistinfo.ArtworkLockActionRequest - 6, // 6: artistinfo.ArtistInfoArtwork.GetArtworkLockRecords:input_type -> artistinfo.GetArtworkLockRecordsRequest - 11, // 7: artistinfo.ArtistInfoArtwork.GetArtworkLockHistoryGroup:input_type -> artistinfo.GetArtworkLockHistoryRequest - 10, // 8: artistinfo.ArtistInfoArtwork.DeleteArtworkRecord:input_type -> artistinfo.DeleteArtworkRecordRequest - 12, // 9: artistinfo.ArtistInfoArtwork.GetArtworkLockDetail:input_type -> artistinfo.GetArtworkLockDetailRequest - 16, // 10: artistinfo.ArtistInfoArtwork.UpdateArtworkAuditStatus:input_type -> artistinfo.UpdateArtworkAuditStatusRequest - 2, // 11: artistinfo.ArtistInfoArtwork.CheckArtworkBaseInfoEditable:input_type -> artistinfo.ArtworkUidRequest - 2, // 12: artistinfo.ArtistInfoArtwork.CheckArtworkSupplementInfoEditable:input_type -> artistinfo.ArtworkUidRequest - 3, // 13: artistinfo.ArtistInfoArtwork.GenerateArtworkSupplementInfo:input_type -> artistinfo.ArtworkUidsRequest - 1, // 14: artistinfo.ArtistInfoArtwork.CreateArtworkLockRecord:output_type -> artistinfo.ArtworkCommonNoParams - 1, // 15: artistinfo.ArtistInfoArtwork.ArtworkLockAction:output_type -> artistinfo.ArtworkCommonNoParams - 8, // 16: artistinfo.ArtistInfoArtwork.GetArtworkLockRecords:output_type -> artistinfo.ArtworkLockList - 14, // 17: artistinfo.ArtistInfoArtwork.GetArtworkLockHistoryGroup:output_type -> artistinfo.GetArtworkLockHistoryResponse - 1, // 18: artistinfo.ArtistInfoArtwork.DeleteArtworkRecord:output_type -> artistinfo.ArtworkCommonNoParams - 7, // 19: artistinfo.ArtistInfoArtwork.GetArtworkLockDetail:output_type -> artistinfo.ArtistLockInfo - 1, // 20: artistinfo.ArtistInfoArtwork.UpdateArtworkAuditStatus:output_type -> artistinfo.ArtworkCommonNoParams - 17, // 21: artistinfo.ArtistInfoArtwork.CheckArtworkBaseInfoEditable:output_type -> artistinfo.CheckArtworkEditableResponse - 17, // 22: artistinfo.ArtistInfoArtwork.CheckArtworkSupplementInfoEditable:output_type -> artistinfo.CheckArtworkEditableResponse - 18, // 23: artistinfo.ArtistInfoArtwork.GenerateArtworkSupplementInfo:output_type -> google.protobuf.Empty - 14, // [14:24] is the sub-list for method output_type - 4, // [4:14] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 19, // 4: artistinfo.ArtistArtworkStaticResponse.data:type_name -> artistinfo.ArtistArtworkStaticStaticData + 4, // 5: artistinfo.ArtistInfoArtwork.CreateArtworkLockRecord:input_type -> artistinfo.CreateArtworkLockRecordReq + 5, // 6: artistinfo.ArtistInfoArtwork.ArtworkLockAction:input_type -> artistinfo.ArtworkLockActionRequest + 6, // 7: artistinfo.ArtistInfoArtwork.GetArtworkLockRecords:input_type -> artistinfo.GetArtworkLockRecordsRequest + 11, // 8: artistinfo.ArtistInfoArtwork.GetArtworkLockHistoryGroup:input_type -> artistinfo.GetArtworkLockHistoryRequest + 10, // 9: artistinfo.ArtistInfoArtwork.DeleteArtworkRecord:input_type -> artistinfo.DeleteArtworkRecordRequest + 12, // 10: artistinfo.ArtistInfoArtwork.GetArtworkLockDetail:input_type -> artistinfo.GetArtworkLockDetailRequest + 16, // 11: artistinfo.ArtistInfoArtwork.UpdateArtworkAuditStatus:input_type -> artistinfo.UpdateArtworkAuditStatusRequest + 2, // 12: artistinfo.ArtistInfoArtwork.CheckArtworkBaseInfoEditable:input_type -> artistinfo.ArtworkUidRequest + 2, // 13: artistinfo.ArtistInfoArtwork.CheckArtworkSupplementInfoEditable:input_type -> artistinfo.ArtworkUidRequest + 3, // 14: artistinfo.ArtistInfoArtwork.GenerateArtworkSupplementInfo:input_type -> artistinfo.ArtworkUidsRequest + 18, // 15: artistinfo.ArtistInfoArtwork.ArtistArtworkStatic:input_type -> artistinfo.ArtistArtworkStaticRequest + 1, // 16: artistinfo.ArtistInfoArtwork.CreateArtworkLockRecord:output_type -> artistinfo.ArtworkCommonNoParams + 1, // 17: artistinfo.ArtistInfoArtwork.ArtworkLockAction:output_type -> artistinfo.ArtworkCommonNoParams + 8, // 18: artistinfo.ArtistInfoArtwork.GetArtworkLockRecords:output_type -> artistinfo.ArtworkLockList + 14, // 19: artistinfo.ArtistInfoArtwork.GetArtworkLockHistoryGroup:output_type -> artistinfo.GetArtworkLockHistoryResponse + 1, // 20: artistinfo.ArtistInfoArtwork.DeleteArtworkRecord:output_type -> artistinfo.ArtworkCommonNoParams + 7, // 21: artistinfo.ArtistInfoArtwork.GetArtworkLockDetail:output_type -> artistinfo.ArtistLockInfo + 1, // 22: artistinfo.ArtistInfoArtwork.UpdateArtworkAuditStatus:output_type -> artistinfo.ArtworkCommonNoParams + 17, // 23: artistinfo.ArtistInfoArtwork.CheckArtworkBaseInfoEditable:output_type -> artistinfo.CheckArtworkEditableResponse + 17, // 24: artistinfo.ArtistInfoArtwork.CheckArtworkSupplementInfoEditable:output_type -> artistinfo.CheckArtworkEditableResponse + 21, // 25: artistinfo.ArtistInfoArtwork.GenerateArtworkSupplementInfo:output_type -> google.protobuf.Empty + 20, // 26: artistinfo.ArtistInfoArtwork.ArtistArtworkStatic:output_type -> artistinfo.ArtistArtworkStaticResponse + 16, // [16:27] is the sub-list for method output_type + 5, // [5:16] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_pb_artistinfoArtwork_proto_init() } @@ -1815,6 +2161,42 @@ func file_pb_artistinfoArtwork_proto_init() { return nil } } + file_pb_artistinfoArtwork_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtistArtworkStaticRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_artistinfoArtwork_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtistArtworkStaticStaticData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_artistinfoArtwork_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArtistArtworkStaticResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1822,7 +2204,7 @@ func file_pb_artistinfoArtwork_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_artistinfoArtwork_proto_rawDesc, NumEnums: 1, - NumMessages: 17, + NumMessages: 20, NumExtensions: 0, NumServices: 1, }, diff --git a/pb/artistInfoArtwork/artistinfoArtwork.pb.validate.go b/pb/artistInfoArtwork/artistinfoArtwork.pb.validate.go index de59c2a..e4ac39d 100644 --- a/pb/artistInfoArtwork/artistinfoArtwork.pb.validate.go +++ b/pb/artistInfoArtwork/artistinfoArtwork.pb.validate.go @@ -1982,3 +1982,385 @@ var _ interface { Cause() error ErrorName() string } = CheckArtworkEditableResponseValidationError{} + +// Validate checks the field values on ArtistArtworkStaticRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ArtistArtworkStaticRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ArtistArtworkStaticRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ArtistArtworkStaticRequestMultiError, or nil if none found. +func (m *ArtistArtworkStaticRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ArtistArtworkStaticRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Page + + // no validation rules for PageSize + + // no validation rules for ArtistKeyWords + + // no validation rules for ArtistGender + + // no validation rules for ArtworkName + + if len(errors) > 0 { + return ArtistArtworkStaticRequestMultiError(errors) + } + + return nil +} + +// ArtistArtworkStaticRequestMultiError is an error wrapping multiple +// validation errors returned by ArtistArtworkStaticRequest.ValidateAll() if +// the designated constraints aren't met. +type ArtistArtworkStaticRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ArtistArtworkStaticRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ArtistArtworkStaticRequestMultiError) AllErrors() []error { return m } + +// ArtistArtworkStaticRequestValidationError is the validation error returned +// by ArtistArtworkStaticRequest.Validate if the designated constraints aren't met. +type ArtistArtworkStaticRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ArtistArtworkStaticRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ArtistArtworkStaticRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ArtistArtworkStaticRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ArtistArtworkStaticRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ArtistArtworkStaticRequestValidationError) ErrorName() string { + return "ArtistArtworkStaticRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ArtistArtworkStaticRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sArtistArtworkStaticRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ArtistArtworkStaticRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ArtistArtworkStaticRequestValidationError{} + +// Validate checks the field values on ArtistArtworkStaticStaticData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ArtistArtworkStaticStaticData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ArtistArtworkStaticStaticData with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ArtistArtworkStaticStaticDataMultiError, or nil if none found. +func (m *ArtistArtworkStaticStaticData) ValidateAll() error { + return m.validate(true) +} + +func (m *ArtistArtworkStaticStaticData) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Idx + + // no validation rules for IsLock + + // no validation rules for ArtistUid + + // no validation rules for LatestLockTime + + // no validation rules for LatestUpdatedAt + + // no validation rules for RealName + + // no validation rules for PenName + + // no validation rules for StageName + + // no validation rules for ArtworkTotal + + // no validation rules for RulerTotal + + // no validation rules for PassedRulerTotal + + // no validation rules for PassedArtworkTotal + + if len(errors) > 0 { + return ArtistArtworkStaticStaticDataMultiError(errors) + } + + return nil +} + +// ArtistArtworkStaticStaticDataMultiError is an error wrapping multiple +// validation errors returned by ArtistArtworkStaticStaticData.ValidateAll() +// if the designated constraints aren't met. +type ArtistArtworkStaticStaticDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ArtistArtworkStaticStaticDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ArtistArtworkStaticStaticDataMultiError) AllErrors() []error { return m } + +// ArtistArtworkStaticStaticDataValidationError is the validation error +// returned by ArtistArtworkStaticStaticData.Validate if the designated +// constraints aren't met. +type ArtistArtworkStaticStaticDataValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ArtistArtworkStaticStaticDataValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ArtistArtworkStaticStaticDataValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ArtistArtworkStaticStaticDataValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ArtistArtworkStaticStaticDataValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ArtistArtworkStaticStaticDataValidationError) ErrorName() string { + return "ArtistArtworkStaticStaticDataValidationError" +} + +// Error satisfies the builtin error interface +func (e ArtistArtworkStaticStaticDataValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sArtistArtworkStaticStaticData.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ArtistArtworkStaticStaticDataValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ArtistArtworkStaticStaticDataValidationError{} + +// Validate checks the field values on ArtistArtworkStaticResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ArtistArtworkStaticResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ArtistArtworkStaticResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ArtistArtworkStaticResponseMultiError, or nil if none found. +func (m *ArtistArtworkStaticResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ArtistArtworkStaticResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ArtistArtworkStaticResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ArtistArtworkStaticResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ArtistArtworkStaticResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for Page + + // no validation rules for PageSize + + // no validation rules for Total + + if len(errors) > 0 { + return ArtistArtworkStaticResponseMultiError(errors) + } + + return nil +} + +// ArtistArtworkStaticResponseMultiError is an error wrapping multiple +// validation errors returned by ArtistArtworkStaticResponse.ValidateAll() if +// the designated constraints aren't met. +type ArtistArtworkStaticResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ArtistArtworkStaticResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ArtistArtworkStaticResponseMultiError) AllErrors() []error { return m } + +// ArtistArtworkStaticResponseValidationError is the validation error returned +// by ArtistArtworkStaticResponse.Validate if the designated constraints +// aren't met. +type ArtistArtworkStaticResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ArtistArtworkStaticResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ArtistArtworkStaticResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ArtistArtworkStaticResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ArtistArtworkStaticResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ArtistArtworkStaticResponseValidationError) ErrorName() string { + return "ArtistArtworkStaticResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ArtistArtworkStaticResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sArtistArtworkStaticResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ArtistArtworkStaticResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ArtistArtworkStaticResponseValidationError{} diff --git a/pb/artistInfoArtwork/artistinfoArtwork_triple.pb.go b/pb/artistInfoArtwork/artistinfoArtwork_triple.pb.go index e0e139a..ede94de 100644 --- a/pb/artistInfoArtwork/artistinfoArtwork_triple.pb.go +++ b/pb/artistInfoArtwork/artistinfoArtwork_triple.pb.go @@ -40,6 +40,7 @@ type ArtistInfoArtworkClient interface { CheckArtworkBaseInfoEditable(ctx context.Context, in *ArtworkUidRequest, opts ...grpc_go.CallOption) (*CheckArtworkEditableResponse, common.ErrorWithAttachment) CheckArtworkSupplementInfoEditable(ctx context.Context, in *ArtworkUidRequest, opts ...grpc_go.CallOption) (*CheckArtworkEditableResponse, common.ErrorWithAttachment) GenerateArtworkSupplementInfo(ctx context.Context, in *ArtworkUidsRequest, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + ArtistArtworkStatic(ctx context.Context, in *ArtistArtworkStaticRequest, opts ...grpc_go.CallOption) (*ArtistArtworkStaticResponse, common.ErrorWithAttachment) } type artistInfoArtworkClient struct { @@ -57,6 +58,7 @@ type ArtistInfoArtworkClientImpl struct { CheckArtworkBaseInfoEditable func(ctx context.Context, in *ArtworkUidRequest) (*CheckArtworkEditableResponse, error) CheckArtworkSupplementInfoEditable func(ctx context.Context, in *ArtworkUidRequest) (*CheckArtworkEditableResponse, error) GenerateArtworkSupplementInfo func(ctx context.Context, in *ArtworkUidsRequest) (*emptypb.Empty, error) + ArtistArtworkStatic func(ctx context.Context, in *ArtistArtworkStaticRequest) (*ArtistArtworkStaticResponse, error) } func (c *ArtistInfoArtworkClientImpl) GetDubboStub(cc *triple.TripleConn) ArtistInfoArtworkClient { @@ -131,6 +133,12 @@ func (c *artistInfoArtworkClient) GenerateArtworkSupplementInfo(ctx context.Cont return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GenerateArtworkSupplementInfo", in, out) } +func (c *artistInfoArtworkClient) ArtistArtworkStatic(ctx context.Context, in *ArtistArtworkStaticRequest, opts ...grpc_go.CallOption) (*ArtistArtworkStaticResponse, common.ErrorWithAttachment) { + out := new(ArtistArtworkStaticResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ArtistArtworkStatic", in, out) +} + // ArtistInfoArtworkServer is the server API for ArtistInfoArtwork service. // All implementations must embed UnimplementedArtistInfoArtworkServer // for forward compatibility @@ -146,6 +154,7 @@ type ArtistInfoArtworkServer interface { CheckArtworkBaseInfoEditable(context.Context, *ArtworkUidRequest) (*CheckArtworkEditableResponse, error) CheckArtworkSupplementInfoEditable(context.Context, *ArtworkUidRequest) (*CheckArtworkEditableResponse, error) GenerateArtworkSupplementInfo(context.Context, *ArtworkUidsRequest) (*emptypb.Empty, error) + ArtistArtworkStatic(context.Context, *ArtistArtworkStaticRequest) (*ArtistArtworkStaticResponse, error) mustEmbedUnimplementedArtistInfoArtworkServer() } @@ -184,6 +193,9 @@ func (UnimplementedArtistInfoArtworkServer) CheckArtworkSupplementInfoEditable(c func (UnimplementedArtistInfoArtworkServer) GenerateArtworkSupplementInfo(context.Context, *ArtworkUidsRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method GenerateArtworkSupplementInfo not implemented") } +func (UnimplementedArtistInfoArtworkServer) ArtistArtworkStatic(context.Context, *ArtistArtworkStaticRequest) (*ArtistArtworkStaticResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ArtistArtworkStatic not implemented") +} func (s *UnimplementedArtistInfoArtworkServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -502,6 +514,35 @@ func _ArtistInfoArtwork_GenerateArtworkSupplementInfo_Handler(srv interface{}, c return interceptor(ctx, in, info, handler) } +func _ArtistInfoArtwork_ArtistArtworkStatic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ArtistArtworkStaticRequest) + 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("ArtistArtworkStatic", 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) +} + // ArtistInfoArtwork_ServiceDesc is the grpc_go.ServiceDesc for ArtistInfoArtwork service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -549,6 +590,10 @@ var ArtistInfoArtwork_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "GenerateArtworkSupplementInfo", Handler: _ArtistInfoArtwork_GenerateArtworkSupplementInfo_Handler, }, + { + MethodName: "ArtistArtworkStatic", + Handler: _ArtistInfoArtwork_ArtistArtworkStatic_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, Metadata: "pb/artistinfoArtwork.proto", diff --git a/pb/artistinfoArtwork.proto b/pb/artistinfoArtwork.proto index a38f5c8..1779984 100644 --- a/pb/artistinfoArtwork.proto +++ b/pb/artistinfoArtwork.proto @@ -19,6 +19,7 @@ service ArtistInfoArtwork { rpc CheckArtworkBaseInfoEditable(ArtworkUidRequest)returns(CheckArtworkEditableResponse){}//查询画作基本信息是否可编辑 rpc CheckArtworkSupplementInfoEditable(ArtworkUidRequest)returns(CheckArtworkEditableResponse){}//查询画作补充信息是否可编辑 rpc GenerateArtworkSupplementInfo(ArtworkUidsRequest)returns(google.protobuf.Empty){}//查询画作补充信息是否可编辑 + rpc ArtistArtworkStatic(ArtistArtworkStaticRequest)returns(ArtistArtworkStaticResponse){}//查询审核通过的画作数量统计 } message ArtworkCommonNoParams{} @@ -146,3 +147,30 @@ message UpdateArtworkAuditStatusRequest{ message CheckArtworkEditableResponse{ bool editable =1; } +message ArtistArtworkStaticRequest{ + int64 page=1; + int64 pageSize=2; + string artistKeyWords=3; //包括通过 画家名称 、画家tnum、画家手机号、关联的经纪人来查询画家 。 + int32 artistGender=5; //画家性别 + string artworkName=4; //画作名称 +} +message ArtistArtworkStaticStaticData{ + int64 Idx=1; + bool IsLock=2; + string ArtistUid=3; + string LatestLockTime=4; + string LatestUpdatedAt=6; + string RealName=7; + string PenName=8; + string StageName=9; + int64 ArtworkTotal=10; + int64 RulerTotal=11; + int64 PassedRulerTotal=12; + int64 PassedArtworkTotal=13; +} +message ArtistArtworkStaticResponse{ + repeated ArtistArtworkStaticStaticData data =1; + int64 page=2; + int64 pageSize=3; + int64 total=4; +} \ No newline at end of file diff --git a/pkg/db/init.go b/pkg/db/init.go index 699c7d1..a022656 100644 --- a/pkg/db/init.go +++ b/pkg/db/init.go @@ -45,7 +45,8 @@ func Init(confPath string) { migration() // 生成视图 ,如果更新报错需要手动删除视图后再执行程序 if err = generateModelView( - model.CreateUserView, //用户表视图 + model.CreateUserView, //用户表视图 + model.CreateViewPassedArtworkStatic, //审核通过画作数量统计 ); err != nil { fmt.Println("创建或更新视图失败,错误内容:", err.Error()) os.Exit(1) From 62052d1fd943b41a41c3a14dafcbb5dad87f3ba8 Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Mon, 13 Mar 2023 14:56:20 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/internal/logic/artistinfo_artwork.go | 1 + cmd/model/view_passed_artwork_static.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/internal/logic/artistinfo_artwork.go b/cmd/internal/logic/artistinfo_artwork.go index c409a0a..8b9afbc 100644 --- a/cmd/internal/logic/artistinfo_artwork.go +++ b/cmd/internal/logic/artistinfo_artwork.go @@ -231,6 +231,7 @@ func (a ArtistInfoArtworkLogic) ArtworkStatic(request *artistInfoArtwork.ArtistA for _, v := range artistList.Data { artistUids = append(artistUids, v.Uid) } + fmt.Println("\n artistUids:", artistUids, "\n") //查询这些画家审核通过的画作数据统计 res = &artistInfoArtwork.ArtistArtworkStaticResponse{ diff --git a/cmd/model/view_passed_artwork_static.go b/cmd/model/view_passed_artwork_static.go index 2508d66..7cfb4c0 100644 --- a/cmd/model/view_passed_artwork_static.go +++ b/cmd/model/view_passed_artwork_static.go @@ -43,7 +43,7 @@ su.mgmt_artist_uid artist_uid FROM sys_user su LEFT JOIN artwork_lock_record alr ON alr.artist_uid = su.mgmt_artist_uid AND alr.audit_flow_index=3 AND alr.supplement_audit_status=4 AND alr.deleted_at = 0 LEFT JOIN real_name rn ON rn.id = su.real_name_id -GROUP BY su.mgmt_artist_uid,alr.artwork_uid HAVING su.mgmt_artist_uid !='' +GROUP BY su.mgmt_artist_uid HAVING su.mgmt_artist_uid !='' ` db.Exec(sql) return nil From 399834b8426dd5f1bb29f00c32dd580b0dcde407 Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Mon, 13 Mar 2023 15:10:54 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=BB=E5=AE=B6?= =?UTF-8?q?=E7=94=BB=E4=BD=9C=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/internal/logic/artistinfo_artwork.go | 34 ++++++++++++++++-------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/cmd/internal/logic/artistinfo_artwork.go b/cmd/internal/logic/artistinfo_artwork.go index 8b9afbc..44b2ea3 100644 --- a/cmd/internal/logic/artistinfo_artwork.go +++ b/cmd/internal/logic/artistinfo_artwork.go @@ -14,6 +14,7 @@ import ( "github.com/fonchain/fonchain-artistinfo/cmd/model" "github.com/fonchain/fonchain-artistinfo/pb/artist" "github.com/fonchain/fonchain-artistinfo/pb/artistInfoArtwork" + "github.com/fonchain/fonchain-artistinfo/pb/artistInfoUser" "github.com/fonchain/fonchain-artistinfo/pb/artwork_query" "github.com/fonchain/fonchain-artistinfo/pkg/m" "github.com/fonchain/fonchain-artistinfo/pkg/service" @@ -207,30 +208,41 @@ func (a ArtistInfoArtworkLogic) GenerateArtworkSupplementInfo(request *artistInf } func (a ArtistInfoArtworkLogic) ArtworkStatic(request *artistInfoArtwork.ArtistArtworkStaticRequest) (res *artistInfoArtwork.ArtistArtworkStaticResponse, err error) { + //查询画家宝中认证成功的用户 + userList, _, err := dao.GetViewUserList(&artistInfoUser.FindUsersRequest{ + ArtistRealName: request.ArtistKeyWords, + Page: int32(request.Page), + PageSize: int32(request.PageSize), + IsArtist: true, + }) + if err != nil { + return nil, err + } + if userList == nil || len(userList) == 0 { + return nil, nil + } + var artistUids []string + for _, v := range userList { + artistUids = append(artistUids, v.ArtistUid) + } + //查询对应的画家信息 var gender int32 = -1 if request.ArtistGender != 1 { gender = 0 - } - if request.ArtistGender != 2 { + } else if request.ArtistGender != 2 { gender = 1 } //查询匹配的画家数据列表 artistList, err := service.GrpcArtistImpl.ArtistList(context.Background(), &artist.ArtistListRequest{ Keyword: request.ArtistKeyWords, - Page: int32(request.Page), - PageSize: int32(request.PageSize), + Page: 1, + PageSize: -1, Gender: gender, + Uids: artistUids, }) if err != nil { return nil, err } - if artistList.Data == nil || len(artistList.Data) == 0 { - return nil, nil - } - var artistUids []string - for _, v := range artistList.Data { - artistUids = append(artistUids, v.Uid) - } fmt.Println("\n artistUids:", artistUids, "\n") //查询这些画家审核通过的画作数据统计 From ace17e00c2747ee6eb87a6b707b9666f1bb51340 Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Mon, 13 Mar 2023 15:54:22 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/internal/dao/artistinfo_artwork.go | 7 ++++--- cmd/internal/logic/artistinfo_artwork.go | 8 +++++--- cmd/model/view_passed_artwork_static.go | 17 ++++++++++------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/cmd/internal/dao/artistinfo_artwork.go b/cmd/internal/dao/artistinfo_artwork.go index 997938c..f858b0b 100644 --- a/cmd/internal/dao/artistinfo_artwork.go +++ b/cmd/internal/dao/artistinfo_artwork.go @@ -226,6 +226,7 @@ func GenerateArtworkSupplementInfo(artworkUids []string) error { } func PassedArtworkStatic(request *artistInfoArtwork.ArtistArtworkStaticRequest, uids []string) (res []model.ViewPassedArtworkStatic, err error) { + res = []model.ViewPassedArtworkStatic{} var tx = db.DB.Model(&model.ViewPassedArtworkStatic{}) err = tx.Where("artist_uid in ?", uids).Scopes(db.Pagination(request.Page, request.PageSize)).Find(&res).Error return @@ -241,7 +242,7 @@ func CountArtworkTotalWhichAuditPassed(artistUid string) (rulerPassedTotal int64 fmt.Println("service.GrpcArtistInfoArtworkImpl.GetArtworkLockRecords Error:", err.Error()) return 0, 0 } - if len(artworkList.Data) > 0 { + if len(artworkList.Data) == 0 { fmt.Println("service.GrpcArtistInfoArtworkImpl.GetArtworkLockRecords :画作数量为0") return 0, 0 } @@ -296,9 +297,9 @@ func CountAllArtworkTotal(artistUid string) (artworkTotal int64, artworkRulerTot fmt.Println("画作列表查询失败", err.Error()) return 0, 0 } + artworkTotal = int64(artworkList.Count) for _, v := range artworkList.Data { - artworkTotal++ artworkRulerTotal += int64(v.Ruler) } - return artworkRulerTotal, artworkTotal + return artworkTotal, artworkRulerTotal } diff --git a/cmd/internal/logic/artistinfo_artwork.go b/cmd/internal/logic/artistinfo_artwork.go index 44b2ea3..5e21a31 100644 --- a/cmd/internal/logic/artistinfo_artwork.go +++ b/cmd/internal/logic/artistinfo_artwork.go @@ -18,6 +18,7 @@ import ( "github.com/fonchain/fonchain-artistinfo/pb/artwork_query" "github.com/fonchain/fonchain-artistinfo/pkg/m" "github.com/fonchain/fonchain-artistinfo/pkg/service" + "github.com/fonchain/fonchain-artistinfo/pkg/util/stime" "google.golang.org/protobuf/types/known/emptypb" "strings" ) @@ -227,9 +228,9 @@ func (a ArtistInfoArtworkLogic) ArtworkStatic(request *artistInfoArtwork.ArtistA } //查询对应的画家信息 var gender int32 = -1 - if request.ArtistGender != 1 { + if request.ArtistGender == 1 { gender = 0 - } else if request.ArtistGender != 2 { + } else if request.ArtistGender == 2 { gender = 1 } //查询匹配的画家数据列表 @@ -244,6 +245,7 @@ func (a ArtistInfoArtworkLogic) ArtworkStatic(request *artistInfoArtwork.ArtistA return nil, err } fmt.Println("\n artistUids:", artistUids, "\n") + fmt.Printf("\n\n artistList.Data: %+v\n\n", artistList.Data) //查询这些画家审核通过的画作数据统计 res = &artistInfoArtwork.ArtistArtworkStaticResponse{ @@ -281,7 +283,7 @@ func (a ArtistInfoArtworkLogic) ArtworkStatic(request *artistInfoArtwork.ArtistA IsLock: v.IsLock, ArtistUid: v.ArtistUid, LatestLockTime: v.LatestLockTime, - LatestUpdatedAt: v.LatestUpdatedAt, + LatestUpdatedAt: stime.TimeToString(v.LatestUpdatedAt, stime.Format_Normal_YMDhms), RealName: v.RealName, PenName: penName, StageName: stageName, diff --git a/cmd/model/view_passed_artwork_static.go b/cmd/model/view_passed_artwork_static.go index 7cfb4c0..678d265 100644 --- a/cmd/model/view_passed_artwork_static.go +++ b/cmd/model/view_passed_artwork_static.go @@ -6,15 +6,18 @@ // ------------------------------------------- package model -import "gorm.io/gorm" +import ( + "gorm.io/gorm" + "time" +) type ViewPassedArtworkStatic struct { - ArtistUid string `json:"artistUid" gorm:"column:artist_uid;comment:画家uid"` - IsLock bool `json:"isLock" gorm:"column:is_lock;comment:是否锁定"` - LatestLockTime string `json:"latestLockTime" gorm:"column:latest_lock_time;comment:最近一次锁定时间"` - PasswdArtworkNumber int64 `json:"passwdArtworkNumber" gorm:"column:passwd_artwork_number;comment:审核通过的画作总数"` - LatestUpdatedAt string `json:"latestUpdatedAt" gorm:"column:latest_updated_at;comment:最近一次更新时间"` - RealName string `json:"realName" gorm:"column:real_name;comment:真实姓名"` + ArtistUid string `json:"artistUid" gorm:"column:artist_uid;comment:画家uid"` + IsLock bool `json:"isLock" gorm:"column:is_lock;comment:是否锁定"` + LatestLockTime string `json:"latestLockTime" gorm:"column:latest_lock_time;comment:最近一次锁定时间"` + PasswdArtworkNumber int64 `json:"passwdArtworkNumber" gorm:"column:passwd_artwork_number;comment:审核通过的画作总数"` + LatestUpdatedAt time.Time `json:"latestUpdatedAt" gorm:"column:latest_updated_at;comment:最近一次更新时间"` + RealName string `json:"realName" gorm:"column:real_name;comment:真实姓名"` //---补充字段,转到pb文件 //Idx int64 `json:"idx" gorm:"-"` //PenName string `json:"penName" gorm:"-"` From a5ebfae17eeef2ee326a6c938804752218c357ea Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Mon, 13 Mar 2023 16:48:49 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/internal/dao/artistInfo_user.go | 46 +++++++++-------------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/cmd/internal/dao/artistInfo_user.go b/cmd/internal/dao/artistInfo_user.go index 32cdc6b..30a5d6a 100644 --- a/cmd/internal/dao/artistInfo_user.go +++ b/cmd/internal/dao/artistInfo_user.go @@ -647,17 +647,17 @@ func GetViewUserList(req *artistInfoUser.FindUsersRequest) (resp []model.UserVie func UpdateUserData(req *artistInfoUser.UserInfo) (rep *artistInfoUser.CommonNoParams, err error) { var ( preUpdateData model.User - tx = db.DB.Begin().Preload("RealNameInfo") needUpdateMobile bool ) + dbfind := db.DB.Begin().Preload("RealNameInfo") if req.Id != 0 { - tx = tx.Where("id = ?", req.Id) + dbfind = dbfind.Where("id = ?", req.Id) } else if req.MgmtAccId != 0 { - tx = tx.Where("mgmt_acc_id = ?", req.MgmtAccId) + dbfind = dbfind.Where("mgmt_acc_id = ?", req.MgmtAccId) } else { return nil, errors.New("Id或mgmt_acc_id不能为0") } - if err = tx.Find(&preUpdateData).Error; err != nil { + if err = dbfind.Find(&preUpdateData).Error; err != nil { return nil, err } //判断需要更新内容 @@ -719,32 +719,12 @@ func UpdateUserData(req *artistInfoUser.UserInfo) (rep *artistInfoUser.CommonNoP if req.WxAccount != "" { preUpdateData.WxAccount = req.WxAccount } - //var updateData = model.User{ - // Model: model.Model{ - // ID: req.Id, - // CreatedAt: time.Unix(req.CreatedAt, 0), - // UpdatedAt: time.Unix(req.UpdatedAt, 0), - // DeletedAt: soft_delete.DeletedAt(req.DeletedAt), - // }, - // MgmtAccId: req.MgmtAccId, - // MgmtArtistId: req.MgmtArtistId, - // TelNum: req.TelNum, - // InviteCode: req.InvitedCode, - // IsRealName: req.IsRealName, - // RealNameId: req.RealNameId, - // FddState: req.FddState, - // CustomerId: req.CustomerId, - // OpenId: req.OpenId, - // IsRead: req.IsRead, - // IsLock: req.IsLock, - // Account: req.Account, - // CertificateNum: req.CertificateNum, - // CertificateImg: req.CertificateImg, - // Photo: req.Photo, - // Htmltype: req.Htmltype, - // Envtype: req.Envtype, - //} + + tx := db.DB.Begin() err = tx.Save(&preUpdateData).Error + if err != nil { + return nil, err + } //更新实名信息 if req.RealName != nil { var realName = model.RealName{} @@ -780,7 +760,9 @@ func UpdateUserData(req *artistInfoUser.UserInfo) (rep *artistInfoUser.CommonNoP } err = db.DB.Save(&realName).Error } - + if err != nil { + return nil, err + } //更新手机号码 if needUpdateMobile { // 更新账号服务中手机号 @@ -792,13 +774,13 @@ func UpdateUserData(req *artistInfoUser.UserInfo) (rep *artistInfoUser.CommonNoP Project: "", }); err != nil { fmt.Println("错误1-needUpdateMobile-AccountImpl.UpdateTelNum:", err.Error()) - tx.Rollback() + //tx.Rollback() return } //更新画家服务中的手机号 if _, err = service.GrpcArtistImpl.UpdateProfile(context.Background(), &artist.ProfileRequest{Uid: preUpdateData.MgmtArtistUid, Phone: preUpdateData.TelNum}); err != nil { fmt.Println("错误2-needUpdateMobile-rpcArtistImpl.UpdateProfile:", err.Error()) - tx.Rollback() + //tx.Rollback() return } } From 9c08d852ebd49f03a45653996dffc01dcdd0c685 Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Mon, 13 Mar 2023 17:09:43 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/model/view_user.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/model/view_user.go b/cmd/model/view_user.go index d05efc5..954379a 100644 --- a/cmd/model/view_user.go +++ b/cmd/model/view_user.go @@ -21,7 +21,7 @@ type UserView struct { Photo string `json:"photo" gorm:"column:photo;comment:个人近照"` IsRealName int64 `json:"isRealName" gorm:"column:is_real_name;comment:是否实名认证"` FddState int64 `json:"fddState" gorm:"column:fdd_state;comment:法大大状态"` - IsRead int64 `json:"is_read" gorm:"column:is_read;comment:是否已读 0未读 1已读"` + IsRead int64 `json:"isRead" gorm:"column:is_read;comment:是否已读 0未读 1已读"` IsLock bool `json:"isLock" gorm:"column:is_lock;comment:是否锁定"` LatestLockTime string `json:"latestLockTime" gorm:"column:latest_lock_time;comment:"` RealName string `json:"realName" gorm:"column:real_name;comment:真实姓名"` @@ -30,7 +30,7 @@ type UserView struct { Age int64 `json:"age" gorm:"column:age;comment:年龄"` RealAddress string `json:"address" gorm:"column:real_address;comment:真实地址"` IdcardBack string `json:"idcardBack" gorm:"column:idcard_back;comment:身份证背面"` - IdcardFront string `json:"idcard_front" gorm:"column:idcard_front;comment:身份证反面"` + IdcardFront string `json:"idcardFront" gorm:"column:idcard_front;comment:身份证反面"` JoinAssoTime string `json:"joinAssoTime" gorm:"column:join_asso_time;comment:入会时间"` InviterInviteCode string `json:"inviterInviteCode" gorm:"column:inviter_invite_code;comment:邀请人的邀请码"` InviterRealName string `json:"inviterRealName" gorm:"column:inviter_name;comment:邀请人的真实姓名"` @@ -39,9 +39,9 @@ type UserView struct { DeletedAt int64 `json:"deletedAt" gorm:"column:deleted_at;comment:"` CertificateNum string `json:"certificateNum" gorm:"column:certificate_num;comment:"` CertificateImg string `json:"certificateImg" gorm:"column:certificate_img;comment:"` - BankName string `json:"bank_name" gorm:"column:bank_name;comment:"` - BankNum string `json:"bank_num" gorm:"column:bank_num;comment:"` - WxAccount string `json:"wx_account" gorm:"column:wx_account;comment:企业微信账号"` + BankName string `json:"bankName" gorm:"column:bank_name;comment:"` + BankNum string `json:"bankNum" gorm:"column:bank_num;comment:"` + WxAccount string `json:"wxAccount" gorm:"column:wx_account;comment:企业微信账号"` } func (u UserView) TableName() string { From 014843e523c20a0df3e703272d6f378297fb5e9a Mon Sep 17 00:00:00 2001 From: dorlolo <428192774@qq.com> Date: Tue, 14 Mar 2023 08:57:34 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E4=B8=AD=E8=A1=A5=E5=85=85=E6=96=B0=E5=A2=9E=E9=93=B6=E8=A1=8C?= =?UTF-8?q?=E5=8D=A1=E7=9B=B8=E5=85=B3=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/model/view_user.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmd/model/view_user.go b/cmd/model/view_user.go index 954379a..5e2f83d 100644 --- a/cmd/model/view_user.go +++ b/cmd/model/view_user.go @@ -78,7 +78,9 @@ SELECT su.join_asso_time, su.certificate_num, su.certificate_img, - su.wx_account + su.wx_account, + aas.bank_name, + aas.bank_num FROM sys_user su LEFT JOIN real_name rn ON rn.id = su.real_name_id @@ -86,6 +88,7 @@ LEFT JOIN real_name rn ON rn.id = su.real_name_id LEFT JOIN invite ON invite.invited_id = su.id LEFT JOIN sys_user inviter ON inviter.id = invite.user_id LEFT JOIN real_name inviter_rn ON inviter_rn.id = inviter.real_name_id +LEFT JOIN artshow_artist_supplement aas ON aas.artist_uid = su.mgmt_artist_uid WHERE su.deleted_at = 0 `