瀏覽代碼

feat:是否允许多人参标

wangshan 2 年之前
父節點
當前提交
1d6cc6b081

+ 9 - 7
jyBXCore/api/bxcore.api

@@ -114,7 +114,7 @@ type (
 	}
 	//消息提醒设置:
 	RemindRuleReq {
-		BidState  int64  `json:"bidState,optional"`  //投标规则类型;0:直接投标;1:渠道投标;
+		BidState  string `json:"bidState,optional"`  //投标规则类型;直接投标;渠道投标;
 		Remainder int64  `json:"remainder,optional"` //距离投标截止日期需要多久开始提醒 单位h
 		Node      string `json:"node,optional"`      //那个节点进行消息提醒;和投标项目阶段绑定
 	}
@@ -122,16 +122,17 @@ type (
 	participateSetUpInfoReq {
 		baseParam
 		SetAction  string           `json:"setAction,optional"`  //默认空;U:更新
-		IsAllow    bool             `json:"isAllow,optional"`    //是否允许多人同时参标
+		IsAllow    string           `json:"isAllow,optional"`    //是否允许多人同时参标 默认0;允许1
 		BidType    []*BidTypeReq    `json:"bidType,optional"`    //投标类型自定义内容
 		RemindRule []*RemindRuleReq `json:"remindRule,optional"` //消息提醒
 	}
 	//用户参标、终止参标及划转接口开发
 	participateActionReq {
 		baseParam
-		BidId     string `json:"bidId,optional"`     //招标信息id ,已加密。多个,号隔开
-		EntUserId string `json:"entUserId,optional"` //划转对象的企业用户id
-		IsRetain  bool   `json:"isRetain,optional"`  //是否保留原跟踪人
+		BidId       string `json:"bidId,optional"`       //招标信息id ,已加密。多个,号隔开
+		ToEntUserId string `json:"toEntUserId,optional"` //划转对象的企业用户id
+		IsRetain    bool   `json:"isRetain,optional"`    //是否保留原跟踪人
+		ActionType  string `path:"actionType"`           //in:参标;out:终止参标;transfer:划转
 	}
 	//我的参标项目列表|企业参标项目列表
 	participateListReq {
@@ -147,6 +148,7 @@ type (
 		EntUserIds    string `json:"entUserIds,optional"`    //企业参标人企业用户id集合,多个,号隔开
 		PageSize      int    `json:"pageSize,default=10"`    //每页数据量
 		PageNum       int    `json:"pageNum,default=0"`      //当前页码
+		Identity      string `path:"identity"`               //我的:mine;企业:ent
 	}
 )
 service bxcore-api {
@@ -169,7 +171,7 @@ service bxcore-api {
 	@handler participateSetUpInfo // 参标设置信息
 	post /jybx/core/participate/setUpInfo(participateSetUpInfoReq) returns (commonResp)
 	@handler participateAction //参标|终止参标|划转项目
-	post /jybx/core/participate/:ppAction(participateActionReq) returns (commonResp)
+	post /jybx/core/participate/:actionType(participateActionReq) returns (commonResp)
 	@handler participateList //我的参标项目列表|企业参标项目列表
-	post /jybx/core/participate/:identity/list(participateActionReq) returns (commonResp)
+	post /jybx/core/participate/:identity/list(participateListReq) returns (commonResp)
 }

+ 1 - 1
jyBXCore/api/internal/handler/routes.go

@@ -59,7 +59,7 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 			},
 			{
 				Method:  http.MethodPost,
-				Path:    "/jybx/core/participate/:ppAction",
+				Path:    "/jybx/core/participate/:actionType",
 				Handler: participateActionHandler(serverCtx),
 			},
 			{

+ 23 - 1
jyBXCore/api/internal/logic/participateActionLogic.go

@@ -2,6 +2,7 @@ package logic
 
 import (
 	"context"
+	"jyBXCore/rpc/type/bxcore"
 	"net/http"
 
 	"jyBXCore/api/internal/svc"
@@ -27,7 +28,28 @@ func NewParticipateActionLogic(ctx context.Context, svcCtx *svc.ServiceContext,
 }
 
 func (l *ParticipateActionLogic) ParticipateAction(req *types.ParticipateActionReq) (resp *types.CommonResp, err error) {
-	// todo: add your logic here and delete this line
+	res, err := l.svcCtx.BxCore.ParticipateAction(l.ctx, &bxcore.ParticipateActionReq{
+		EntId:        req.EntId,
+		EntUserId:    req.EntUserId,
+		PositionId:   req.PositionId,
+		PositionType: req.PositionType,
+		BidId:        req.BidId,
+		ToEntUserId:  req.ToEntUserId,
+		IsRetain:     req.IsRetain,
+		ActionType:   req.ActionType,
+	})
+	if err != nil {
+		return &types.CommonResp{
+			Err_code: res.ErrCode,
+			Err_msg:  res.ErrMsg,
+			Data:     false,
+		}, nil
+	}
+	return &types.CommonResp{
+		Err_code: res.ErrCode,
+		Err_msg:  res.ErrMsg,
+		Data:     res.Data,
+	}, nil
 
 	return
 }

+ 16 - 14
jyBXCore/api/internal/logic/participateSetUpInfoLogic.go

@@ -32,21 +32,23 @@ func (l *ParticipateSetUpInfoLogic) ParticipateSetUpInfo(req *types.ParticipateS
 		bidType    []*bxcore.BidTypeReq
 		remindRule []*bxcore.RemindRuleReq
 	)
-	if len(req.BidType) > 0 {
-		for _, v := range req.BidType {
-			bidType = append(bidType, &bxcore.BidTypeReq{
-				Name:    v.Name,
-				Content: v.Content,
-			})
+	if req.SetAction != "" {
+		if len(req.BidType) > 0 {
+			for _, v := range req.BidType {
+				bidType = append(bidType, &bxcore.BidTypeReq{
+					Name:    v.Name,
+					Content: v.Content,
+				})
+			}
 		}
-	}
-	if len(req.RemindRule) > 0 {
-		for _, v := range req.RemindRule {
-			remindRule = append(remindRule, &bxcore.RemindRuleReq{
-				BidState:  v.BidState,
-				Remainder: v.Remainder,
-				Node:      v.Node,
-			})
+		if len(req.RemindRule) > 0 {
+			for _, v := range req.RemindRule {
+				remindRule = append(remindRule, &bxcore.RemindRuleReq{
+					BidState:  v.BidState,
+					Remainder: v.Remainder,
+					Node:      v.Node,
+				})
+			}
 		}
 	}
 	res, err := l.svcCtx.BxCore.ParticipateSetUpInfo(l.ctx, &bxcore.ParticipateSetUpInfoReq{

+ 7 - 5
jyBXCore/api/internal/types/types.go

@@ -106,7 +106,7 @@ type BidTypeReq struct {
 }
 
 type RemindRuleReq struct {
-	BidState  int64  `json:"bidState,optional"`  //投标规则类型;0:直接投标;1:渠道投标;
+	BidState  string `json:"bidState,optional"`  //投标规则类型;直接投标;渠道投标;
 	Remainder int64  `json:"remainder,optional"` //距离投标截止日期需要多久开始提醒 单位h
 	Node      string `json:"node,optional"`      //那个节点进行消息提醒;和投标项目阶段绑定
 }
@@ -114,16 +114,17 @@ type RemindRuleReq struct {
 type ParticipateSetUpInfoReq struct {
 	BaseParam
 	SetAction  string           `json:"setAction,optional"`  //默认空;U:更新
-	IsAllow    bool             `json:"isAllow,optional"`    //是否允许多人同时参标
+	IsAllow    string           `json:"isAllow,optional"`    //是否允许多人同时参标 默认0;允许1
 	BidType    []*BidTypeReq    `json:"bidType,optional"`    //投标类型自定义内容
 	RemindRule []*RemindRuleReq `json:"remindRule,optional"` //消息提醒
 }
 
 type ParticipateActionReq struct {
 	BaseParam
-	BidId     string `json:"bidId,optional"`     //招标信息id ,已加密。多个,号隔开
-	EntUserId string `json:"entUserId,optional"` //划转对象的企业用户id
-	IsRetain  bool   `json:"isRetain,optional"`  //是否保留原跟踪人
+	BidId       string `json:"bidId,optional"`       //招标信息id ,已加密。多个,号隔开
+	ToEntUserId string `json:"toEntUserId,optional"` //划转对象的企业用户id
+	IsRetain    bool   `json:"isRetain,optional"`    //是否保留原跟踪人
+	ActionType  string `path:"actionType"`           //in:参标;out:终止参标;transfer:划转
 }
 
 type ParticipateListReq struct {
@@ -139,4 +140,5 @@ type ParticipateListReq struct {
 	EntUserIds    string `json:"entUserIds,optional"`    //企业参标人企业用户id集合,多个,号隔开
 	PageSize      int    `json:"pageSize,default=10"`    //每页数据量
 	PageNum       int    `json:"pageNum,default=0"`      //当前页码
+	Identity      string `path:"identity"`               //我的:mine;企业:ent
 }

+ 6 - 4
jyBXCore/rpc/bxcore.proto

@@ -300,7 +300,7 @@ message ParticipateSetUpInfoReq{
   int64  positionId = 3; // 职位id
   int64  positionType =4;// 职位类型 0个人 1企业
   string  setAction = 5;//请求动作:U:更新,默认空
-  bool  isAllow = 6;//是否允许多人参标
+  string  isAllow = 6;//是否允许多人参标
   repeated BidTypeReq bidType = 7;
   repeated RemindRuleReq remindRule = 8;
 }
@@ -311,13 +311,13 @@ message  BidTypeReq{
 }
 //消息提醒设置:
 message  RemindRuleReq{
-  int64 bidState = 1; //投标规则类型;0:直接投标;1:渠道投标;
+  string bidState = 1; //投标规则类型;0:直接投标;1:渠道投标;
   int64 remainder = 2;//距离投标截止日期需要多久开始提醒 单位h
   string node = 3;//那个节点进行消息提醒;和投标项目阶段绑定
 }
 //设置信息内容
 message ParticipateSetUpInfo{
-  bool  isAllow = 1;//是否允许多人参标
+  string  isAllow = 1;//是否允许多人参标  默认0 开启是1
   repeated BidTypeReq bidType = 2;
   repeated RemindRuleReq remindRule = 3;
 }
@@ -334,7 +334,7 @@ message ParticipateActionReq{
   int64  positionId = 3; // 职位id
   int64  positionType =4;// 职位类型 0个人 1企业
   string  bidId = 5;//招标信息id
-  string  toEntUserIds = 6;//划转对象的企业用户id
+  string  toEntUserId = 6;//划转对象的企业用户id
   bool isRetain = 7;//是否保留原跟踪人
   string actionType = 8;//in:参标;out:终止参标;transfer:划转
 }
@@ -404,4 +404,6 @@ service BxCore {
   rpc ParticipateSetUpInfo(ParticipateSetUpInfoReq) returns (ParticipateSetUpInfoRes);
   // 项目参标 终止参标 划转等动作
   rpc ParticipateAction(ParticipateActionReq) returns (ParticipateActionRes);
+  // 我的参标项目列表|企业参标项目列表
+  rpc ParticipateList(ParticipateListReq) returns (ParticipateListRes);
 }

+ 8 - 0
jyBXCore/rpc/bxcore/bxcore.go

@@ -72,6 +72,8 @@ type (
 		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)
 	}
 
 	defaultBxCore struct {
@@ -144,3 +146,9 @@ func (m *defaultBxCore) ParticipateAction(ctx context.Context, in *ParticipateAc
 	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...)
+}

+ 3 - 4
jyBXCore/rpc/internal/logic/participateactionlogic.go

@@ -2,6 +2,7 @@ package logic
 
 import (
 	"context"
+	"jyBXCore/rpc/service"
 
 	"jyBXCore/rpc/internal/svc"
 	"jyBXCore/rpc/type/bxcore"
@@ -23,9 +24,7 @@ func NewParticipateActionLogic(ctx context.Context, svcCtx *svc.ServiceContext)
 	}
 }
 
-//  项目参标 终止参标 划转等动作
+//  项目参标 终止参标 划转等动作 in:参标;out:终止参标;transfer:划转
 func (l *ParticipateActionLogic) ParticipateAction(in *bxcore.ParticipateActionReq) (*bxcore.ParticipateActionRes, error) {
-	// todo: add your logic here and delete this line
-
-	return &bxcore.ParticipateActionRes{}, nil
+	return service.ParticipateDo(in)
 }

+ 31 - 0
jyBXCore/rpc/internal/logic/participatelistlogic.go

@@ -0,0 +1,31 @@
+package logic
+
+import (
+	"context"
+
+	"jyBXCore/rpc/internal/svc"
+	"jyBXCore/rpc/type/bxcore"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type ParticipateListLogic struct {
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	logx.Logger
+}
+
+func NewParticipateListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParticipateListLogic {
+	return &ParticipateListLogic{
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		Logger: logx.WithContext(ctx),
+	}
+}
+
+//  我的参标项目列表|企业参标项目列表
+func (l *ParticipateListLogic) ParticipateList(in *bxcore.ParticipateListReq) (*bxcore.ParticipateListRes, error) {
+	// todo: add your logic here and delete this line
+
+	return &bxcore.ParticipateListRes{}, nil
+}

+ 6 - 0
jyBXCore/rpc/internal/server/bxcoreserver.go

@@ -81,3 +81,9 @@ func (s *BxCoreServer) ParticipateAction(ctx context.Context, in *bxcore.Partici
 	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)
+}

+ 113 - 2
jyBXCore/rpc/model/tidb/tidb.go

@@ -1,11 +1,122 @@
 package tidb
 
 import (
+	MC "app.yhyue.com/moapp/jybase/common"
+	"encoding/json"
+	"fmt"
+	"github.com/zeromicro/go-zero/core/logx"
 	IC "jyBXCore/rpc/init"
 	"jyBXCore/rpc/type/bxcore"
+	"strconv"
+	"time"
 )
 
+var (
+	PartTable = "participate"
+)
+
+//获取参标权限
+func GetParticipateIsAllow(query map[string]interface{}) (b bool) {
+	if info, ok := IC.Mgo.FindOne(PartTable, query); ok {
+		if info != nil {
+			if (*info)["i_isallow"] != nil {
+				b = MC.IntAll((*info)["i_isallow"]) > 0
+			}
+		}
+	}
+	return
+}
+
+//更新设置信息
+func UpdateParticipateSetInfo(in *bxcore.ParticipateSetUpInfoReq) error {
+	query := map[string]interface{}{
+		"i_positionid": in.PositionId,
+	}
+	if in.PositionType > 0 {
+		query["i_entid"] = in.EntId
+	}
+	upsert := map[string]interface{}{
+		"i_entid":      in.EntId,
+		"i_entuserid":  in.EntUserId,
+		"i_positionid": in.PositionId,
+		"l_createtime": time.Now().Unix(),
+	}
+	if in.IsAllow != "" {
+		isAllow, _ := strconv.Atoi(in.IsAllow)
+		upsert["i_isallow"] = isAllow
+	}
+	if len(in.BidType) > 0 {
+		upsert["o_bidtype"] = in.BidType
+	}
+	if len(in.RemindRule) > 0 {
+		upsert["o_remindrule"] = in.RemindRule
+	}
+	if ok := IC.Mgo.Update(PartTable, query, map[string]interface{}{
+		"$set": upsert,
+	}, true, false); ok {
+		return nil
+	}
+	return fmt.Errorf("更新失败")
+}
+
 //查询企业|个人参标设置信息
-func GetParticipateSetInfo(in *bxcore.ParticipateSetUpInfoReq) {
-	IC.Mgo.FindOne("participate", map[string]interface{}{})
+func GetParticipateSetInfo(in *bxcore.ParticipateSetUpInfoReq) (*bxcore.ParticipateSetUpInfo, error) {
+	query := map[string]interface{}{
+		"i_positionid": in.PositionId,
+	}
+	if in.PositionType > 0 {
+		query["i_entid"] = in.EntId
+	}
+	if setInfo, ok := IC.Mgo.FindOne(PartTable, query); ok {
+		var (
+			isAllow    = ""
+			bidType    []*bxcore.BidTypeReq
+			remindRule []*bxcore.RemindRuleReq
+		)
+		bidType = append(bidType, &bxcore.BidTypeReq{
+			Name:    "直接投标",
+			Content: []string{"未报名", "已报名", "投标决策", "编制投标文件", "递交投标文件", "中标公示", "签合同", "已结束"},
+		}, &bxcore.BidTypeReq{
+			Name:    "渠道投标",
+			Content: []string{"已报名", "签合同", "已结束"},
+		})
+		remindRule = append(remindRule, &bxcore.RemindRuleReq{
+			BidState:  "直接投标",
+			Remainder: 72,
+			Node:      "编制投标文件",
+		})
+		if setInfo != nil {
+			if (*setInfo)["i_isallow"] != nil {
+				isAllow = strconv.Itoa(MC.IntAll((*setInfo)["i_isallow"]))
+			}
+			if (*setInfo)["bidType"] != nil {
+				if sbb, err := json.Marshal((*setInfo)["o_bidtype"]); err == nil {
+					if err := json.Unmarshal(sbb, &bidType); err != nil {
+						logx.Info("bidType json un err:", err.Error())
+						return nil, err
+					}
+				} else {
+					logx.Info("bidType json err:", err.Error())
+					return nil, err
+				}
+			}
+			if (*setInfo)["o_remindrule"] != nil {
+				if sbr, err := json.Marshal((*setInfo)["o_remindrule"]); err == nil {
+					if err := json.Unmarshal(sbr, &remindRule); err != nil {
+						logx.Info("remindRule json un err:", err.Error())
+						return nil, err
+					}
+				} else {
+					logx.Info("remindRule json err:", err.Error())
+					return nil, err
+				}
+			}
+		}
+		return &bxcore.ParticipateSetUpInfo{
+			IsAllow:    isAllow,
+			BidType:    bidType,
+			RemindRule: remindRule,
+		}, nil
+	}
+	return nil, nil
 }

+ 33 - 3
jyBXCore/rpc/service/participate.go

@@ -1,17 +1,47 @@
 package service
 
 import (
-	"github.com/zeromicro/go-zero/core/logx"
+	"jyBXCore/rpc/model/tidb"
 	"jyBXCore/rpc/type/bxcore"
 )
 
+//参标动作:参标、终止参标、划转:in:参标;out:终止参标;transfer:划转
+func ParticipateDo(in *bxcore.ParticipateActionReq) (*bxcore.ParticipateActionRes, error) {
+	switch in.ActionType {
+	case "in":
+		//是否允许多人参标
+		//当前项目是否符合参标条件
+		//
+	case "out":
+	case "transfer":
+
+	}
+	return nil, nil
+}
+
+//参标设置更新及设置内容
 func GetParticipateSetInfo(in *bxcore.ParticipateSetUpInfoReq) (*bxcore.ParticipateSetUpInfoRes, error) {
-	logx.Info(in)
+	res := &bxcore.ParticipateSetUpInfoRes{Data: &bxcore.ParticipateSetUpInfo{
+		IsAllow:    "0",
+		BidType:    nil,
+		RemindRule: nil,
+	}}
 	switch in.SetAction {
 	case "U": //update 更新设置信息
+		res.Data = nil
+		if err := tidb.UpdateParticipateSetInfo(in); err != nil {
+			res.ErrCode = -1
+			res.ErrMsg = err.Error()
+		}
 	default: //默认查询对应设置信息
 		//查询对应用户设置信息
 		//未设置过 返回默认配置
+		if info, err := tidb.GetParticipateSetInfo(in); err == nil {
+			res.Data = info
+		} else {
+			res.ErrCode = -1
+			res.ErrMsg = err.Error()
+		}
 	}
-	return &bxcore.ParticipateSetUpInfoRes{}, nil
+	return res, nil
 }

+ 155 - 148
jyBXCore/rpc/type/bxcore/bxcore.pb.go

@@ -2669,7 +2669,7 @@ type ParticipateSetUpInfoReq struct {
 	PositionId   int64            `protobuf:"varint,3,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
 	PositionType int64            `protobuf:"varint,4,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
 	SetAction    string           `protobuf:"bytes,5,opt,name=setAction,proto3" json:"setAction,omitempty"`        //请求动作:U:更新,默认空
-	IsAllow      bool             `protobuf:"varint,6,opt,name=isAllow,proto3" json:"isAllow,omitempty"`           //是否允许多人参标
+	IsAllow      string           `protobuf:"bytes,6,opt,name=isAllow,proto3" json:"isAllow,omitempty"`            //是否允许多人参标
 	BidType      []*BidTypeReq    `protobuf:"bytes,7,rep,name=bidType,proto3" json:"bidType,omitempty"`
 	RemindRule   []*RemindRuleReq `protobuf:"bytes,8,rep,name=remindRule,proto3" json:"remindRule,omitempty"`
 }
@@ -2741,11 +2741,11 @@ func (x *ParticipateSetUpInfoReq) GetSetAction() string {
 	return ""
 }
 
-func (x *ParticipateSetUpInfoReq) GetIsAllow() bool {
+func (x *ParticipateSetUpInfoReq) GetIsAllow() string {
 	if x != nil {
 		return x.IsAllow
 	}
-	return false
+	return ""
 }
 
 func (x *ParticipateSetUpInfoReq) GetBidType() []*BidTypeReq {
@@ -2823,7 +2823,7 @@ type RemindRuleReq struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	BidState  int64  `protobuf:"varint,1,opt,name=bidState,proto3" json:"bidState,omitempty"`   //投标规则类型;0:直接投标;1:渠道投标;
+	BidState  string `protobuf:"bytes,1,opt,name=bidState,proto3" json:"bidState,omitempty"`    //投标规则类型;0:直接投标;1:渠道投标;
 	Remainder int64  `protobuf:"varint,2,opt,name=remainder,proto3" json:"remainder,omitempty"` //距离投标截止日期需要多久开始提醒 单位h
 	Node      string `protobuf:"bytes,3,opt,name=node,proto3" json:"node,omitempty"`            //那个节点进行消息提醒;和投标项目阶段绑定
 }
@@ -2860,11 +2860,11 @@ func (*RemindRuleReq) Descriptor() ([]byte, []int) {
 	return file_bxcore_proto_rawDescGZIP(), []int{27}
 }
 
-func (x *RemindRuleReq) GetBidState() int64 {
+func (x *RemindRuleReq) GetBidState() string {
 	if x != nil {
 		return x.BidState
 	}
-	return 0
+	return ""
 }
 
 func (x *RemindRuleReq) GetRemainder() int64 {
@@ -2887,7 +2887,7 @@ type ParticipateSetUpInfo struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	IsAllow    bool             `protobuf:"varint,1,opt,name=isAllow,proto3" json:"isAllow,omitempty"` //是否允许多人参标
+	IsAllow    string           `protobuf:"bytes,1,opt,name=isAllow,proto3" json:"isAllow,omitempty"` //是否允许多人参标  默认0 开启是1
 	BidType    []*BidTypeReq    `protobuf:"bytes,2,rep,name=bidType,proto3" json:"bidType,omitempty"`
 	RemindRule []*RemindRuleReq `protobuf:"bytes,3,rep,name=remindRule,proto3" json:"remindRule,omitempty"`
 }
@@ -2924,11 +2924,11 @@ func (*ParticipateSetUpInfo) Descriptor() ([]byte, []int) {
 	return file_bxcore_proto_rawDescGZIP(), []int{28}
 }
 
-func (x *ParticipateSetUpInfo) GetIsAllow() bool {
+func (x *ParticipateSetUpInfo) GetIsAllow() string {
 	if x != nil {
 		return x.IsAllow
 	}
-	return false
+	return ""
 }
 
 func (x *ParticipateSetUpInfo) GetBidType() []*BidTypeReq {
@@ -3020,7 +3020,7 @@ type ParticipateActionReq struct {
 	PositionId   int64  `protobuf:"varint,3,opt,name=positionId,proto3" json:"positionId,omitempty"`     // 职位id
 	PositionType int64  `protobuf:"varint,4,opt,name=positionType,proto3" json:"positionType,omitempty"` // 职位类型 0个人 1企业
 	BidId        string `protobuf:"bytes,5,opt,name=bidId,proto3" json:"bidId,omitempty"`                //招标信息id
-	ToEntUserIds string `protobuf:"bytes,6,opt,name=toEntUserIds,proto3" json:"toEntUserIds,omitempty"`  //划转对象的企业用户id
+	ToEntUserId  string `protobuf:"bytes,6,opt,name=toEntUserId,proto3" json:"toEntUserId,omitempty"`    //划转对象的企业用户id
 	IsRetain     bool   `protobuf:"varint,7,opt,name=isRetain,proto3" json:"isRetain,omitempty"`         //是否保留原跟踪人
 	ActionType   string `protobuf:"bytes,8,opt,name=actionType,proto3" json:"actionType,omitempty"`      //in:参标;out:终止参标;transfer:划转
 }
@@ -3092,9 +3092,9 @@ func (x *ParticipateActionReq) GetBidId() string {
 	return ""
 }
 
-func (x *ParticipateActionReq) GetToEntUserIds() string {
+func (x *ParticipateActionReq) GetToEntUserId() string {
 	if x != nil {
-		return x.ToEntUserIds
+		return x.ToEntUserId
 	}
 	return ""
 }
@@ -4051,7 +4051,7 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
 	0x1c, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
 	0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
-	0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+	0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
 	0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54, 0x79,
 	0x70, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
 	0x65, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x52, 0x07, 0x62, 0x69,
@@ -4064,14 +4064,14 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
 	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x69,
 	0x6e, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x64,
-	0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x62, 0x69, 0x64,
+	0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x69, 0x64,
 	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64,
 	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e,
 	0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
 	0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74,
 	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66, 0x6f,
 	0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x69,
+	0x09, 0x52, 0x07, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x69,
 	0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78,
 	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x42, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x52,
 	0x07, 0x62, 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x69,
@@ -4086,7 +4086,7 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 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, 0x04, 0x64, 0x61, 0x74, 0x61,
-	0x22, 0x84, 0x02, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+	0x22, 0x82, 0x02, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
 	0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74,
 	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
 	0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
@@ -4096,128 +4096,133 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20,
 	0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
 	0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x69, 0x64, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x05, 0x62, 0x69, 0x64, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x45, 0x6e, 0x74,
-	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74,
-	0x6f, 0x45, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69,
-	0x73, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69,
-	0x73, 0x52, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74,
-	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69,
-	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 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, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe8, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74,
-	0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14,
-	0x0a, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65,
-	0x6e, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
-	0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
-	0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79,
-	0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
-	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69,
-	0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x69, 0x64,
-	0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69,
-	0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64,
-	0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54,
-	0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70,
-	0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x69,
-	0x64, 0x45, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69,
-	0x64, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x0d, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
-	0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08,
-	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
-	0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65,
-	0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e,
-	0x75, 0x6d, 0x22, 0xfb, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
-	0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65,
-	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x16,
-	0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
-	0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61,
-	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69,
-	0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x69, 0x64,
-	0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69,
-	0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64,
-	0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74,
-	0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
-	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65,
-	0x22, 0x54, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x44,
-	0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73,
-	0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74,
-	0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
-	0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 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, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x88, 0x06,
-	0x0a, 0x06, 0x42, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53,
-	0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62,
-	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
-	0x12, 0x3e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
-	0x16, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c,
-	0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53,
-	0x68, 0x6f, 0x77, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a,
-	0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 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,
-	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
-	0x6e, 0x74, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
-	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52,
-	0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72,
-	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x12,
-	0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
-	0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
-	0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x58, 0x0a,
-	0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55,
-	0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e,
-	0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70,
-	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69,
-	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x62,
+	0x52, 0x05, 0x62, 0x69, 0x64, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x45, 0x6e, 0x74,
+	0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f,
+	0x45, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x52,
+	0x65, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x52,
+	0x65, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+	0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
+	0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 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, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe8, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63,
+	0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05,
+	0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74,
+	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64,
+	0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+	0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x61, 0x72, 0x65, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54,
+	0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d,
+	0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e,
+	0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x69, 0x64, 0x45,
+	0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69, 0x64, 0x4f,
+	0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x0d, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a,
+	0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e,
+	0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+	0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61,
+	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61,
+	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75,
+	0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d,
+	0x22, 0xfb, 0x01, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e,
+	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06,
+	0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75,
+	0x64, 0x67, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74,
+	0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, 0x64, 0x54,
+	0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x69, 0x64, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x45, 0x6e, 0x64, 0x54, 0x69,
+	0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x54,
+	0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74,
+	0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04,
+	0x6c, 0x69, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+	0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 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, 0x2b,
+	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 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,
+	0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xd3, 0x06, 0x0a, 0x06,
+	0x42, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78, 0x63,
+	0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e,
+	0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d,
+	0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49,
+	0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f,
+	0x77, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
+	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66,
+	0x6f, 0x52, 0x65, 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, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65,
+	0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63,
+	0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69,
+	0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61,
+	0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x62,
+	0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74,
+	0x65, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x50,
+	0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49,
+	0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e, 0x66,
+	0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61,
+	0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x55, 0x70, 0x49, 0x6e,
+	0x66, 0x6f, 0x52, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69,
+	0x70, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x62, 0x78, 0x63,
 	0x6f, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x65, 0x41,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78,
-	0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	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, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -4299,18 +4304,20 @@ var file_bxcore_proto_depIdxs = []int32{
 	22, // 23: bxcore.BxCore.ParticipatePersons:input_type -> bxcore.ParticipatePersonsReq
 	25, // 24: bxcore.BxCore.ParticipateSetUpInfo:input_type -> bxcore.ParticipateSetUpInfoReq
 	30, // 25: bxcore.BxCore.ParticipateAction:input_type -> bxcore.ParticipateActionReq
-	1,  // 26: bxcore.BxCore.GetSearchList:output_type -> bxcore.SearchResp
-	7,  // 27: bxcore.BxCore.SearchLimit:output_type -> bxcore.SearchLimitResp
-	10, // 28: bxcore.BxCore.ParticipateShow:output_type -> bxcore.ParticipateShowRes
-	13, // 29: bxcore.BxCore.ParticipateInfo:output_type -> bxcore.ParticipateInfoRes
-	15, // 30: bxcore.BxCore.UpdateBidStatus:output_type -> bxcore.UpdateBidStatusRes
-	18, // 31: bxcore.BxCore.ParticipateContent:output_type -> bxcore.ParticipateContentRes
-	21, // 32: bxcore.BxCore.ParticipateRecords:output_type -> bxcore.ParticipateRecordsRes
-	24, // 33: bxcore.BxCore.ParticipatePersons:output_type -> bxcore.ParticipatePersonsRes
-	29, // 34: bxcore.BxCore.ParticipateSetUpInfo:output_type -> bxcore.ParticipateSetUpInfoRes
-	31, // 35: bxcore.BxCore.ParticipateAction:output_type -> bxcore.ParticipateActionRes
-	26, // [26:36] is the sub-list for method output_type
-	16, // [16:26] is the sub-list for method input_type
+	32, // 26: bxcore.BxCore.ParticipateList:input_type -> bxcore.ParticipateListReq
+	1,  // 27: bxcore.BxCore.GetSearchList:output_type -> bxcore.SearchResp
+	7,  // 28: bxcore.BxCore.SearchLimit:output_type -> bxcore.SearchLimitResp
+	10, // 29: bxcore.BxCore.ParticipateShow:output_type -> bxcore.ParticipateShowRes
+	13, // 30: bxcore.BxCore.ParticipateInfo:output_type -> bxcore.ParticipateInfoRes
+	15, // 31: bxcore.BxCore.UpdateBidStatus:output_type -> bxcore.UpdateBidStatusRes
+	18, // 32: bxcore.BxCore.ParticipateContent:output_type -> bxcore.ParticipateContentRes
+	21, // 33: bxcore.BxCore.ParticipateRecords:output_type -> bxcore.ParticipateRecordsRes
+	24, // 34: bxcore.BxCore.ParticipatePersons:output_type -> bxcore.ParticipatePersonsRes
+	29, // 35: bxcore.BxCore.ParticipateSetUpInfo:output_type -> bxcore.ParticipateSetUpInfoRes
+	31, // 36: bxcore.BxCore.ParticipateAction:output_type -> bxcore.ParticipateActionRes
+	35, // 37: bxcore.BxCore.ParticipateList:output_type -> bxcore.ParticipateListRes
+	27, // [27:38] is the sub-list for method output_type
+	16, // [16:27] is the sub-list for method input_type
 	16, // [16:16] is the sub-list for extension type_name
 	16, // [16:16] is the sub-list for extension extendee
 	0,  // [0:16] is the sub-list for field type_name

+ 38 - 0
jyBXCore/rpc/type/bxcore/bxcore_grpc.pb.go

@@ -42,6 +42,8 @@ type BxCoreClient interface {
 	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)
 }
 
 type bxCoreClient struct {
@@ -142,6 +144,15 @@ func (c *bxCoreClient) ParticipateAction(ctx context.Context, in *ParticipateAct
 	return out, nil
 }
 
+func (c *bxCoreClient) ParticipateList(ctx context.Context, in *ParticipateListReq, opts ...grpc.CallOption) (*ParticipateListRes, error) {
+	out := new(ParticipateListRes)
+	err := c.cc.Invoke(ctx, "/bxcore.BxCore/ParticipateList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // BxCoreServer is the server API for BxCore service.
 // All implementations must embed UnimplementedBxCoreServer
 // for forward compatibility
@@ -166,6 +177,8 @@ type BxCoreServer interface {
 	ParticipateSetUpInfo(context.Context, *ParticipateSetUpInfoReq) (*ParticipateSetUpInfoRes, error)
 	// 项目参标 终止参标 划转等动作
 	ParticipateAction(context.Context, *ParticipateActionReq) (*ParticipateActionRes, error)
+	// 我的参标项目列表|企业参标项目列表
+	ParticipateList(context.Context, *ParticipateListReq) (*ParticipateListRes, error)
 	mustEmbedUnimplementedBxCoreServer()
 }
 
@@ -203,6 +216,9 @@ func (UnimplementedBxCoreServer) ParticipateSetUpInfo(context.Context, *Particip
 func (UnimplementedBxCoreServer) ParticipateAction(context.Context, *ParticipateActionReq) (*ParticipateActionRes, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ParticipateAction not implemented")
 }
+func (UnimplementedBxCoreServer) ParticipateList(context.Context, *ParticipateListReq) (*ParticipateListRes, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ParticipateList not implemented")
+}
 func (UnimplementedBxCoreServer) mustEmbedUnimplementedBxCoreServer() {}
 
 // UnsafeBxCoreServer may be embedded to opt out of forward compatibility for this service.
@@ -396,6 +412,24 @@ func _BxCore_ParticipateAction_Handler(srv interface{}, ctx context.Context, dec
 	return interceptor(ctx, in, info, handler)
 }
 
+func _BxCore_ParticipateList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ParticipateListReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BxCoreServer).ParticipateList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bxcore.BxCore/ParticipateList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BxCoreServer).ParticipateList(ctx, req.(*ParticipateListReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 // BxCore_ServiceDesc is the grpc.ServiceDesc for BxCore service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -443,6 +477,10 @@ var BxCore_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "ParticipateAction",
 			Handler:    _BxCore_ParticipateAction_Handler,
 		},
+		{
+			MethodName: "ParticipateList",
+			Handler:    _BxCore_ParticipateList_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "bxcore.proto",

+ 30 - 0
jyBXCore/rpc/util/participate.go

@@ -0,0 +1,30 @@
+package util
+
+import "jyBXCore/rpc/model/tidb"
+
+type PartUserInf struct {
+	EntId        int64
+	EntUserId    int64
+	PositionId   int64
+	PositionType int64
+}
+
+func NewPartUserInfo(entId, entUserId, positionId, positionType int64) *PartUserInf {
+	return &PartUserInf{
+		EntId:        entId,
+		EntUserId:    entUserId,
+		PositionId:   positionId,
+		PositionType: positionType,
+	}
+}
+
+//是否允许多人参标
+func (p *PartUserInf) IsALLow() bool {
+	query := map[string]interface{}{
+		"i_positionid": p.PositionId,
+	}
+	if p.PositionType > 0 {
+		query["i_entid"] = p.EntId
+	}
+	return tidb.GetParticipateIsAllow(query)
+}