Sfoglia il codice sorgente

feat:未登录搜索接口

fuwencai 1 anno fa
parent
commit
bc36ca758a

+ 9 - 0
jyBXCore/api/bxcore.api

@@ -42,6 +42,13 @@ type (
 		PositionId      string `header:"positionId,optional"`   //职位id
 		MgoUserId       string `header:"mgoUserId,optional"`    //原userId
 	}
+	noLoginSearchReq {
+		AppId      string `header:"appId"`
+		PageNum    int64  `json:"pageNum,optional"`
+		PageSize   int64  `json:"pageSize,optional"`
+		SelectType string `json:"selectType,optional"`
+		KeyWords   string `json:"keyWords,optional"`
+	}
 	//
 	commonResp {
 		Err_code int64       `json:"error_code"`
@@ -181,6 +188,8 @@ type (
 service bxcore-api {
 	@handler searchList
 	post /jybx/core/:userType/searchList(searchReq) returns (commonResp)
+	@handler nologinSearch
+	post /jybx/core/nologin/search(noLoginSearchReq) returns (commonResp)
 	@handler limitSearchContent
 	post /jybx/core/:searchType/searchLimit(searchLimitReq) returns (commonResp)
 	@handler participateShow  // 列表数据参标信息接口

+ 28 - 0
jyBXCore/api/internal/handler/nologinSearchHandler.go

@@ -0,0 +1,28 @@
+package handler
+
+import (
+	"net/http"
+
+	"github.com/zeromicro/go-zero/rest/httpx"
+	"jyBXCore/api/internal/logic"
+	"jyBXCore/api/internal/svc"
+	"jyBXCore/api/internal/types"
+)
+
+func nologinSearchHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.NoLoginSearchReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewNologinSearchLogic(r.Context(), svcCtx, r, w)
+		resp, err := l.NologinSearch(&req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

+ 5 - 0
jyBXCore/api/internal/handler/routes.go

@@ -17,6 +17,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/jybx/core/:userType/searchList",
 				Handler: searchListHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodPost,
+				Path:    "/jybx/core/nologin/search",
+				Handler: nologinSearchHandler(serverCtx),
+			},
 			{
 				Method:  http.MethodPost,
 				Path:    "/jybx/core/:searchType/searchLimit",

+ 81 - 0
jyBXCore/api/internal/logic/nologinSearchLogic.go

@@ -0,0 +1,81 @@
+package logic
+
+import (
+	"app.yhyue.com/moapp/jybase/common"
+	"context"
+	IC "jyBXCore/api/init"
+	"jyBXCore/api/internal/util"
+	"jyBXCore/rpc/bxcore"
+	"log"
+	"net/http"
+	"time"
+
+	"jyBXCore/api/internal/svc"
+	"jyBXCore/api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type NologinSearchLogic struct {
+	logx.Logger
+	ctx    context.Context
+	r      *http.Request
+	svcCtx *svc.ServiceContext
+	w      http.ResponseWriter
+}
+
+func NewNologinSearchLogic(ctx context.Context, svcCtx *svc.ServiceContext, r *http.Request, w http.ResponseWriter) *NologinSearchLogic {
+	return &NologinSearchLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		r:      r,
+		w:      w,
+	}
+}
+
+func (l *NologinSearchLogic) NologinSearch(req *types.NoLoginSearchReq) (resp *types.CommonResp, err error) {
+	defer common.Catch()
+	t := time.Now()
+	res, err := l.svcCtx.BxCore.GetSearchListNoLogin(l.ctx, &bxcore.SearchReq{
+		AppId:      req.AppId,
+		PageNum:    req.PageNum,
+		PageSize:   req.PageSize,
+		SelectType: req.SelectType,
+		KeyWords:   req.KeyWords,
+		Platform:   util.CheckPlatform(l.r),
+	})
+	log.Println("请求接口耗时:", time.Since(t).Seconds())
+	if err != nil {
+		return &types.CommonResp{
+			Err_code: res.ErrCode,
+			Err_msg:  res.ErrMsg,
+			Data:     nil,
+		}, err
+	}
+	var data []map[string]interface{}
+	detailMosaicTxt := IC.C.DetailMosaicTxt
+	sm := common.StructToMapMore(IC.C.SearchMosaic)
+	for _, v := range res.Data.List {
+		d := common.StructToMapMore(v)
+		for name, t1 := range sm {
+			ts, _ := t1.(bool)
+			if !ts {
+				continue
+			}
+			d[name] = detailMosaicTxt
+			//if v1, ok := d[name]; ok && v1 != "" && v1 != 0 && ts {
+			//	d[name] = detailMosaicTxt
+			//}
+		}
+		data = append(data, d)
+	}
+	dataAll := common.StructToMapMore(res.Data)
+	dataAll["list"] = data
+	return &types.CommonResp{
+		Err_code: res.ErrCode,
+		Err_msg:  res.ErrMsg,
+		Data:     dataAll,
+	}, nil
+
+}

+ 8 - 0
jyBXCore/api/internal/types/types.go

@@ -36,6 +36,14 @@ type SearchReq struct {
 	MgoUserId       string `header:"mgoUserId,optional"`    //原userId
 }
 
+type NoLoginSearchReq struct {
+	AppId      string `header:"appId"`
+	PageNum    int64  `json:"pageNum,optional"`
+	PageSize   int64  `json:"pageSize,optional"`
+	SelectType string `json:"selectType,optional"`
+	KeyWords   string `json:"keyWords,optional"`
+}
+
 type CommonResp struct {
 	Err_code int64       `json:"error_code"`
 	Err_msg  string      `json:"error_msg"`

+ 2 - 0
jyBXCore/rpc/bxcore.proto

@@ -543,6 +543,8 @@ message TipInfo {
 service BxCore {
   //标讯搜索结果列表数据
   rpc GetSearchList(SearchReq) returns(SearchResp);
+  // 未登录用户搜索结果列表
+  rpc GetSearchListNoLogin(SearchReq) returns(SearchResp);
   //标讯搜索限制内容
   rpc SearchLimit(SearchLimitReq) returns(SearchLimitResp);
   // 列表数据参标信息接口

+ 28 - 19
jyBXCore/rpc/bxcore/bxcore.go

@@ -1,4 +1,4 @@
-// Code generated by goctl. DO NOT EDIT.
+// Code generated by goctl. DO NOT EDIT!
 // Source: bxcore.proto
 
 package bxcore
@@ -52,6 +52,7 @@ type (
 	SearchLimitReq           = bxcore.SearchLimitReq
 	SearchLimitResp          = bxcore.SearchLimitResp
 	SearchList               = bxcore.SearchList
+	SearchMap                = bxcore.SearchMap
 	SearchReq                = bxcore.SearchReq
 	SearchResp               = bxcore.SearchResp
 	SearchReturn             = bxcore.SearchReturn
@@ -65,25 +66,27 @@ type (
 	BxCore interface {
 		// 标讯搜索结果列表数据
 		GetSearchList(ctx context.Context, in *SearchReq, opts ...grpc.CallOption) (*SearchResp, error)
+		//  未登录用户搜索结果列表
+		GetSearchListNoLogin(ctx context.Context, in *SearchReq, opts ...grpc.CallOption) (*SearchResp, error)
 		// 标讯搜索限制内容
 		SearchLimit(ctx context.Context, in *SearchLimitReq, opts ...grpc.CallOption) (*SearchLimitResp, error)
-		// 列表数据参标信息接口
+		//  列表数据参标信息接口
 		ParticipateShow(ctx context.Context, in *ParticipateShowReq, opts ...grpc.CallOption) (*ParticipateShowRes, error)
-		// 详情页参标信息接口
+		//  详情页参标信息接口
 		ParticipateInfo(ctx context.Context, in *ParticipateInfoReq, opts ...grpc.CallOption) (*ParticipateInfoRes, error)
-		// 投标状态更新
+		//   投标状态更新
 		UpdateBidStatus(ctx context.Context, in *UpdateBidStatusReq, opts ...grpc.CallOption) (*UpdateBidStatusRes, error)
-		// 获取投标状态信息
+		//  获取投标状态信息
 		ParticipateContent(ctx context.Context, in *ParticipateContentReq, opts ...grpc.CallOption) (*ParticipateContentRes, error)
-		// 参标操作记录
+		//  参标操作记录
 		ParticipateRecords(ctx context.Context, in *ParticipateRecordsReq, opts ...grpc.CallOption) (*ParticipateRecordsRes, error)
-		// 当前部门/企业下参标人员信息
+		//  当前部门/企业下参标人员信息
 		ParticipatePersons(ctx context.Context, in *ParticipatePersonsReq, opts ...grpc.CallOption) (*ParticipatePersonsRes, error)
-		// 参标设置信息
+		//  参标设置信息
 		ParticipateSetUpInfo(ctx context.Context, in *ParticipateSetUpInfoReq, opts ...grpc.CallOption) (*ParticipateSetUpInfoRes, error)
-		// 项目参标 终止参标 划转等动作
+		//  项目参标 终止参标 划转等动作
 		ParticipateAction(ctx context.Context, in *ParticipateActionReq, opts ...grpc.CallOption) (*ParticipateActionRes, error)
-		// 我的参标项目列表|企业参标项目列表
+		//  我的参标项目列表|企业参标项目列表
 		ParticipateList(ctx context.Context, in *ParticipateListReq, opts ...grpc.CallOption) (*ParticipateListRes, error)
 		// 推送参标统计
 		PushStatistics(ctx context.Context, in *StatisticsListReq, opts ...grpc.CallOption) (*PushStatisticsDataRes, error)
@@ -110,61 +113,67 @@ func (m *defaultBxCore) GetSearchList(ctx context.Context, in *SearchReq, opts .
 	return client.GetSearchList(ctx, in, opts...)
 }
 
+//  未登录用户搜索结果列表
+func (m *defaultBxCore) GetSearchListNoLogin(ctx context.Context, in *SearchReq, opts ...grpc.CallOption) (*SearchResp, error) {
+	client := bxcore.NewBxCoreClient(m.cli.Conn())
+	return client.GetSearchListNoLogin(ctx, in, opts...)
+}
+
 // 标讯搜索限制内容
 func (m *defaultBxCore) SearchLimit(ctx context.Context, in *SearchLimitReq, opts ...grpc.CallOption) (*SearchLimitResp, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.SearchLimit(ctx, in, opts...)
 }
 
-// 列表数据参标信息接口
+//  列表数据参标信息接口
 func (m *defaultBxCore) ParticipateShow(ctx context.Context, in *ParticipateShowReq, opts ...grpc.CallOption) (*ParticipateShowRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateShow(ctx, in, opts...)
 }
 
-// 详情页参标信息接口
+//  详情页参标信息接口
 func (m *defaultBxCore) ParticipateInfo(ctx context.Context, in *ParticipateInfoReq, opts ...grpc.CallOption) (*ParticipateInfoRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateInfo(ctx, in, opts...)
 }
 
-// 投标状态更新
+//   投标状态更新
 func (m *defaultBxCore) UpdateBidStatus(ctx context.Context, in *UpdateBidStatusReq, opts ...grpc.CallOption) (*UpdateBidStatusRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.UpdateBidStatus(ctx, in, opts...)
 }
 
-// 获取投标状态信息
+//  获取投标状态信息
 func (m *defaultBxCore) ParticipateContent(ctx context.Context, in *ParticipateContentReq, opts ...grpc.CallOption) (*ParticipateContentRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateContent(ctx, in, opts...)
 }
 
-// 参标操作记录
+//  参标操作记录
 func (m *defaultBxCore) ParticipateRecords(ctx context.Context, in *ParticipateRecordsReq, opts ...grpc.CallOption) (*ParticipateRecordsRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateRecords(ctx, in, opts...)
 }
 
-// 当前部门/企业下参标人员信息
+//  当前部门/企业下参标人员信息
 func (m *defaultBxCore) ParticipatePersons(ctx context.Context, in *ParticipatePersonsReq, opts ...grpc.CallOption) (*ParticipatePersonsRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipatePersons(ctx, in, opts...)
 }
 
-// 参标设置信息
+//  参标设置信息
 func (m *defaultBxCore) ParticipateSetUpInfo(ctx context.Context, in *ParticipateSetUpInfoReq, opts ...grpc.CallOption) (*ParticipateSetUpInfoRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateSetUpInfo(ctx, in, opts...)
 }
 
-// 项目参标 终止参标 划转等动作
+//  项目参标 终止参标 划转等动作
 func (m *defaultBxCore) ParticipateAction(ctx context.Context, in *ParticipateActionReq, opts ...grpc.CallOption) (*ParticipateActionRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateAction(ctx, in, opts...)
 }
 
-// 我的参标项目列表|企业参标项目列表
+//  我的参标项目列表|企业参标项目列表
 func (m *defaultBxCore) ParticipateList(ctx context.Context, in *ParticipateListReq, opts ...grpc.CallOption) (*ParticipateListRes, error) {
 	client := bxcore.NewBxCoreClient(m.cli.Conn())
 	return client.ParticipateList(ctx, in, opts...)

+ 68 - 2
jyBXCore/rpc/entity/search.go

@@ -17,8 +17,10 @@ import (
 )
 
 var (
-	SearchCacheKey   = "searchDataCache_%d_%s_%s_%s"
-	SearchCacheCount = "searchCountCache_%d_%s_%s_%s"
+	SearchCacheKey          = "searchDataCache_%d_%s_%s_%s"
+	SearchCacheNoLoginKey   = "searchDataCacheNoLogin_%d_%s_%s_%s"
+	SearchCacheCount        = "searchCountCache_%d_%s_%s_%s"
+	SearchCacheCountNoLogin = "searchCountCacheNoLogin_%d_%s_%s_%s"
 )
 
 type KeyWordsSearch struct{}
@@ -92,6 +94,58 @@ func (kws *KeyWordsSearch) GetBidSearchListByCache(in *bxcore.SearchReq) (list [
 	return
 }
 
+// 未登录用户缓存使用这个
+func (kws *KeyWordsSearch) GetBidSearchListByCacheNoLogin(in *bxcore.SearchReq, poolSwitch bool) (list []*bxcore.SearchList, count, total int64) {
+	//缓存数据 最大量是5000条  100页数据
+	l, c := func(in *bxcore.SearchReq) (list []*bxcore.SearchList, count int64) {
+		//缓存数据总量 - 当前平台
+		redisCountKey := fmt.Sprintf(SearchCacheCountNoLogin, in.SearchGroup, MC.If(in.IsPay, "v", "f").(string), MC.If(in.BidField != "", in.BidField, "n").(string), in.Platform)
+		count = int64(redis.GetInt(util.RedisNameNew, redisCountKey))
+		//缓存数据: SearchGroup-全部;招标信息;超前项目信息;kws.PageNum-当前页 免费用户 or 付费用户
+		redisDataKey := fmt.Sprintf(SearchCacheNoLoginKey, in.SearchGroup, MC.If(in.IsPay, "v", "f").(string), MC.If(in.BidField != "", in.BidField, "n").(string), in.Platform)
+		sCache, err := redis.GetNewBytes(util.RedisNameNew, redisDataKey)
+		log.Println("-------------------------redisDataKey--------------------------------:", redisDataKey)
+		if err == nil {
+			if sCache != nil && len(*sCache) > 0 {
+				err = json.Unmarshal(*sCache, &list)
+				if err == nil {
+					return
+				} else {
+					log.Println("缓存序列化异常")
+				}
+			}
+		}
+		//无缓存数据 或 缓存数据查询异常
+		//查库>存redis缓存
+		//查询缓存数据 参数初始化
+		kws.DefaultSearchParamsAuto(in)
+		//缓存数据
+		count, list = service.GetBidSearchDataNoLogin(in, true, poolSwitch)
+		if len(list) > 0 {
+			redis.Put(util.RedisNameNew, redisCountKey, count, MC.If(IC.C.DefaultSearchCacheTime > 0, IC.C.DefaultSearchCacheTime*60*60, 24*60*60).(int))
+			b, err := json.Marshal(list)
+			if err == nil {
+				redis.PutBytes(util.RedisNameNew, redisDataKey, &b, MC.If(IC.C.DefaultSearchCacheTime > 0, IC.C.DefaultSearchCacheTime*60*60, 24*60*60).(int))
+			} else {
+				log.Println("默认搜索查询结果保存redis缓存异常")
+			}
+		} else {
+			log.Println("默认搜索 暂无数据")
+		}
+		return
+	}(in)
+	if len(l) > 0 {
+		total = c
+		limitCount := int64(util.SearchMaxPageNum)
+		count = c
+		if count > limitCount {
+			count = limitCount
+		}
+		list = l[(in.PageNum-1)*in.PageSize : in.PageNum*in.PageSize]
+	}
+	return
+}
+
 // DefaultSearchParamsAuto 缓存查询条件初始化
 func (kws *KeyWordsSearch) DefaultSearchParamsAuto(in *bxcore.SearchReq) {
 	in.TopType = ""
@@ -276,6 +330,18 @@ func (kws *KeyWordsSearch) GetBidSearchList(in *bxcore.SearchReq) (count, total
 	return
 }
 
+// GetBidSearchListNoLogin 未登录非空搜索用这个
+func (kws *KeyWordsSearch) GetBidSearchListNoLogin(in *bxcore.SearchReq, poolSwitch bool) (count, total int64, list []*bxcore.SearchList) {
+	//排除异常in.PageNum参数
+	count, list = service.GetBidSearchDataNoLogin(in, false, poolSwitch)
+	total = count //返回数据总量提示信息
+	limitCount := int64(util.SearchPageSize * util.SearchMaxPageNum)
+	if count > limitCount {
+		count = limitCount //付费用户count 最多5000条,100页数据,每页50条;免费用户count 最多500条,10页数据,每页50条。
+	}
+	return
+}
+
 // 聚合搜索
 func (kws *KeyWordsSearch) PolymerizeSearch(in *bxcore.PolymerizeSearchReq) *bxcore.SearchReturn {
 	data := &bxcore.SearchReturn{}

+ 7 - 2
jyBXCore/rpc/etc/bxcore.yaml

@@ -12,6 +12,7 @@ LabelUrl:
   SType: /list/stype/%s.html
   Industry: /list/industry/%s.html
 DefaultSearchCacheTime: 24
+DefaultSearchCacheNoLoginTime: 24 # 未登录空搜索缓存时间
 LimitSearchText:
   Flag: true
   Count: 40
@@ -45,9 +46,13 @@ ContextOldVipLimit: 1664553600
 Middleground:
   Etcd:
     Hosts:
-      - 192.168.3.206:2379
+      - 127.0.0.1:2379
   PowerCheckCenterKey: powercheck.rpc #权益校验中台
   UserCenterKey: usercenter.rpc #用户中台rpc
   ResourceCenterKey: resource.rpc #资源中台rpc
 ResourceCode: "cb_zy_code"
-SearchConcurrency: 20
+SearchConcurrency: 20
+NoLoginSearch: # 未登录搜索配置
+  Switch: true # 是否打开并发限制
+  ExecutionNum: 5 # 执行池
+  Wait: 2 # 等待池

+ 8 - 1
jyBXCore/rpc/etc/db.yaml

@@ -35,4 +35,11 @@ mongo:
         collection: bidding
         collectionChange: bidding_back
         userName: jyDevGroup
-        password: jy@DevGroup
+        password: jy@DevGroup
+esNoLogin:
+    addr: http://192.168.3.241:9205,http://192.168.3.149:9200
+    size: 50
+    version: v7
+    userName: ""
+    password: ""
+    index: "bidding_year"

+ 7 - 0
jyBXCore/rpc/init/db.go

@@ -19,6 +19,7 @@ var (
 	BaseMysql  *mysql.Mysql
 	Mgo        mongodb.MongodbSim
 	MgoBidding mongodb.MongodbSim //标讯详情等(第一版没用)
+	NoLoginEs  Es
 )
 
 func MongoDBInit(em *entity.Mongo) {
@@ -90,3 +91,9 @@ func EsInit(es *entity.EsStruct) {
 		NewEs(es.Version, es.Addr, es.Size, es.UserName, es.Password)
 	}
 }
+func NoLoginEsInit(es *entity.EsStruct) {
+	if es.Addr != "" {
+		log.Println("--初始化 nologin  elasticsearch--")
+		NoLoginEs = NewEs(es.Version, es.Addr, es.Size, es.UserName, es.Password)
+	}
+}

+ 35 - 0
jyBXCore/rpc/init/init.go

@@ -1,10 +1,12 @@
 package init
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"jyBXCore/entity"
 	"jyBXCore/rpc/internal/config"
+	"time"
 
 	"app.yhyue.com/moapp/jypkg/middleground"
 	_ "github.com/go-sql-driver/mysql"
@@ -21,8 +23,39 @@ var (
 	SearchLimitKey = "jy_limitSearchText_new" // 全文或附件搜索限制
 	Middleground   *middleground.Middleground
 	Search_Thread  chan bool
+	ReqLimitInit   *ReqLimit
 )
 
+type ReqLimit struct {
+	DoPool   chan struct{}
+	WaitPool chan struct{}
+}
+
+// -2 等待池已满
+// -1 超时
+// 1:可以执行查询
+func (r *ReqLimit) Limit(ctx context.Context) int {
+	ctx, cancel := context.WithTimeout(ctx, 3*time.Second)
+	defer cancel()
+	select {
+	case <-r.WaitPool:
+		defer func() {
+			r.WaitPool <- struct{}{}
+		}()
+		select {
+		case <-r.DoPool:
+			return 1
+		case <-ctx.Done(): //超时
+			return -1
+		}
+	default:
+		return -2
+	}
+}
+
+func (r *ReqLimit) Release() {
+	r.DoPool <- struct{}{}
+}
 func init() {
 	//基本配置
 	conf.MustLoad(*configFile, &C)
@@ -36,7 +69,9 @@ func init() {
 	RedisInit(&DB.Redis)
 	//初始es
 	EsInit(&DB.Es)
+	NoLoginEsInit(&DB.EsNoLogin)
 	Search_Thread = make(chan bool, C.SearchConcurrency)
+	NoLoginPoolInit(C.NoLoginSearch.Switch, C.NoLoginSearch.ExecutionNum, C.NoLoginSearch.Wait)
 	//初始化标签
 	LabelInit()
 	//

+ 24 - 0
jyBXCore/rpc/init/pool.go

@@ -0,0 +1,24 @@
+package init
+
+import "log"
+
+func NoLoginPoolInit(poolSwitch bool, do, wait int) {
+	if poolSwitch {
+		//创建执行池 等待池
+		doPool := make(chan struct{}, do)
+		for i := 0; i < do; i++ {
+			doPool <- struct{}{}
+		}
+		waitPool := make(chan struct{}, wait)
+		for i := 0; i < wait; i++ {
+			waitPool <- struct{}{}
+		}
+		ReqLimitInit = &ReqLimit{
+			DoPool:   doPool,
+			WaitPool: waitPool,
+		}
+	} else {
+		log.Println("未登录搜索限制未打开")
+	}
+
+}

+ 13 - 6
jyBXCore/rpc/internal/config/config.go

@@ -14,8 +14,9 @@ type Config struct {
 		SType    string
 		Industry string
 	}
-	DefaultSearchCacheTime int //清除搜索列表内存缓存 间隔时间
-	LimitSearchText        struct {
+	DefaultSearchCacheTime        int //清除搜索列表内存缓存 间隔时间
+	DefaultSearchCacheNoLoginTime int //清除搜索列表内存缓存 未登录用户 间隔时间
+	LimitSearchText               struct {
 		Flag       bool
 		Count      int
 		NoLogin    int
@@ -54,11 +55,17 @@ type Config struct {
 	}
 	ResourceCode      string
 	SearchConcurrency int64
+	NoLoginSearch     struct {
+		Switch       bool
+		ExecutionNum int
+		Wait         int
+	}
 }
 
 type Db struct {
-	Mysql entity.Mysql      `json:"mysql"`
-	Redis entity.RedisStuct `json:"redis"`
-	Es    entity.EsStruct   `json:"es"`
-	Mongo entity.Mongo      `json:"mongo"`
+	Mysql     entity.Mysql      `json:"mysql"`
+	Redis     entity.RedisStuct `json:"redis"`
+	Es        entity.EsStruct   `json:"es"`
+	Mongo     entity.Mongo      `json:"mongo"`
+	EsNoLogin entity.EsStruct   `json:"esNoLogin"`
 }

+ 105 - 0
jyBXCore/rpc/internal/logic/getsearchlistnologinlogic.go

@@ -0,0 +1,105 @@
+package logic
+
+import (
+	MC "app.yhyue.com/moapp/jybase/common"
+	"context"
+	"fmt"
+	"jyBXCore/rpc/entity"
+	IC "jyBXCore/rpc/init"
+	"jyBXCore/rpc/util"
+	"log"
+	"strings"
+	"time"
+
+	"jyBXCore/rpc/internal/svc"
+	"jyBXCore/rpc/type/bxcore"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type GetSearchListNoLoginLogic struct {
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	logx.Logger
+}
+
+func NewGetSearchListNoLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetSearchListNoLoginLogic {
+	return &GetSearchListNoLoginLogic{
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		Logger: logx.WithContext(ctx),
+	}
+}
+
+// 未登录用户搜索结果列表
+func (l *GetSearchListNoLoginLogic) GetSearchListNoLogin(in *bxcore.SearchReq) (*bxcore.SearchResp, error) {
+	defer MC.Catch()
+	res := &bxcore.SearchData{
+		Count:          0,
+		List:           []*bxcore.SearchList{},
+		InterceptLimit: int64(MC.IntAllDef(IC.C.KeywordsLimit, 35)),
+	}
+	//初始化搜索对象
+	ks := entity.NewKeyWordsSearch()
+	var selectType []string
+	selectTypeSplit := strings.Split(in.SelectType, ",")
+	// 未登录用户只能搜标题和正文
+	for i := 0; i < len(selectTypeSplit); i++ {
+		if selectTypeSplit[i] == "title" || selectTypeSplit[i] == "content" {
+			selectType = append(selectType, selectTypeSplit[i])
+		}
+	}
+	if len(selectType) == 0 {
+		selectType = []string{"title", "content"}
+	}
+	//
+	in.SelectType = strings.Join(selectType, ",")
+	//处理搜索条件
+	heightWords := ks.SearchParamsHandle(in)
+	if in.PageNum < 0 && in.PageSize < 0 {
+		return &bxcore.SearchResp{
+			Data:    res,
+			ErrMsg:  "",
+			ErrCode: 0,
+		}, nil
+	}
+	//判断是否是空搜索,如果是空搜索,查缓存数据
+	if ks.IsEmptySearch(in) {
+		res.List, res.Count, res.Total = ks.GetBidSearchListByCacheNoLogin(in, l.svcCtx.Config.NoLoginSearch.Switch)
+		return &bxcore.SearchResp{
+			Data:    res,
+			ErrMsg:  "",
+			ErrCode: 0,
+		}, nil
+	}
+
+	in.Subtype = "招标预告,招标公告,招标结果,招标信用信息" //"招标预告,招标公告,招标结果,招标信用信息"
+	in.PublishTime = fmt.Sprintf("%d-%d", time.Now().AddDate(-1, 0, 0).Unix(), time.Now().Unix())
+	t := time.Now()
+	//招标信息有效查询
+	res.IsLimit = 1
+	//查询数据
+	searchLimit := util.IsSearchLimit(strings.Split(in.SelectType, ","))
+	//全文检索限制
+	if searchLimit {
+		res.IsLimit = util.IsLimited(in.LimitFlag, in.UserId, in.UserType != "fType", in.IsNew)
+		if res.IsLimit == 1 { //没有被限制
+			defer util.Limit()
+		}
+	}
+	//无限制
+	if res.IsLimit == 1 {
+		t2 := time.Now()
+		res.Count, res.Total, res.List = ks.GetBidSearchListNoLogin(in, l.svcCtx.Config.NoLoginSearch.Switch) //util.GetBidSearchData(in)
+		log.Println("未登录查询耗时:", time.Since(t2))
+		res.KeyWords = strings.Join(heightWords, " ")
+		res.InterceptOtherWords = in.InterceptOtherWords
+		res.InterceptKeyWords = in.InterceptKeyWords
+	}
+	log.Println("关键词 -全部- 查询耗时:", time.Since(t).Seconds())
+	return &bxcore.SearchResp{
+		Data:    res,
+		ErrMsg:  "",
+		ErrCode: 0,
+	}, nil
+}

+ 16 - 10
jyBXCore/rpc/internal/server/bxcoreserver.go

@@ -1,4 +1,4 @@
-// Code generated by goctl. DO NOT EDIT.
+// Code generated by goctl. DO NOT EDIT!
 // Source: bxcore.proto
 
 package server
@@ -28,61 +28,67 @@ func (s *BxCoreServer) GetSearchList(ctx context.Context, in *bxcore.SearchReq)
 	return l.GetSearchList(in)
 }
 
+//  未登录用户搜索结果列表
+func (s *BxCoreServer) GetSearchListNoLogin(ctx context.Context, in *bxcore.SearchReq) (*bxcore.SearchResp, error) {
+	l := logic.NewGetSearchListNoLoginLogic(ctx, s.svcCtx)
+	return l.GetSearchListNoLogin(in)
+}
+
 // 标讯搜索限制内容
 func (s *BxCoreServer) SearchLimit(ctx context.Context, in *bxcore.SearchLimitReq) (*bxcore.SearchLimitResp, error) {
 	l := logic.NewSearchLimitLogic(ctx, s.svcCtx)
 	return l.SearchLimit(in)
 }
 
-// 列表数据参标信息接口
+//  列表数据参标信息接口
 func (s *BxCoreServer) ParticipateShow(ctx context.Context, in *bxcore.ParticipateShowReq) (*bxcore.ParticipateShowRes, error) {
 	l := logic.NewParticipateShowLogic(ctx, s.svcCtx)
 	return l.ParticipateShow(in)
 }
 
-// 详情页参标信息接口
+//  详情页参标信息接口
 func (s *BxCoreServer) ParticipateInfo(ctx context.Context, in *bxcore.ParticipateInfoReq) (*bxcore.ParticipateInfoRes, error) {
 	l := logic.NewParticipateInfoLogic(ctx, s.svcCtx)
 	return l.ParticipateInfo(in)
 }
 
-// 投标状态更新
+//   投标状态更新
 func (s *BxCoreServer) UpdateBidStatus(ctx context.Context, in *bxcore.UpdateBidStatusReq) (*bxcore.UpdateBidStatusRes, error) {
 	l := logic.NewUpdateBidStatusLogic(ctx, s.svcCtx)
 	return l.UpdateBidStatus(in)
 }
 
-// 获取投标状态信息
+//  获取投标状态信息
 func (s *BxCoreServer) ParticipateContent(ctx context.Context, in *bxcore.ParticipateContentReq) (*bxcore.ParticipateContentRes, error) {
 	l := logic.NewParticipateContentLogic(ctx, s.svcCtx)
 	return l.ParticipateContent(in)
 }
 
-// 参标操作记录
+//  参标操作记录
 func (s *BxCoreServer) ParticipateRecords(ctx context.Context, in *bxcore.ParticipateRecordsReq) (*bxcore.ParticipateRecordsRes, error) {
 	l := logic.NewParticipateRecordsLogic(ctx, s.svcCtx)
 	return l.ParticipateRecords(in)
 }
 
-// 当前部门/企业下参标人员信息
+//  当前部门/企业下参标人员信息
 func (s *BxCoreServer) ParticipatePersons(ctx context.Context, in *bxcore.ParticipatePersonsReq) (*bxcore.ParticipatePersonsRes, error) {
 	l := logic.NewParticipatePersonsLogic(ctx, s.svcCtx)
 	return l.ParticipatePersons(in)
 }
 
-// 参标设置信息
+//  参标设置信息
 func (s *BxCoreServer) ParticipateSetUpInfo(ctx context.Context, in *bxcore.ParticipateSetUpInfoReq) (*bxcore.ParticipateSetUpInfoRes, error) {
 	l := logic.NewParticipateSetUpInfoLogic(ctx, s.svcCtx)
 	return l.ParticipateSetUpInfo(in)
 }
 
-// 项目参标 终止参标 划转等动作
+//  项目参标 终止参标 划转等动作
 func (s *BxCoreServer) ParticipateAction(ctx context.Context, in *bxcore.ParticipateActionReq) (*bxcore.ParticipateActionRes, error) {
 	l := logic.NewParticipateActionLogic(ctx, s.svcCtx)
 	return l.ParticipateAction(in)
 }
 
-// 我的参标项目列表|企业参标项目列表
+//  我的参标项目列表|企业参标项目列表
 func (s *BxCoreServer) ParticipateList(ctx context.Context, in *bxcore.ParticipateListReq) (*bxcore.ParticipateListRes, error) {
 	l := logic.NewParticipateListLogic(ctx, s.svcCtx)
 	return l.ParticipateList(in)

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

@@ -2,6 +2,7 @@ package es
 
 import (
 	"fmt"
+	IC "jyBXCore/rpc/init"
 	"strconv"
 	"strings"
 
@@ -86,3 +87,30 @@ func (e *SearchByES) GetAllByNgramWithCount() (int64, *[]map[string]interface{})
 		return 0, nil
 	}
 }
+
+// GetAllByNgramWithCountNoLogin 获取es查询结果及总数量 未登录用户用这个
+func (e *SearchByES) GetAllByNgramWithCountNoLogin() (int64, *[]map[string]interface{}) {
+	if e.Query != "" {
+		queryStr := e.Query
+		if e.HighLight {
+			var ws []string
+			for _, w := range strings.Split(e.FindFields, ",") {
+				ws = append(ws, fmt.Sprintf(HighlightStr, w, e.Count))
+			}
+			queryStr = queryStr[:len(queryStr)-1] + `,` + fmt.Sprintf(HL, strings.Join(ws, ",")) + `}`
+		}
+		if len(e.Fields) > 0 {
+			queryStr = queryStr[:len(queryStr)-1] + `,"_source":[` + e.Fields + "]}"
+		}
+		if len(e.Order) > 0 {
+			queryStr = queryStr[:len(queryStr)-1] + `,"sort":[` + SR(SR(SR(SR(e.Order, ",", "},{", -1), " ", "", -1), ":-1", `:"desc"`, -1), ":1", `:"asc"`, -1) + `]}`
+		}
+		if e.Start > -1 {
+			queryStr = queryStr[:len(queryStr)-1] + `,"from":` + strconv.Itoa(e.Start) + `,"size":` + strconv.Itoa(e.Limit) + "}"
+		}
+		log.Println("queryStr:", queryStr)
+		return IC.NoLoginEs.GetWithCount(e.Index, e.IType, e.Query, queryStr)
+	} else {
+		return 0, nil
+	}
+}

+ 48 - 0
jyBXCore/rpc/service/search.go

@@ -6,6 +6,7 @@ import (
 	elastic "app.yhyue.com/moapp/jybase/es"
 	"bp.jydev.jianyu360.cn/BaseService/powerCheckCenter/rpc/pb"
 	userPb "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"context"
 	"fmt"
 	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/model/es"
@@ -66,6 +67,53 @@ func GetBidSearchData(in *bxcore.SearchReq, isCache bool) (count int64, list []*
 	return
 }
 
+// GetBidSearchDataNoLogin 未登录用户用这个搜索
+func GetBidSearchDataNoLogin(in *bxcore.SearchReq, isCache bool, poolSwitch bool) (count int64, list []*bxcore.SearchList) {
+	var start = int((in.PageNum - 1) * in.PageSize)
+	if start >= 0 {
+		t := time.Now()
+		fields := es.BidSearchFieldBase
+		//IC.C.FileSignBool列表是否显示附件开关
+		if IC.C.FileSignBool {
+			fields = fields + es.BidSearchFieldFile
+		}
+		biddingSearch := es.SearchByES{
+			Index:      es.INDEX,
+			IType:      es.TYPE,
+			Query:      es.GetSearchQuery(in, es.GetBidSearchQuery(in)),
+			FindFields: MC.If(isCache, "title", "detail").(string),
+			Order:      es.BidSearchSort,
+			Fields:     fields,
+			Start:      MC.If(isCache, 0, start).(int),
+			Limit:      MC.If(isCache, MC.If(in.IsPay, IC.C.DefaultBidInfo.PayCount, IC.C.DefaultBidInfo.Count).(int), int(in.PageSize)).(int),
+			Count:      MC.If(strings.Contains(in.SelectType, "detail"), 115, 0).(int),       //高亮正文数量
+			HighLight:  MC.If(strings.Contains(in.SelectType, "detail"), true, false).(bool), //是否高亮正文
+		}
+		var repl *[]map[string]interface{}
+		if poolSwitch {
+			if flag := IC.ReqLimitInit.Limit(context.Background()); flag == 1 {
+				defer IC.ReqLimitInit.Release()
+			} else {
+				if flag == -2 {
+					log.Println("等待队列已满")
+				} else if flag == -1 {
+					log.Println("等待超时")
+				}
+				return 0, nil
+			}
+		}
+		count, repl = biddingSearch.GetAllByNgramWithCountNoLogin()
+		if repl != nil && *repl != nil && len(*repl) > 0 {
+			//格式化查询结果
+			list = util.SearchListFormat(in.UserId, in.Industry, repl, strings.Contains(in.SelectType, "detail"))
+		} else {
+			log.Println("查询数据异常")
+		}
+		log.Println(in.KeyWords, "关键词 -1- 查询耗时:", time.Since(t).Seconds())
+	}
+	return
+}
+
 func EntSearch(searchCode string) ([]*bxcore.Search, int64) {
 	data := make([]*bxcore.Search, 0, 0)
 	count := int64(0)

+ 107 - 94
jyBXCore/rpc/type/bxcore/bxcore.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.28.1
-// 	protoc        v3.15.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.19.4
 // source: bxcore.proto
 
 package bxcore
@@ -840,6 +840,7 @@ func (x *SearchList) GetWinner() string {
 	return ""
 }
 
+//
 type WinnerInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -911,6 +912,7 @@ func (x *WinnerInfo) GetWinnerId() string {
 	return ""
 }
 
+//
 type PInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1006,6 +1008,7 @@ func (x *PInfo) GetApproveNumber() string {
 	return ""
 }
 
+//
 type SearchLimitReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1101,6 +1104,7 @@ func (x *SearchLimitReq) GetSearchType() string {
 	return ""
 }
 
+//
 type SearchLimitResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2917,6 +2921,7 @@ func (x *ParticipatePersonsRes) GetData() []*ParticipatePerson {
 	return nil
 }
 
+//
 type ParticipateSetUpInfoReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3139,7 +3144,7 @@ func (x *BidTypeReq) GetContent() []string {
 	return nil
 }
 
-// 消息提醒设置:
+//消息提醒设置:
 type RemindRuleReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3203,7 +3208,7 @@ func (x *RemindRuleReq) GetNode() string {
 	return ""
 }
 
-// 设置信息内容
+//设置信息内容
 type ParticipateSetUpInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3283,7 +3288,7 @@ func (x *ParticipateSetUpInfo) GetIsShow() int64 {
 	return 0
 }
 
-// 设置信息范围内容
+//设置信息范围内容
 type ParticipateSetUpInfoRes struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3347,6 +3352,7 @@ func (x *ParticipateSetUpInfoRes) GetData() *ParticipateSetUpInfo {
 	return nil
 }
 
+//
 type ParticipateActionReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3514,6 +3520,7 @@ func (x *ParticipateActionReq) GetPhone() string {
 	return ""
 }
 
+//
 type ParticipateActionRes struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3808,7 +3815,7 @@ func (x *ParticipateListReq) GetPhone() string {
 	return ""
 }
 
-// 参标列表
+//参标列表
 type ParticipateList struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -5920,77 +5927,81 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x77, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x54, 0x79,
 	0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x54, 0x79, 0x70,
 	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x32, 0xc0, 0x08,
+	0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x32, 0xff, 0x08,
 	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,
+	0x12, 0x3d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73,
+	0x74, 0x4e, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 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, 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, 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,
+	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, 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, 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, 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,
+	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, 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,
+	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,
 	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,
+	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, 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,
+	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,
-	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,
+	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, 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,
-	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,
-	0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33,
+	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, 0x42,
+	0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
 }
 
 var (
@@ -6086,35 +6097,37 @@ var file_bxcore_proto_depIdxs = []int32{
 	46, // 25: bxcore.SearchMap.data:type_name -> bxcore.Search
 	48, // 26: bxcore.MenuList.tipInfo:type_name -> bxcore.TipInfo
 	0,  // 27: bxcore.BxCore.GetSearchList:input_type -> bxcore.SearchReq
-	6,  // 28: bxcore.BxCore.SearchLimit:input_type -> bxcore.SearchLimitReq
-	8,  // 29: bxcore.BxCore.ParticipateShow:input_type -> bxcore.ParticipateShowReq
-	11, // 30: bxcore.BxCore.ParticipateInfo:input_type -> bxcore.ParticipateInfoReq
-	14, // 31: bxcore.BxCore.UpdateBidStatus:input_type -> bxcore.UpdateBidStatusReq
-	16, // 32: bxcore.BxCore.ParticipateContent:input_type -> bxcore.ParticipateContentReq
-	19, // 33: bxcore.BxCore.ParticipateRecords:input_type -> bxcore.ParticipateRecordsReq
-	23, // 34: bxcore.BxCore.ParticipatePersons:input_type -> bxcore.ParticipatePersonsReq
-	26, // 35: bxcore.BxCore.ParticipateSetUpInfo:input_type -> bxcore.ParticipateSetUpInfoReq
-	31, // 36: bxcore.BxCore.ParticipateAction:input_type -> bxcore.ParticipateActionReq
-	33, // 37: bxcore.BxCore.ParticipateList:input_type -> bxcore.ParticipateListReq
-	37, // 38: bxcore.BxCore.PushStatistics:input_type -> bxcore.StatisticsListReq
-	37, // 39: bxcore.BxCore.ProjectStatistics:input_type -> bxcore.StatisticsListReq
-	42, // 40: bxcore.BxCore.PolymerizeSearch:input_type -> bxcore.PolymerizeSearchReq
-	1,  // 41: bxcore.BxCore.GetSearchList:output_type -> bxcore.SearchResp
-	7,  // 42: bxcore.BxCore.SearchLimit:output_type -> bxcore.SearchLimitResp
-	10, // 43: bxcore.BxCore.ParticipateShow:output_type -> bxcore.ParticipateShowRes
-	13, // 44: bxcore.BxCore.ParticipateInfo:output_type -> bxcore.ParticipateInfoRes
-	15, // 45: bxcore.BxCore.UpdateBidStatus:output_type -> bxcore.UpdateBidStatusRes
-	18, // 46: bxcore.BxCore.ParticipateContent:output_type -> bxcore.ParticipateContentRes
-	22, // 47: bxcore.BxCore.ParticipateRecords:output_type -> bxcore.ParticipateRecordsRes
-	25, // 48: bxcore.BxCore.ParticipatePersons:output_type -> bxcore.ParticipatePersonsRes
-	30, // 49: bxcore.BxCore.ParticipateSetUpInfo:output_type -> bxcore.ParticipateSetUpInfoRes
-	32, // 50: bxcore.BxCore.ParticipateAction:output_type -> bxcore.ParticipateActionRes
-	36, // 51: bxcore.BxCore.ParticipateList:output_type -> bxcore.ParticipateListRes
-	38, // 52: bxcore.BxCore.PushStatistics:output_type -> bxcore.PushStatisticsDataRes
-	40, // 53: bxcore.BxCore.ProjectStatistics:output_type -> bxcore.ProjectStatisticsDataRes
-	43, // 54: bxcore.BxCore.PolymerizeSearch:output_type -> bxcore.PolymerizeSearchResp
-	41, // [41:55] is the sub-list for method output_type
-	27, // [27:41] is the sub-list for method input_type
+	0,  // 28: bxcore.BxCore.GetSearchListNoLogin:input_type -> bxcore.SearchReq
+	6,  // 29: bxcore.BxCore.SearchLimit:input_type -> bxcore.SearchLimitReq
+	8,  // 30: bxcore.BxCore.ParticipateShow:input_type -> bxcore.ParticipateShowReq
+	11, // 31: bxcore.BxCore.ParticipateInfo:input_type -> bxcore.ParticipateInfoReq
+	14, // 32: bxcore.BxCore.UpdateBidStatus:input_type -> bxcore.UpdateBidStatusReq
+	16, // 33: bxcore.BxCore.ParticipateContent:input_type -> bxcore.ParticipateContentReq
+	19, // 34: bxcore.BxCore.ParticipateRecords:input_type -> bxcore.ParticipateRecordsReq
+	23, // 35: bxcore.BxCore.ParticipatePersons:input_type -> bxcore.ParticipatePersonsReq
+	26, // 36: bxcore.BxCore.ParticipateSetUpInfo:input_type -> bxcore.ParticipateSetUpInfoReq
+	31, // 37: bxcore.BxCore.ParticipateAction:input_type -> bxcore.ParticipateActionReq
+	33, // 38: bxcore.BxCore.ParticipateList:input_type -> bxcore.ParticipateListReq
+	37, // 39: bxcore.BxCore.PushStatistics:input_type -> bxcore.StatisticsListReq
+	37, // 40: bxcore.BxCore.ProjectStatistics:input_type -> bxcore.StatisticsListReq
+	42, // 41: bxcore.BxCore.PolymerizeSearch:input_type -> bxcore.PolymerizeSearchReq
+	1,  // 42: bxcore.BxCore.GetSearchList:output_type -> bxcore.SearchResp
+	1,  // 43: bxcore.BxCore.GetSearchListNoLogin:output_type -> bxcore.SearchResp
+	7,  // 44: bxcore.BxCore.SearchLimit:output_type -> bxcore.SearchLimitResp
+	10, // 45: bxcore.BxCore.ParticipateShow:output_type -> bxcore.ParticipateShowRes
+	13, // 46: bxcore.BxCore.ParticipateInfo:output_type -> bxcore.ParticipateInfoRes
+	15, // 47: bxcore.BxCore.UpdateBidStatus:output_type -> bxcore.UpdateBidStatusRes
+	18, // 48: bxcore.BxCore.ParticipateContent:output_type -> bxcore.ParticipateContentRes
+	22, // 49: bxcore.BxCore.ParticipateRecords:output_type -> bxcore.ParticipateRecordsRes
+	25, // 50: bxcore.BxCore.ParticipatePersons:output_type -> bxcore.ParticipatePersonsRes
+	30, // 51: bxcore.BxCore.ParticipateSetUpInfo:output_type -> bxcore.ParticipateSetUpInfoRes
+	32, // 52: bxcore.BxCore.ParticipateAction:output_type -> bxcore.ParticipateActionRes
+	36, // 53: bxcore.BxCore.ParticipateList:output_type -> bxcore.ParticipateListRes
+	38, // 54: bxcore.BxCore.PushStatistics:output_type -> bxcore.PushStatisticsDataRes
+	40, // 55: bxcore.BxCore.ProjectStatistics:output_type -> bxcore.ProjectStatisticsDataRes
+	43, // 56: bxcore.BxCore.PolymerizeSearch:output_type -> bxcore.PolymerizeSearchResp
+	42, // [42:57] is the sub-list for method output_type
+	27, // [27:42] is the sub-list for method input_type
 	27, // [27:27] is the sub-list for extension type_name
 	27, // [27:27] is the sub-list for extension extendee
 	0,  // [0:27] is the sub-list for field type_name

+ 39 - 1
jyBXCore/rpc/type/bxcore/bxcore_grpc.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
 // - protoc-gen-go-grpc v1.2.0
-// - protoc             v3.15.1
+// - protoc             v3.19.4
 // source: bxcore.proto
 
 package bxcore
@@ -24,6 +24,8 @@ const _ = grpc.SupportPackageIsVersion7
 type BxCoreClient interface {
 	//标讯搜索结果列表数据
 	GetSearchList(ctx context.Context, in *SearchReq, opts ...grpc.CallOption) (*SearchResp, error)
+	// 未登录用户搜索结果列表
+	GetSearchListNoLogin(ctx context.Context, in *SearchReq, opts ...grpc.CallOption) (*SearchResp, error)
 	//标讯搜索限制内容
 	SearchLimit(ctx context.Context, in *SearchLimitReq, opts ...grpc.CallOption) (*SearchLimitResp, error)
 	// 列表数据参标信息接口
@@ -69,6 +71,15 @@ func (c *bxCoreClient) GetSearchList(ctx context.Context, in *SearchReq, opts ..
 	return out, nil
 }
 
+func (c *bxCoreClient) GetSearchListNoLogin(ctx context.Context, in *SearchReq, opts ...grpc.CallOption) (*SearchResp, error) {
+	out := new(SearchResp)
+	err := c.cc.Invoke(ctx, "/bxcore.BxCore/GetSearchListNoLogin", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *bxCoreClient) SearchLimit(ctx context.Context, in *SearchLimitReq, opts ...grpc.CallOption) (*SearchLimitResp, error) {
 	out := new(SearchLimitResp)
 	err := c.cc.Invoke(ctx, "/bxcore.BxCore/SearchLimit", in, out, opts...)
@@ -192,6 +203,8 @@ func (c *bxCoreClient) PolymerizeSearch(ctx context.Context, in *PolymerizeSearc
 type BxCoreServer interface {
 	//标讯搜索结果列表数据
 	GetSearchList(context.Context, *SearchReq) (*SearchResp, error)
+	// 未登录用户搜索结果列表
+	GetSearchListNoLogin(context.Context, *SearchReq) (*SearchResp, error)
 	//标讯搜索限制内容
 	SearchLimit(context.Context, *SearchLimitReq) (*SearchLimitResp, error)
 	// 列表数据参标信息接口
@@ -228,6 +241,9 @@ type UnimplementedBxCoreServer struct {
 func (UnimplementedBxCoreServer) GetSearchList(context.Context, *SearchReq) (*SearchResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetSearchList not implemented")
 }
+func (UnimplementedBxCoreServer) GetSearchListNoLogin(context.Context, *SearchReq) (*SearchResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetSearchListNoLogin not implemented")
+}
 func (UnimplementedBxCoreServer) SearchLimit(context.Context, *SearchLimitReq) (*SearchLimitResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SearchLimit not implemented")
 }
@@ -298,6 +314,24 @@ func _BxCore_GetSearchList_Handler(srv interface{}, ctx context.Context, dec fun
 	return interceptor(ctx, in, info, handler)
 }
 
+func _BxCore_GetSearchListNoLogin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SearchReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BxCoreServer).GetSearchListNoLogin(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bxcore.BxCore/GetSearchListNoLogin",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BxCoreServer).GetSearchListNoLogin(ctx, req.(*SearchReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _BxCore_SearchLimit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(SearchLimitReq)
 	if err := dec(in); err != nil {
@@ -543,6 +577,10 @@ var BxCore_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "GetSearchList",
 			Handler:    _BxCore_GetSearchList_Handler,
 		},
+		{
+			MethodName: "GetSearchListNoLogin",
+			Handler:    _BxCore_GetSearchListNoLogin_Handler,
+		},
 		{
 			MethodName: "SearchLimit",
 			Handler:    _BxCore_SearchLimit_Handler,