Эх сурвалжийг харах

fix:阳光采购信息发布相关需求修改

duxin 9 сар өмнө
parent
commit
2e82e650ed

+ 38 - 38
api/internal/handler/routes.go

@@ -14,98 +14,98 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 		[]rest.Route{
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/publish/biddingInfo",
-				Handler: pubInfoHandler(serverCtx),
+				Path:    "/jyinfo/delMyPublish",
+				Handler: delMyPublishHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/publish/supplyInfo",
-				Handler: pubSupplyInfoHandler(serverCtx),
+				Path:    "/jyinfo/getArea",
+				Handler: getProvinceHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/supplyInfoDetail",
-				Handler: supplyInfoDetailHandler(serverCtx),
+				Path:    "/jyinfo/getIndustry",
+				Handler: getIndustryHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/supplySearch",
-				Handler: supplySearchHandler(serverCtx),
+				Path:    "/jyinfo/infoFile/upload",
+				Handler: uploadHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/publishStatus",
-				Handler: pubInfoCountHandler(serverCtx),
+				Path:    "/jyinfo/infoFileDel",
+				Handler: infoFileDelHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/pushedRelated",
-				Handler: assProjecctHandler(serverCtx),
+				Path:    "/jyinfo/manage/infoDetail",
+				Handler: infoDetailHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/getArea",
-				Handler: getProvinceHandler(serverCtx),
+				Path:    "/jyinfo/manage/infoExamine",
+				Handler: infoExamineHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/getIndustry",
-				Handler: getIndustryHandler(serverCtx),
+				Path:    "/jyinfo/manage/infoList",
+				Handler: infoListHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/myPublishList",
-				Handler: myPublishListHandler(serverCtx),
+				Path:    "/jyinfo/manage/oneKeyAction",
+				Handler: oneKeyActionHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/myPublishDetail",
-				Handler: myPublishDetailHandler(serverCtx),
+				Path:    "/jyinfo/manage/organFrozen",
+				Handler: organFrozenHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/delMyPublish",
-				Handler: delMyPublishHandler(serverCtx),
+				Path:    "/jyinfo/myPublishDetail",
+				Handler: myPublishDetailHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/reviewStatus",
-				Handler: reviewStatusHandler(serverCtx),
+				Path:    "/jyinfo/myPublishList",
+				Handler: myPublishListHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/infoFile/upload",
-				Handler: uploadHandler(serverCtx),
+				Path:    "/jyinfo/publish/biddingInfo",
+				Handler: pubInfoHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/infoFileDel",
-				Handler: infoFileDelHandler(serverCtx),
+				Path:    "/jyinfo/publish/supplyInfo",
+				Handler: pubSupplyInfoHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/manage/infoList",
-				Handler: infoListHandler(serverCtx),
+				Path:    "/jyinfo/publishStatus",
+				Handler: pubInfoCountHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/manage/infoDetail",
-				Handler: infoDetailHandler(serverCtx),
+				Path:    "/jyinfo/pushedRelated",
+				Handler: assProjecctHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/manage/infoExamine",
-				Handler: infoExamineHandler(serverCtx),
+				Path:    "/jyinfo/reviewStatus",
+				Handler: reviewStatusHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/manage/organFrozen",
-				Handler: organFrozenHandler(serverCtx),
+				Path:    "/jyinfo/supplyInfoDetail",
+				Handler: supplyInfoDetailHandler(serverCtx),
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jyinfo/manage/oneKeyAction",
-				Handler: oneKeyActionHandler(serverCtx),
+				Path:    "/jyinfo/supplySearch",
+				Handler: supplySearchHandler(serverCtx),
 			},
 		},
 	)

+ 1 - 0
api/internal/logic/mypublishlistlogic.go

@@ -36,6 +36,7 @@ func (l *MyPublishListLogic) MyPublishList(req *types.MyPublishListReq) (resp *t
 		PageSize:     common.Int64All(req.PageSize),
 		PageIndex:    common.Int64All(req.PageIndex),
 		EntId:        req.EntId,
+		Classify:     req.Classify,
 	})
 	if err0 != nil {
 		return &types.CommonRes{

+ 1 - 0
api/internal/logic/pubinfologic.go

@@ -88,6 +88,7 @@ func (l *PubInfoLogic) PubInfo(req *types.PubInfoReq) (resp *types.CommonRes, er
 		EntName:            req.EntName,
 		JyPublishingMedia:  req.JyPublishingMedia,
 		RecommendedService: req.RecommendedService,
+		DeliveryAddress:    req.DeliveryAddress,
 	})
 	if err1 != nil {
 		return &types.CommonRes{

+ 91 - 85
api/internal/types/types.go

@@ -1,60 +1,47 @@
 // Code generated by goctl. DO NOT EDIT.
 package types
 
-type PubInfoReq struct {
-	Title              string                 `json:"title"`
-	MsgType            int64                  `json:"msgType"`
-	RelatedId          string                 `json:"relatedId,optional"`
-	Code               string                 `json:"code,optional"`
-	Province           string                 `json:"province,optional"`
-	City               string                 `json:"city,optional"`
-	Industry           []string               `json:"industry,optional"`
-	Buyer              string                 `json:"buyer,optional"`
-	Budget             string                 `json:"budget,optional"`
-	Winner             string                 `json:"winner,optional"`
-	Amount             string                 `json:"amount,optional"`
-	Detail             string                 `json:"detail"`
-	Attach             map[string]interface{} `json:"attach,optional"`
-	Contact            Contact                `json:"contact"`
-	AppId              string                 `header:"appId"`
-	EntId              int64                  `header:"entId"`
-	UserId             string                 `header:"userId"`
-	ValidityTime       string                 `json:"validityTime,optional"`
-	Phone              string                 `header:"phone"`
-	EntName            string                 `header:"entName,optional"`
-	JyPublishingMedia  int64                  `json:"jyPublishingMedia,optional"`  //1需要 -1 不需要
-	RecommendedService int64                  `json:"recommendedService,optional"` //1需要 -1 不需要
-}
-
 type Contact struct {
 	Person string `json:"person"`
 	Phone  string `json:"phone"`
 	Overt  int64  `json:"overt"`
 }
 
-type MyPublishListReq struct {
-	UserId       string `header:"userId"`
-	AppId        string `header:"appId"`
-	Match        string `json:"match,optional"`
-	MsgType      int64  `json:"msgType,optional"`
-	ReviewStatus string `json:"reviewStatus,optional"`
-	PageSize     int    `json:"pageSize,optional,default=10"`
-	PageIndex    int    `json:"pageIndex,optional,default=1"`
-	EntId        int64  `header:"entId"`
+type AssProjecctReq struct {
+	UserId  string `header:"userId"`
+	AppId   string `header:"appId"`
+	Match   string `json:"match,optional"`
+	MsgType int64  `json:"msgType,optional"`
+	EntId   int64  `header:"entId"`
+	Type    int64  `json:"type,optional"`
 }
 
-type MyPublishCommonReq struct {
-	MsgId   string `json:"msgId"`
-	UserId  string `header:"userId"`
-	Type    int64  `json:"type"` //处理信息类型:([前端用户:]0:获取发布信息详情(默认);1:删除发布的信息;)
+type CommonReq struct {
+	UserId  string `json:"userId,optional"`
+	EntId   int64  `json:"entId,optional"`
+	AppId   string `json:"appId"`
+	Match   string `json:"match,optional"`
 	MsgType int64  `json:"msgType,optional"`
-	AppId   string `header:"appId"`
 }
 
-type ReviewCommonReq struct {
-	AppId string `header:"appId"`
-	MsgId string `json:"msgId"`
-	Type  int64  `json:"type"`
+type CommonRes struct {
+	Err_code int         `json:"error_code"`
+	Err_msg  string      `json:"error_msg"`
+	Data     interface{} `json:"data"`
+}
+
+type InfoExamineReq struct {
+	MsgId        string `json:"msgId"`
+	AppId        string `json:"appId"`
+	ReviewStatus int64  `json:"reviewStatus"`
+	ReviewDetail string `json:"reviewDetail,optional"`
+	MsgType      int64  `json:"msgType"`
+	Auditor      string `json:"auditor"`
+}
+
+type InfoFileDelReq struct {
+	FileName string `json:"fileName,optional"` //附件名称
+	FileId   string `json:"fileId,optional"`   //附件key
 }
 
 type InfoListReq struct {
@@ -73,22 +60,63 @@ type InfoListReq struct {
 	RecommendedService int64  `json:"recommendedService,optional"` //1需要 -1 不需要
 }
 
-type InfoExamineReq struct {
-	MsgId        string `json:"msgId"`
-	AppId        string `json:"appId"`
-	ReviewStatus int64  `json:"reviewStatus"`
-	ReviewDetail string `json:"reviewDetail,optional"`
-	MsgType      int64  `json:"msgType"`
-	Auditor      string `json:"auditor"`
-}
-
-type AssProjecctReq struct {
+type MyPublishCommonReq struct {
+	MsgId   string `json:"msgId"`
 	UserId  string `header:"userId"`
-	AppId   string `header:"appId"`
-	Match   string `json:"match,optional"`
+	Type    int64  `json:"type"` //处理信息类型:([前端用户:]0:获取发布信息详情(默认);1:删除发布的信息;)
 	MsgType int64  `json:"msgType,optional"`
-	EntId   int64  `header:"entId"`
-	Type    int64  `json:"type,optional"`
+	AppId   string `header:"appId"`
+}
+
+type MyPublishListReq struct {
+	UserId       string `header:"userId"`
+	AppId        string `header:"appId"`
+	Match        string `json:"match,optional"`
+	MsgType      int64  `json:"msgType,optional"`
+	ReviewStatus string `json:"reviewStatus,optional"`
+	PageSize     int    `json:"pageSize,optional,default=10"`
+	PageIndex    int    `json:"pageIndex,optional,default=1"`
+	EntId        int64  `header:"entId"`
+	Classify     int64  `json:"classify,optional"`
+}
+
+type OneKeyActionReq struct {
+	MsgId   string `json:"msgId"`            //信息id
+	UserId  string `json:"userId"`           //管理员用户id
+	Type    int64  `json:"type"`             //处理信息类型:(()[管理后台:]1:管理后台一键敏感词过滤;1:管理后台一键发布)
+	MsgType int64  `json:"msgType,optional"` //信息类型1:招标信息;2:采购信息;3:供应信息
+	AppId   string `json:"appId"`            //appid
+	EntName string `json:"entName"`          //企业名称
+}
+
+type PubInfoReq struct {
+	Title     string                 `json:"title"`
+	MsgType   int64                  `json:"msgType"`
+	RelatedId string                 `json:"relatedId,optional"`
+	Code      string                 `json:"code,optional"`
+	Province  string                 `json:"province,optional"`
+	City      string                 `json:"city,optional"`
+	Industry  []string               `json:"industry,optional"`
+	Buyer     string                 `json:"buyer,optional"`
+	Budget    string                 `json:"budget,optional"`
+	Winner    string                 `json:"winner,optional"`
+	Amount    string                 `json:"amount,optional"`
+	Detail    string                 `json:"detail"`
+	Attach    map[string]interface{} `json:"attach,optional"`
+	Contact   struct {
+		Person string `json:"person"`
+		Phone  string `json:"phone"`
+		Overt  int64  `json:"overt"`
+	} `json:"contact"`
+	AppId              string `header:"appId"`
+	EntId              int64  `header:"entId"`
+	UserId             string `header:"userId"`
+	ValidityTime       string `json:"validityTime,optional"`
+	Phone              string `header:"phone"`
+	EntName            string `header:"entName,optional"`
+	JyPublishingMedia  int64  `json:"jyPublishingMedia,optional"`  //1需要 -1 不需要
+	RecommendedService int64  `json:"recommendedService,optional"` //1需要 -1 不需要
+	DeliveryAddress    string `json:"recommendedService,optional"` //交付地址
 }
 
 type PubSupplyInfoReq struct {
@@ -103,6 +131,12 @@ type PubSupplyInfoReq struct {
 	PageIndex  int64  `json:"pageIndex,optional"`
 }
 
+type ReviewCommonReq struct {
+	AppId string `header:"appId"`
+	MsgId string `json:"msgId"`
+	Type  int64  `json:"type"`
+}
+
 type SupplyInfoDetailReq struct {
 	MsgId   string `json:"msgId"`
 	MsgType int64  `json:"msgType"`
@@ -111,31 +145,3 @@ type SupplyInfoDetailReq struct {
 type UploadReq struct {
 	FileName string `json:"fileName,optional"`
 }
-
-type InfoFileDelReq struct {
-	FileName string `json:"fileName,optional"` //附件名称
-	FileId   string `json:"fileId,optional"`   //附件key
-}
-
-type CommonReq struct {
-	UserId  string `json:"userId,optional"`
-	EntId   int64  `json:"entId,optional"`
-	AppId   string `json:"appId"`
-	Match   string `json:"match,optional"`
-	MsgType int64  `json:"msgType,optional"`
-}
-
-type CommonRes struct {
-	Err_code int         `json:"error_code"`
-	Err_msg  string      `json:"error_msg"`
-	Data     interface{} `json:"data"`
-}
-
-type OneKeyActionReq struct {
-	MsgId   string `json:"msgId"`            //信息id
-	UserId  string `json:"userId"`           //管理员用户id
-	Type    int64  `json:"type"`             //处理信息类型:(()[管理后台:]1:管理后台一键敏感词过滤;1:管理后台一键发布)
-	MsgType int64  `json:"msgType,optional"` //信息类型1:招标信息;2:采购信息;3:供应信息
-	AppId   string `json:"appId"`            //appid
-	EntName string `json:"entName"`          //企业名称
-}

+ 31 - 9
api/jyinfo.api

@@ -21,8 +21,9 @@ type (
 		ValidityTime       string                 `json:"validityTime,optional"`
 		Phone              string                 `header:"phone"`
 		EntName            string                 `header:"entName,optional"`
-		JyPublishingMedia  int64                  `json:"jyPublishingMedia,optional"`  //1需要 -1 不需要
+		JyPublishingMedia  int64                  `json:"jyPublishingMedia,optional"` //1需要 -1 不需要
 		RecommendedService int64                  `json:"recommendedService,optional"` //1需要 -1 不需要
+		DeliveryAddress    string                 `json:"recommendedService,optional"` //交付地址
 	}
 	Contact {
 		Person string `json:"person"`
@@ -38,6 +39,7 @@ type (
 		PageSize     int    `json:"pageSize,optional,default=10"`
 		PageIndex    int    `json:"pageIndex,optional,default=1"`
 		EntId        int64  `header:"entId"`
+		Classify     int64  `json:"classify,optional"`
 	}
 	myPublishCommonReq {
 		MsgId   string `json:"msgId"`
@@ -63,7 +65,7 @@ type (
 		PageIndex          int64  `json:"pageIndex"`
 		IsDel              string `json:"isDel,optional"`
 		Published          int64  `json:"published,optional"`
-		JyPublishingMedia  int64  `json:"jyPublishingMedia,optional"`  //1需要 -1 不需要
+		JyPublishingMedia  int64  `json:"jyPublishingMedia,optional"` //1需要 -1 不需要
 		RecommendedService int64  `json:"recommendedService,optional"` //1需要 -1 不需要
 	}
 	infoExamineReq {
@@ -104,7 +106,7 @@ type (
 	//附件删除
 	infoFileDelReq {
 		FileName string `json:"fileName,optional"` //附件名称
-		FileId   string `json:"fileId,optional"`   //附件key
+		FileId   string `json:"fileId,optional"` //附件key
 	}
 	commonReq {
 		UserId  string `json:"userId,optional"`
@@ -120,70 +122,90 @@ type (
 	}
 	//管理员一键操作
 	oneKeyActionReq {
-		MsgId   string `json:"msgId"`            //信息id
-		UserId  string `json:"userId"`           //管理员用户id
-		Type    int64  `json:"type"`             //处理信息类型:(()[管理后台:]1:管理后台一键敏感词过滤;1:管理后台一键发布)
+		MsgId   string `json:"msgId"` //信息id
+		UserId  string `json:"userId"` //管理员用户id
+		Type    int64  `json:"type"` //处理信息类型:(()[管理后台:]1:管理后台一键敏感词过滤;1:管理后台一键发布)
 		MsgType int64  `json:"msgType,optional"` //信息类型1:招标信息;2:采购信息;3:供应信息
-		AppId   string `json:"appId"`            //appid
-		EntName string `json:"entName"`          //企业名称
+		AppId   string `json:"appId"` //appid
+		EntName string `json:"entName"` //企业名称
 	}
 )
+
 service Info-api {
 	//信息发布(招标信息、采购信息)
 	@handler pubInfo
 	post /jyinfo/publish/biddingInfo (pubInfoReq) returns (commonRes)
+
 	//信息发布(供应信息)
 	@handler pubSupplyInfo
 	post /jyinfo/publish/supplyInfo (pubInfoReq) returns (commonRes)
+
 	//供应信息详情
 	@handler supplyInfoDetail
 	post /jyinfo/supplyInfoDetail (supplyInfoDetailReq) returns (commonRes)
+
 	//供应信息搜索
 	@handler supplySearch
 	post /jyinfo/supplySearch (pubSupplyInfoReq) returns (commonRes)
+
 	//已信息发布数量
 	@handler pubInfoCount
 	post /jyinfo/publishStatus (commonReq) returns (commonRes)
+
 	//关联项目联想
 	@handler assProjecct
 	post /jyinfo/pushedRelated (assProjecctReq) returns (commonRes)
+
 	//获取省市列表
 	@handler getProvince
 	post /jyinfo/getArea returns (commonRes)
+
 	//获取行业列表
 	@handler getIndustry
 	post /jyinfo/getIndustry returns (commonRes)
+
 	//我的发布列表
 	@handler myPublishList
 	post /jyinfo/myPublishList (myPublishListReq) returns (commonRes)
+
 	//我发布的信息详情
 	@handler myPublishDetail
 	post /jyinfo/myPublishDetail (myPublishCommonReq) returns (commonRes)
+
 	//删除我发布的信息
 	@handler delMyPublish
 	post /jyinfo/delMyPublish (myPublishCommonReq) returns (commonRes)
+
 	//信息审核状态查询
 	@handler reviewStatus
 	post /jyinfo/reviewStatus (reviewCommonReq) returns (commonRes)
+
 	//附件上传
 	@handler upload
 	post /jyinfo/infoFile/upload (uploadReq) returns (commonRes)
+
 	//附件删除
 	@handler infoFileDel
 	post /jyinfo/infoFileDel (infoFileDelReq) returns (commonRes)
+
 	//管理后台获取信息列表
 	@handler infoList
 	post /jyinfo/manage/infoList (infoListReq) returns (commonRes)
+
 	//管理后台信息详情
 	@handler infoDetail
 	post /jyinfo/manage/infoDetail (reviewCommonReq) returns (commonRes)
+
 	//管理后台审核
 	@handler infoExamine
 	post /jyinfo/manage/infoExamine (infoExamineReq) returns (commonRes)
+
 	//管理后台审核
 	@handler organFrozen
 	post /jyinfo/manage/organFrozen (commonReq) returns (commonRes)
+
 	//一键敏感词过滤Filter&一键发布Publish
 	@handler oneKeyAction
 	post /jyinfo/manage/oneKeyAction (oneKeyActionReq) returns (commonRes)
-}
+}
+

+ 3 - 0
rpc/consumer/consumer.proto

@@ -30,6 +30,7 @@ message PublishInfoReq {
 	string entName = 20;//企业名称
 	int64  jyPublishingMedia =21; //1需要 -1 不需要
 	int64  recommendedService =22; //1需要 -1 不需要
+	string  deliveryAddress =23; //交付地址 ---阳光采购字段
 }
 
 message Contact {//联系方式
@@ -97,6 +98,7 @@ message MyPublishListReq{
 	int64 pageIndex = 6;//页码;默认第一页
 	string appId = 7;//剑鱼标识 默认10000
 	int64 entId = 8;//剑鱼标识 默认10000
+	int64 classify = 9;//剑鱼标识 默认10000
 }
 
 //我的发布列表Resp
@@ -163,6 +165,7 @@ message InfoDetailData {
 	InfoDetailContact  infoDetailContact = 19;//联系人内容
 	int64  jyPublishingMedia =20; //1需要 -1 不需要
 	int64  recommendedService =21; //1需要 -1 不需要
+	string  deliveryAddress =22; //交付地址
 }//信息详情
 
 message Related{

+ 1 - 0
rpc/consumer/internal/logic/infochangelogic.go

@@ -75,6 +75,7 @@ func (l *InfoChangeLogic) InfoChange(in *consumerinfo.InfoDetailReq) (*consumeri
 				Results.Detail = mc.InterfaceToStr(data["detail"])
 				Results.JyPublishingMedia = mc.Int64All(data["publishing_media"])
 				Results.RecommendedService = mc.Int64All(data["recommended_service"])
+				Results.DeliveryAddress = mc.InterfaceToStr(data["deliveryAddress"])
 				if data["related_id"] != nil && mc.IntAll(data["related_id"]) != 0 {
 					Related.Id = se.SE.EncodeString(mc.InterfaceToStr(data["related_id"]))
 					Related.Title = mc.InterfaceToStr(data["relatedTitle"])

+ 15 - 8
rpc/consumer/internal/logic/mypublishlistlogic.go

@@ -7,6 +7,7 @@ import (
 	"app.yhyue.com/moapp/jyInfo/rpc/util"
 	se "app.yhyue.com/moapp/jybase/encrypt"
 	"context"
+	"fmt"
 	"log"
 
 	mc "app.yhyue.com/moapp/jybase/common"
@@ -40,8 +41,14 @@ func (l *MyPublishListLogic) MyPublishList(in *consumerinfo.MyPublishListReq) (*
 	if in.Match != "" {
 		queryName = ` and title LIKE '%` + in.Match + `%' `
 	}
-	if in.MsgType != 0 {
-		queryName = queryName + ` and type=` + mc.InterfaceToStr(in.MsgType)
+	switch in.Classify {
+	case 1: //阳光采购
+		queryName += `and type=8 `
+	default:
+		queryName += ` and type !=8`
+		if in.MsgType != 0 {
+			queryName += ` and type=` + mc.InterfaceToStr(in.MsgType)
+		}
 	}
 	if in.AppId != "" {
 		queryName = queryName + ` and app_id = ` + util.StrFormat(in.AppId)
@@ -88,14 +95,14 @@ func (l *MyPublishListLogic) MyPublishList(in *consumerinfo.MyPublishListReq) (*
 		offset = mc.IntAll((in.PageIndex - 1) * in.PageSize)
 	}
 	if in.PageIndex == 1 {
-		count := model.Mysql.CountBySql(`SELECT count(1)  from (SELECT id,type,title,create_time,status,published  from information WHERE is_del = 1 and user_id= "` + in.UserId + `" ` + queryName + `
-			union all
-			SELECT id,type,title,create_time,status,published  from supply_info WHERE is_del = 1 and user_id= "` + in.UserId + `" ` + queryName + ` ) a`)
+		count := model.Mysql.CountBySql(fmt.Sprintf(`SELECT count(1)  from (SELECT id,type,title,create_time,status,published  from information WHERE is_del = 1 and user_id= '%s' %s 
+             union all
+			SELECT id,type,title,create_time,status,published  from supply_info WHERE is_del = 1 and user_id= '%s'  %s   ) a  `, in.UserId, queryName, in.UserId, queryName))
 		total = mc.Int64All(mc.MathCeil(mc.Float64All(count) / mc.Float64All(in.PageSize)))
 	}
-	allData := model.Mysql.SelectBySql(`SELECT a.id,a.type,a.title,a.create_time,a.published,a.publish_id,a.status  from (SELECT id,type,title,create_time,status,published,publish_id  from information WHERE is_del = 1 and user_id= "`+in.UserId+`" `+queryName+`
-			union all
-			SELECT id,type,title,create_time,status,published,id as publish_id from supply_info WHERE is_del = 1 and user_id= "`+in.UserId+`" `+queryName+` ) a  order by a.create_time desc limit ?,?`, offset, in.PageSize)
+	allData := model.Mysql.SelectBySql(fmt.Sprintf(`SELECT a.id,a.type,a.title,a.create_time,a.published,a.publish_id,a.status  from (SELECT id,type,title,create_time,status,published,publish_id  from information WHERE is_del = 1  and user_id= '%s' %s 
+                                                                                                                                                                 union all
+			SELECT id,type,title,create_time,status,published,id as publish_id from   WHERE is_del = 1 and user_id= '%s' %s  ) a  order by a.create_time desc limit %d,%d `, in.UserId, queryName, in.UserId, queryName, offset, in.PageSize))
 	if allData != nil && len(*allData) > 0 {
 		for _, v := range *allData {
 			var vs = consumerinfo.ListResp{}

+ 20 - 4
rpc/consumer/internal/logic/publishinfologic.go

@@ -37,7 +37,11 @@ func NewPublishInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Publi
 func (l *PublishInfoLogic) PublishInfo(in *consumerinfo.PublishInfoReq) (*consumerinfo.PublishInfoResp, error) {
 	res := consumerinfo.PublishInfoResp{}
 	log.Println("信息发布in数据:", in)
-	var id int64
+	if in.MsgType == 8 && in.DeliveryAddress == "" {
+		res.ErrCode = -1
+		res.ErrMsg = "缺少交付地址"
+		return &res, nil
+	}
 	//信息类型1:招标信息 2:采购信息 3:供应信息
 	publishData := make(map[string]interface{})
 	publishData["user_id"] = in.UserId    //发布人用户ID
@@ -62,14 +66,26 @@ func (l *PublishInfoLogic) PublishInfo(in *consumerinfo.PublishInfoReq) (*consum
 	publishData["ent_name"] = in.EntName
 	//  0:全部;1:待审核;2:待人工审核(敏感词审核不通过||敏感词审核通过);3:自动审核通过;4:人工审核通过;-1:自动审核不通过(机构冻结);-2:人工审核不通过;
 	publishData["status"] = 1
-
 	switch in.MsgType {
 	case 3:
 		publishData["contact_overt"] = mc.Int64All(mc.If(in.Contact.Overt == 0, 2, in.Contact.Overt)) //是否公开 默认不公开
 		if in.Deadline != "" {
 			publishData["validity_time"] = in.Deadline //信息有效期
 		}
-		id = model.Mysql.Insert("supply_info", publishData)
+	case 8: //阳光采购
+		publishData["contact_overt"] = 1                           //是否公开 默认不公开
+		publishData["publishing_media"] = 1                        //是否同意剑鱼发布平台 1 是 -1 否
+		publishData["recommended_service"] = in.RecommendedService //是否推荐供应商		1 是 -1 否
+		publishData["project_code"] = in.Code                      //项目编号
+		publishData["industry"] = strings.Join(in.Industry, ",")   //项目行业,多个逗号分隔
+		publishData["buyer"] = in.Buyer                            //采购单位
+		publishData["winner"] = in.Winner                          //中标单位
+		if in.Budget != "" {
+			publishData["budget"] = mc.Float64All(in.Budget) // 预算单位元
+		}
+		if in.Amount != "" {
+			publishData["amount"] = mc.Float64All(in.Amount) //中标金额
+		}
 	default:
 		if in.EntName == in.Buyer {
 			publishData["contact_overt"] = mc.Int64All(mc.If(in.Contact.Overt == 0, 2, in.Contact.Overt)) //是否公开 默认不公开
@@ -89,8 +105,8 @@ func (l *PublishInfoLogic) PublishInfo(in *consumerinfo.PublishInfoReq) (*consum
 		if in.Amount != "" {
 			publishData["amount"] = mc.Float64All(in.Amount) //中标金额
 		}
-		id = model.Mysql.Insert("information", publishData)
 	}
+	id := model.Mysql.Insert("information", publishData)
 	if id < 1 {
 		res.ErrCode = -1
 		res.ErrMsg = "信息保存失败"

+ 212 - 182
rpc/consumer/type/consumer/consumer.pb.go

@@ -1,6 +1,6 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.28.0
+// 	protoc-gen-go v1.28.1
 // 	protoc        v3.19.4
 // source: consumer.proto
 
@@ -20,7 +20,7 @@ const (
 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 )
 
-//信息发布Req
+// 信息发布Req
 type PublishInfoReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -48,6 +48,7 @@ type PublishInfoReq struct {
 	EntName            string   `protobuf:"bytes,20,opt,name=entName,proto3" json:"entName,omitempty"`                        //企业名称
 	JyPublishingMedia  int64    `protobuf:"varint,21,opt,name=jyPublishingMedia,proto3" json:"jyPublishingMedia,omitempty"`   //1需要 -1 不需要
 	RecommendedService int64    `protobuf:"varint,22,opt,name=recommendedService,proto3" json:"recommendedService,omitempty"` //1需要 -1 不需要
+	DeliveryAddress    string   `protobuf:"bytes,23,opt,name=deliveryAddress,proto3" json:"deliveryAddress,omitempty"`        //交付地址 ---阳光采购字段
 }
 
 func (x *PublishInfoReq) Reset() {
@@ -236,6 +237,13 @@ func (x *PublishInfoReq) GetRecommendedService() int64 {
 	return 0
 }
 
+func (x *PublishInfoReq) GetDeliveryAddress() string {
+	if x != nil {
+		return x.DeliveryAddress
+	}
+	return ""
+}
+
 type Contact struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -299,7 +307,7 @@ func (x *Contact) GetOvert() int64 {
 	return 0
 }
 
-//信息发布Resp
+// 信息发布Resp
 type PublishInfoResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -410,7 +418,7 @@ func (x *PublishId) GetInformationId() string {
 	return ""
 }
 
-//用户id:1:用户已发布信息数量Req
+// 用户id:1:用户已发布信息数量Req
 type UserIdReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -498,7 +506,7 @@ func (x *UserIdReq) GetMsgId() int64 {
 	return 0
 }
 
-//用户已发布信息数量Resp
+// 用户已发布信息数量Resp
 type InfoByUserIdResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -617,7 +625,7 @@ func (x *InfoByUserIdData) GetSurplus() int64 {
 	return 0
 }
 
-//关联公告Resp
+// 关联公告Resp
 type InfoRelatedResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -681,7 +689,7 @@ func (x *InfoRelatedResp) GetData() []*InfoData {
 	return nil
 }
 
-//公告信息InfoRelatedResp
+// 公告信息InfoRelatedResp
 type InfoData struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -769,7 +777,7 @@ func (x *InfoData) GetRecommendedService() int64 {
 	return 0
 }
 
-//我的发布列表Req
+// 我的发布列表Req
 type MyPublishListReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -783,6 +791,7 @@ type MyPublishListReq struct {
 	PageIndex    int64  `protobuf:"varint,6,opt,name=pageIndex,proto3" json:"pageIndex,omitempty"`       //页码;默认第一页
 	AppId        string `protobuf:"bytes,7,opt,name=appId,proto3" json:"appId,omitempty"`                //剑鱼标识 默认10000
 	EntId        int64  `protobuf:"varint,8,opt,name=entId,proto3" json:"entId,omitempty"`               //剑鱼标识 默认10000
+	Classify     int64  `protobuf:"varint,9,opt,name=classify,proto3" json:"classify,omitempty"`         //剑鱼标识 默认10000
 }
 
 func (x *MyPublishListReq) Reset() {
@@ -873,7 +882,14 @@ func (x *MyPublishListReq) GetEntId() int64 {
 	return 0
 }
 
-//我的发布列表Resp
+func (x *MyPublishListReq) GetClassify() int64 {
+	if x != nil {
+		return x.Classify
+	}
+	return 0
+}
+
+// 我的发布列表Resp
 type MyPublishListResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1024,7 +1040,7 @@ func (x *MyPublishListData) GetList() []*ListResp {
 	return nil
 }
 
-//我的发布列表Resp-list
+// 我的发布列表Resp-list
 type ListResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1112,7 +1128,7 @@ func (x *ListResp) GetPId() string {
 	return ""
 }
 
-//发布的信息详情Req+发布信息删除Req+发布信息更新Req
+// 发布的信息详情Req+发布信息删除Req+发布信息更新Req
 type InfoDetailReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1192,7 +1208,7 @@ func (x *InfoDetailReq) GetMsgType() int64 {
 	return 0
 }
 
-//发布的信息详情Resp
+// 发布的信息详情Resp
 type InfoDetailResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1282,6 +1298,7 @@ type InfoDetailData struct {
 	InfoDetailContact  *InfoDetailContact `protobuf:"bytes,19,opt,name=infoDetailContact,proto3" json:"infoDetailContact,omitempty"`    //联系人内容
 	JyPublishingMedia  int64              `protobuf:"varint,20,opt,name=jyPublishingMedia,proto3" json:"jyPublishingMedia,omitempty"`   //1需要 -1 不需要
 	RecommendedService int64              `protobuf:"varint,21,opt,name=recommendedService,proto3" json:"recommendedService,omitempty"` //1需要 -1 不需要
+	DeliveryAddress    string             `protobuf:"bytes,22,opt,name=deliveryAddress,proto3" json:"deliveryAddress,omitempty"`        //交付地址
 }
 
 func (x *InfoDetailData) Reset() {
@@ -1463,6 +1480,13 @@ func (x *InfoDetailData) GetRecommendedService() int64 {
 	return 0
 }
 
+func (x *InfoDetailData) GetDeliveryAddress() string {
+	if x != nil {
+		return x.DeliveryAddress
+	}
+	return ""
+}
+
 type Related struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1644,7 +1668,7 @@ func (x *InfoDetailContact) GetOvert() int64 {
 	return 0
 }
 
-//更新发布的信息Resp:删除和更新
+// 更新发布的信息Resp:删除和更新
 type InfoChangeResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1763,7 +1787,7 @@ func (x *InfoChangeData) GetData() *PublishInfoData {
 	return nil
 }
 
-//信息发布Req
+// 信息发布Req
 type PublishInfoData struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1923,7 +1947,7 @@ func (x *PublishInfoData) GetDeadline() string {
 	return ""
 }
 
-//信息审核状态查询
+// 信息审核状态查询
 type StatusReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2097,7 +2121,7 @@ func (x *StatusData) GetPublished() int64 {
 	return 0
 }
 
-//供应信息检索框查询
+// 供应信息检索框查询
 type SupplyInfoSearchReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2201,7 +2225,7 @@ func (x *SupplyInfoSearchReq) GetPageIndex() int64 {
 	return 0
 }
 
-//供应信息检索框查询Resp
+// 供应信息检索框查询Resp
 type SupplyInfoSearchResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2423,7 +2447,7 @@ func (x *SupplyList) GetHighlight() []string {
 	return nil
 }
 
-//前端其他用户查询详情页返回数据格式
+// 前端其他用户查询详情页返回数据格式
 type SupplyInfoDetailResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2487,7 +2511,7 @@ func (x *SupplyInfoDetailResp) GetData() *SupplyInfoDetailData {
 	return nil
 }
 
-//前端其他用户查询详情页返回数据格式-data
+// 前端其他用户查询详情页返回数据格式-data
 type SupplyInfoDetailData struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2623,7 +2647,7 @@ func (x *SupplyInfoDetailData) GetOtherSupplyInfo() []*OtherSupplyInfoByEnt {
 	return nil
 }
 
-//前端查询供应信息 此企业发布的其他供应信息
+// 前端查询供应信息 此企业发布的其他供应信息
 type OtherSupplyInfoByEnt struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2719,7 +2743,7 @@ func (x *OtherSupplyInfoByEnt) GetEntId() string {
 	return ""
 }
 
-//上传附件
+// 上传附件
 type InfoFileUploadReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2783,7 +2807,6 @@ func (x *InfoFileUploadReq) GetFileSize() int64 {
 	return 0
 }
 
-//
 type InfoFileUploadResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2926,7 +2949,7 @@ func (x *InfoFileUploadData) GetOssurl() string {
 	return ""
 }
 
-//删除附件Req
+// 删除附件Req
 type InfoFileDelReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2982,7 +3005,7 @@ func (x *InfoFileDelReq) GetFname() string {
 	return ""
 }
 
-//BaseResp
+// BaseResp
 type BaseResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3042,7 +3065,7 @@ var File_consumer_proto protoreflect.FileDescriptor
 
 var file_consumer_proto_rawDesc = []byte{
 	0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x22, 0xe7, 0x04, 0x0a, 0x0e, 0x50,
+	0x12, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x22, 0x91, 0x05, 0x0a, 0x0e, 0x50,
 	0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a,
 	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
 	0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02,
@@ -3081,168 +3104,175 @@ var file_consumer_proto_rawDesc = []byte{
 	0x65, 0x64, 0x69, 0x61, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
 	0x64, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03,
 	0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x22, 0x4d, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12,
-	0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a,
-	0x05, 0x6f, 0x76, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x76,
-	0x65, 0x72, 0x74, 0x22, 0x78, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f,
-	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64,
-	0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x09, 0x50, 0x75,
-	0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
-	0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
-	0x49, 0x64, 0x52, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x64, 0x22, 0x32, 0x0a,
-	0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e,
-	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
-	0x64, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12,
-	0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a,
-	0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61,
-	0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a,
-	0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e,
-	0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x22, 0x7c, 0x0a, 0x10, 0x49, 0x6e, 0x66,
-	0x6f, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a,
-	0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f,
-	0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73,
-	0x67, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e,
-	0x66, 0x6f, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07,
-	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x42, 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x42,
-	0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74,
-	0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61,
-	0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x72, 0x70, 0x6c, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x07, 0x73, 0x75, 0x72, 0x70, 0x6c, 0x75, 0x73, 0x22, 0x6d, 0x0a, 0x0f, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19,
-	0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72,
-	0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d,
-	0x73, 0x67, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f,
-	0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa4, 0x01, 0x0a, 0x08, 0x49,
-	0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a,
-	0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70,
-	0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f,
-	0x76, 0x65, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x76, 0x65, 0x72,
-	0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64,
-	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79,
+	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64,
+	0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4d,
+	0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72,
+	0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x76, 0x65, 0x72, 0x74,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x76, 0x65, 0x72, 0x74, 0x22, 0x78, 0x0a,
+	0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
+	0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65,
+	0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72,
+	0x72, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
+	0x65, 0x72, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x64, 0x52, 0x09, 0x50, 0x75,
+	0x62, 0x6c, 0x69, 0x73, 0x68, 0x49, 0x64, 0x22, 0x32, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69,
+	0x73, 0x68, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e,
+	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x09,
+	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a,
+	0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
+	0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a,
+	0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x73,
+	0x67, 0x49, 0x64, 0x22, 0x7c, 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x55, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63,
+	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f,
+	0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x72,
+	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63,
+	0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+	0x73, 0x22, 0x42, 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73,
+	0x75, 0x72, 0x70, 0x6c, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x75,
+	0x72, 0x70, 0x6c, 0x75, 0x73, 0x22, 0x6d, 0x0a, 0x0f, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x6c,
+	0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f,
+	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43,
+	0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x26, 0x0a, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e,
+	0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x22, 0xa4, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x61, 0x74,
+	0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+	0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x12,
+	0x14, 0x0a, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x76, 0x65, 0x72, 0x74, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x76, 0x65, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72,
 	0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x22, 0xe4, 0x01, 0x0a, 0x10, 0x4d, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c,
-	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14,
-	0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d,
-	0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22,
-	0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c,
-	0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05,
-	0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70,
-	0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x11, 0x4d, 0x79, 0x50, 0x75,
-	0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a,
+	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+	0x6e, 0x64, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x10,
+	0x4d, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63,
+	0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18,
+	0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69,
+	0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
+	0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08,
+	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
+	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
+	0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x67,
+	0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18,
+	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74,
+	0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x22, 0x7e,
+	0x0a, 0x11, 0x4d, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52,
+	0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17,
+	0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c,
+	0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75,
+	0x6d, 0x65, 0x72, 0x2e, 0x4d, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73,
+	0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc3,
+	0x01, 0x0a, 0x11, 0x4d, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74,
+	0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d,
+	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
+	0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1a,
+	0x0a, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75,
+	0x64, 0x69, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04,
+	0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e,
+	0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04,
+	0x6c, 0x69, 0x73, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65,
+	0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72,
+	0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+	0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73,
+	0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
+	0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
+	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x70, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x66, 0x6f,
+	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65,
+	0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
+	0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61,
+	0x70, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, 0x0e, 0x49,
+	0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a,
 	0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
 	0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f,
 	0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73,
-	0x67, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x4d, 0x79,
-	0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52,
-	0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x4d, 0x79, 0x50,
-	0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14,
-	0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74,
-	0x6f, 0x74, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
-	0x69, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
-	0x69, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x72,
-	0x6f, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x70, 0x70, 0x72,
-	0x6f, 0x76, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x46, 0x61, 0x69,
-	0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74,
-	0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e,
-	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xa0,
-	0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74,
-	0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c,
-	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
-	0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12,
-	0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12,
-	0x10, 0x0a, 0x03, 0x70, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x49,
-	0x64, 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
-	0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d,
-	0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x73, 0x67, 0x49,
-	0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d,
-	0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73,
-	0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, 0x0e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74,
-	0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63,
-	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f,
-	0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x07, 0x72,
-	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63,
-	0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61,
-	0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22,
-	0xd2, 0x05, 0x0a, 0x0e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61,
-	0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04,
-	0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
-	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
-	0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79,
-	0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79,
-	0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69,
-	0x6e, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e,
-	0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65,
-	0x74, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61,
-	0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72,
-	0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69,
-	0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
-	0x12, 0x22, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65,
-	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79,
-	0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54,
-	0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69,
-	0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18,
-	0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x11,
-	0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65,
-	0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
-	0x65, 0x72, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x11, 0x49, 0x6e, 0x66, 0x6f,
-	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a,
+	0x67, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e,
+	0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x72, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xfc, 0x05, 0x0a, 0x0e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65,
+	0x74, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x54,
+	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e,
+	0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x6e,
+	0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74,
+	0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74,
+	0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67,
+	0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74,
+	0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75,
+	0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
+	0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61,
+	0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68,
+	0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
+	0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69,
+	0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61,
+	0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75,
+	0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
+	0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70,
+	0x49, 0x64, 0x12, 0x3f, 0x0a, 0x11, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
+	0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+	0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
+	0x52, 0x11, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x6c, 0x61,
+	0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69,
+	0x6c, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e,
+	0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52,
 	0x10, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x65,
-	0x77, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
-	0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x10, 0x49, 0x6e, 0x66, 0x6f, 0x44,
-	0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x49, 0x0a, 0x11, 0x69,
-	0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74,
-	0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65,
-	0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x63, 0x74, 0x52, 0x11, 0x69, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6a, 0x79, 0x50, 0x75, 0x62, 0x6c,
-	0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x11, 0x6a, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4d,
-	0x65, 0x64, 0x69, 0x61, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
-	0x64, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12,
+	0x77, 0x12, 0x49, 0x0a, 0x11, 0x69, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x43,
+	0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63,
+	0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61,
+	0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x11, 0x69, 0x6e, 0x66, 0x6f, 0x44,
+	0x65, 0x74, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x11,
+	0x6a, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x64, 0x69,
+	0x61, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6a, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69,
+	0x73, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65,
+	0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
+	0x64, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65,
+	0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x16, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x41, 0x64, 0x64,
+	0x72, 0x65, 0x73, 0x73, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12,
 	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
 	0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
 	0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x4c, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12,

+ 6 - 2
rpc/manager/internal/logic/infolistlogic.go

@@ -30,7 +30,7 @@ func NewInfoListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *InfoList
 	}
 }
 
-//InfoList 信息列表
+// InfoList 信息列表
 func (l *InfoListLogic) InfoList(in *manager.InfoListReq) (*manager.InfoListResp, error) {
 	var (
 		query     []string
@@ -41,7 +41,11 @@ func (l *InfoListLogic) InfoList(in *manager.InfoListReq) (*manager.InfoListResp
 	)
 	log.Println("管理平台信息发布列表查询参数:", in)
 	if in.MsgType != 0 {
-		query = append(query, `type=`+common.InterfaceToStr(in.MsgType)+` `)
+		if in.MsgType == 2 { //采购信息包含阳光采购
+			query = append(query, `type in (2,8)`)
+		} else {
+			query = append(query, `type=`+common.InterfaceToStr(in.MsgType)+` `)
+		}
 	}
 
 	if in.PhoneType != 0 {