WH01243 4 năm trước cách đây
mục cha
commit
4a575bffa7

+ 14 - 11
entity/detailed.go

@@ -3,15 +3,18 @@ package entity
 import "time"
 import "time"
 
 
 type Detailed struct {
 type Detailed struct {
-	Id            int64     `xorm:"pk autoincr id" form:"id" json:"id"`
-	AccountId     int64     `xorm:"accountId" form:"accountId" json:"accountId"`             //账户标识
-	CompanyId     int64     `xorm:"companyId" form:"companyId" json:"companyId"`             //企业标识
-	DepartmentId  int64     `xorm:"departmentId" form:"departmentId" json:"departmentId"`    //组织标识
-	ResourceType  string    `xorm:"resourceType" form:"resourceType" json:"resourceType"`    //资源类型
-	ExportNum     int64     `xorm:"exportNum" form:"exportNum" json:"exportNum"`             //导出数量
-	DeductionType int64     `xorm:"deductionType" form:"deductionType" json:"deductionType"` //扣费类型(1高级字段包)
-	RuleId        int64     `xorm:"ruleId" form:"ruleId" json:"ruleId"`                      //使用规则标识
-	ExportTime    time.Time `xorm:"exportTime" form:"exportTime" json:"exportTime"`          //导出时间
-	UserType      int64     `xorm:"userType" form:"userType" json:"userType"`                //流水类型0使用1新增
-	UserId        string    `xorm:"userId" form:"userId" json:"userId"`                      //用户标识
+	Id             int64     `xorm:"pk autoincr id" form:"id" json:"id"`
+	AccountId      int64     `xorm:"accountId" form:"accountId" json:"accountId"`                //账户标识
+	CompanyId      int64     `xorm:"companyId" form:"companyId" json:"companyId"`                //企业标识
+	DepartmentId   int64     `xorm:"departmentId" form:"departmentId" json:"departmentId"`       //组织标识
+	ResourceType   string    `xorm:"resourceType" form:"resourceType" json:"resourceType"`       //资源类型
+	ExportNum      int64     `xorm:"exportNum" form:"exportNum" json:"exportNum"`                //导出数量
+	DeductionType  int64     `xorm:"deductionType" form:"deductionType" json:"deductionType"`    //扣费类型(1高级字段包)
+	RuleId         string    `xorm:"ruleId" form:"ruleId" json:"ruleId"`                         //使用规则标识
+	ExportTime     time.Time `xorm:"exportTime" form:"exportTime" json:"exportTime"`             //导出时间
+	UserType       int64     `xorm:"userType" form:"userType" json:"userType"`                   //流水类型0使用1新增
+	DeductionNumb  string    `xorm:"deductionNumb" form:"deductionNumb" json:"deductionNumb"`    //扣除数量
+	Url            string    `xorm:"url" form:"url" json:"url"`                                  //下载地址
+	SearchCriteria string    `xorm:"searchCriteria" form:"searchCriteria" json:"searchCriteria"` //搜索条件
+	Source         string    `xorm:"source" form:"source" json:"source"`                         //数据来源
 }
 }

+ 6 - 0
rpc/internal/server/resourcescenterserver.go

@@ -50,3 +50,9 @@ func (s *ResourcesCenterServer) UpdateUserDetailed(ctx context.Context, in *reso
 	l := logic.NewUpdateUserDetailedLogic(ctx, s.svcCtx)
 	l := logic.NewUpdateUserDetailedLogic(ctx, s.svcCtx)
 	return l.UpdateUserDetailed(in)
 	return l.UpdateUserDetailed(in)
 }
 }
+
+// 预览信息
+func (s *ResourcesCenterServer) FindPreview(ctx context.Context, in *resourcesCenter.PreviewReq) (*resourcesCenter.ConsumeRecordRes, error) {
+	l := logic.NewFindPreviewLogic(ctx, s.svcCtx)
+	return l.FindPreview(in)
+}

+ 20 - 2
rpc/resourcesCenter.proto

@@ -1,7 +1,7 @@
 syntax = "proto3";
 syntax = "proto3";
 
 
 package resourcesCenter;
 package resourcesCenter;
-//option go_package = "resourcesCenter/";
+option go_package = "resourcesCenter/";
 message Response {
 message Response {
     int64 code = 1; //响应代码
     int64 code = 1; //响应代码
     string message = 2; //响应消息
     string message = 2; //响应消息
@@ -23,11 +23,16 @@ message Detailed {
     string resourceType = 3; //资源类型
     string resourceType = 3; //资源类型
     int64 exportNum = 4; //导出数量
     int64 exportNum = 4; //导出数量
     string deductionType = 5; //扣费类型(1高级字段包)
     string deductionType = 5; //扣费类型(1高级字段包)
-    int64 ruleId = 6; //使用规则标识
+    string ruleId = 6; //使用规则标识
     int64 exportTime = 7; //导出时间
     int64 exportTime = 7; //导出时间
     int64 userType = 8; //流水类型0使用1新增
     int64 userType = 8; //流水类型0使用1新增
     int64 departmentId = 9; //组织标识
     int64 departmentId = 9; //组织标识
     string userId = 10; //用户标识
     string userId = 10; //用户标识
+    int64 deductionNumb = 11; //扣除数量
+    string url = 12; //下载地址
+    string searchCriteria = 13; //搜索条件
+    string source = 14; //数据来源
+
 }
 }
 
 
 message ResourcesAuth {
 message ResourcesAuth {
@@ -66,6 +71,17 @@ message ResourcesReq {
     int64 accountId = 1;
     int64 accountId = 1;
 }
 }
 
 
+message PreviewReq {
+    string infoId  = 1; //信息标识
+    string accountId = 2;  //企业标识
+    string deductionType = 3;  //资源代码
+}
+message PreviewRes {
+     int64 code = 1; //响应代码
+     string message = 2; //响应消息
+     int64  repeatNumb=3;//重复数量
+     int64  deductionNumb=4;//扣除数量
+}
 //根据账户标识查询资源权限请求参数
 //根据账户标识查询资源权限请求参数
 message ResourcesAuthRes {
 message ResourcesAuthRes {
     int64 code = 1; //响应代码
     int64 code = 1; //响应代码
@@ -100,4 +116,6 @@ service ResourcesCenter {
     rpc updateUserBalance (Balance) returns (Response);
     rpc updateUserBalance (Balance) returns (Response);
     //根据账户标识记录资源使用流水账
     //根据账户标识记录资源使用流水账
     rpc updateUserDetailed (Detailed) returns (Response);
     rpc updateUserDetailed (Detailed) returns (Response);
+    //预览信息
+    rpc findPreview (PreviewReq) returns (ConsumeRecordRes);
 }
 }

+ 402 - 147
rpc/resourcesCenter/resourcesCenter.pb.go

@@ -1,6 +1,6 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
 // versions:
-// 	protoc-gen-go v1.25.0
+// 	protoc-gen-go v1.26.0
 // 	protoc        v3.15.1
 // 	protoc        v3.15.1
 // source: resourcesCenter.proto
 // source: resourcesCenter.proto
 
 
@@ -8,7 +8,6 @@ package resourcesCenter
 
 
 import (
 import (
 	context "context"
 	context "context"
-	proto "github.com/golang/protobuf/proto"
 	grpc "google.golang.org/grpc"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
 	codes "google.golang.org/grpc/codes"
 	status "google.golang.org/grpc/status"
 	status "google.golang.org/grpc/status"
@@ -25,11 +24,6 @@ const (
 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 )
 )
 
 
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
-
-//option go_package = "resourcesCenter/";
 type Response struct {
 type Response struct {
 	state         protoimpl.MessageState
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	sizeCache     protoimpl.SizeCache
@@ -201,16 +195,20 @@ type Detailed struct {
 	sizeCache     protoimpl.SizeCache
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 	unknownFields protoimpl.UnknownFields
 
 
-	AccountId     int64  `protobuf:"varint,1,opt,name=accountId,proto3" json:"accountId,omitempty"`        //账户标识
-	CompanyId     int64  `protobuf:"varint,2,opt,name=companyId,proto3" json:"companyId,omitempty"`        //企业标识
-	ResourceType  string `protobuf:"bytes,3,opt,name=resourceType,proto3" json:"resourceType,omitempty"`   //资源类型
-	ExportNum     int64  `protobuf:"varint,4,opt,name=exportNum,proto3" json:"exportNum,omitempty"`        //导出数量
-	DeductionType string `protobuf:"bytes,5,opt,name=deductionType,proto3" json:"deductionType,omitempty"` //扣费类型(1高级字段包)
-	RuleId        int64  `protobuf:"varint,6,opt,name=ruleId,proto3" json:"ruleId,omitempty"`              //使用规则标识
-	ExportTime    int64  `protobuf:"varint,7,opt,name=exportTime,proto3" json:"exportTime,omitempty"`      //导出时间
-	UserType      int64  `protobuf:"varint,8,opt,name=userType,proto3" json:"userType,omitempty"`          //流水类型0使用1新增
-	DepartmentId  int64  `protobuf:"varint,9,opt,name=departmentId,proto3" json:"departmentId,omitempty"`  //组织标识
-	UserId        string `protobuf:"bytes,10,opt,name=userId,proto3" json:"userId,omitempty"`              //用户标识
+	AccountId      int64  `protobuf:"varint,1,opt,name=accountId,proto3" json:"accountId,omitempty"`           //账户标识
+	CompanyId      int64  `protobuf:"varint,2,opt,name=companyId,proto3" json:"companyId,omitempty"`           //企业标识
+	ResourceType   string `protobuf:"bytes,3,opt,name=resourceType,proto3" json:"resourceType,omitempty"`      //资源类型
+	ExportNum      int64  `protobuf:"varint,4,opt,name=exportNum,proto3" json:"exportNum,omitempty"`           //导出数量
+	DeductionType  string `protobuf:"bytes,5,opt,name=deductionType,proto3" json:"deductionType,omitempty"`    //扣费类型(1高级字段包)
+	RuleId         string `protobuf:"bytes,6,opt,name=ruleId,proto3" json:"ruleId,omitempty"`                  //使用规则标识
+	ExportTime     int64  `protobuf:"varint,7,opt,name=exportTime,proto3" json:"exportTime,omitempty"`         //导出时间
+	UserType       int64  `protobuf:"varint,8,opt,name=userType,proto3" json:"userType,omitempty"`             //流水类型0使用1新增
+	DepartmentId   int64  `protobuf:"varint,9,opt,name=departmentId,proto3" json:"departmentId,omitempty"`     //组织标识
+	UserId         string `protobuf:"bytes,10,opt,name=userId,proto3" json:"userId,omitempty"`                 //用户标识
+	DeductionNumb  int64  `protobuf:"varint,11,opt,name=deductionNumb,proto3" json:"deductionNumb,omitempty"`  //扣除数量
+	Url            string `protobuf:"bytes,12,opt,name=url,proto3" json:"url,omitempty"`                       //下载地址
+	SearchCriteria string `protobuf:"bytes,13,opt,name=searchCriteria,proto3" json:"searchCriteria,omitempty"` //搜索条件
+	Source         string `protobuf:"bytes,14,opt,name=source,proto3" json:"source,omitempty"`                 //数据来源
 }
 }
 
 
 func (x *Detailed) Reset() {
 func (x *Detailed) Reset() {
@@ -280,11 +278,11 @@ func (x *Detailed) GetDeductionType() string {
 	return ""
 	return ""
 }
 }
 
 
-func (x *Detailed) GetRuleId() int64 {
+func (x *Detailed) GetRuleId() string {
 	if x != nil {
 	if x != nil {
 		return x.RuleId
 		return x.RuleId
 	}
 	}
-	return 0
+	return ""
 }
 }
 
 
 func (x *Detailed) GetExportTime() int64 {
 func (x *Detailed) GetExportTime() int64 {
@@ -315,6 +313,34 @@ func (x *Detailed) GetUserId() string {
 	return ""
 	return ""
 }
 }
 
 
+func (x *Detailed) GetDeductionNumb() int64 {
+	if x != nil {
+		return x.DeductionNumb
+	}
+	return 0
+}
+
+func (x *Detailed) GetUrl() string {
+	if x != nil {
+		return x.Url
+	}
+	return ""
+}
+
+func (x *Detailed) GetSearchCriteria() string {
+	if x != nil {
+		return x.SearchCriteria
+	}
+	return ""
+}
+
+func (x *Detailed) GetSource() string {
+	if x != nil {
+		return x.Source
+	}
+	return ""
+}
+
 type ResourcesAuth struct {
 type ResourcesAuth struct {
 	state         protoimpl.MessageState
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	sizeCache     protoimpl.SizeCache
@@ -655,6 +681,140 @@ func (x *ResourcesReq) GetAccountId() int64 {
 	return 0
 	return 0
 }
 }
 
 
+type PreviewReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	InfoId        string `protobuf:"bytes,1,opt,name=infoId,proto3" json:"infoId,omitempty"`               //信息标识
+	AccountId     string `protobuf:"bytes,2,opt,name=accountId,proto3" json:"accountId,omitempty"`         //企业标识
+	DeductionType string `protobuf:"bytes,3,opt,name=deductionType,proto3" json:"deductionType,omitempty"` //资源代码
+}
+
+func (x *PreviewReq) Reset() {
+	*x = PreviewReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_resourcesCenter_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PreviewReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewReq) ProtoMessage() {}
+
+func (x *PreviewReq) ProtoReflect() protoreflect.Message {
+	mi := &file_resourcesCenter_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewReq.ProtoReflect.Descriptor instead.
+func (*PreviewReq) Descriptor() ([]byte, []int) {
+	return file_resourcesCenter_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *PreviewReq) GetInfoId() string {
+	if x != nil {
+		return x.InfoId
+	}
+	return ""
+}
+
+func (x *PreviewReq) GetAccountId() string {
+	if x != nil {
+		return x.AccountId
+	}
+	return ""
+}
+
+func (x *PreviewReq) GetDeductionType() string {
+	if x != nil {
+		return x.DeductionType
+	}
+	return ""
+}
+
+type PreviewRes struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code          int64  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`                   //响应代码
+	Message       string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`              //响应消息
+	RepeatNumb    int64  `protobuf:"varint,3,opt,name=repeatNumb,proto3" json:"repeatNumb,omitempty"`       //重复数量
+	DeductionNumb int64  `protobuf:"varint,4,opt,name=deductionNumb,proto3" json:"deductionNumb,omitempty"` //扣除数量
+}
+
+func (x *PreviewRes) Reset() {
+	*x = PreviewRes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_resourcesCenter_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PreviewRes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PreviewRes) ProtoMessage() {}
+
+func (x *PreviewRes) ProtoReflect() protoreflect.Message {
+	mi := &file_resourcesCenter_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PreviewRes.ProtoReflect.Descriptor instead.
+func (*PreviewRes) Descriptor() ([]byte, []int) {
+	return file_resourcesCenter_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *PreviewRes) GetCode() int64 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *PreviewRes) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *PreviewRes) GetRepeatNumb() int64 {
+	if x != nil {
+		return x.RepeatNumb
+	}
+	return 0
+}
+
+func (x *PreviewRes) GetDeductionNumb() int64 {
+	if x != nil {
+		return x.DeductionNumb
+	}
+	return 0
+}
+
 //根据账户标识查询资源权限请求参数
 //根据账户标识查询资源权限请求参数
 type ResourcesAuthRes struct {
 type ResourcesAuthRes struct {
 	state         protoimpl.MessageState
 	state         protoimpl.MessageState
@@ -669,7 +829,7 @@ type ResourcesAuthRes struct {
 func (x *ResourcesAuthRes) Reset() {
 func (x *ResourcesAuthRes) Reset() {
 	*x = ResourcesAuthRes{}
 	*x = ResourcesAuthRes{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_resourcesCenter_proto_msgTypes[7]
+		mi := &file_resourcesCenter_proto_msgTypes[9]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -682,7 +842,7 @@ func (x *ResourcesAuthRes) String() string {
 func (*ResourcesAuthRes) ProtoMessage() {}
 func (*ResourcesAuthRes) ProtoMessage() {}
 
 
 func (x *ResourcesAuthRes) ProtoReflect() protoreflect.Message {
 func (x *ResourcesAuthRes) ProtoReflect() protoreflect.Message {
-	mi := &file_resourcesCenter_proto_msgTypes[7]
+	mi := &file_resourcesCenter_proto_msgTypes[9]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -695,7 +855,7 @@ func (x *ResourcesAuthRes) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use ResourcesAuthRes.ProtoReflect.Descriptor instead.
 // Deprecated: Use ResourcesAuthRes.ProtoReflect.Descriptor instead.
 func (*ResourcesAuthRes) Descriptor() ([]byte, []int) {
 func (*ResourcesAuthRes) Descriptor() ([]byte, []int) {
-	return file_resourcesCenter_proto_rawDescGZIP(), []int{7}
+	return file_resourcesCenter_proto_rawDescGZIP(), []int{9}
 }
 }
 
 
 func (x *ResourcesAuthRes) GetCode() int64 {
 func (x *ResourcesAuthRes) GetCode() int64 {
@@ -733,7 +893,7 @@ type AccountBalanceRes struct {
 func (x *AccountBalanceRes) Reset() {
 func (x *AccountBalanceRes) Reset() {
 	*x = AccountBalanceRes{}
 	*x = AccountBalanceRes{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_resourcesCenter_proto_msgTypes[8]
+		mi := &file_resourcesCenter_proto_msgTypes[10]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -746,7 +906,7 @@ func (x *AccountBalanceRes) String() string {
 func (*AccountBalanceRes) ProtoMessage() {}
 func (*AccountBalanceRes) ProtoMessage() {}
 
 
 func (x *AccountBalanceRes) ProtoReflect() protoreflect.Message {
 func (x *AccountBalanceRes) ProtoReflect() protoreflect.Message {
-	mi := &file_resourcesCenter_proto_msgTypes[8]
+	mi := &file_resourcesCenter_proto_msgTypes[10]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -759,7 +919,7 @@ func (x *AccountBalanceRes) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use AccountBalanceRes.ProtoReflect.Descriptor instead.
 // Deprecated: Use AccountBalanceRes.ProtoReflect.Descriptor instead.
 func (*AccountBalanceRes) Descriptor() ([]byte, []int) {
 func (*AccountBalanceRes) Descriptor() ([]byte, []int) {
-	return file_resourcesCenter_proto_rawDescGZIP(), []int{8}
+	return file_resourcesCenter_proto_rawDescGZIP(), []int{10}
 }
 }
 
 
 func (x *AccountBalanceRes) GetCode() int64 {
 func (x *AccountBalanceRes) GetCode() int64 {
@@ -797,7 +957,7 @@ type ConsumeRecordRes struct {
 func (x *ConsumeRecordRes) Reset() {
 func (x *ConsumeRecordRes) Reset() {
 	*x = ConsumeRecordRes{}
 	*x = ConsumeRecordRes{}
 	if protoimpl.UnsafeEnabled {
 	if protoimpl.UnsafeEnabled {
-		mi := &file_resourcesCenter_proto_msgTypes[9]
+		mi := &file_resourcesCenter_proto_msgTypes[11]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 		ms.StoreMessageInfo(mi)
 	}
 	}
@@ -810,7 +970,7 @@ func (x *ConsumeRecordRes) String() string {
 func (*ConsumeRecordRes) ProtoMessage() {}
 func (*ConsumeRecordRes) ProtoMessage() {}
 
 
 func (x *ConsumeRecordRes) ProtoReflect() protoreflect.Message {
 func (x *ConsumeRecordRes) ProtoReflect() protoreflect.Message {
-	mi := &file_resourcesCenter_proto_msgTypes[9]
+	mi := &file_resourcesCenter_proto_msgTypes[11]
 	if protoimpl.UnsafeEnabled && x != nil {
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
 		if ms.LoadMessageInfo() == nil {
@@ -823,7 +983,7 @@ func (x *ConsumeRecordRes) ProtoReflect() protoreflect.Message {
 
 
 // Deprecated: Use ConsumeRecordRes.ProtoReflect.Descriptor instead.
 // Deprecated: Use ConsumeRecordRes.ProtoReflect.Descriptor instead.
 func (*ConsumeRecordRes) Descriptor() ([]byte, []int) {
 func (*ConsumeRecordRes) Descriptor() ([]byte, []int) {
-	return file_resourcesCenter_proto_rawDescGZIP(), []int{9}
+	return file_resourcesCenter_proto_rawDescGZIP(), []int{11}
 }
 }
 
 
 func (x *ConsumeRecordRes) GetCode() int64 {
 func (x *ConsumeRecordRes) GetCode() int64 {
@@ -871,8 +1031,8 @@ var file_resourcesCenter_proto_rawDesc = []byte{
 	0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70,
 	0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70,
 	0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
 	0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
 	0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65,
 	0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65,
-	0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0xbe,
-	0x02, 0x0a, 0x08, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61,
+	0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0xb6,
+	0x03, 0x0a, 0x08, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61,
 	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
 	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
 	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d,
 	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d,
 	0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f,
 	0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f,
@@ -883,7 +1043,7 @@ var file_resourcesCenter_proto_rawDesc = []byte{
 	0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x64,
 	0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x64,
 	0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
 	0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
 	0x52, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
 	0x52, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
-	0x16, 0x0a, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x16, 0x0a, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
 	0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72,
 	0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72,
 	0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70,
 	0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70,
 	0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54,
 	0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54,
@@ -891,101 +1051,130 @@ var file_resourcesCenter_proto_rawDesc = []byte{
 	0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e,
 	0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e,
 	0x74, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72,
 	0x74, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72,
 	0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
 	0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22,
-	0xa3, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74,
-	0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69,
-	0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49,
-	0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x49, 0x64,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x73, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x74,
-	0x69, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x12,
-	0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
-	0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
-	0x63, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
+	0x24, 0x0a, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12,
+	0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f,
+	0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
 	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70,
 	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70,
 	0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65,
 	0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65,
-	0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
-	0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e,
-	0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,
-	0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65,
-	0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xbd, 0x02,
-	0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12,
-	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12,
-	0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x12,
-	0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a,
-	0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20,
+	0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
+	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x71,
+	0x75, 0x6f, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74,
+	0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x05, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xa5, 0x01,
+	0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69,
+	0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49,
+	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a,
+	0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70,
 	0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70,
-	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12,
-	0x24, 0x0a, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a,
-	0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
-	0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70,
-	0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2c, 0x0a,
-	0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a,
-	0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x10, 0x52,
-	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x12,
-	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63,
-	0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a,
-	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65,
+	0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xbd, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
+	0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x6c, 0x6f,
+	0x79, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6d, 0x70,
+	0x6c, 0x6f, 0x79, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61,
+	0x6e, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70,
+	0x61, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70,
+	0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78,
+	0x70, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
+	0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a,
+	0x06, 0x72, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72,
+	0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x54,
+	0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72,
+	0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70,
+	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x49,
+	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d,
+	0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x49, 0x64, 0x22, 0x68, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65,
+	0x71, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x66, 0x6f, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x69, 0x6e, 0x66, 0x6f, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63,
+	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+	0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x80, 0x01,
+	0x0a, 0x0a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04,
+	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
+	0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65,
+	0x70, 0x65, 0x61, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65,
+	0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0d, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62,
+	0x22, 0x74, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74,
+	0x68, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1e, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74,
+	0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68,
+	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x77, 0x0a, 0x11, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63,
+	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12,
+	0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74,
+	0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
+	0x74, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
+	0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x1e, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65,
+	0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52,
+	0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xfd, 0x03, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x11, 0x66, 0x69, 0x6e,
+	0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1d,
+	0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72,
+	0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e,
+	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e,
+	0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73,
+	0x12, 0x57, 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x11, 0x66, 0x69, 0x6e,
+	0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1d,
+	0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72,
+	0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e,
+	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e,
+	0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73,
+	0x12, 0x48, 0x0a, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61,
+	0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a,
+	0x19, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65,
+	0x72, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x75, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64,
+	0x12, 0x19, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74,
+	0x65, 0x72, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x1a, 0x19, 0x2e, 0x72, 0x65,
 	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65,
 	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65,
-	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x64, 0x61, 0x74,
-	0x61, 0x22, 0x77, 0x0a, 0x11, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61,
-	0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65,
-	0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x61, 0x6c,
-	0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x74, 0x0a, 0x10, 0x43, 0x6f,
-	0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x12, 0x12,
-	0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f,
-	0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x04,
-	0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x73,
-	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e,
-	0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
-	0x32, 0xae, 0x03, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65,
-	0x6e, 0x74, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
-	0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75,
-	0x72, 0x63, 0x65, 0x73, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x12, 0x66,
-	0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
-	0x65, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e,
-	0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71,
-	0x1a, 0x22, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74,
-	0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
-	0x65, 0x52, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x73,
-	0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1d, 0x2e, 0x72, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
-	0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75,
-	0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x11, 0x75,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
-	0x12, 0x18, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74,
-	0x65, 0x72, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x73,
-	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55,
-	0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x19, 0x2e, 0x72, 0x65,
-	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x65,
-	0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x64, 0x50, 0x72,
+	0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52,
+	0x65, 0x71, 0x1a, 0x21, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x65,
+	0x6e, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x6f,
+	0x72, 0x64, 0x52, 0x65, 0x73, 0x42, 0x12, 0x5a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x73, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x33,
 }
 }
 
 
 var (
 var (
@@ -1000,7 +1189,7 @@ func file_resourcesCenter_proto_rawDescGZIP() []byte {
 	return file_resourcesCenter_proto_rawDescData
 	return file_resourcesCenter_proto_rawDescData
 }
 }
 
 
-var file_resourcesCenter_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_resourcesCenter_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
 var file_resourcesCenter_proto_goTypes = []interface{}{
 var file_resourcesCenter_proto_goTypes = []interface{}{
 	(*Response)(nil),          // 0: resourcesCenter.Response
 	(*Response)(nil),          // 0: resourcesCenter.Response
 	(*Balance)(nil),           // 1: resourcesCenter.Balance
 	(*Balance)(nil),           // 1: resourcesCenter.Balance
@@ -1009,29 +1198,33 @@ var file_resourcesCenter_proto_goTypes = []interface{}{
 	(*ResourceBalance)(nil),   // 4: resourcesCenter.ResourceBalance
 	(*ResourceBalance)(nil),   // 4: resourcesCenter.ResourceBalance
 	(*ConsumeRecord)(nil),     // 5: resourcesCenter.ConsumeRecord
 	(*ConsumeRecord)(nil),     // 5: resourcesCenter.ConsumeRecord
 	(*ResourcesReq)(nil),      // 6: resourcesCenter.ResourcesReq
 	(*ResourcesReq)(nil),      // 6: resourcesCenter.ResourcesReq
-	(*ResourcesAuthRes)(nil),  // 7: resourcesCenter.ResourcesAuthRes
-	(*AccountBalanceRes)(nil), // 8: resourcesCenter.AccountBalanceRes
-	(*ConsumeRecordRes)(nil),  // 9: resourcesCenter.ConsumeRecordRes
+	(*PreviewReq)(nil),        // 7: resourcesCenter.PreviewReq
+	(*PreviewRes)(nil),        // 8: resourcesCenter.PreviewRes
+	(*ResourcesAuthRes)(nil),  // 9: resourcesCenter.ResourcesAuthRes
+	(*AccountBalanceRes)(nil), // 10: resourcesCenter.AccountBalanceRes
+	(*ConsumeRecordRes)(nil),  // 11: resourcesCenter.ConsumeRecordRes
 }
 }
 var file_resourcesCenter_proto_depIdxs = []int32{
 var file_resourcesCenter_proto_depIdxs = []int32{
-	3, // 0: resourcesCenter.ResourcesAuthRes.data:type_name -> resourcesCenter.ResourcesAuth
-	4, // 1: resourcesCenter.AccountBalanceRes.data:type_name -> resourcesCenter.ResourceBalance
-	5, // 2: resourcesCenter.ConsumeRecordRes.data:type_name -> resourcesCenter.ConsumeRecord
-	6, // 3: resourcesCenter.ResourcesCenter.findResourcesAuth:input_type -> resourcesCenter.ResourcesReq
-	6, // 4: resourcesCenter.ResourcesCenter.findAccountBalance:input_type -> resourcesCenter.ResourcesReq
-	6, // 5: resourcesCenter.ResourcesCenter.findConsumeRecord:input_type -> resourcesCenter.ResourcesReq
-	1, // 6: resourcesCenter.ResourcesCenter.updateUserBalance:input_type -> resourcesCenter.Balance
-	2, // 7: resourcesCenter.ResourcesCenter.updateUserDetailed:input_type -> resourcesCenter.Detailed
-	7, // 8: resourcesCenter.ResourcesCenter.findResourcesAuth:output_type -> resourcesCenter.ResourcesAuthRes
-	8, // 9: resourcesCenter.ResourcesCenter.findAccountBalance:output_type -> resourcesCenter.AccountBalanceRes
-	9, // 10: resourcesCenter.ResourcesCenter.findConsumeRecord:output_type -> resourcesCenter.ConsumeRecordRes
-	0, // 11: resourcesCenter.ResourcesCenter.updateUserBalance:output_type -> resourcesCenter.Response
-	0, // 12: resourcesCenter.ResourcesCenter.updateUserDetailed:output_type -> resourcesCenter.Response
-	8, // [8:13] is the sub-list for method output_type
-	3, // [3:8] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
+	3,  // 0: resourcesCenter.ResourcesAuthRes.data:type_name -> resourcesCenter.ResourcesAuth
+	4,  // 1: resourcesCenter.AccountBalanceRes.data:type_name -> resourcesCenter.ResourceBalance
+	5,  // 2: resourcesCenter.ConsumeRecordRes.data:type_name -> resourcesCenter.ConsumeRecord
+	6,  // 3: resourcesCenter.ResourcesCenter.findResourcesAuth:input_type -> resourcesCenter.ResourcesReq
+	6,  // 4: resourcesCenter.ResourcesCenter.findAccountBalance:input_type -> resourcesCenter.ResourcesReq
+	6,  // 5: resourcesCenter.ResourcesCenter.findConsumeRecord:input_type -> resourcesCenter.ResourcesReq
+	1,  // 6: resourcesCenter.ResourcesCenter.updateUserBalance:input_type -> resourcesCenter.Balance
+	2,  // 7: resourcesCenter.ResourcesCenter.updateUserDetailed:input_type -> resourcesCenter.Detailed
+	7,  // 8: resourcesCenter.ResourcesCenter.findPreview:input_type -> resourcesCenter.PreviewReq
+	9,  // 9: resourcesCenter.ResourcesCenter.findResourcesAuth:output_type -> resourcesCenter.ResourcesAuthRes
+	10, // 10: resourcesCenter.ResourcesCenter.findAccountBalance:output_type -> resourcesCenter.AccountBalanceRes
+	11, // 11: resourcesCenter.ResourcesCenter.findConsumeRecord:output_type -> resourcesCenter.ConsumeRecordRes
+	0,  // 12: resourcesCenter.ResourcesCenter.updateUserBalance:output_type -> resourcesCenter.Response
+	0,  // 13: resourcesCenter.ResourcesCenter.updateUserDetailed:output_type -> resourcesCenter.Response
+	11, // 14: resourcesCenter.ResourcesCenter.findPreview:output_type -> resourcesCenter.ConsumeRecordRes
+	9,  // [9:15] is the sub-list for method output_type
+	3,  // [3:9] is the sub-list for method input_type
+	3,  // [3:3] is the sub-list for extension type_name
+	3,  // [3:3] is the sub-list for extension extendee
+	0,  // [0:3] is the sub-list for field type_name
 }
 }
 
 
 func init() { file_resourcesCenter_proto_init() }
 func init() { file_resourcesCenter_proto_init() }
@@ -1125,7 +1318,7 @@ func file_resourcesCenter_proto_init() {
 			}
 			}
 		}
 		}
 		file_resourcesCenter_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
 		file_resourcesCenter_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ResourcesAuthRes); i {
+			switch v := v.(*PreviewReq); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -1137,7 +1330,7 @@ func file_resourcesCenter_proto_init() {
 			}
 			}
 		}
 		}
 		file_resourcesCenter_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
 		file_resourcesCenter_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AccountBalanceRes); i {
+			switch v := v.(*PreviewRes); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
 			case 1:
 			case 1:
@@ -1149,6 +1342,30 @@ func file_resourcesCenter_proto_init() {
 			}
 			}
 		}
 		}
 		file_resourcesCenter_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
 		file_resourcesCenter_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResourcesAuthRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_resourcesCenter_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AccountBalanceRes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_resourcesCenter_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*ConsumeRecordRes); i {
 			switch v := v.(*ConsumeRecordRes); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state
@@ -1167,7 +1384,7 @@ func file_resourcesCenter_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_resourcesCenter_proto_rawDesc,
 			RawDescriptor: file_resourcesCenter_proto_rawDesc,
 			NumEnums:      0,
 			NumEnums:      0,
-			NumMessages:   10,
+			NumMessages:   12,
 			NumExtensions: 0,
 			NumExtensions: 0,
 			NumServices:   1,
 			NumServices:   1,
 		},
 		},
@@ -1203,6 +1420,8 @@ type ResourcesCenterClient interface {
 	UpdateUserBalance(ctx context.Context, in *Balance, opts ...grpc.CallOption) (*Response, error)
 	UpdateUserBalance(ctx context.Context, in *Balance, opts ...grpc.CallOption) (*Response, error)
 	//根据账户标识记录资源使用流水账
 	//根据账户标识记录资源使用流水账
 	UpdateUserDetailed(ctx context.Context, in *Detailed, opts ...grpc.CallOption) (*Response, error)
 	UpdateUserDetailed(ctx context.Context, in *Detailed, opts ...grpc.CallOption) (*Response, error)
+	//预览信息
+	FindPreview(ctx context.Context, in *PreviewReq, opts ...grpc.CallOption) (*ConsumeRecordRes, error)
 }
 }
 
 
 type resourcesCenterClient struct {
 type resourcesCenterClient struct {
@@ -1258,6 +1477,15 @@ func (c *resourcesCenterClient) UpdateUserDetailed(ctx context.Context, in *Deta
 	return out, nil
 	return out, nil
 }
 }
 
 
+func (c *resourcesCenterClient) FindPreview(ctx context.Context, in *PreviewReq, opts ...grpc.CallOption) (*ConsumeRecordRes, error) {
+	out := new(ConsumeRecordRes)
+	err := c.cc.Invoke(ctx, "/resourcesCenter.ResourcesCenter/findPreview", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // ResourcesCenterServer is the server API for ResourcesCenter service.
 // ResourcesCenterServer is the server API for ResourcesCenter service.
 type ResourcesCenterServer interface {
 type ResourcesCenterServer interface {
 	//查询账户资源权限
 	//查询账户资源权限
@@ -1270,6 +1498,8 @@ type ResourcesCenterServer interface {
 	UpdateUserBalance(context.Context, *Balance) (*Response, error)
 	UpdateUserBalance(context.Context, *Balance) (*Response, error)
 	//根据账户标识记录资源使用流水账
 	//根据账户标识记录资源使用流水账
 	UpdateUserDetailed(context.Context, *Detailed) (*Response, error)
 	UpdateUserDetailed(context.Context, *Detailed) (*Response, error)
+	//预览信息
+	FindPreview(context.Context, *PreviewReq) (*ConsumeRecordRes, error)
 }
 }
 
 
 // UnimplementedResourcesCenterServer can be embedded to have forward compatible implementations.
 // UnimplementedResourcesCenterServer can be embedded to have forward compatible implementations.
@@ -1291,6 +1521,9 @@ func (*UnimplementedResourcesCenterServer) UpdateUserBalance(context.Context, *B
 func (*UnimplementedResourcesCenterServer) UpdateUserDetailed(context.Context, *Detailed) (*Response, error) {
 func (*UnimplementedResourcesCenterServer) UpdateUserDetailed(context.Context, *Detailed) (*Response, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method UpdateUserDetailed not implemented")
 	return nil, status.Errorf(codes.Unimplemented, "method UpdateUserDetailed not implemented")
 }
 }
+func (*UnimplementedResourcesCenterServer) FindPreview(context.Context, *PreviewReq) (*ConsumeRecordRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method FindPreview not implemented")
+}
 
 
 func RegisterResourcesCenterServer(s *grpc.Server, srv ResourcesCenterServer) {
 func RegisterResourcesCenterServer(s *grpc.Server, srv ResourcesCenterServer) {
 	s.RegisterService(&_ResourcesCenter_serviceDesc, srv)
 	s.RegisterService(&_ResourcesCenter_serviceDesc, srv)
@@ -1386,6 +1619,24 @@ func _ResourcesCenter_UpdateUserDetailed_Handler(srv interface{}, ctx context.Co
 	return interceptor(ctx, in, info, handler)
 	return interceptor(ctx, in, info, handler)
 }
 }
 
 
+func _ResourcesCenter_FindPreview_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PreviewReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ResourcesCenterServer).FindPreview(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/resourcesCenter.ResourcesCenter/FindPreview",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ResourcesCenterServer).FindPreview(ctx, req.(*PreviewReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _ResourcesCenter_serviceDesc = grpc.ServiceDesc{
 var _ResourcesCenter_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "resourcesCenter.ResourcesCenter",
 	ServiceName: "resourcesCenter.ResourcesCenter",
 	HandlerType: (*ResourcesCenterServer)(nil),
 	HandlerType: (*ResourcesCenterServer)(nil),
@@ -1410,6 +1661,10 @@ var _ResourcesCenter_serviceDesc = grpc.ServiceDesc{
 			MethodName: "updateUserDetailed",
 			MethodName: "updateUserDetailed",
 			Handler:    _ResourcesCenter_UpdateUserDetailed_Handler,
 			Handler:    _ResourcesCenter_UpdateUserDetailed_Handler,
 		},
 		},
+		{
+			MethodName: "findPreview",
+			Handler:    _ResourcesCenter_FindPreview_Handler,
+		},
 	},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "resourcesCenter.proto",
 	Metadata: "resourcesCenter.proto",

+ 17 - 7
rpc/resourcesCenterclient/resourcescenter.go

@@ -1,9 +1,9 @@
 // Code generated by goctl. DO NOT EDIT!
 // Code generated by goctl. DO NOT EDIT!
 // Source: resourcesCenter.proto
 // Source: resourcesCenter.proto
 
 
-//go:generate mockgen -destination ./resourcescenter_mock.go -package resourcescenterclient -source $GOFILE
+//go:generate mockgen -destination ./resourcescenter_mock.go -package resourcescenter -source $GOFILE
 
 
-package resourcescenterclient
+package resourcesCenterclient
 
 
 import (
 import (
 	"context"
 	"context"
@@ -14,16 +14,18 @@ import (
 )
 )
 
 
 type (
 type (
+	ResourceBalance   = resourcesCenter.ResourceBalance
+	ResourcesReq      = resourcesCenter.ResourcesReq
 	ResourcesAuthRes  = resourcesCenter.ResourcesAuthRes
 	ResourcesAuthRes  = resourcesCenter.ResourcesAuthRes
+	AccountBalanceRes = resourcesCenter.AccountBalanceRes
+	Response          = resourcesCenter.Response
 	Balance           = resourcesCenter.Balance
 	Balance           = resourcesCenter.Balance
-	ResourcesAuth     = resourcesCenter.ResourcesAuth
 	ConsumeRecord     = resourcesCenter.ConsumeRecord
 	ConsumeRecord     = resourcesCenter.ConsumeRecord
-	ResourcesReq      = resourcesCenter.ResourcesReq
+	PreviewReq        = resourcesCenter.PreviewReq
+	PreviewRes        = resourcesCenter.PreviewRes
 	ConsumeRecordRes  = resourcesCenter.ConsumeRecordRes
 	ConsumeRecordRes  = resourcesCenter.ConsumeRecordRes
-	Response          = resourcesCenter.Response
 	Detailed          = resourcesCenter.Detailed
 	Detailed          = resourcesCenter.Detailed
-	ResourceBalance   = resourcesCenter.ResourceBalance
-	AccountBalanceRes = resourcesCenter.AccountBalanceRes
+	ResourcesAuth     = resourcesCenter.ResourcesAuth
 
 
 	ResourcesCenter interface {
 	ResourcesCenter interface {
 		// 查询账户资源权限
 		// 查询账户资源权限
@@ -36,6 +38,8 @@ type (
 		UpdateUserBalance(ctx context.Context, in *Balance) (*Response, error)
 		UpdateUserBalance(ctx context.Context, in *Balance) (*Response, error)
 		// 根据账户标识记录资源使用流水账
 		// 根据账户标识记录资源使用流水账
 		UpdateUserDetailed(ctx context.Context, in *Detailed) (*Response, error)
 		UpdateUserDetailed(ctx context.Context, in *Detailed) (*Response, error)
+		// 预览信息
+		FindPreview(ctx context.Context, in *PreviewReq) (*ConsumeRecordRes, error)
 	}
 	}
 
 
 	defaultResourcesCenter struct {
 	defaultResourcesCenter struct {
@@ -78,3 +82,9 @@ func (m *defaultResourcesCenter) UpdateUserDetailed(ctx context.Context, in *Det
 	client := resourcesCenter.NewResourcesCenterClient(m.cli.Conn())
 	client := resourcesCenter.NewResourcesCenterClient(m.cli.Conn())
 	return client.UpdateUserDetailed(ctx, in)
 	return client.UpdateUserDetailed(ctx, in)
 }
 }
+
+// 预览信息
+func (m *defaultResourcesCenter) FindPreview(ctx context.Context, in *PreviewReq) (*ConsumeRecordRes, error) {
+	client := resourcesCenter.NewResourcesCenterClient(m.cli.Conn())
+	return client.FindPreview(ctx, in)
+}