diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml new file mode 100644 index 0000000..7dc1249 --- /dev/null +++ b/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/api/bundle/bundle.pb.go b/api/bundle/bundle.pb.go index aae33e6..ec9bce1 100644 --- a/api/bundle/bundle.pb.go +++ b/api/bundle/bundle.pb.go @@ -7,8 +7,10 @@ package bundle import ( + _ "github.com/mwitkow/go-proto-validators" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" reflect "reflect" sync "sync" ) @@ -25,9 +27,9 @@ type CommonResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` - OrderNo string `protobuf:"bytes,3,opt,name=orderNo,proto3" json:"orderNo,omitempty"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid"` + OrderNo string `protobuf:"bytes,3,opt,name=orderNo,proto3" json:"orderNo"` } func (x *CommonResponse) Reset() { @@ -88,17 +90,18 @@ type BundleProfile struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Price float32 `protobuf:"fixed32,3,opt,name=price,proto3" json:"price,omitempty"` - PriceType int64 `protobuf:"varint,4,opt,name=PriceType,json=priceType,proto3" json:"PriceType,omitempty"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` - Contract string `protobuf:"bytes,6,opt,name=contract,proto3" json:"contract,omitempty"` - Language string `protobuf:"bytes,7,opt,name=language,proto3" json:"language,omitempty"` - CreatedAt string `protobuf:"bytes,8,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - UpdatedAt string `protobuf:"bytes,9,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` - CompanySign string `protobuf:"bytes,10,opt,name=companySign,proto3" json:"companySign,omitempty"` - ContractDuration int64 `protobuf:"varint,11,opt,name=contractDuration,proto3" json:"contractDuration,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` + Price float32 `protobuf:"fixed32,3,opt,name=price,proto3" json:"price"` + PriceType int64 `protobuf:"varint,4,opt,name=priceType,proto3" json:"priceType"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content"` + Contract string `protobuf:"bytes,6,opt,name=contract,proto3" json:"contract"` + Language string `protobuf:"bytes,7,opt,name=language,proto3" json:"language"` + CreatedAt string `protobuf:"bytes,8,opt,name=createdAt,proto3" json:"createdAt"` + UpdatedAt string `protobuf:"bytes,9,opt,name=updatedAt,proto3" json:"updatedAt"` + CompanySign string `protobuf:"bytes,10,opt,name=companySign,proto3" json:"companySign"` + ContractDuration int64 `protobuf:"varint,11,opt,name=contractDuration,proto3" json:"contractDuration"` + BundleCommonUid string `protobuf:"bytes,12,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid"` } func (x *BundleProfile) Reset() { @@ -210,12 +213,19 @@ func (x *BundleProfile) GetContractDuration() int64 { return 0 } +func (x *BundleProfile) GetBundleCommonUid() string { + if x != nil { + return x.BundleCommonUid + } + return "" +} + type DelBundleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` } func (x *DelBundleRequest) Reset() { @@ -262,11 +272,11 @@ type BundleListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - Language string `protobuf:"bytes,5,opt,name=language,proto3" json:"language,omitempty"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content"` + Language string `protobuf:"bytes,5,opt,name=language,proto3" json:"language"` } func (x *BundleListRequest) Reset() { @@ -341,8 +351,8 @@ type BundleListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Bundles []*BundleProfile `protobuf:"bytes,1,rep,name=bundles,proto3" json:"bundles,omitempty"` - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Bundles []*BundleProfile `protobuf:"bytes,1,rep,name=bundles,proto3" json:"bundles"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *BundleListResponse) Reset() { @@ -396,7 +406,7 @@ type BundleDetailRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` } func (x *BundleDetailRequest) Reset() { @@ -443,8 +453,8 @@ type BundleDetailResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Bundle *BundleProfile `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Bundle *BundleProfile `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg"` } func (x *BundleDetailResponse) Reset() { @@ -498,24 +508,38 @@ type OrderRecord struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` - BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid,omitempty"` - CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID,omitempty"` - CustomerNum string `protobuf:"bytes,4,opt,name=customerNum,proto3" json:"customerNum,omitempty"` - CustomerName string `protobuf:"bytes,5,opt,name=customerName,proto3" json:"customerName,omitempty"` - Amount float32 `protobuf:"fixed32,6,opt,name=amount,proto3" json:"amount,omitempty"` - AmountType int64 `protobuf:"varint,7,opt,name=amountType,proto3" json:"amountType,omitempty"` - SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract,omitempty"` - Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature,omitempty"` - SignedTime string `protobuf:"bytes,10,opt,name=signedTime,proto3" json:"signedTime,omitempty"` - PayType int64 `protobuf:"varint,11,opt,name=payType,proto3" json:"payType,omitempty"` - PayTime string `protobuf:"bytes,12,opt,name=payTime,proto3" json:"payTime,omitempty"` - CheckoutSessionId string `protobuf:"bytes,13,opt,name=checkoutSessionId,proto3" json:"checkoutSessionId,omitempty"` - CheckoutSessionUrl string `protobuf:"bytes,14,opt,name=checkoutSessionUrl,proto3" json:"checkoutSessionUrl,omitempty"` - Status int64 `protobuf:"varint,15,opt,name=status,proto3" json:"status,omitempty"` - OrderNo string `protobuf:"bytes,16,opt,name=orderNo,proto3" json:"orderNo,omitempty"` - BundleName string `protobuf:"bytes,17,opt,name=bundleName,proto3" json:"bundleName,omitempty"` - ContractNo string `protobuf:"bytes,18,opt,name=contractNo,proto3" json:"contractNo,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid"` + CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID"` + CustomerNum string `protobuf:"bytes,4,opt,name=customerNum,proto3" json:"customerNum"` + CustomerName string `protobuf:"bytes,5,opt,name=customerName,proto3" json:"customerName"` + Amount float32 `protobuf:"fixed32,6,opt,name=amount,proto3" json:"amount"` + AmountType int64 `protobuf:"varint,7,opt,name=amountType,proto3" json:"amountType"` + SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract"` + Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature"` + SignedTime string `protobuf:"bytes,10,opt,name=signedTime,proto3" json:"signedTime"` + PayType int64 `protobuf:"varint,11,opt,name=payType,proto3" json:"payType"` + PayTime string `protobuf:"bytes,12,opt,name=payTime,proto3" json:"payTime"` + CheckoutSessionId string `protobuf:"bytes,13,opt,name=checkoutSessionId,proto3" json:"checkoutSessionId"` + CheckoutSessionUrl string `protobuf:"bytes,14,opt,name=checkoutSessionUrl,proto3" json:"checkoutSessionUrl"` + Status int64 `protobuf:"varint,15,opt,name=status,proto3" json:"status"` + OrderNo string `protobuf:"bytes,16,opt,name=orderNo,proto3" json:"orderNo"` + BundleName string `protobuf:"bytes,17,opt,name=bundleName,proto3" json:"bundleName"` + ContractNo string `protobuf:"bytes,18,opt,name=contractNo,proto3" json:"contractNo"` + ValueAddBundleUuid string `protobuf:"bytes,19,opt,name=valueAddBundleUuid,proto3" json:"valueAddBundleUuid"` //增值套餐UUID + ValueAddBundleAmount float32 `protobuf:"fixed32,20,opt,name=valueAddBundleAmount,proto3" json:"valueAddBundleAmount"` //增值套餐金额 + ValueAddOriginalPrice float32 `protobuf:"fixed32,21,opt,name=valueAddOriginalPrice,proto3" json:"valueAddOriginalPrice"` //原单价 + ValueAddDiscountPrice float32 `protobuf:"fixed32,22,opt,name=valueAddDiscountPrice,proto3" json:"valueAddDiscountPrice"` //优惠单价 + ValueAddSavedAmount float32 `protobuf:"fixed32,23,opt,name=valueAddSavedAmount,proto3" json:"valueAddSavedAmount"` //节省金额 + Num int32 `protobuf:"varint,24,opt,name=num,json=sex,proto3" json:"num"` + TotalAmount float32 `protobuf:"fixed32,25,opt,name=totalAmount,proto3" json:"totalAmount"` //总金额 + Sex int32 `protobuf:"varint,26,opt,name=sex,proto3" json:"sex"` + Nationality string `protobuf:"bytes,27,opt,name=nationality,proto3" json:"nationality"` + CertificatePicture string `protobuf:"bytes,28,opt,name=certificatePicture,proto3" json:"certificatePicture"` + PlaceOfResidence string `protobuf:"bytes,29,opt,name=placeOfResidence,proto3" json:"placeOfResidence"` + GroupPhoto string `protobuf:"bytes,30,opt,name=groupPhoto,proto3" json:"groupPhoto"` + BundleCommonUid string `protobuf:"bytes,31,opt,name=bundleCommonUid,proto3" json:"bundleCommonUid"` + AddBundleCommonUid string `protobuf:"bytes,32,opt,name=addBundleCommonUid,proto3" json:"addBundleCommonUid"` } func (x *OrderRecord) Reset() { @@ -676,24 +700,123 @@ func (x *OrderRecord) GetContractNo() string { return "" } +func (x *OrderRecord) GetValueAddBundleUuid() string { + if x != nil { + return x.ValueAddBundleUuid + } + return "" +} + +func (x *OrderRecord) GetValueAddBundleAmount() float32 { + if x != nil { + return x.ValueAddBundleAmount + } + return 0 +} + +func (x *OrderRecord) GetValueAddOriginalPrice() float32 { + if x != nil { + return x.ValueAddOriginalPrice + } + return 0 +} + +func (x *OrderRecord) GetValueAddDiscountPrice() float32 { + if x != nil { + return x.ValueAddDiscountPrice + } + return 0 +} + +func (x *OrderRecord) GetValueAddSavedAmount() float32 { + if x != nil { + return x.ValueAddSavedAmount + } + return 0 +} + +func (x *OrderRecord) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *OrderRecord) GetTotalAmount() float32 { + if x != nil { + return x.TotalAmount + } + return 0 +} + +func (x *OrderRecord) GetSex() int32 { + if x != nil { + return x.Sex + } + return 0 +} + +func (x *OrderRecord) GetNationality() string { + if x != nil { + return x.Nationality + } + return "" +} + +func (x *OrderRecord) GetCertificatePicture() string { + if x != nil { + return x.CertificatePicture + } + return "" +} + +func (x *OrderRecord) GetPlaceOfResidence() string { + if x != nil { + return x.PlaceOfResidence + } + return "" +} + +func (x *OrderRecord) GetGroupPhoto() string { + if x != nil { + return x.GroupPhoto + } + return "" +} + +func (x *OrderRecord) GetBundleCommonUid() string { + if x != nil { + return x.BundleCommonUid + } + return "" +} + +func (x *OrderRecord) GetAddBundleCommonUid() string { + if x != nil { + return x.AddBundleCommonUid + } + return "" +} + type OrderRecordsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - CustomerNum string `protobuf:"bytes,3,opt,name=customerNum,proto3" json:"customerNum,omitempty"` - CustomerName string `protobuf:"bytes,4,opt,name=customerName,proto3" json:"customerName,omitempty"` - BundleUUID string `protobuf:"bytes,5,opt,name=bundleUUID,proto3" json:"bundleUUID,omitempty"` - OrderNo string `protobuf:"bytes,6,opt,name=orderNo,proto3" json:"orderNo,omitempty"` - Status int64 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` - BundleName string `protobuf:"bytes,8,opt,name=bundleName,proto3" json:"bundleName,omitempty"` - StartSignedTime string `protobuf:"bytes,9,opt,name=startSignedTime,proto3" json:"startSignedTime,omitempty"` - EndSignedTime string `protobuf:"bytes,10,opt,name=endSignedTime,proto3" json:"endSignedTime,omitempty"` - StartPayTime string `protobuf:"bytes,11,opt,name=startPayTime,proto3" json:"startPayTime,omitempty"` - EndPayTime string `protobuf:"bytes,12,opt,name=endPayTime,proto3" json:"endPayTime,omitempty"` - CustomerID string `protobuf:"bytes,13,opt,name=customerID,proto3" json:"customerID,omitempty"` + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` + CustomerNum string `protobuf:"bytes,3,opt,name=customerNum,proto3" json:"customerNum"` + CustomerName string `protobuf:"bytes,4,opt,name=customerName,proto3" json:"customerName"` + BundleUUID string `protobuf:"bytes,5,opt,name=bundleUUID,proto3" json:"bundleUUID"` + OrderNo string `protobuf:"bytes,6,opt,name=orderNo,proto3" json:"orderNo"` + Status int64 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` + BundleName string `protobuf:"bytes,8,opt,name=bundleName,proto3" json:"bundleName"` + StartSignedTime string `protobuf:"bytes,9,opt,name=startSignedTime,proto3" json:"startSignedTime"` + EndSignedTime string `protobuf:"bytes,10,opt,name=endSignedTime,proto3" json:"endSignedTime"` + StartPayTime string `protobuf:"bytes,11,opt,name=startPayTime,proto3" json:"startPayTime"` + EndPayTime string `protobuf:"bytes,12,opt,name=endPayTime,proto3" json:"endPayTime"` + CustomerID string `protobuf:"bytes,13,opt,name=customerID,proto3" json:"customerID"` + IsHaveValueAdd int64 `protobuf:"varint,14,opt,name=isHaveValueAdd,proto3" json:"isHaveValueAdd"` //有无增值选项 } func (x *OrderRecordsRequest) Reset() { @@ -819,13 +942,20 @@ func (x *OrderRecordsRequest) GetCustomerID() string { return "" } +func (x *OrderRecordsRequest) GetIsHaveValueAdd() int64 { + if x != nil { + return x.IsHaveValueAdd + } + return 0 +} + type OrderRecordsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderRecords []*OrderRecord `protobuf:"bytes,1,rep,name=orderRecords,proto3" json:"orderRecords,omitempty"` - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + OrderRecords []*OrderRecord `protobuf:"bytes,1,rep,name=orderRecords,proto3" json:"orderRecords"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` } func (x *OrderRecordsResponse) Reset() { @@ -879,9 +1009,9 @@ type OrderRecordsDetailRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` - OrderNo string `protobuf:"bytes,2,opt,name=orderNo,proto3" json:"orderNo,omitempty"` - CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + OrderNo string `protobuf:"bytes,2,opt,name=orderNo,proto3" json:"orderNo"` + CustomerID string `protobuf:"bytes,3,opt,name=customerID,proto3" json:"customerID"` } func (x *OrderRecordsDetailRequest) Reset() { @@ -942,8 +1072,8 @@ type OrderRecordsDetailResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OrderRecord *OrderRecord `protobuf:"bytes,1,opt,name=orderRecord,proto3" json:"orderRecord,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + OrderRecord *OrderRecord `protobuf:"bytes,1,opt,name=orderRecord,proto3" json:"orderRecord"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg"` } func (x *OrderRecordsDetailResponse) Reset() { @@ -992,194 +1122,841 @@ func (x *OrderRecordsDetailResponse) GetMsg() string { return "" } +// 增值套餐 +type ValueAddBundleProfile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` + OriginalPrice float32 `protobuf:"fixed32,3,opt,name=originalPrice,proto3" json:"originalPrice"` + DiscountPrice float32 `protobuf:"fixed32,4,opt,name=discountPrice,proto3" json:"discountPrice"` + TotalPrice float32 `protobuf:"fixed32,6,opt,name=totalPrice,proto3" json:"totalPrice"` + SavedAmount float32 `protobuf:"fixed32,7,opt,name=savedAmount,proto3" json:"savedAmount"` + DiscountPriceStatus bool `protobuf:"varint,8,opt,name=discountPriceStatus,proto3" json:"discountPriceStatus"` + Choose bool `protobuf:"varint,9,opt,name=choose,proto3" json:"choose"` + Status bool `protobuf:"varint,10,opt,name=status,proto3" json:"status"` + AddBundleCommonUid string `protobuf:"bytes,11,opt,name=addBundleCommonUid,proto3" json:"addBundleCommonUid"` +} + +func (x *ValueAddBundleProfile) Reset() { + *x = ValueAddBundleProfile{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueAddBundleProfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueAddBundleProfile) ProtoMessage() {} + +func (x *ValueAddBundleProfile) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueAddBundleProfile.ProtoReflect.Descriptor instead. +func (*ValueAddBundleProfile) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{12} +} + +func (x *ValueAddBundleProfile) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *ValueAddBundleProfile) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *ValueAddBundleProfile) GetOriginalPrice() float32 { + if x != nil { + return x.OriginalPrice + } + return 0 +} + +func (x *ValueAddBundleProfile) GetDiscountPrice() float32 { + if x != nil { + return x.DiscountPrice + } + return 0 +} + +func (x *ValueAddBundleProfile) GetTotalPrice() float32 { + if x != nil { + return x.TotalPrice + } + return 0 +} + +func (x *ValueAddBundleProfile) GetSavedAmount() float32 { + if x != nil { + return x.SavedAmount + } + return 0 +} + +func (x *ValueAddBundleProfile) GetDiscountPriceStatus() bool { + if x != nil { + return x.DiscountPriceStatus + } + return false +} + +func (x *ValueAddBundleProfile) GetChoose() bool { + if x != nil { + return x.Choose + } + return false +} + +func (x *ValueAddBundleProfile) GetStatus() bool { + if x != nil { + return x.Status + } + return false +} + +func (x *ValueAddBundleProfile) GetAddBundleCommonUid() string { + if x != nil { + return x.AddBundleCommonUid + } + return "" +} + +type CreateValueAddBundleRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num"` +} + +func (x *CreateValueAddBundleRequest) Reset() { + *x = CreateValueAddBundleRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateValueAddBundleRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateValueAddBundleRequest) ProtoMessage() {} + +func (x *CreateValueAddBundleRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateValueAddBundleRequest.ProtoReflect.Descriptor instead. +func (*CreateValueAddBundleRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{13} +} + +func (x *CreateValueAddBundleRequest) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +type CreateValueAddBundleResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` + TotalPrice float32 `protobuf:"fixed32,2,opt,name=totalPrice,proto3" json:"totalPrice"` + SavedAmount float32 `protobuf:"fixed32,3,opt,name=savedAmount,proto3" json:"savedAmount"` + Msg string `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg"` +} + +func (x *CreateValueAddBundleResponse) Reset() { + *x = CreateValueAddBundleResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateValueAddBundleResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateValueAddBundleResponse) ProtoMessage() {} + +func (x *CreateValueAddBundleResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateValueAddBundleResponse.ProtoReflect.Descriptor instead. +func (*CreateValueAddBundleResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{14} +} + +func (x *CreateValueAddBundleResponse) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *CreateValueAddBundleResponse) GetTotalPrice() float32 { + if x != nil { + return x.TotalPrice + } + return 0 +} + +func (x *CreateValueAddBundleResponse) GetSavedAmount() float32 { + if x != nil { + return x.SavedAmount + } + return 0 +} + +func (x *CreateValueAddBundleResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 增值套餐列表请求 +type ValueAddBundleListRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int32 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` + BundleUuid string `protobuf:"bytes,2,opt,name=bundleUuid,proto3" json:"bundleUuid"` + PriceType int32 `protobuf:"varint,3,opt,name=priceType,proto3" json:"priceType"` +} + +func (x *ValueAddBundleListRequest) Reset() { + *x = ValueAddBundleListRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueAddBundleListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueAddBundleListRequest) ProtoMessage() {} + +func (x *ValueAddBundleListRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueAddBundleListRequest.ProtoReflect.Descriptor instead. +func (*ValueAddBundleListRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{15} +} + +func (x *ValueAddBundleListRequest) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *ValueAddBundleListRequest) GetBundleUuid() string { + if x != nil { + return x.BundleUuid + } + return "" +} + +func (x *ValueAddBundleListRequest) GetPriceType() int32 { + if x != nil { + return x.PriceType + } + return 0 +} + +type ValueAddBundleListResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OriginalPrice float32 `protobuf:"fixed32,1,opt,name=originalPrice,proto3" json:"originalPrice"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` + Data []*ValueAddBundleProfile `protobuf:"bytes,3,rep,name=data,proto3" json:"data"` + Status bool `protobuf:"varint,4,opt,name=status,proto3" json:"status"` + Num int32 `protobuf:"varint,5,opt,name=num,proto3" json:"num"` + Price float32 `protobuf:"fixed32,6,opt,name=price,proto3" json:"price"` + OrderNo bool `protobuf:"varint,7,opt,name=orderNo,proto3" json:"orderNo"` + Msg string `protobuf:"bytes,8,opt,name=msg,proto3" json:"msg"` +} + +func (x *ValueAddBundleListResponse) Reset() { + *x = ValueAddBundleListResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueAddBundleListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueAddBundleListResponse) ProtoMessage() {} + +func (x *ValueAddBundleListResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValueAddBundleListResponse.ProtoReflect.Descriptor instead. +func (*ValueAddBundleListResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{16} +} + +func (x *ValueAddBundleListResponse) GetOriginalPrice() float32 { + if x != nil { + return x.OriginalPrice + } + return 0 +} + +func (x *ValueAddBundleListResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *ValueAddBundleListResponse) GetData() []*ValueAddBundleProfile { + if x != nil { + return x.Data + } + return nil +} + +func (x *ValueAddBundleListResponse) GetStatus() bool { + if x != nil { + return x.Status + } + return false +} + +func (x *ValueAddBundleListResponse) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *ValueAddBundleListResponse) GetPrice() float32 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *ValueAddBundleListResponse) GetOrderNo() bool { + if x != nil { + return x.OrderNo + } + return false +} + +func (x *ValueAddBundleListResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ValueAddBundleDetailRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid"` +} + +func (x *ValueAddBundleDetailRequest) Reset() { + *x = ValueAddBundleDetailRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueAddBundleDetailRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueAddBundleDetailRequest) ProtoMessage() {} + +func (x *ValueAddBundleDetailRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_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 ValueAddBundleDetailRequest.ProtoReflect.Descriptor instead. +func (*ValueAddBundleDetailRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{17} +} + +func (x *ValueAddBundleDetailRequest) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +type ValueAddBundleDetailResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *ValueAddBundleProfile `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` + PayTime string `protobuf:"bytes,2,opt,name=payTime,proto3" json:"payTime"` + Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg"` +} + +func (x *ValueAddBundleDetailResponse) Reset() { + *x = ValueAddBundleDetailResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValueAddBundleDetailResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValueAddBundleDetailResponse) ProtoMessage() {} + +func (x *ValueAddBundleDetailResponse) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_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 ValueAddBundleDetailResponse.ProtoReflect.Descriptor instead. +func (*ValueAddBundleDetailResponse) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{18} +} + +func (x *ValueAddBundleDetailResponse) GetData() *ValueAddBundleProfile { + if x != nil { + return x.Data + } + return nil +} + +func (x *ValueAddBundleDetailResponse) GetPayTime() string { + if x != nil { + return x.PayTime + } + return "" +} + +func (x *ValueAddBundleDetailResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + var File_pb_bundle_proto protoreflect.FileDescriptor var file_pb_bundle_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x70, 0x62, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x50, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, - 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xc7, 0x02, 0x0a, 0x0d, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x8d, 0x01, - 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x5b, 0x0a, - 0x12, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x29, 0x0a, 0x13, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, - 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xc5, - 0x04, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, - 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, - 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, - 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x22, 0xb1, 0x03, 0x0a, 0x13, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x55, 0x55, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, - 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, - 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x22, 0x65, 0x0a, 0x14, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x22, 0x69, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x22, 0x65, 0x0a, 0x1a, + 0x6f, 0x12, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x1a, 0x13, 0x70, 0x62, 0x2f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, + 0x70, 0x62, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x50, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xf1, 0x02, 0x0a, 0x0d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, + 0x67, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x22, 0x5b, 0x0a, 0x12, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x29, 0x0a, + 0x13, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2d, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x22, 0x85, 0x09, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x12, 0x2e, 0x0a, 0x12, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, + 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, + 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, + 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x53, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, + 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, + 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, + 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, + 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x12, + 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, + 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x64, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, + 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x22, 0xd9, 0x03, 0x0a, 0x13, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x55, 0x55, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, + 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, + 0x0e, 0x69, 0x73, 0x48, 0x61, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x69, 0x73, 0x48, 0x61, 0x76, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x22, 0x65, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, + 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x69, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x22, 0x65, 0x0a, 0x1a, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xdd, + 0x02, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x24, + 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x61, + 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, + 0x0a, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x55, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x64, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x22, 0x59, + 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, + 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x28, 0xe2, 0xdf, 0x1f, 0x24, + 0x10, 0x1d, 0x18, 0x65, 0x2a, 0x1e, 0xe8, 0x87, 0xb3, 0xe5, 0xb0, 0x91, 0xe6, 0x95, 0xb0, 0xe4, + 0xb8, 0xba, 0x33, 0x30, 0x2c, 0xe6, 0x9c, 0x80, 0xe5, 0xa4, 0x9a, 0xe6, 0x95, 0xb0, 0xe4, 0xb8, + 0xba, 0x31, 0x30, 0x30, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x86, 0x01, 0x0a, 0x1c, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, + 0x73, 0x67, 0x22, 0x71, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, + 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6e, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, + 0x31, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x22, 0x7d, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, + 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x32, 0x90, 0x08, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x18, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x13, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6d, 0x73, 0x67, 0x32, 0xe7, 0x05, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x3f, - 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, - 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x42, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x12, 0x18, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x13, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x12, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x13, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, - 0x10, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, - 0x0a, 0x12, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, - 0x08, 0x2e, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, + 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x13, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x10, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x12, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x14, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5d, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x63, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1194,51 +1971,66 @@ func file_pb_bundle_proto_rawDescGZIP() []byte { return file_pb_bundle_proto_rawDescData } -var file_pb_bundle_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_pb_bundle_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_pb_bundle_proto_goTypes = []interface{}{ - (*CommonResponse)(nil), // 0: bundle.CommonResponse - (*BundleProfile)(nil), // 1: bundle.BundleProfile - (*DelBundleRequest)(nil), // 2: bundle.DelBundleRequest - (*BundleListRequest)(nil), // 3: bundle.BundleListRequest - (*BundleListResponse)(nil), // 4: bundle.BundleListResponse - (*BundleDetailRequest)(nil), // 5: bundle.BundleDetailRequest - (*BundleDetailResponse)(nil), // 6: bundle.BundleDetailResponse - (*OrderRecord)(nil), // 7: bundle.OrderRecord - (*OrderRecordsRequest)(nil), // 8: bundle.OrderRecordsRequest - (*OrderRecordsResponse)(nil), // 9: bundle.OrderRecordsResponse - (*OrderRecordsDetailRequest)(nil), // 10: bundle.OrderRecordsDetailRequest - (*OrderRecordsDetailResponse)(nil), // 11: bundle.OrderRecordsDetailResponse + (*CommonResponse)(nil), // 0: bundle.CommonResponse + (*BundleProfile)(nil), // 1: bundle.BundleProfile + (*DelBundleRequest)(nil), // 2: bundle.DelBundleRequest + (*BundleListRequest)(nil), // 3: bundle.BundleListRequest + (*BundleListResponse)(nil), // 4: bundle.BundleListResponse + (*BundleDetailRequest)(nil), // 5: bundle.BundleDetailRequest + (*BundleDetailResponse)(nil), // 6: bundle.BundleDetailResponse + (*OrderRecord)(nil), // 7: bundle.OrderRecord + (*OrderRecordsRequest)(nil), // 8: bundle.OrderRecordsRequest + (*OrderRecordsResponse)(nil), // 9: bundle.OrderRecordsResponse + (*OrderRecordsDetailRequest)(nil), // 10: bundle.OrderRecordsDetailRequest + (*OrderRecordsDetailResponse)(nil), // 11: bundle.OrderRecordsDetailResponse + (*ValueAddBundleProfile)(nil), // 12: bundle.ValueAddBundleProfile + (*CreateValueAddBundleRequest)(nil), // 13: bundle.CreateValueAddBundleRequest + (*CreateValueAddBundleResponse)(nil), // 14: bundle.CreateValueAddBundleResponse + (*ValueAddBundleListRequest)(nil), // 15: bundle.ValueAddBundleListRequest + (*ValueAddBundleListResponse)(nil), // 16: bundle.ValueAddBundleListResponse + (*ValueAddBundleDetailRequest)(nil), // 17: bundle.ValueAddBundleDetailRequest + (*ValueAddBundleDetailResponse)(nil), // 18: bundle.ValueAddBundleDetailResponse } var file_pb_bundle_proto_depIdxs = []int32{ 1, // 0: bundle.BundleListResponse.bundles:type_name -> bundle.BundleProfile 1, // 1: bundle.BundleDetailResponse.bundle:type_name -> bundle.BundleProfile 7, // 2: bundle.OrderRecordsResponse.orderRecords:type_name -> bundle.OrderRecord 7, // 3: bundle.OrderRecordsDetailResponse.orderRecord:type_name -> bundle.OrderRecord - 1, // 4: bundle.Bundle.CreateBundle:input_type -> bundle.BundleProfile - 1, // 5: bundle.Bundle.UpdateBundle:input_type -> bundle.BundleProfile - 2, // 6: bundle.Bundle.DeleteBundle:input_type -> bundle.DelBundleRequest - 3, // 7: bundle.Bundle.BundleList:input_type -> bundle.BundleListRequest - 5, // 8: bundle.Bundle.BundleDetail:input_type -> bundle.BundleDetailRequest - 7, // 9: bundle.Bundle.CreateOrderRecord:input_type -> bundle.OrderRecord - 7, // 10: bundle.Bundle.UpdateOrderRecord:input_type -> bundle.OrderRecord - 7, // 11: bundle.Bundle.UpdateOrderRecordByOrderNo:input_type -> bundle.OrderRecord - 8, // 12: bundle.Bundle.OrderRecordsList:input_type -> bundle.OrderRecordsRequest - 10, // 13: bundle.Bundle.OrderRecordsDetail:input_type -> bundle.OrderRecordsDetailRequest - 0, // 14: bundle.Bundle.CreateBundle:output_type -> bundle.CommonResponse - 0, // 15: bundle.Bundle.UpdateBundle:output_type -> bundle.CommonResponse - 0, // 16: bundle.Bundle.DeleteBundle:output_type -> bundle.CommonResponse - 4, // 17: bundle.Bundle.BundleList:output_type -> bundle.BundleListResponse - 6, // 18: bundle.Bundle.BundleDetail:output_type -> bundle.BundleDetailResponse - 0, // 19: bundle.Bundle.CreateOrderRecord:output_type -> bundle.CommonResponse - 0, // 20: bundle.Bundle.UpdateOrderRecord:output_type -> bundle.CommonResponse - 0, // 21: bundle.Bundle.UpdateOrderRecordByOrderNo:output_type -> bundle.CommonResponse - 9, // 22: bundle.Bundle.OrderRecordsList:output_type -> bundle.OrderRecordsResponse - 11, // 23: bundle.Bundle.OrderRecordsDetail:output_type -> bundle.OrderRecordsDetailResponse - 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 + 12, // 4: bundle.ValueAddBundleListResponse.data:type_name -> bundle.ValueAddBundleProfile + 12, // 5: bundle.ValueAddBundleDetailResponse.data:type_name -> bundle.ValueAddBundleProfile + 1, // 6: bundle.Bundle.CreateBundle:input_type -> bundle.BundleProfile + 1, // 7: bundle.Bundle.UpdateBundle:input_type -> bundle.BundleProfile + 2, // 8: bundle.Bundle.DeleteBundle:input_type -> bundle.DelBundleRequest + 3, // 9: bundle.Bundle.BundleList:input_type -> bundle.BundleListRequest + 5, // 10: bundle.Bundle.BundleDetail:input_type -> bundle.BundleDetailRequest + 7, // 11: bundle.Bundle.CreateOrderRecord:input_type -> bundle.OrderRecord + 7, // 12: bundle.Bundle.UpdateOrderRecord:input_type -> bundle.OrderRecord + 7, // 13: bundle.Bundle.UpdateOrderRecordByOrderNo:input_type -> bundle.OrderRecord + 8, // 14: bundle.Bundle.OrderRecordsList:input_type -> bundle.OrderRecordsRequest + 10, // 15: bundle.Bundle.OrderRecordsDetail:input_type -> bundle.OrderRecordsDetailRequest + 13, // 16: bundle.Bundle.CreateValueAddBundle:input_type -> bundle.CreateValueAddBundleRequest + 15, // 17: bundle.Bundle.ValueAddBundleList:input_type -> bundle.ValueAddBundleListRequest + 17, // 18: bundle.Bundle.ValueAddBundleDetail:input_type -> bundle.ValueAddBundleDetailRequest + 0, // 19: bundle.Bundle.CreateBundle:output_type -> bundle.CommonResponse + 0, // 20: bundle.Bundle.UpdateBundle:output_type -> bundle.CommonResponse + 0, // 21: bundle.Bundle.DeleteBundle:output_type -> bundle.CommonResponse + 4, // 22: bundle.Bundle.BundleList:output_type -> bundle.BundleListResponse + 6, // 23: bundle.Bundle.BundleDetail:output_type -> bundle.BundleDetailResponse + 0, // 24: bundle.Bundle.CreateOrderRecord:output_type -> bundle.CommonResponse + 0, // 25: bundle.Bundle.UpdateOrderRecord:output_type -> bundle.CommonResponse + 0, // 26: bundle.Bundle.UpdateOrderRecordByOrderNo:output_type -> bundle.CommonResponse + 9, // 27: bundle.Bundle.OrderRecordsList:output_type -> bundle.OrderRecordsResponse + 11, // 28: bundle.Bundle.OrderRecordsDetail:output_type -> bundle.OrderRecordsDetailResponse + 14, // 29: bundle.Bundle.CreateValueAddBundle:output_type -> bundle.CreateValueAddBundleResponse + 16, // 30: bundle.Bundle.ValueAddBundleList:output_type -> bundle.ValueAddBundleListResponse + 18, // 31: bundle.Bundle.ValueAddBundleDetail:output_type -> bundle.ValueAddBundleDetailResponse + 19, // [19:32] is the sub-list for method output_type + 6, // [6:19] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_pb_bundle_proto_init() } @@ -1391,6 +2183,90 @@ func file_pb_bundle_proto_init() { return nil } } + file_pb_bundle_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValueAddBundleProfile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateValueAddBundleRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateValueAddBundleResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValueAddBundleListRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValueAddBundleListResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValueAddBundleDetailRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValueAddBundleDetailResponse); 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{ @@ -1398,7 +2274,7 @@ func file_pb_bundle_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_bundle_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 19, NumExtensions: 0, NumServices: 1, }, diff --git a/api/bundle/bundle.proto b/api/bundle/bundle.proto deleted file mode 100644 index 7cd4c83..0000000 --- a/api/bundle/bundle.proto +++ /dev/null @@ -1,119 +0,0 @@ -syntax = "proto3"; - -package bundle; -option go_package = "./bundle"; - -service Bundle { - rpc CreateBundle(BundleProfile) returns (CommonResponse) {} - rpc UpdateBundle(BundleProfile) returns (CommonResponse) {} - rpc DeleteBundle(DelBundleRequest) returns (CommonResponse) {} - - rpc BundleList(BundleListRequest) returns (BundleListResponse) {} - rpc BundleDetail(BundleDetailRequest) returns (BundleDetailResponse) {} - - rpc CreateOrderRecord(OrderRecord) returns (CommonResponse) {} - rpc UpdateOrderRecord(OrderRecord) returns (CommonResponse) {} - rpc UpdateOrderRecordByOrderNo(OrderRecord) returns (CommonResponse) {} - rpc OrderRecordsList(OrderRecordsRequest) returns (OrderRecordsResponse) {} - rpc OrderRecordsDetail(OrderRecordsDetailRequest) returns (OrderRecordsDetailResponse) {} - -} - -message CommonResponse { - string msg = 1 [json_name = "msg"]; - string uuid = 2 [json_name = "uuid"]; - string orderNo = 3 [json_name = "orderNo"]; -} - -message BundleProfile { - string uuid = 1 [json_name = "uuid"]; - string name = 2 [json_name = "name"]; - float price = 3 [json_name = "price"]; - int64 PriceType = 4 [json_name = "priceType"]; - string content = 5 [json_name = "content"]; - string contract = 6 [json_name = "contract"]; - string language = 7 [json_name = "language"]; - string createdAt = 8 [json_name = "createdAt"]; - string updatedAt = 9 [json_name = "updatedAt"]; - string companySign = 10 [json_name = "companySign"]; - int64 contractDuration = 11 [json_name = "contractDuration"]; -} - -message DelBundleRequest { - string uuid = 1 [json_name = "uuid"]; -} - -message BundleListRequest { - int32 page = 1 [json_name = "page"]; - int32 pageSize = 2 [json_name = "pageSize"]; - string name = 3 [json_name = "name"]; - string content = 4 [json_name = "content"]; - string language = 5 [json_name = "language"]; -} - -message BundleListResponse { - repeated BundleProfile bundles = 1 [json_name = "bundles"]; - int32 total = 2 [json_name = "total"]; -} - -message BundleDetailRequest { - string uuid = 1 [json_name = "uuid"]; -} - -message BundleDetailResponse { - BundleProfile bundle = 1 [json_name = "bundle"]; - string msg = 2 [json_name = "msg"]; -} - -message OrderRecord { - string uuid = 1 [json_name = "uuid"]; - string bundleUuid = 2 [json_name = "bundleUuid"]; - string customerID = 3 [json_name = "customerID"]; - string customerNum = 4 [json_name = "customerNum"]; - string customerName = 5 [json_name = "customerName"]; - float amount = 6 [json_name = "amount"]; - int64 amountType = 7 [json_name = "amountType"]; - string signContract = 8 [json_name = "signContract"]; - string signature = 9 [json_name = "signature"]; - string signedTime = 10 [json_name = "signedTime"]; - int64 payType = 11 [json_name = "payType"]; - string payTime = 12 [json_name = "payTime"]; - string checkoutSessionId = 13 [json_name = "checkoutSessionId"]; - string checkoutSessionUrl = 14 [json_name = "checkoutSessionUrl"]; - int64 status = 15 [json_name = "status"]; - string orderNo = 16 [json_name = "orderNo"]; - string bundleName = 17 [json_name = "bundleName"]; - string contractNo = 18 [json_name = "contractNo"]; -} - -message OrderRecordsRequest { - int32 page = 1 [json_name = "page"]; - int32 pageSize = 2 [json_name = "pageSize"]; - string customerNum = 3 [json_name = "customerNum"]; - string customerName = 4 [json_name = "customerName"]; - string bundleUUID = 5 [json_name = "bundleUUID"]; - string orderNo = 6 [json_name = "orderNo"]; - int64 status = 7 [json_name = "status"]; - string bundleName = 8 [json_name = "bundleName"]; - string startSignedTime = 9 [json_name = "startSignedTime"]; - string endSignedTime = 10 [json_name = "endSignedTime"]; - string startPayTime = 11 [json_name = "startPayTime"]; - string endPayTime = 12 [json_name = "endPayTime"]; - string customerID = 13 [json_name = "customerID"]; -} - -message OrderRecordsResponse { - repeated OrderRecord orderRecords = 1 [json_name = "orderRecords"]; - int32 total = 2 [json_name = "total"]; -} - -message OrderRecordsDetailRequest { - string uuid = 1 [json_name = "uuid"]; - string orderNo = 2 [json_name = "orderNo"]; - string customerID = 3 [json_name = "customerID"]; -} - -message OrderRecordsDetailResponse { - OrderRecord orderRecord = 1 [json_name = "orderRecord"]; - string msg = 2 [json_name = "msg"]; -} \ No newline at end of file diff --git a/api/bundle/bundle.validator.pb.go b/api/bundle/bundle.validator.pb.go index 06bb35a..4c0c16b 100644 --- a/api/bundle/bundle.validator.pb.go +++ b/api/bundle/bundle.validator.pb.go @@ -7,6 +7,8 @@ import ( fmt "fmt" math "math" proto "github.com/golang/protobuf/proto" + _ "google.golang.org/protobuf/types/descriptorpb" + _ "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" ) @@ -75,3 +77,42 @@ func (this *OrderRecordsDetailResponse) Validate() error { } return nil } +func (this *ValueAddBundleProfile) Validate() error { + return nil +} +func (this *CreateValueAddBundleRequest) Validate() error { + if !(this.Num > 29) { + return github_com_mwitkow_go_proto_validators.FieldError("Num", fmt.Errorf(`至少数为30,最多数为100`)) + } + if !(this.Num < 101) { + return github_com_mwitkow_go_proto_validators.FieldError("Num", fmt.Errorf(`至少数为30,最多数为100`)) + } + return nil +} +func (this *CreateValueAddBundleResponse) Validate() error { + return nil +} +func (this *ValueAddBundleListRequest) Validate() error { + return nil +} +func (this *ValueAddBundleListResponse) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *ValueAddBundleDetailRequest) Validate() error { + return nil +} +func (this *ValueAddBundleDetailResponse) 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 +} diff --git a/api/bundle/bundle_triple.pb.go b/api/bundle/bundle_triple.pb.go index eca8ba7..e49dc1b 100644 --- a/api/bundle/bundle_triple.pb.go +++ b/api/bundle/bundle_triple.pb.go @@ -38,6 +38,10 @@ type BundleClient interface { UpdateOrderRecordByOrderNo(ctx context.Context, in *OrderRecord, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) OrderRecordsList(ctx context.Context, in *OrderRecordsRequest, opts ...grpc_go.CallOption) (*OrderRecordsResponse, common.ErrorWithAttachment) OrderRecordsDetail(ctx context.Context, in *OrderRecordsDetailRequest, opts ...grpc_go.CallOption) (*OrderRecordsDetailResponse, common.ErrorWithAttachment) + //增值套餐 + CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) + ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment) + ValueAddBundleDetail(ctx context.Context, in *ValueAddBundleDetailRequest, opts ...grpc_go.CallOption) (*ValueAddBundleDetailResponse, common.ErrorWithAttachment) } type bundleClient struct { @@ -55,6 +59,9 @@ type BundleClientImpl struct { UpdateOrderRecordByOrderNo func(ctx context.Context, in *OrderRecord) (*CommonResponse, error) OrderRecordsList func(ctx context.Context, in *OrderRecordsRequest) (*OrderRecordsResponse, error) OrderRecordsDetail func(ctx context.Context, in *OrderRecordsDetailRequest) (*OrderRecordsDetailResponse, error) + CreateValueAddBundle func(ctx context.Context, in *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) + ValueAddBundleList func(ctx context.Context, in *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) + ValueAddBundleDetail func(ctx context.Context, in *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) } func (c *BundleClientImpl) GetDubboStub(cc *triple.TripleConn) BundleClient { @@ -129,6 +136,24 @@ func (c *bundleClient) OrderRecordsDetail(ctx context.Context, in *OrderRecordsD return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OrderRecordsDetail", in, out) } +func (c *bundleClient) CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) { + out := new(CreateValueAddBundleResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateValueAddBundle", in, out) +} + +func (c *bundleClient) ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment) { + out := new(ValueAddBundleListResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ValueAddBundleList", in, out) +} + +func (c *bundleClient) ValueAddBundleDetail(ctx context.Context, in *ValueAddBundleDetailRequest, opts ...grpc_go.CallOption) (*ValueAddBundleDetailResponse, common.ErrorWithAttachment) { + out := new(ValueAddBundleDetailResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ValueAddBundleDetail", in, out) +} + // BundleServer is the server API for Bundle service. // All implementations must embed UnimplementedBundleServer // for forward compatibility @@ -143,6 +168,10 @@ type BundleServer interface { UpdateOrderRecordByOrderNo(context.Context, *OrderRecord) (*CommonResponse, error) OrderRecordsList(context.Context, *OrderRecordsRequest) (*OrderRecordsResponse, error) OrderRecordsDetail(context.Context, *OrderRecordsDetailRequest) (*OrderRecordsDetailResponse, error) + //增值套餐 + CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) + ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) + ValueAddBundleDetail(context.Context, *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) mustEmbedUnimplementedBundleServer() } @@ -181,6 +210,15 @@ func (UnimplementedBundleServer) OrderRecordsList(context.Context, *OrderRecords func (UnimplementedBundleServer) OrderRecordsDetail(context.Context, *OrderRecordsDetailRequest) (*OrderRecordsDetailResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method OrderRecordsDetail not implemented") } +func (UnimplementedBundleServer) CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateValueAddBundle not implemented") +} +func (UnimplementedBundleServer) ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValueAddBundleList not implemented") +} +func (UnimplementedBundleServer) ValueAddBundleDetail(context.Context, *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValueAddBundleDetail not implemented") +} func (s *UnimplementedBundleServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -499,6 +537,93 @@ func _Bundle_OrderRecordsDetail_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Bundle_CreateValueAddBundle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateValueAddBundleRequest) + 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("CreateValueAddBundle", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_ValueAddBundleList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ValueAddBundleListRequest) + 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("ValueAddBundleList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_ValueAddBundleDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ValueAddBundleDetailRequest) + 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("ValueAddBundleDetail", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + // Bundle_ServiceDesc is the grpc_go.ServiceDesc for Bundle service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -546,6 +671,18 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "OrderRecordsDetail", Handler: _Bundle_OrderRecordsDetail_Handler, }, + { + MethodName: "CreateValueAddBundle", + Handler: _Bundle_CreateValueAddBundle_Handler, + }, + { + MethodName: "ValueAddBundleList", + Handler: _Bundle_ValueAddBundleList_Handler, + }, + { + MethodName: "ValueAddBundleDetail", + Handler: _Bundle_ValueAddBundleDetail_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, Metadata: "pb/bundle.proto", diff --git a/cmd/runtime/20250327190746.pdf b/cmd/runtime/20250327190746.pdf new file mode 100644 index 0000000..7f9f518 Binary files /dev/null and b/cmd/runtime/20250327190746.pdf differ diff --git a/cmd/runtime/20250327190821.pdf b/cmd/runtime/20250327190821.pdf new file mode 100644 index 0000000..7f9f518 Binary files /dev/null and b/cmd/runtime/20250327190821.pdf differ diff --git a/cmd/runtime/20250328174612.pdf b/cmd/runtime/20250328174612.pdf new file mode 100644 index 0000000..3d4c99a Binary files /dev/null and b/cmd/runtime/20250328174612.pdf differ diff --git a/cmd/runtime/20250328174729.pdf b/cmd/runtime/20250328174729.pdf new file mode 100644 index 0000000..bfdc730 Binary files /dev/null and b/cmd/runtime/20250328174729.pdf differ diff --git a/docs/dev/conf.ini b/docs/dev/conf.ini index 5bc0c89..90addfe 100644 --- a/docs/dev/conf.ini +++ b/docs/dev/conf.ini @@ -33,4 +33,4 @@ TelNum = "18021272627" Password = "Gy.123456" [stripe] -Webhookkey = "whsec_5ru2Z9KsFixSvamAHgcvCBxufRTuHsyQ" +Webhookkey = "whsec_uOQpG6IZTqtfLuePIDtfLCGJPqedSCCN" diff --git a/pkg/common/msg.go b/pkg/common/msg.go index 596830e..0c5cba4 100644 --- a/pkg/common/msg.go +++ b/pkg/common/msg.go @@ -9,205 +9,205 @@ const ( ) var EnMessages = map[string]string{ - "获取套餐列表失败": "Failed to get bundle list", - "创建套餐信息失败": "Failed to create bundle information", - "创建套餐信息成功": "Successfully created bundle information", - "更新套餐信息失败": "Failed to update bundle information", - "更新套餐信息成功": "Successfully updated bundle information", - "删除套餐信息失败": "Failed to delete bundle information", - "删除套餐信息成功": "Successfully deleted bundle information", - "获取套餐信息失败": "Failed to get bundle information", - "创建订单信息失败": "Failed to create order information", - "创建订单信息成功": "Successfully created order information", - "更新订单信息失败": "Failed to update order information", - "更新订单信息成功": "Successfully updated order information", - "获取订单信息失败": "Failed to get order information", - "获取订单列表失败": "Failed to get order list", - "缺少套餐UUID": "Missing bundle UUID", - "缺少客户签名信息": "Missing customer signature", - "插入签名失败": "Failed to insert signature", - "缺少订单号": "Missing order number", - "缺少订单信息": "Missing order information", + "获取套餐列表失败": "Failed to get bundle list", + "创建套餐信息失败": "Failed to create bundle information", + "创建套餐信息成功": "Successfully created bundle information", + "更新套餐信息失败": "Failed to update bundle information", + "更新套餐信息成功": "Successfully updated bundle information", + "删除套餐信息失败": "Failed to delete bundle information", + "删除套餐信息成功": "Successfully deleted bundle information", + "获取套餐信息失败": "Failed to get bundle information", + "创建订单信息失败": "Failed to create order information", + "创建订单信息成功": "Successfully created order information", + "更新订单信息失败": "Failed to update order information", + "更新订单信息成功": "Successfully updated order information", + "获取订单信息失败": "Failed to get order information", + "获取订单列表失败": "Failed to get order list", + "缺少套餐UUID": "Missing bundle UUID", + "缺少客户签名信息": "Missing customer signature", + "插入签名失败": "Failed to insert signature", + "缺少订单号": "Missing order number", + "缺少订单信息": "Missing order information", "非当前用户订单信息不可操作": "Cannot operate on order information of other users", - "订单已支付": "Order has been paid", + "订单已支付": "Order has been paid", "您已购买过套餐,无法再次购买": "You have already purchased this bundle and cannot purchase again", - "查询支付信息失败": "Failed to query payment information", - "下载文件失败": "Failed to download file", - "上传文件失败": "Failed to upload file", - "时间格式错误": "Invalid time format", + "查询支付信息失败": "Failed to query payment information", + "下载文件失败": "Failed to download file", + "上传文件失败": "Failed to upload file", + "时间格式错误": "Invalid time format", - "账号或密码错误": "The account or password is incorrect", - "账号或验证码错误": "The account or verification code is incorrect", - "账号已存在": "Account already exists", - "没有找到数据": "No data found", - "已经发送过,验证码尚可用": "It was sent. The verification code is still working", - "系统提示:已经发送过,验证码尚可用": "System message: Already sent, verification code is still available", + "账号或密码错误": "The account or password is incorrect", + "账号或验证码错误": "The account or verification code is incorrect", + "账号已存在": "Account already exists", + "没有找到数据": "No data found", + "已经发送过,验证码尚可用": "It was sent. The verification code is still working", + "系统提示:已经发送过,验证码尚可用": "System message: Already sent, verification code is still available", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "Your mobile phone number is sent too many times that day, please contact the administrator to log in through the password", - "您的手机号验证码错误,请确认之后注册": "Your phone number verification code is incorrect, please confirm and register", - "手机号不合法": "The phone number is illegal", - "手机号未更改": "The phone number has not been changed", - "新手机号过期": "New phone number expired", - "验证码错误": "Verification code error", - "验证码未发送": "The verification code was not sent", - "账号不存在": "Account does not exist", - "已实名": "In real name", - "实名审核中,请勿重复提交": "During real-name audit, please do not submit repeatedly", - "用户状态异常,无法进行审核": "The user is abnormal and cannot be audited. Procedure", - "验证码已失效": "The verification code is invalid", - "服务器错误": "Server error", - "验证失败,请控制拼图对齐缺口": "Verification failed, please control puzzle alignment gap", - "滑块验证状态不存在,请退出重试": "The slider verification status does not exist. Please exit and try again", + "您的手机号验证码错误,请确认之后注册": "Your phone number verification code is incorrect, please confirm and register", + "手机号不合法": "The phone number is illegal", + "手机号未更改": "The phone number has not been changed", + "新手机号过期": "New phone number expired", + "验证码错误": "Verification code error", + "验证码未发送": "The verification code was not sent", + "账号不存在": "Account does not exist", + "已实名": "In real name", + "实名审核中,请勿重复提交": "During real-name audit, please do not submit repeatedly", + "用户状态异常,无法进行审核": "The user is abnormal and cannot be audited. Procedure", + "验证码已失效": "The verification code is invalid", + "服务器错误": "Server error", + "验证失败,请控制拼图对齐缺口": "Verification failed, please control puzzle alignment gap", + "滑块验证状态不存在,请退出重试": "The slider verification status does not exist. Please exit and try again", } var DeDEMessages = map[string]string{ - "获取套餐列表失败": "Fehler beim Abrufen der Bundle-Liste", - "创建套餐信息失败": "Fehler beim Erstellen von Bundle-Informationen", - "创建套餐信息成功": "Bundle-Informationen erfolgreich erstellt", - "更新套餐信息失败": "Fehler beim Aktualisieren von Bundle-Informationen", - "更新套餐信息成功": "Bundle-Informationen erfolgreich aktualisiert", - "删除套餐信息失败": "Fehler beim Löschen von Bundle-Informationen", - "删除套餐信息成功": "Bundle-Informationen erfolgreich gelöscht", - "获取套餐信息失败": "Fehler beim Abrufen von Bundle-Informationen", - "创建订单信息失败": "Fehler beim Erstellen von Bestellinformationen", - "创建订单信息成功": "Bestellinformationen erfolgreich erstellt", - "更新订单信息失败": "Fehler beim Aktualisieren von Bestellinformationen", - "更新订单信息成功": "Bestellinformationen erfolgreich aktualisiert", - "获取订单信息失败": "Fehler beim Abrufen von Bestellinformationen", - "获取订单列表失败": "Fehler beim Abrufen der Bestellliste", - "缺少套餐UUID": "Fehlende Bundle-UUID", - "缺少客户签名信息": "Fehlende Kundenunterschrift", - "插入签名失败": "Fehler beim Einfügen der Signatur", - "缺少订单号": "Fehlende Bestellnummer", - "缺少订单信息": "Fehlende Bestellinformationen", + "获取套餐列表失败": "Fehler beim Abrufen der Bundle-Liste", + "创建套餐信息失败": "Fehler beim Erstellen von Bundle-Informationen", + "创建套餐信息成功": "Bundle-Informationen erfolgreich erstellt", + "更新套餐信息失败": "Fehler beim Aktualisieren von Bundle-Informationen", + "更新套餐信息成功": "Bundle-Informationen erfolgreich aktualisiert", + "删除套餐信息失败": "Fehler beim Löschen von Bundle-Informationen", + "删除套餐信息成功": "Bundle-Informationen erfolgreich gelöscht", + "获取套餐信息失败": "Fehler beim Abrufen von Bundle-Informationen", + "创建订单信息失败": "Fehler beim Erstellen von Bestellinformationen", + "创建订单信息成功": "Bestellinformationen erfolgreich erstellt", + "更新订单信息失败": "Fehler beim Aktualisieren von Bestellinformationen", + "更新订单信息成功": "Bestellinformationen erfolgreich aktualisiert", + "获取订单信息失败": "Fehler beim Abrufen von Bestellinformationen", + "获取订单列表失败": "Fehler beim Abrufen der Bestellliste", + "缺少套餐UUID": "Fehlende Bundle-UUID", + "缺少客户签名信息": "Fehlende Kundenunterschrift", + "插入签名失败": "Fehler beim Einfügen der Signatur", + "缺少订单号": "Fehlende Bestellnummer", + "缺少订单信息": "Fehlende Bestellinformationen", "非当前用户订单信息不可操作": "Bestellinformationen anderer Benutzer können nicht bearbeitet werden", - "订单已支付": "Bestellung wurde bezahlt", + "订单已支付": "Bestellung wurde bezahlt", "您已购买过套餐,无法再次购买": "Sie haben dieses Bundle bereits gekauft und können es nicht erneut kaufen", - "查询支付信息失败": "Fehler beim Abfragen von Zahlungsinformationen", - "下载文件失败": "Fehler beim Herunterladen der Datei", - "上传文件失败": "Fehler beim Hochladen der Datei", - "时间格式错误": "Ungültiges Zeitformat", + "查询支付信息失败": "Fehler beim Abfragen von Zahlungsinformationen", + "下载文件失败": "Fehler beim Herunterladen der Datei", + "上传文件失败": "Fehler beim Hochladen der Datei", + "时间格式错误": "Ungültiges Zeitformat", - "账号或密码错误": "Konto oder Passwort falsch", - "账号或验证码错误": "Konto oder Verifizierungscode falsch", - "账号已存在": "Konto existiert bereits", - "没有找到数据": "Keine Daten gefunden", - "已经发送过,验证码尚可用": "Es wurde gesendet. Der Verifizierungscode funktioniert noch", - "系统提示:已经发送过,验证码尚可用": "Systemnachricht: Bereits gesendet, Verifizierungscode ist noch verfügbar", + "账号或密码错误": "Konto oder Passwort falsch", + "账号或验证码错误": "Konto oder Verifizierungscode falsch", + "账号已存在": "Konto existiert bereits", + "没有找到数据": "Keine Daten gefunden", + "已经发送过,验证码尚可用": "Es wurde gesendet. Der Verifizierungscode funktioniert noch", + "系统提示:已经发送过,验证码尚可用": "Systemnachricht: Bereits gesendet, Verifizierungscode ist noch verfügbar", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "Ihre Telefonnummer wurde an diesem Tag zu oft gesendet. Bitte wenden Sie sich an den Administrator, um sich über das Passwort anzumelden", - "您的手机号验证码错误,请确认之后注册": "Ihre Telefonnummer Verifizierungscode ist falsch, bitte bestätigen und registrieren", - "手机号不合法": "Telefonnummer ungültig", - "手机号未更改": "Telefonnummer wurde nicht geändert", - "新手机号过期": "Neue Telefonnummer abgelaufen", - "验证码错误": "Verifizierungscode falsch", - "验证码未发送": "Der Verifizierungscode wurde nicht gesendet", - "账号不存在": "Konto existiert nicht", - "已实名": "In echt", - "实名审核中,请勿重复提交": "Während der Echtheitsprüfung bitte nicht wiederholen", - "用户状态异常,无法进行审核": "Der Benutzer ist abnorm und kann nicht geprüft werden. Verfahren", - "验证码已失效": "Der Verifizierungscode ist ungültig", - "服务器错误": "Serverfehler", - "验证失败,请控制拼图对齐缺口": "Überprüfung fehlgeschlagen, bitte Steuerung Puzzle-Ausrichtungslücke", - "滑块验证状态不存在,请退出重试": "Die krümmbestätigung existiert nicht. Bitte beenden sie den vorgang", + "您的手机号验证码错误,请确认之后注册": "Ihre Telefonnummer Verifizierungscode ist falsch, bitte bestätigen und registrieren", + "手机号不合法": "Telefonnummer ungültig", + "手机号未更改": "Telefonnummer wurde nicht geändert", + "新手机号过期": "Neue Telefonnummer abgelaufen", + "验证码错误": "Verifizierungscode falsch", + "验证码未发送": "Der Verifizierungscode wurde nicht gesendet", + "账号不存在": "Konto existiert nicht", + "已实名": "In echt", + "实名审核中,请勿重复提交": "Während der Echtheitsprüfung bitte nicht wiederholen", + "用户状态异常,无法进行审核": "Der Benutzer ist abnorm und kann nicht geprüft werden. Verfahren", + "验证码已失效": "Der Verifizierungscode ist ungültig", + "服务器错误": "Serverfehler", + "验证失败,请控制拼图对齐缺口": "Überprüfung fehlgeschlagen, bitte Steuerung Puzzle-Ausrichtungslücke", + "滑块验证状态不存在,请退出重试": "Die krümmbestätigung existiert nicht. Bitte beenden sie den vorgang", } var JaJPMessages = map[string]string{ - "获取套餐列表失败": "バンドルリストの取得に失敗しました", - "创建套餐信息失败": "バンドル情報の作成に失敗しました", - "创建套餐信息成功": "バンドル情報の作成に成功しました", - "更新套餐信息失败": "バンドル情報の更新に失敗しました", - "更新套餐信息成功": "バンドル情報の更新に成功しました", - "删除套餐信息失败": "バンドル情報の削除に失敗しました", - "删除套餐信息成功": "バンドル情報の削除に成功しました", - "获取套餐信息失败": "バンドル情報の取得に失敗しました", - "创建订单信息失败": "注文情報の作成に失敗しました", - "创建订单信息成功": "注文情報の作成に成功しました", - "更新订单信息失败": "注文情報の更新に失敗しました", - "更新订单信息成功": "注文情報の更新に成功しました", - "获取订单信息失败": "注文情報の取得に失敗しました", - "获取订单列表失败": "注文リストの取得に失敗しました", - "缺少套餐UUID": "バンドルUUIDがありません", - "缺少客户签名信息": "顧客署名情報がありません", - "插入签名失败": "署名の挿入に失敗しました", - "缺少订单号": "注文番号がありません", - "缺少订单信息": "注文情報がありません", + "获取套餐列表失败": "バンドルリストの取得に失敗しました", + "创建套餐信息失败": "バンドル情報の作成に失敗しました", + "创建套餐信息成功": "バンドル情報の作成に成功しました", + "更新套餐信息失败": "バンドル情報の更新に失敗しました", + "更新套餐信息成功": "バンドル情報の更新に成功しました", + "删除套餐信息失败": "バンドル情報の削除に失敗しました", + "删除套餐信息成功": "バンドル情報の削除に成功しました", + "获取套餐信息失败": "バンドル情報の取得に失敗しました", + "创建订单信息失败": "注文情報の作成に失敗しました", + "创建订单信息成功": "注文情報の作成に成功しました", + "更新订单信息失败": "注文情報の更新に失敗しました", + "更新订单信息成功": "注文情報の更新に成功しました", + "获取订单信息失败": "注文情報の取得に失敗しました", + "获取订单列表失败": "注文リストの取得に失敗しました", + "缺少套餐UUID": "バンドルUUIDがありません", + "缺少客户签名信息": "顧客署名情報がありません", + "插入签名失败": "署名の挿入に失敗しました", + "缺少订单号": "注文番号がありません", + "缺少订单信息": "注文情報がありません", "非当前用户订单信息不可操作": "他のユーザーの注文情報を操作できません", - "订单已支付": "注文は支払われました", + "订单已支付": "注文は支払われました", "您已购买过套餐,无法再次购买": "このバンドルはすでに購入済みであり、再度購入することはできません", - "查询支付信息失败": "支払い情報のクエリに失敗しました", - "下载文件失败": "ファイルのダウンロードに失敗しました", - "上传文件失败": "ファイルのアップロードに失敗しました", - "时间格式错误": "無効な時間形式", + "查询支付信息失败": "支払い情報のクエリに失敗しました", + "下载文件失败": "ファイルのダウンロードに失敗しました", + "上传文件失败": "ファイルのアップロードに失敗しました", + "时间格式错误": "無効な時間形式", - "账号或密码错误": "アカウントまたはパスワードが間違っています", - "账号或验证码错误": "アカウントまたは検証コードが間違っています", - "账号已存在": "アカウントはすでに存在します", - "没有找到数据": "データが見つかりません", - "已经发送过,验证码尚可用": "送信されました。検証コードは引き続き有効です", - "系统提示:已经发送过,验证码尚可用": "システムメッセージ:すでに送信され、検証コードは引き続き有効です", + "账号或密码错误": "アカウントまたはパスワードが間違っています", + "账号或验证码错误": "アカウントまたは検証コードが間違っています", + "账号已存在": "アカウントはすでに存在します", + "没有找到数据": "データが見つかりません", + "已经发送过,验证码尚可用": "送信されました。検証コードは引き続き有効です", + "系统提示:已经发送过,验证码尚可用": "システムメッセージ:すでに送信され、検証コードは引き続き有効です", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "その日の電話番号が送信されすぎています。管理者に連絡してパスワードでログインしてください", - "您的手机号验证码错误,请确认之后注册": "電話番号の検証コードが間違っています。確認して登録してください", - "手机号不合法": "電話番号が無効です", - "手机号未更改": "電話番号が変更されていません", - "新手机号过期": "新しい電話番号の有効期限が切れました", - "验证码错误": "検証コードが間違っています", - "验证码未发送": "検証コードが送信されていません", - "账号不存在": "アカウントが存在しません", - "已实名": "実名", - "实名审核中,请勿重复提交": "実名審査中、繰り返し提出しないでください", - "用户状态异常,无法进行审核": "ユーザーが異常であり、審査できません。手続き", - "验证码已失效": "検証コードが無効です", - "服务器错误": "サーバーエラー", - "验证失败,请控制拼图对齐缺口": "検証に失敗しました。パズルの整列ギャップを制御してください", - "滑块验证状态不存在,请退出重试": "スライダー検証状態が存在しません,リトライをログアウトしてください", + "您的手机号验证码错误,请确认之后注册": "電話番号の検証コードが間違っています。確認して登録してください", + "手机号不合法": "電話番号が無効です", + "手机号未更改": "電話番号が変更されていません", + "新手机号过期": "新しい電話番号の有効期限が切れました", + "验证码错误": "検証コードが間違っています", + "验证码未发送": "検証コードが送信されていません", + "账号不存在": "アカウントが存在しません", + "已实名": "実名", + "实名审核中,请勿重复提交": "実名審査中、繰り返し提出しないでください", + "用户状态异常,无法进行审核": "ユーザーが異常であり、審査できません。手続き", + "验证码已失效": "検証コードが無効です", + "服务器错误": "サーバーエラー", + "验证失败,请控制拼图对齐缺口": "検証に失敗しました。パズルの整列ギャップを制御してください", + "滑块验证状态不存在,请退出重试": "スライダー検証状態が存在しません,リトライをログアウトしてください", } var ZhTWMessages = map[string]string{ - "获取套餐列表失败": "獲取套餐列表失敗", - "创建套餐信息失败": "創建套餐信息失敗", - "创建套餐信息成功": "創建套餐信息成功", - "更新套餐信息失败": "更新套餐信息失敗", - "更新套餐信息成功": "更新套餐信息成功", - "删除套餐信息失败": "刪除套餐信息失敗", - "删除套餐信息成功": "刪除套餐信息成功", - "获取套餐信息失败": "獲取套餐信息失敗", - "创建订单信息失败": "創建訂單信息失敗", - "创建订单信息成功": "創建訂單信息成功", - "更新订单信息失败": "更新訂單信息失敗", - "更新订单信息成功": "更新訂單信息成功", - "获取订单信息失败": "獲取訂單信息失敗", - "获取订单列表失败": "獲取訂單列表失敗", - "缺少套餐UUID": "缺少套餐UUID", - "缺少客户签名信息": "缺少客戶簽名信息", - "插入签名失败": "插入簽名失敗", - "缺少订单号": "缺少訂單號", - "缺少订单信息": "缺少訂單信息", + "获取套餐列表失败": "獲取套餐列表失敗", + "创建套餐信息失败": "創建套餐信息失敗", + "创建套餐信息成功": "創建套餐信息成功", + "更新套餐信息失败": "更新套餐信息失敗", + "更新套餐信息成功": "更新套餐信息成功", + "删除套餐信息失败": "刪除套餐信息失敗", + "删除套餐信息成功": "刪除套餐信息成功", + "获取套餐信息失败": "獲取套餐信息失敗", + "创建订单信息失败": "創建訂單信息失敗", + "创建订单信息成功": "創建訂單信息成功", + "更新订单信息失败": "更新訂單信息失敗", + "更新订单信息成功": "更新訂單信息成功", + "获取订单信息失败": "獲取訂單信息失敗", + "获取订单列表失败": "獲取訂單列表失敗", + "缺少套餐UUID": "缺少套餐UUID", + "缺少客户签名信息": "缺少客戶簽名信息", + "插入签名失败": "插入簽名失敗", + "缺少订单号": "缺少訂單號", + "缺少订单信息": "缺少訂單信息", "非当前用户订单信息不可操作": "非當前用戶訂單信息不可操作", - "订单已支付": "訂單已支付", + "订单已支付": "訂單已支付", "您已购买过套餐,无法再次购买": "您已購買過套餐,無法再次購買", - "查询支付信息失败": "查詢支付信息失敗", - "下载文件失败": "下載文件失敗", - "上传文件失败": "上傳文件失敗", - "时间格式错误": "時間格式錯誤", + "查询支付信息失败": "查詢支付信息失敗", + "下载文件失败": "下載文件失敗", + "上传文件失败": "上傳文件失敗", + "时间格式错误": "時間格式錯誤", - "账号或密码错误": "帳號或密碼錯誤", - "账号或验证码错误": "帳號或驗證碼錯誤", - "账号已存在": "帳號已存在", - "没有找到数据": "沒有找到數據", - "已经发送过,验证码尚可用": "已經發送過,驗證碼尚可用", - "系统提示:已经发送过,验证码尚可用": "系統提示:已經發送過,驗證碼尚可用", + "账号或密码错误": "帳號或密碼錯誤", + "账号或验证码错误": "帳號或驗證碼錯誤", + "账号已存在": "帳號已存在", + "没有找到数据": "沒有找到數據", + "已经发送过,验证码尚可用": "已經發送過,驗證碼尚可用", + "系统提示:已经发送过,验证码尚可用": "系統提示:已經發送過,驗證碼尚可用", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "您的手機號當天發送次數過多,請聯繫管理員通過密碼登錄", - "您的手机号验证码错误,请确认之后注册": "您的手機號驗證碼錯誤,請確認之後註冊", - "手机号不合法": "手機號不合法", - "手机号未更改": "手機號未更改", - "新手机号过期": "新手機號過期", - "验证码错误": "驗證碼錯誤", - "验证码未发送": "驗證碼未發送", - "账号不存在": "帳號不存在", - "已实名": "已實名", - "实名审核中,请勿重复提交": "實名審核中,請勿重複提交", - "用户状态异常,无法进行审核": "用戶狀態異常,無法進行審核", - "验证码已失效": "驗證碼已失效", - "服务器错误": "服務器錯誤", - "验证失败,请控制拼图对齐缺口": "驗證失敗,請控制拼圖對齊缺口", - "滑块验证状态不存在,请退出重试": "滑塊驗證狀態不存在,請退出重試", + "您的手机号验证码错误,请确认之后注册": "您的手機號驗證碼錯誤,請確認之後註冊", + "手机号不合法": "手機號不合法", + "手机号未更改": "手機號未更改", + "新手机号过期": "新手機號過期", + "验证码错误": "驗證碼錯誤", + "验证码未发送": "驗證碼未發送", + "账号不存在": "帳號不存在", + "已实名": "已實名", + "实名审核中,请勿重复提交": "實名審核中,請勿重複提交", + "用户状态异常,无法进行审核": "用戶狀態異常,無法進行審核", + "验证码已失效": "驗證碼已失效", + "服务器错误": "服務器錯誤", + "验证失败,请控制拼图对齐缺口": "驗證失敗,請控制拼圖對齊缺口", + "滑块验证状态不存在,请退出重试": "滑塊驗證狀態不存在,請退出重試", } diff --git a/pkg/router/bundleOrder.go b/pkg/router/bundleOrder.go index 2a44232..bdbf944 100644 --- a/pkg/router/bundleOrder.go +++ b/pkg/router/bundleOrder.go @@ -4,6 +4,7 @@ import ( "fonchain-fiee/pkg/middleware" "fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service/bundle" + "github.com/gin-gonic/gin" ) diff --git a/pkg/router/router.go b/pkg/router/router.go index 67ad907..d2aa0f1 100644 --- a/pkg/router/router.go +++ b/pkg/router/router.go @@ -10,9 +10,10 @@ import ( "fonchain-fiee/pkg/service/redirect" "fonchain-fiee/pkg/service/upload" "fonchain-fiee/pkg/service/version" - "github.com/gin-contrib/gzip" "net/http" + "github.com/gin-contrib/gzip" + "github.com/gin-contrib/pprof" "github.com/gin-gonic/gin" ) @@ -39,6 +40,7 @@ func NewRouter() *gin.Engine { BundleRouter(privateGroup) BundleOrderRouter(privateGroup) + ValueAddBundleRouter(privateGroup) { v1.POST("version", version.Version) //版本号公共 diff --git a/pkg/router/valueAddBundle.go b/pkg/router/valueAddBundle.go new file mode 100644 index 0000000..c7f9b44 --- /dev/null +++ b/pkg/router/valueAddBundle.go @@ -0,0 +1,26 @@ +package router + +import ( + "fonchain-fiee/pkg/middleware" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/service/bundle" + + "github.com/gin-gonic/gin" +) + +func ValueAddBundleRouter(r *gin.RouterGroup) { + valueAddBundleRoute := r.Group("valueAdd-bundle") + valueAddBundleRoute.Use(middleware.CheckLogin(service.AccountProvider)) + + // 增值套餐 + { + bundleClientRoute := valueAddBundleRoute.Group("system") + { + bundleClientRoute.POST("create", bundle.CreateValueAddBundle) + bundleClientRoute.POST("list", bundle.ValueAddBundleList) + bundleClientRoute.POST("detail", bundle.ValueAddBundleDetail) + } + + } + +} diff --git a/pkg/service/base.go b/pkg/service/base.go index 06df11f..0246402 100644 --- a/pkg/service/base.go +++ b/pkg/service/base.go @@ -39,6 +39,23 @@ func Success(c *gin.Context, datas ...interface{}) { c.Abort() } +func Success1(c *gin.Context, msg string, datas ...interface{}) { + var data interface{} + + if datas != nil { + data = datas[0] + } else { + data = struct{}{} + } + c.JSON(http.StatusOK, Response{ + Status: Ok, + Code: Ok, + Data: data, + Msg: msg, + }) + c.Abort() +} + // Error 统一错误返回 func Error(c *gin.Context, err error) { @@ -57,7 +74,20 @@ func Error(c *gin.Context, err error) { c.Abort() } -// 重试 +// Error 统一错误返回 +func Error1(c *gin.Context, err error) { + + c.JSON(http.StatusOK, Response{ + Code: Failed, + Status: Failed, + Msg: err.Error(), + Data: struct{}{}, + }) + + c.Abort() +} + +// 重试 func Retry(c *gin.Context, err error) { errMsg := "" if err != nil { diff --git a/pkg/service/bundle/bundleOrder.go b/pkg/service/bundle/bundleOrder.go index 0be36e7..5531812 100644 --- a/pkg/service/bundle/bundleOrder.go +++ b/pkg/service/bundle/bundleOrder.go @@ -3,6 +3,7 @@ package bundle import ( "context" "errors" + "fonchain-fiee/api/account" "fonchain-fiee/api/bundle" "fonchain-fiee/api/order" "fonchain-fiee/pkg/model/login" @@ -10,9 +11,11 @@ import ( "fonchain-fiee/pkg/service/bundle/common" "fonchain-fiee/pkg/service/bundle/logic" bundleModel "fonchain-fiee/pkg/service/bundle/model" + "math/big" + "strconv" + "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" - "strconv" ) func CreateBundleOrderSignature(c *gin.Context) { @@ -28,10 +31,11 @@ func CreateBundleOrderSignature(c *gin.Context) { return } - if req.Signature == "" { + // 不去校验 签名 + /*if req.Signature == "" { service.Error(c, errors.New(common.MissOrderSignature)) return - } + }*/ // 获取 用户信息 userInfo := login.GetUserInfoFromC(c) @@ -88,16 +92,44 @@ func CreateBundleOrderSignature(c *gin.Context) { return } + //获取增值套餐信息 + if req.ValueAddBundleUuid != "" { + valueAddBundleDetail, err := service.BundleProvider.ValueAddBundleDetail(context.Background(), &bundle.ValueAddBundleDetailRequest{ + Uuid: req.ValueAddBundleUuid, + }) + if err != nil { + service.Error(c, err) + return + } + + req.ValueAddBundleUuid = valueAddBundleDetail.Data.Uuid + req.ValueAddOriginalPrice = valueAddBundleDetail.Data.OriginalPrice + req.ValueAddDiscountPrice = valueAddBundleDetail.Data.DiscountPrice + req.AddBundleCommonUid = valueAddBundleDetail.Data.AddBundleCommonUid + + if valueAddBundleDetail.Data.Choose { // 可选条数 + req.ValueAddBundleAmount = valueAddBundleDetail.Data.DiscountPrice * float32(req.Num) + discount, _ := new(big.Float).Sub(big.NewFloat(float64(valueAddBundleDetail.Data.OriginalPrice)), big.NewFloat(float64(valueAddBundleDetail.Data.DiscountPrice))).Float32() + req.ValueAddSavedAmount = discount * float32(req.Num) + } else { // 固定条数 + req.ValueAddBundleAmount = valueAddBundleDetail.Data.TotalPrice + req.ValueAddSavedAmount = valueAddBundleDetail.Data.SavedAmount + } + + req.TotalAmount, _ = new(big.Float).Add(big.NewFloat(float64(req.ValueAddBundleAmount)), big.NewFloat(float64(bundleDetail.Bundle.Price))).Float32() + } + req.BundleName = bundleDetail.Bundle.Name req.Amount = bundleDetail.Bundle.Price req.AmountType = bundleDetail.Bundle.PriceType - + req.BundleCommonUid = bundleDetail.Bundle.BundleCommonUid + req.TotalAmount = req.Amount + req.ValueAddBundleAmount req.PayType = 1 // 默认 人民币 req.ContractNo = common.GenerateContractNo(lastContractNo) // 当前 未将 签名 写入合同中 - signContract, signContractErr := logic.SignContract(req.CustomerNum, bundleDetail.Bundle.Contract, req.Signature, bundleDetail.Bundle.CompanySign, req.ContractNo, userInfo.Name, userInfo.SubscriberNumber, userInfo.TelNum, userInfo.PlaceOfResidence, bundleDetail.Bundle.Price, bundleDetail.Bundle.ContractDuration) + signContract, signContractErr := logic.SignContractV2(req.CustomerNum, bundleDetail.Bundle.Contract, req.TotalAmount, bundleDetail.Bundle.ContractDuration) if signContractErr != nil { service.Error(c, signContractErr) return @@ -216,6 +248,30 @@ func OrderRecordsList(c *gin.Context) { return } + for _, orderRecord := range res.OrderRecords { + if orderRecord.CustomerID != "" { + var userID uint64 + userID, err = strconv.ParseUint(orderRecord.CustomerID, 10, 64) + if err != nil { + err = nil + continue + } + + userInfo, _ := service.AccountProvider.Info(context.Background(), &account.InfoRequest{ + Domain: "app", + ID: userID, + }) + if userInfo != nil { + orderRecord.Sex = userInfo.Sex + orderRecord.Nationality = userInfo.Nationality + orderRecord.CertificatePicture = userInfo.CertificatePicture + orderRecord.PlaceOfResidence = userInfo.PlaceOfResidence + orderRecord.GroupPhoto = userInfo.GroupPhoto + } + } + + } + service.Success(c, res) } diff --git a/pkg/service/bundle/common/msg.go b/pkg/service/bundle/common/msg.go index 941bdc5..2801e63 100644 --- a/pkg/service/bundle/common/msg.go +++ b/pkg/service/bundle/common/msg.go @@ -12,11 +12,13 @@ const ( MissOrderNo = "缺少订单号" MissOrderUUID = "缺少订单信息" - NotMatchOrderInfo = "非当前用户订单信息不可操作" + NotMatchOrderInfo = "非当前用户订单信息不可操作" + InvalidOrderAmount = "订单金额错误" HadPay = "订单已支付" - HadOrder = "您已购买过套餐,无法再次购买" + HadOrder = "您已购买过套餐,无法再次购买" + InvalidValueAddBundleNum = "套餐数量无效" ) // stripe diff --git a/pkg/service/bundle/logic/signContractV2.go b/pkg/service/bundle/logic/signContractV2.go new file mode 100644 index 0000000..7af5b84 --- /dev/null +++ b/pkg/service/bundle/logic/signContractV2.go @@ -0,0 +1,117 @@ +package logic + +import ( + "errors" + "fmt" + "fonchain-fiee/pkg/model" + "fonchain-fiee/pkg/service/bundle/common" + "fonchain-fiee/pkg/service/upload" + "github.com/signintech/gopdf" + "go.uber.org/zap" + "log" + "os" + "strconv" + "time" +) + +func SignContractV2(customerNum, contract string, price float32, contractDuration int64) (outputUrl string, err error) { + filePath := model.MediaPath + customerNum + time.Now().Format("20060102150405") + ".pdf" + downloadFileErr := DownloadFile(filePath, contract) + if downloadFileErr != nil { + zap.L().Error("download file error: ", zap.Error(downloadFileErr)) + //service.Error(c, errors.New(common.ErrorDownloadFile)) + return outputUrl, errors.New(common.ErrorDownloadFile) + } + + signFile := model.MediaPath + customerNum + "signed" + time.Now().Format("20060102150405") + ".pdf" + + /*signErr := InsertSignature(filePath, signFile, signImgPath, contractNo, idNo, telNum, address, price) + if signErr != nil { + zap.L().Error("insert signature error: ", zap.Error(signErr)) + return outputUrl, errors.New(common.ErrorInsertSignature) + }*/ + + signErr := InsertSignatureV2(filePath, signFile, price, contractDuration) + if signErr != nil { + zap.L().Error("insert signature error: ", zap.Error(signErr)) + return outputUrl, errors.New(common.ErrorInsertSignature) + } + + os.Remove(filePath) + + outputUrl, ossErr := upload.PutBos(signFile, upload.PdfType, true) + if ossErr != nil { + return "", errors.New(common.ErrorUploadFile) + } + return outputUrl, nil +} + +func InsertSignatureV2(templatePath, outputPath string, price float32, contractDuration int64) error { + pdf := gopdf.GoPdf{} + pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4}) + + // 导入模板文件中的页面 + err := pdf.ImportPagesFromSource(templatePath, "/MediaBox") + if err != nil { + log.Fatalf("无法导入页面: %v", err) + } + + // 获取模板文件的总页数 + totalPages := pdf.GetNumberOfPages() + fmt.Printf("模板文件的总页数: %d\n", totalPages) + + pricePage := 3 + + limitTimePage := 4 + + tffErr := pdf.AddTTFFont("simfang", "./data/simfang.ttf") + if tffErr != nil { + fmt.Printf("加载中文字体失败: %v\n", tffErr) + log.Fatalf("加载中文字体失败: %v", tffErr) + } + + // 设置字体和字号 + err = pdf.SetFont("simfang", "", 14) + if err != nil { + fmt.Printf("设置字体失败: %v\n", err) + log.Fatalf("设置字体失败: %v", err) + } + + // 填 金额 + pdf.SetPage(pricePage) + pdf.SetX(383) + pdf.SetY(351) + pdf.Cell(nil, strconv.FormatFloat(float64(price), 'f', 2, 64)) + + pdf.SetX(345) + pdf.SetY(383) + pdf.Cell(nil, strconv.FormatFloat(float64(price), 'f', 2, 64)) + // 写 有效期 + pdf.SetPage(limitTimePage) + + // 英文格式的时间 + t := time.Now().AddDate(int(contractDuration), 0, 0) + pdf.SetX(160) + pdf.SetY(387) + pdf.Cell(nil, t.Format("2006-01-02")) + + pdf.SetX(330) + pdf.SetY(403) + pdf.Cell(nil, t.Format("2006")) + + pdf.SetX(396) + pdf.SetY(403) + pdf.Cell(nil, t.Format("01")) + + pdf.SetX(443) + pdf.SetY(403) + pdf.Cell(nil, t.Format("02")) + + // 生成新的 PDF + if err = pdf.WritePdf(outputPath); err != nil { + //zap.L().Error("WritePdf err", zap.Error(err)) + return errors.New("error writing final PDF") + } + + return nil +} diff --git a/pkg/service/bundle/pay.go b/pkg/service/bundle/pay.go index 4b80a7d..321f737 100644 --- a/pkg/service/bundle/pay.go +++ b/pkg/service/bundle/pay.go @@ -11,11 +11,12 @@ import ( "fonchain-fiee/pkg/service" "fonchain-fiee/pkg/service/bundle/common" bundleModel "fonchain-fiee/pkg/service/bundle/model" - "github.com/gin-gonic/gin" - "github.com/gin-gonic/gin/binding" "io" "net/http" "strconv" + + "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" ) func CreateStripeCheckoutSession(c *gin.Context) { @@ -29,6 +30,8 @@ func CreateStripeCheckoutSession(c *gin.Context) { // 获取 用户信息 userInfo := login.GetUserInfoFromC(c) + fmt.Println("userInfo.ID:", userInfo.ID) + // 检查 订单信息 detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{ OrderNo: req.OutTradeNo, @@ -39,12 +42,20 @@ func CreateStripeCheckoutSession(c *gin.Context) { return } + fmt.Printf("detail: %+v\n", detail) + // 判断 是否是 本人操作 if strconv.FormatUint(userInfo.ID, 10) != detail.OrderRecord.CustomerID { service.Error(c, errors.New(common.NotMatchOrderInfo)) return } + //金额校验 + if detail.OrderRecord.TotalAmount*100 != float32(req.ProductAllPrice) { + service.Error(c, errors.New(common.InvalidOrderAmount)) + return + } + // 如果 当前订单 是 已签未支付 且 存在 checkoutSessionId 需要 查询 支付结果 if detail.OrderRecord.Status == bundleModel.OrderSigned && detail.OrderRecord.CheckoutSessionId != "" && detail.OrderRecord.PayTime == "" { // 查询支付结果 diff --git a/pkg/service/bundle/valueAddBundle.go b/pkg/service/bundle/valueAddBundle.go new file mode 100644 index 0000000..f9b1729 --- /dev/null +++ b/pkg/service/bundle/valueAddBundle.go @@ -0,0 +1,69 @@ +package bundle + +import ( + "context" + "fmt" + "fonchain-fiee/api/bundle" + "fonchain-fiee/pkg/model/login" + "fonchain-fiee/pkg/service" + + "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" +) + +func CreateValueAddBundle(c *gin.Context) { + var req bundle.CreateValueAddBundleRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + + res, err := service.BundleProvider.CreateValueAddBundle(context.Background(), &req) + if err != nil { + fmt.Println(err) + service.Error1(c, err) + return + } + + service.Success1(c, res.Msg, res) +} + +func ValueAddBundleList(c *gin.Context) { + var req bundle.ValueAddBundleListRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + + // 获取 用户信息 + userInfo := login.GetUserInfoFromC(c) + req.UserId = int32(userInfo.ID) + //req.UserId = 39 + + res, err := service.BundleProvider.ValueAddBundleList(context.Background(), &req) + if err != nil { + service.Error1(c, err) + return + } + + service.Success1(c, res.Msg, res) +} + +func ValueAddBundleDetail(c *gin.Context) { + var req bundle.ValueAddBundleDetailRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + + res, err := service.BundleProvider.ValueAddBundleDetail(context.Background(), &req) + if err != nil { + service.Error1(c, err) + return + } + + service.Success1(c, res.Msg, res) +}