Ver código fonte

wip:详细信息

wangshan 9 meses atrás
pai
commit
d4b0981787

+ 8 - 0
jyBXCore/rpc/bxcore.proto

@@ -710,6 +710,14 @@ message  PurchaseList {
   string deadlineTime = 13;//报名截止时间-展示年月日时分,例如:2024-10-01 10:00
   string deliveryLoc = 14;//交付地点
   string industry = 15;//行业标签
+  string buyerPerson = 16;//采购单位联系人
+  string agency = 17;//代理机构
+  string agencyPerson = 18;//代理机构联系人
+  string agencyTel = 19;//代理机构联系电话
+  repeated WinnerInfo winnerInfo = 20;//中标企业信息
+  int64 bidOpenTime = 21;//开标时间
+  int64 signEndTime = 22;//报名截止时间
+  int64 bidEndTime = 23;//投标截止时间
 }
 //
 service BxCore {

+ 1 - 0
jyBXCore/rpc/model/es/es.go

@@ -45,6 +45,7 @@ const (
 	PurchaseIndex, PurchaseType = "bidding_yg", "bidding_yg"
 	PurchaseBaseField           = `"_id","title","area","city","district","buyerclass","publishtime","isValidFile","budget","bidamount","signendtime","deliver_area","deliver_city","deliver_district","buyer","buyertel","s_subscopeclass","public_type","purchasing","purchasinglist","projectname","spidercode","subtype"`
 	PurchaseSearchSort          = `{"dataweight":-1,"publishtime":-1}`
+	PurchaseBaseFieldForPayer   = PurchaseBaseField + `,"buyerperson","agency","agencytel","agencyperson","s_winner","winnertel","winnerperson","signendtime","bidendtime","projectinfo","entidlist"`
 )
 
 var (

+ 50 - 5
jyBXCore/rpc/service/purchase.go

@@ -7,6 +7,7 @@ import (
 	elastic "app.yhyue.com/moapp/jybase/es"
 	"app.yhyue.com/moapp/jybase/redis"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/entity"
 	IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/init"
 	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/model/es"
 	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/type/bxcore"
@@ -187,6 +188,42 @@ func (p *Purchase) PurchaseListFormat(res []map[string]interface{}) (list []*bxc
 			buyerTel = MC.InterfaceToStr(rv["buyertel"])
 		}
 		isValidFile, _ := rv["isValidFile"].(bool)
+		buyerPerson := MC.InterfaceToStr(rv["buyerperson"])
+		agency := MC.InterfaceToStr(rv["agency"])
+		agencyTel := MC.InterfaceToStr(rv["agencytel"])
+		agencyPerson := MC.InterfaceToStr(rv["agencyperson"])
+		//s_winner := MC.InterfaceToStr(rv["s_winner"])
+		//winnertel := MC.InterfaceToStr(rv["winnertel"])
+		//winnerperson := MC.InterfaceToStr(rv["winnerperson"])
+		//entidlist := MC.InterfaceToStr(rv["entidlist"])
+		//projectinfo := MC.InterfaceToStr(rv["projectinfo"])
+		//中标信息
+		var winnerInfo []*bxcore.WinnerInfo
+		winnerList := MC.ObjToString(rv["s_winner"]) //中标企业名称集合
+		if winnerList != "" && len(strings.Split(winnerList, ",")) > 0 {
+			for wk, wv := range strings.Split(winnerList, ",") {
+				var (
+					winnerId = ""
+				)
+				if rv["entidlist"] != nil {
+					if entIdList := MC.ObjArrToStringArr(rv["entidlist"].([]interface{})); len(entIdList) > wk { //中标企业id集合
+						winnerId = entIdList[wk]
+					}
+				}
+				if IC.C.SearchWinner.Switch && winnerId == "" {
+					continue
+				}
+				if entity.RegWinner.MatchString(wv) {
+					continue
+				}
+				winnerInfo = append(winnerInfo, &bxcore.WinnerInfo{
+					Winner:       wv,                                                                                                          //中标企业 需要单独处理
+					WinnerTel:    MC.ObjToString(rv["winnertel"]),                                                                             //中标企业联系电话
+					WinnerPerson: MC.ObjToString(rv["winnerperson"]),                                                                          //中标企业联系人
+					WinnerId:     MC.If(winnerId != "" && len([]rune(winnerId)) > 12, encrypt.EncodeArticleId2ByCheck(winnerId), "").(string), //中标企业加密id  存在winnerId 异常的情况
+				})
+			}
+		}
 		list = append(list, &bxcore.PurchaseList{
 			Id:           encrypt.EncodeArticleId2ByCheck(id),
 			Area:         MC.InterfaceToStr(rv["area"]),
@@ -203,6 +240,13 @@ func (p *Purchase) PurchaseListFormat(res []map[string]interface{}) (list []*bxc
 			DeadlineTime: signEndTime,
 			DeliveryLoc:  deliveryLoc,
 			Industry:     util.IndustryFormat(p.Industry, strings.Trim(MC.ObjToString(rv["s_subscopeclass"]), ",")),
+			BuyerPerson:  buyerPerson,
+			Agency:       agency,
+			AgencyTel:    agencyTel,
+			AgencyPerson: agencyPerson,
+			WinnerInfo:   winnerInfo,
+			BidEndTime:   MC.Int64All(rv["bidendtime"]),
+			BidOpenTime:  MC.Int64All(rv["bidopentime"]), //开标时间,
 		})
 	}
 	return
@@ -386,10 +430,11 @@ func (p *Purchase) PurchaseQuery() (query string) {
 
 func (p *Purchase) FindDataFromES() (int64, []map[string]interface{}, error) {
 	var (
-		start = int((p.PageNum - 1) * p.PageSize)
-		total int64
-		list  *[]map[string]interface{}
-		err   error
+		start  = int((p.PageNum - 1) * p.PageSize)
+		total  int64
+		list   *[]map[string]interface{}
+		err    error
+		fields = es.PurchaseBaseFieldForPayer
 	)
 	biddingSearch := es.SearchByES{
 		Index:      es.PurchaseIndex,
@@ -397,7 +442,7 @@ func (p *Purchase) FindDataFromES() (int64, []map[string]interface{}, error) {
 		Query:      p.PurchaseQuery(),
 		FindFields: p.SelectType,
 		Order:      es.PurchaseSearchSort,
-		Fields:     es.PurchaseBaseField,
+		Fields:     fields,
 		Start:      start,
 		Limit:      int(p.PageSize),
 		Count:      0,     //高亮正文数量

+ 220 - 138
jyBXCore/rpc/type/bxcore/bxcore.pb.go

@@ -6559,21 +6559,29 @@ type PurchaseList struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Id           string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                      //信息id
-	Area         string `protobuf:"bytes,2,opt,name=area,proto3" json:"area,omitempty"`                  //地区
-	City         string `protobuf:"bytes,3,opt,name=city,proto3" json:"city,omitempty"`                  //城市
-	District     string `protobuf:"bytes,4,opt,name=district,proto3" json:"district,omitempty"`          // 区县
-	RegionUrl    string `protobuf:"bytes,5,opt,name=regionUrl,proto3" json:"regionUrl,omitempty"`        //地区标签地址
-	BuyerClass   string `protobuf:"bytes,6,opt,name=buyerClass,proto3" json:"buyerClass,omitempty"`      //采购单位类型
-	PublishTime  int64  `protobuf:"varint,7,opt,name=publishTime,proto3" json:"publishTime,omitempty"`   //发布时间
-	FileExists   bool   `protobuf:"varint,8,opt,name=fileExists,proto3" json:"fileExists,omitempty"`     //是否有附件
-	Title        string `protobuf:"bytes,9,opt,name=title,proto3" json:"title,omitempty"`                //标题
-	Price        int64  `protobuf:"varint,10,opt,name=price,proto3" json:"price,omitempty"`              //预算 or 中标金额
-	Buyer        string `protobuf:"bytes,11,opt,name=buyer,proto3" json:"buyer,omitempty"`               //采购单位
-	BuyerTel     string `protobuf:"bytes,12,opt,name=buyerTel,proto3" json:"buyerTel,omitempty"`         //采购单位联系电话
-	DeadlineTime string `protobuf:"bytes,13,opt,name=deadlineTime,proto3" json:"deadlineTime,omitempty"` //报名截止时间-展示年月日时分,例如:2024-10-01 10:00
-	DeliveryLoc  string `protobuf:"bytes,14,opt,name=deliveryLoc,proto3" json:"deliveryLoc,omitempty"`   //交付地点
-	Industry     string `protobuf:"bytes,15,opt,name=industry,proto3" json:"industry,omitempty"`         //行业标签
+	Id           string        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                      //信息id
+	Area         string        `protobuf:"bytes,2,opt,name=area,proto3" json:"area,omitempty"`                  //地区
+	City         string        `protobuf:"bytes,3,opt,name=city,proto3" json:"city,omitempty"`                  //城市
+	District     string        `protobuf:"bytes,4,opt,name=district,proto3" json:"district,omitempty"`          // 区县
+	RegionUrl    string        `protobuf:"bytes,5,opt,name=regionUrl,proto3" json:"regionUrl,omitempty"`        //地区标签地址
+	BuyerClass   string        `protobuf:"bytes,6,opt,name=buyerClass,proto3" json:"buyerClass,omitempty"`      //采购单位类型
+	PublishTime  int64         `protobuf:"varint,7,opt,name=publishTime,proto3" json:"publishTime,omitempty"`   //发布时间
+	FileExists   bool          `protobuf:"varint,8,opt,name=fileExists,proto3" json:"fileExists,omitempty"`     //是否有附件
+	Title        string        `protobuf:"bytes,9,opt,name=title,proto3" json:"title,omitempty"`                //标题
+	Price        int64         `protobuf:"varint,10,opt,name=price,proto3" json:"price,omitempty"`              //预算 or 中标金额
+	Buyer        string        `protobuf:"bytes,11,opt,name=buyer,proto3" json:"buyer,omitempty"`               //采购单位
+	BuyerTel     string        `protobuf:"bytes,12,opt,name=buyerTel,proto3" json:"buyerTel,omitempty"`         //采购单位联系电话
+	DeadlineTime string        `protobuf:"bytes,13,opt,name=deadlineTime,proto3" json:"deadlineTime,omitempty"` //报名截止时间-展示年月日时分,例如:2024-10-01 10:00
+	DeliveryLoc  string        `protobuf:"bytes,14,opt,name=deliveryLoc,proto3" json:"deliveryLoc,omitempty"`   //交付地点
+	Industry     string        `protobuf:"bytes,15,opt,name=industry,proto3" json:"industry,omitempty"`         //行业标签
+	BuyerPerson  string        `protobuf:"bytes,16,opt,name=buyerPerson,proto3" json:"buyerPerson,omitempty"`   //采购单位联系人
+	Agency       string        `protobuf:"bytes,17,opt,name=agency,proto3" json:"agency,omitempty"`             //代理机构
+	AgencyPerson string        `protobuf:"bytes,18,opt,name=agencyPerson,proto3" json:"agencyPerson,omitempty"` //代理机构联系人
+	AgencyTel    string        `protobuf:"bytes,19,opt,name=agencyTel,proto3" json:"agencyTel,omitempty"`       //代理机构联系电话
+	WinnerInfo   []*WinnerInfo `protobuf:"bytes,20,rep,name=winnerInfo,proto3" json:"winnerInfo,omitempty"`     //中标企业信息
+	BidOpenTime  int64         `protobuf:"varint,21,opt,name=bidOpenTime,proto3" json:"bidOpenTime,omitempty"`  //开标时间
+	SignEndTime  int64         `protobuf:"varint,22,opt,name=signEndTime,proto3" json:"signEndTime,omitempty"`  //报名截止时间
+	BidEndTime   int64         `protobuf:"varint,23,opt,name=bidEndTime,proto3" json:"bidEndTime,omitempty"`    //投标截止时间
 }
 
 func (x *PurchaseList) Reset() {
@@ -6713,6 +6721,62 @@ func (x *PurchaseList) GetIndustry() string {
 	return ""
 }
 
+func (x *PurchaseList) GetBuyerPerson() string {
+	if x != nil {
+		return x.BuyerPerson
+	}
+	return ""
+}
+
+func (x *PurchaseList) GetAgency() string {
+	if x != nil {
+		return x.Agency
+	}
+	return ""
+}
+
+func (x *PurchaseList) GetAgencyPerson() string {
+	if x != nil {
+		return x.AgencyPerson
+	}
+	return ""
+}
+
+func (x *PurchaseList) GetAgencyTel() string {
+	if x != nil {
+		return x.AgencyTel
+	}
+	return ""
+}
+
+func (x *PurchaseList) GetWinnerInfo() []*WinnerInfo {
+	if x != nil {
+		return x.WinnerInfo
+	}
+	return nil
+}
+
+func (x *PurchaseList) GetBidOpenTime() int64 {
+	if x != nil {
+		return x.BidOpenTime
+	}
+	return 0
+}
+
+func (x *PurchaseList) GetSignEndTime() int64 {
+	if x != nil {
+		return x.SignEndTime
+	}
+	return 0
+}
+
+func (x *PurchaseList) GetBidEndTime() int64 {
+	if x != nil {
+		return x.BidEndTime
+	}
+	return 0
+}
+
 var File_bxcore_proto protoreflect.FileDescriptor
 
 var file_bxcore_proto_rawDesc = []byte{
@@ -7754,7 +7818,7 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a,
 	0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x78,
 	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xa2, 0x03, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x63,
+	0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xb6, 0x05, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x63,
 	0x68, 0x61, 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61,
 	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x12, 0x0a, 0x04,
@@ -7780,93 +7844,110 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x63, 0x18, 0x0e, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x63,
 	0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x32, 0xc1, 0x0a, 0x0a,
-	0x06, 0x42, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65,
-	0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12,
-	0x3e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69,
-	0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
-	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12,
-	0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68,
-	0x6f, 0x77, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74,
-	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1a,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61,
-	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e,
+	0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b,
+	0x62, 0x75, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0b, 0x62, 0x75, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x16,
+	0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+	0x61, 0x67, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x63, 0x79,
+	0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x67,
+	0x65, 0x6e, 0x63, 0x79, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x67,
+	0x65, 0x6e, 0x63, 0x79, 0x54, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61,
+	0x67, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x65, 0x6c, 0x12, 0x32, 0x0a, 0x0a, 0x77, 0x69, 0x6e, 0x6e,
+	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x0a, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b,
+	0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20,
+	0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x16, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x17,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x32, 0xc1, 0x0a, 0x0a, 0x06, 0x42, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47,
+	0x65, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a,
+	0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d,
+	0x69, 0x74, 0x12, 0x16, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63,
+	0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52,
+	0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x49,
+	0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66,
+	0x6f, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e,
 	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
-	0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42,
-	0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x55, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
 	0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x55, 0x70,
-	0x64, 0x61, 0x74, 0x65, 0x42, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
-	0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43,
-	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
-	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
-	0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
-	0x74, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52,
-	0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65,
-	0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74,
-	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x1d,
+	0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63,
+	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43,
+	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f,
+	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d,
 	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e,
+	0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e,
 	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
-	0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14,
-	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70,
-	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
-	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
-	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69,
-	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63,
+	0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12,
+	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+	0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73,
+	0x12, 0x58, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53,
+	0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74,
+	0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65,
+	0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
+	0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a,
+	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63,
 	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c,
-	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
-	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
-	0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74,
-	0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a,
-	0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x53, 0x74, 0x61,
-	0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x12, 0x50,
-	0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
-	0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61,
-	0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53,
-	0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73,
-	0x12, 0x4d, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x79, 0x6d, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65,
-	0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f,
-	0x6c, 0x79, 0x6d, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
-	0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x79, 0x6d,
-	0x65, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12,
-	0x42, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
-	0x73, 0x12, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x62,
-	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61,
-	0x52, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x53,
-	0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x11, 0x2e,
-	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71,
-	0x1a, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
-	0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x52, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0c, 0x53,
-	0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x1a,
+	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68, 0x53, 0x74,
+	0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x75, 0x73,
+	0x68, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52,
+	0x65, 0x73, 0x12, 0x50, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61,
+	0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x1a, 0x20, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x6a,
+	0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x44, 0x61, 0x74,
+	0x61, 0x52, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x79, 0x6d, 0x65, 0x72, 0x69,
+	0x7a, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x79, 0x6d, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
+	0x6f, 0x6c, 0x79, 0x6d, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x42, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65,
+	0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71,
+	0x1a, 0x15, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+	0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x70, 0x65,
+	0x72, 0x74, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69,
+	0x61, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x52, 0x65, 0x73, 0x12,
+	0x36, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x12,
 	0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x73,
-	0x52, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x53,
-	0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x13, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
-	0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x62, 0x78, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
-	0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33,
+	0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x6f, 0x74,
+	0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x50, 0x75, 0x72, 0x63, 0x68,
+	0x61, 0x73, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x13, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14,
+	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -7983,47 +8064,48 @@ var file_bxcore_proto_depIdxs = []int32{
 	56, // 32: bxcore.MenuList.tipInfo:type_name -> bxcore.TipInfo
 	61, // 33: bxcore.PurchaseResp.data:type_name -> bxcore.PurchaseData
 	62, // 34: bxcore.PurchaseData.list:type_name -> bxcore.PurchaseList
-	0,  // 35: bxcore.BxCore.GetSearchList:input_type -> bxcore.SearchReq
-	7,  // 36: bxcore.BxCore.SearchLimit:input_type -> bxcore.SearchLimitReq
-	9,  // 37: bxcore.BxCore.ParticipateShow:input_type -> bxcore.ParticipateShowReq
-	12, // 38: bxcore.BxCore.ParticipateInfo:input_type -> bxcore.ParticipateInfoReq
-	15, // 39: bxcore.BxCore.UpdateBidStatus:input_type -> bxcore.UpdateBidStatusReq
-	17, // 40: bxcore.BxCore.ParticipateContent:input_type -> bxcore.ParticipateContentReq
-	20, // 41: bxcore.BxCore.ParticipateRecords:input_type -> bxcore.ParticipateRecordsReq
-	24, // 42: bxcore.BxCore.ParticipatePersons:input_type -> bxcore.ParticipatePersonsReq
-	27, // 43: bxcore.BxCore.ParticipateSetUpInfo:input_type -> bxcore.ParticipateSetUpInfoReq
-	32, // 44: bxcore.BxCore.ParticipateAction:input_type -> bxcore.ParticipateActionReq
-	34, // 45: bxcore.BxCore.ParticipateList:input_type -> bxcore.ParticipateListReq
-	38, // 46: bxcore.BxCore.PushStatistics:input_type -> bxcore.StatisticsListReq
-	38, // 47: bxcore.BxCore.ProjectStatistics:input_type -> bxcore.StatisticsListReq
-	50, // 48: bxcore.BxCore.PolymerizeSearch:input_type -> bxcore.PolymerizeSearchReq
-	39, // 49: bxcore.BxCore.ProjectDetails:input_type -> bxcore.ProjectDetailsReq
-	0,  // 50: bxcore.BxCore.PropertySearchCriteria:input_type -> bxcore.SearchReq
-	57, // 51: bxcore.BxCore.SearchHotKey:input_type -> bxcore.HotKeysReq
-	59, // 52: bxcore.BxCore.PurchaseSearch:input_type -> bxcore.PurchaseReq
-	1,  // 53: bxcore.BxCore.GetSearchList:output_type -> bxcore.SearchResp
-	8,  // 54: bxcore.BxCore.SearchLimit:output_type -> bxcore.SearchLimitResp
-	11, // 55: bxcore.BxCore.ParticipateShow:output_type -> bxcore.ParticipateShowRes
-	14, // 56: bxcore.BxCore.ParticipateInfo:output_type -> bxcore.ParticipateInfoRes
-	16, // 57: bxcore.BxCore.UpdateBidStatus:output_type -> bxcore.UpdateBidStatusRes
-	19, // 58: bxcore.BxCore.ParticipateContent:output_type -> bxcore.ParticipateContentRes
-	23, // 59: bxcore.BxCore.ParticipateRecords:output_type -> bxcore.ParticipateRecordsRes
-	26, // 60: bxcore.BxCore.ParticipatePersons:output_type -> bxcore.ParticipatePersonsRes
-	31, // 61: bxcore.BxCore.ParticipateSetUpInfo:output_type -> bxcore.ParticipateSetUpInfoRes
-	33, // 62: bxcore.BxCore.ParticipateAction:output_type -> bxcore.ParticipateActionRes
-	37, // 63: bxcore.BxCore.ParticipateList:output_type -> bxcore.ParticipateListRes
-	41, // 64: bxcore.BxCore.PushStatistics:output_type -> bxcore.PushStatisticsDataRes
-	43, // 65: bxcore.BxCore.ProjectStatistics:output_type -> bxcore.ProjectStatisticsDataRes
-	51, // 66: bxcore.BxCore.PolymerizeSearch:output_type -> bxcore.PolymerizeSearchResp
-	47, // 67: bxcore.BxCore.ProjectDetails:output_type -> bxcore.DetailDataRes
-	48, // 68: bxcore.BxCore.PropertySearchCriteria:output_type -> bxcore.SearchCriteriaRes
-	58, // 69: bxcore.BxCore.SearchHotKey:output_type -> bxcore.HotKeysRes
-	60, // 70: bxcore.BxCore.PurchaseSearch:output_type -> bxcore.PurchaseResp
-	53, // [53:71] is the sub-list for method output_type
-	35, // [35:53] is the sub-list for method input_type
-	35, // [35:35] is the sub-list for extension type_name
-	35, // [35:35] is the sub-list for extension extendee
-	0,  // [0:35] is the sub-list for field type_name
+	5,  // 35: bxcore.PurchaseList.winnerInfo:type_name -> bxcore.WinnerInfo
+	0,  // 36: bxcore.BxCore.GetSearchList:input_type -> bxcore.SearchReq
+	7,  // 37: bxcore.BxCore.SearchLimit:input_type -> bxcore.SearchLimitReq
+	9,  // 38: bxcore.BxCore.ParticipateShow:input_type -> bxcore.ParticipateShowReq
+	12, // 39: bxcore.BxCore.ParticipateInfo:input_type -> bxcore.ParticipateInfoReq
+	15, // 40: bxcore.BxCore.UpdateBidStatus:input_type -> bxcore.UpdateBidStatusReq
+	17, // 41: bxcore.BxCore.ParticipateContent:input_type -> bxcore.ParticipateContentReq
+	20, // 42: bxcore.BxCore.ParticipateRecords:input_type -> bxcore.ParticipateRecordsReq
+	24, // 43: bxcore.BxCore.ParticipatePersons:input_type -> bxcore.ParticipatePersonsReq
+	27, // 44: bxcore.BxCore.ParticipateSetUpInfo:input_type -> bxcore.ParticipateSetUpInfoReq
+	32, // 45: bxcore.BxCore.ParticipateAction:input_type -> bxcore.ParticipateActionReq
+	34, // 46: bxcore.BxCore.ParticipateList:input_type -> bxcore.ParticipateListReq
+	38, // 47: bxcore.BxCore.PushStatistics:input_type -> bxcore.StatisticsListReq
+	38, // 48: bxcore.BxCore.ProjectStatistics:input_type -> bxcore.StatisticsListReq
+	50, // 49: bxcore.BxCore.PolymerizeSearch:input_type -> bxcore.PolymerizeSearchReq
+	39, // 50: bxcore.BxCore.ProjectDetails:input_type -> bxcore.ProjectDetailsReq
+	0,  // 51: bxcore.BxCore.PropertySearchCriteria:input_type -> bxcore.SearchReq
+	57, // 52: bxcore.BxCore.SearchHotKey:input_type -> bxcore.HotKeysReq
+	59, // 53: bxcore.BxCore.PurchaseSearch:input_type -> bxcore.PurchaseReq
+	1,  // 54: bxcore.BxCore.GetSearchList:output_type -> bxcore.SearchResp
+	8,  // 55: bxcore.BxCore.SearchLimit:output_type -> bxcore.SearchLimitResp
+	11, // 56: bxcore.BxCore.ParticipateShow:output_type -> bxcore.ParticipateShowRes
+	14, // 57: bxcore.BxCore.ParticipateInfo:output_type -> bxcore.ParticipateInfoRes
+	16, // 58: bxcore.BxCore.UpdateBidStatus:output_type -> bxcore.UpdateBidStatusRes
+	19, // 59: bxcore.BxCore.ParticipateContent:output_type -> bxcore.ParticipateContentRes
+	23, // 60: bxcore.BxCore.ParticipateRecords:output_type -> bxcore.ParticipateRecordsRes
+	26, // 61: bxcore.BxCore.ParticipatePersons:output_type -> bxcore.ParticipatePersonsRes
+	31, // 62: bxcore.BxCore.ParticipateSetUpInfo:output_type -> bxcore.ParticipateSetUpInfoRes
+	33, // 63: bxcore.BxCore.ParticipateAction:output_type -> bxcore.ParticipateActionRes
+	37, // 64: bxcore.BxCore.ParticipateList:output_type -> bxcore.ParticipateListRes
+	41, // 65: bxcore.BxCore.PushStatistics:output_type -> bxcore.PushStatisticsDataRes
+	43, // 66: bxcore.BxCore.ProjectStatistics:output_type -> bxcore.ProjectStatisticsDataRes
+	51, // 67: bxcore.BxCore.PolymerizeSearch:output_type -> bxcore.PolymerizeSearchResp
+	47, // 68: bxcore.BxCore.ProjectDetails:output_type -> bxcore.DetailDataRes
+	48, // 69: bxcore.BxCore.PropertySearchCriteria:output_type -> bxcore.SearchCriteriaRes
+	58, // 70: bxcore.BxCore.SearchHotKey:output_type -> bxcore.HotKeysRes
+	60, // 71: bxcore.BxCore.PurchaseSearch:output_type -> bxcore.PurchaseResp
+	54, // [54:72] is the sub-list for method output_type
+	36, // [36:54] is the sub-list for method input_type
+	36, // [36:36] is the sub-list for extension type_name
+	36, // [36:36] is the sub-list for extension extendee
+	0,  // [0:36] is the sub-list for field type_name
 }
 
 func init() { file_bxcore_proto_init() }

+ 9 - 11
jyBXCore/rpc/util/limitSearchText.go

@@ -142,14 +142,12 @@ func CheckLimit(userType int, userIdent string, isNew bool) (state int64, msg st
 	}
 	//同一用户 -- 请求频次 在IC.C.LimitSearchText.TimeOut内 不允许多次请求
 	if IC.C.LimitSearchText.TimeOut > 0 {
-		if isNew {
-			if limitCount <= IC.C.LimitSearchText.Count/2 {
-				timeLimit, _ := redis.Exists("other", fmt.Sprintf(IC.C.LimitSearchText.LimitKey, userIdent))
-				if timeLimit {
-					state = -1
-					msg = fmt.Sprintf("当前用户:%s \n招投标筛选在%d秒内请求频次过多,\n并发通道-\n总数:%d,\n未使用数量:%d", userIdent, IC.C.LimitSearchText.TimeOut, IC.C.LimitSearchText.Count, limitCount)
-					return
-				}
+		if isNew && limitCount <= IC.C.LimitSearchText.Count/2 {
+			timeLimit, _ := redis.Exists("other", fmt.Sprintf(IC.C.LimitSearchText.LimitKey, userIdent))
+			if timeLimit {
+				state = -1
+				msg = fmt.Sprintf("当前用户:%s \n招投标筛选在%d秒内请求频次过多,\n并发通道-\n总数:%d,\n未使用数量:%d", userIdent, IC.C.LimitSearchText.TimeOut, IC.C.LimitSearchText.Count, limitCount)
+				return
 			}
 		}
 		redis.Put("other", fmt.Sprintf(IC.C.LimitSearchText.LimitKey, userIdent), 1, IC.C.LimitSearchText.TimeOut)
@@ -173,7 +171,7 @@ func CheckLimit(userType int, userIdent string, isNew bool) (state int64, msg st
 					msg = ""
 				} else {
 					state = -1
-					msg = fmt.Sprintf("%s,\n总并发量的百分之%d", msg, IC.C.LimitSearchText.Percentage)
+					msg = fmt.Sprintf("%s,\n总并发量的百分之%d", msg, IC.C.LimitSearchText.Percentage)
 				}
 			case 3:
 				quota := limitCount * IC.C.LimitSearchText.NoLogin / 100
@@ -182,7 +180,7 @@ func CheckLimit(userType int, userIdent string, isNew bool) (state int64, msg st
 					msg = ""
 				} else {
 					state = -1
-					msg = fmt.Sprintf("%s,\n总并发量的百分之%d", msg, IC.C.LimitSearchText.NoLogin)
+					msg = fmt.Sprintf("%s,\n总并发量的百分之%d", msg, IC.C.LimitSearchText.NoLogin)
 				}
 			}
 		}
@@ -193,7 +191,7 @@ func CheckLimit(userType int, userIdent string, isNew bool) (state int64, msg st
 		state = -2
 	}
 	if msg != "" {
-		msg = fmt.Sprintf("%s,\n并发通道总数:%d,\n未使用数量:%d", msg, IC.C.LimitSearchText.Count, limitCount)
+		msg = fmt.Sprintf("%s,\n并发通道-\n总数:%d,\n未使用数量:%d", msg, IC.C.LimitSearchText.Count, limitCount)
 	}
 	return
 }