ソースを参照

feat:p618 bxsubscribe rpc、api 保存订阅向导调整

fuwencai 7 ヶ月 前
コミット
bd7118b579

+ 1 - 0
go.mod

@@ -153,3 +153,4 @@ require (
 	sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
 	sigs.k8s.io/yaml v1.3.0 // indirect
 )
+replace github.com/go-xorm/xorm v0.7.9 => gitea.com/xorm/xorm v0.7.9

+ 32 - 16
jyBXSubscribe/api/bxsubscribe.api

@@ -54,6 +54,20 @@ type (
 		PositionType string `header:"positionType,optional"`
 		PositionId   string `header:"positionId,optional"`
 	}
+	saveTsGuideReq {
+		AppId        string   `header:"appId"`
+		UserType     string   `path:"userType"`
+		UserId       string   `header:"userId,optional"`
+		NewUserId    string   `header:"newUserId,optional"`
+		EntId        string   `header:"entId,optional"`
+		AccountId    string   `header:"accountId,optional"`
+		PositionType string   `header:"positionType,optional"`
+		PositionId   string   `header:"positionId,optional"`
+		Area         string   `json:"area"`              // 省份、城市  格式  {"福建" : ["福州市","厦门市",]}
+		District     string   `json:"district,optional"` // 区县 格式  {"莆田市" : ["城厢区","荔城区","秀屿区","仙游县"]}
+		Keywords     []string `json:"keywords"`          // 关键词 ["关键词1 附加词","关键词2"]
+
+	}
 	//
 	commonResp {
 		Err_code int64       `json:"error_code"`
@@ -212,52 +226,54 @@ type (
 service bxsubscribe-api {
 	@handler subscribeList
 	post /jybx/subscribe/:userType/list (subscribeReq) returns (commonResp)
-
+	
 	@handler someInfo
 	post /jybx/subscribe/:userType/someInfo (someInfoReq) returns (commonResp)
-
+	
 	@handler subscribeUpdate
 	post /jybx/subscribe/:userType/update (subscribeUpdateReq) returns (commonResp)
-
+	
 	@handler ByPushHistory
 	post /jybx/subscribe/:userType/byPushHistory (subscribeReq) returns (commonResp)
-
+	
 	@handler SetRead
 	post /jybx/subscribe/:userType/setRead (SetReadReq) returns (commonResp)
-
+	
 	@handler getKey
 	post /jybx/subscribe/:userType/getKey (GetKeyReq) returns (commonResp)
-
+	
 	@handler distributor
 	post /jybx/subscribe/:userType/distributor (DistributorReq) returns (commonResp)
-
+	
 	@handler viewStatus
 	post /jybx/subscribe/:userType/viewStatus (viewStatusReq) returns (commonResp)
-
+	
 	@handler msgDistributor
 	post /jybx/subscribe/msgDistributor (msgDistributor) returns (commonResp)
-
+	
 	@handler getUser //查询用户信息
 	post /jybx/subscribe/getUser (GetUserReq) returns (commonResp)
-
+	
 	@handler setUser //设置用户信息
 	post /jybx/subscribe/setUser (SetUserReq) returns (commonResp)
-
+	
 	@handler getPushSet //推送设置查询
 	post /jybx/subscribe/getPushSet (GetUserReq) returns (commonResp)
-
+	
 	@handler setPushSet //推送设置修改
 	post /jybx/subscribe/setPushSet (SetPushSetReq) returns (commonResp)
-
+	
 	@handler getStaffSubscribeList //查询企业员工订阅状态
 	post /jybx/subscribe/getStaffSubscribe (GetStaffSubscribeListReq) returns (StaffSubscribeCommonResp)
-
+	
 	@handler getStaffSubscribeDetail //查询企业员工订阅详情
 	post /jybx/subscribe/getStaffSubscribeDetail (GetStaffSubscribeDetailReq) returns (StaffSubscribeCommonResp)
-
+	
 	@handler bidDistributor //标讯分发
 	post /jybx/subscribe/bidDistributor (BidDistributor) returns (commonResp)
-
+	
 	@handler bidRecList // 订阅推荐列表
 	post /jybx/subscribe/getRecList (BidRecListReq) returns (commonResp)
+	@handler saveTSGuide  // 保存订阅向导设置信息
+	post /jybx/subscribe/:userType/saveTSGuide (saveTsGuideReq) returns (commonResp)
 }

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

@@ -97,6 +97,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/jybx/subscribe/getRecList",
 				Handler: bidRecListHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodPost,
+				Path:    "/jybx/subscribe/:userType/saveTSGuide",
+				Handler: saveTSGuideHandler(serverCtx),
+			},
 		},
 	)
 }

+ 28 - 0
jyBXSubscribe/api/internal/handler/saveTSGuideHandler.go

@@ -0,0 +1,28 @@
+package handler
+
+import (
+	"net/http"
+
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/api/internal/logic"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/api/internal/svc"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/api/internal/types"
+	"github.com/zeromicro/go-zero/rest/httpx"
+)
+
+func saveTSGuideHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.SomeInfoReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewSaveTSGuideLogic(r.Context(), svcCtx)
+		resp, err := l.SaveTSGuide(&req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

+ 51 - 0
jyBXSubscribe/api/internal/logic/saveTSGuideLogic.go

@@ -0,0 +1,51 @@
+package logic
+
+import (
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/api/internal/svc"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/api/internal/types"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/type/bxsubscribe"
+	"context"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type SaveTSGuideLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewSaveTSGuideLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SaveTSGuideLogic {
+	return &SaveTSGuideLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+func (l *SaveTSGuideLogic) SaveTSGuide(req *types.SaveTsGuideReq) (resp *types.CommonResp, err error) {
+	// todo: add your logic here and delete this line
+	_, err = l.svcCtx.Suscribe.SaveTSGuide(l.ctx, &bxsubscribe.SaveTSGuideReq{
+		AppId:        req.AppId,
+		UserType:     req.UserType,
+		UserId:       req.UserId,
+		NewUserId:    req.NewUserId,
+		EntId:        req.EntId,
+		PositionId:   req.PositionId,
+		AccountId:    req.AccountId,
+		PositionType: req.PositionType,
+		Area:         req.Area,
+		District:     req.District,
+		Keywords:     req.Keywords,
+	})
+	if err != nil {
+		return &types.CommonResp{
+			Err_code: -1,
+			Err_msg:  err.Error(),
+			Data:     nil,
+		}, nil
+	}
+	return &types.CommonResp{
+		Err_code: 0,
+	}, nil
+}

+ 14 - 0
jyBXSubscribe/api/internal/types/types.go

@@ -47,6 +47,20 @@ type SomeInfoReq struct {
 	PositionId   string `header:"positionId,optional"`
 }
 
+type SaveTsGuideReq struct {
+	AppId        string   `header:"appId"`
+	UserType     string   `path:"userType"`
+	UserId       string   `header:"userId,optional"`
+	NewUserId    string   `header:"newUserId,optional"`
+	EntId        string   `header:"entId,optional"`
+	AccountId    string   `header:"accountId,optional"`
+	PositionType string   `header:"positionType,optional"`
+	PositionId   string   `header:"positionId,optional"`
+	Area         string   `json:"area"`              // 省份、城市  格式  {"福建" : ["福州市","厦门市",]}
+	District     string   `json:"district,optional"` // 区县 格式  {"莆田市" : ["城厢区","荔城区","秀屿区","仙游县"]}
+	Keywords     []string `json:"keywords"`          // 关键词 ["关键词1 附加词","关键词2"]
+}
+
 type CommonResp struct {
 	Err_code int64       `json:"error_code"`
 	Err_msg  string      `json:"error_msg"`

+ 16 - 0
jyBXSubscribe/rpc/bxsubscribe.proto

@@ -126,6 +126,7 @@ message SomeInfo{
   bool isRead = 7;//某个通知??是否已读
   repeated string  industry = 8;//会员订阅的行业
   string userId = 9;//用户id
+  string subsetinfo = 10;// 订阅设置信息
 }
 //
 message StatusResp{
@@ -425,6 +426,19 @@ message BidRecListReq {
   string  entUserId = 5;
   int64  positionType = 6;
 }
+message SaveTSGuideReq {
+  string  appId = 1;
+  string  userId = 2;
+  string  userType = 3;
+  string  newUserId = 4;
+  string  entId = 5;
+  string  accountId = 6;
+  string  positionType = 7;
+  string  positionId = 8;
+  string  area = 9 ; // 省份、城市  格式  {"福建" : ["福州市","厦门市",]}
+  string  district = 10 ;// 区县 格式  {"莆田市" : ["城厢区","荔城区","秀屿区","仙游县"]}
+  repeated string keywords = 11 ; // 关键词 ["关键词1 附加词","关键词2"]
+}
 
 
 service Bxsubscribe {
@@ -464,4 +478,6 @@ service Bxsubscribe {
   rpc bidDistributor(BidDistributorReq)returns(StatusResp);
   // 订阅推荐列表
   rpc bidRecList(BidRecListReq)returns(SubscribeInfosResp);
+  // 保存订阅向导设置
+  rpc SaveTSGuide(SaveTSGuideReq)returns(StatusResp);
 }

+ 10 - 1
jyBXSubscribe/rpc/bxsubscribe/bxsubscribe.go

@@ -34,6 +34,7 @@ type (
 	List                    = bxsubscribe.List
 	MsgDistributorReq       = bxsubscribe.MsgDistributorReq
 	PushSet                 = bxsubscribe.PushSet
+	SaveTSGuideReq          = bxsubscribe.SaveTSGuideReq
 	SetPushSetReq           = bxsubscribe.SetPushSetReq
 	SetReadReq              = bxsubscribe.SetReadReq
 	SetUserInfoReq          = bxsubscribe.SetUserInfoReq
@@ -97,6 +98,8 @@ type (
 		BidDistributor(ctx context.Context, in *BidDistributorReq, opts ...grpc.CallOption) (*StatusResp, error)
 		//  订阅推荐列表
 		BidRecList(ctx context.Context, in *BidRecListReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error)
+		//  保存订阅向导设置
+		SaveTSGuide(ctx context.Context, in *SaveTSGuideReq, opts ...grpc.CallOption) (*StatusResp, error)
 	}
 
 	defaultBxsubscribe struct {
@@ -212,8 +215,14 @@ func (m *defaultBxsubscribe) BidDistributor(ctx context.Context, in *BidDistribu
 	return client.BidDistributor(ctx, in, opts...)
 }
 
-// 订阅推荐列表
+//  订阅推荐列表
 func (m *defaultBxsubscribe) BidRecList(ctx context.Context, in *BidRecListReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error) {
 	client := bxsubscribe.NewBxsubscribeClient(m.cli.Conn())
 	return client.BidRecList(ctx, in, opts...)
 }
+
+//  保存订阅向导设置
+func (m *defaultBxsubscribe) SaveTSGuide(ctx context.Context, in *SaveTSGuideReq, opts ...grpc.CallOption) (*StatusResp, error) {
+	client := bxsubscribe.NewBxsubscribeClient(m.cli.Conn())
+	return client.SaveTSGuide(ctx, in, opts...)
+}

+ 2 - 1
jyBXSubscribe/rpc/etc/bxsubscribe.yaml

@@ -21,4 +21,5 @@ EntManageApplication: "entmanageapplication.rpc" #企业管理中台
 AppUrl: "/front/downloadJyApp/qr?page=%&source=%s"
 Nsq: 192.168.3.240:4260
 NsqTopic: jy_event
-Registedate: 1705556502
+Registedate: 1705556502
+GuideRegistedate: 1735034400  #该时间之前注册的付费用户不用进订阅向导

+ 1 - 0
jyBXSubscribe/rpc/internal/config/config.go

@@ -22,6 +22,7 @@ type Config struct {
 	Nsq                  string
 	NsqTopic             string
 	Registedate          int64
+	GuideRegistedate     int64 // 付费用户判断注册向导的时间
 }
 
 type Db struct {

+ 30 - 14
jyBXSubscribe/rpc/internal/logic/getsubsomeinfologic.go

@@ -3,8 +3,9 @@ package logic
 import (
 	"app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/redis"
-	"context"
 	IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/init"
+	"context"
+	"fmt"
 	"strconv"
 	"time"
 
@@ -29,10 +30,11 @@ func NewGetSubSomeInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Ge
 }
 
 const (
-	SubFreeFlag  = "fType"
-	SubVipFlag   = "vType"
-	MemberFlag   = "mType"
-	EntnicheFlag = "eType"
+	SubFreeFlag     = "fType"
+	SubVipFlag      = "vType"
+	MemberFlag      = "mType"
+	EntnicheFlag    = "eType"
+	tsGuidefinished = 1
 )
 
 // 获取订阅推送相关信息
@@ -109,17 +111,31 @@ func (l *GetSubSomeInfoLogic) GetSubSomeInfo(in *bxsubscribe.SomeInfoReq) (*bxsu
 			}
 			resp.Data.IsPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+todayNum+"_"+in.UserId) >= 150
 		}
-		//是否进入向导查询
-		resp.Data.IsInTSguide = func() bool {
-			//付费用户无免费订阅,不进入订阅向导页面
-			if user.Member.Status > 0 || user.Vip.Status > 0 {
-				return false
+		//  查询订阅信息中的关键词和向导查询
+		var field string
+		switch in.UserType {
+		case SubFreeFlag:
+			field = "o_jy"
+		case SubVipFlag:
+			field = "o_vipjy"
+		case MemberFlag:
+			field = "o_member_jy"
+		case EntnicheFlag:
+			field = "o_entniche"
+		}
+		data := IC.Compatible.Select(in.UserId, fmt.Sprintf(`{"%s":1,"i_ts_guide":1,"l_registedate":1}`, field))
+		if data != nil && len(*data) > 0 {
+			subinfo, b := (*data)["o_jy"].(map[string]interface{})
+			if b && subinfo != nil {
+				resp.Data.Subsetinfo = common.MapToJson(subinfo)
 			}
-			if !user.Vip.HasKey {
-				return true
+			registedate := common.Int64All((*data)["l_registedate"])
+			if in.UserType == SubFreeFlag || registedate > IC.C.GuideRegistedate {
+				if common.Int64All((*data)["i_ts_guide"]) != tsGuidefinished { // 判断字段未完成
+					resp.Data.IsInTSguide = true
+				}
 			}
-			return false
-		}()
+		}
 	}
 	return resp, nil
 }

+ 178 - 0
jyBXSubscribe/rpc/internal/logic/savetsguidelogic.go

@@ -0,0 +1,178 @@
+package logic
+
+import (
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
+	IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/init"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/internal/svc"
+	"bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXSubscribe/rpc/type/bxsubscribe"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"regexp"
+	"strconv"
+	"strings"
+	"time"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type SaveTSGuideLogic struct {
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	logx.Logger
+}
+
+func NewSaveTSGuideLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SaveTSGuideLogic {
+	return &SaveTSGuideLogic{
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		Logger: logx.WithContext(ctx),
+	}
+}
+
+// 保存订阅向导设置
+func (l *SaveTSGuideLogic) SaveTSGuide(in *bxsubscribe.SaveTSGuideReq) (*bxsubscribe.StatusResp, error) {
+
+	// 校验用户身份
+	baseUserId, _ := strconv.ParseInt(in.NewUserId, 10, 64)
+	accountId, _ := strconv.ParseInt(in.AccountId, 10, 64)
+	positionType, _ := strconv.ParseInt(in.PositionType, 10, 64)
+	positionId, _ := strconv.ParseInt(in.PositionId, 10, 64)
+	entId, _ := strconv.ParseInt(in.EntId, 10, 64)
+	// 校验是否已经完成过订阅向导
+	//  查询订阅信息中的关键词和向导查询
+	data := IC.Compatible.Select(in.UserId, `{"i_ts_guide":1,"l_registedate":1,"o_member_jy":1}`)
+	if data != nil && len(*data) > 0 {
+		registedate := common.Int64All((*data)["l_registedate"])
+		if (in.UserType != SubFreeFlag && registedate < IC.C.GuideRegistedate) || common.Int64All((*data)["i_ts_guide"]) == tsGuidefinished {
+			// 已经设置过
+			return nil, errors.New("重复设置向导")
+		}
+	}
+	user := IC.Compatible.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, baseUserId, accountId, entId, positionType, positionId)
+	if user == nil {
+		return nil, errors.New("身份异常")
+	}
+	var field string
+	countLimit := 0
+	areaCountLimit := 0
+	switch in.UserType {
+	case SubFreeFlag:
+		if !user.Free.IsFree {
+			return nil, errors.New("身份异常")
+		}
+		countLimit = 10
+		field = "o_jy.%s"
+		areaCountLimit = 1 // 免费用户
+	case SubVipFlag:
+		if user.Vip.Status <= 0 {
+			return nil, errors.New("身份异常")
+		}
+		field = "o_vipjy.%s"
+		areaCountLimit = int(user.Vip.Areacount)
+	case MemberFlag:
+		if user.Member.Status <= 0 {
+			return nil, errors.New("身份异常")
+		}
+		field = "o_member_jy.%s"
+		countLimit = 300
+		areaCountLimit = -1
+		//  判断单省版
+		o_member_jy, o_member_jyb := (*data)["o_member_jy"].(map[string]interface{})
+		if o_member_jy != nil && o_member_jyb {
+			if common.IntAll(o_member_jy["i_areacount"]) > 0 {
+				areaCountLimit = common.IntAll(o_member_jy["i_areacount"])
+			}
+		}
+	case EntnicheFlag:
+		if user.Entniche.Status <= 0 {
+			return nil, errors.New("身份异常")
+		}
+		field = "o_entniche.%s"
+		countLimit = 300
+		areaCountLimit = -1
+
+	}
+	updateMap := map[string]interface{}{}
+	area := map[string]interface{}{}
+	err := json.Unmarshal([]byte(in.Area), &area)
+	//  验证地区数量   //会有没有走过订阅向导买过省份订阅包的情况吗? 暂时不考虑
+	if err != nil {
+		logx.Error("反序列化失败", in.Area, err)
+		return nil, errors.New("地区有误")
+	} else {
+		updateMap[fmt.Sprintf(field, "o_area")] = area
+	}
+	if areaCountLimit > 0 && len(area) > areaCountLimit {
+		return nil, errors.New("地区数量有误")
+	}
+	// 处理地区
+	if in.District != "" {
+		district := map[string]interface{}{}
+		err = json.Unmarshal([]byte(in.District), &district)
+		if err != nil {
+			logx.Error("反序列化失败", in.District, err)
+			return nil, errors.New("地区有误")
+		} else {
+			updateMap[fmt.Sprintf(field, "o_district")] = area
+		}
+	}
+
+	// 处理关键词
+	// 免费 处理掉空格
+	arryMap := []interface{}{}
+	key := []string{}
+	if in.UserType == SubFreeFlag {
+		for i := 0; i < len(in.Keywords); i++ {
+			tmp := processKeyword(in.Keywords[i])
+			if len(tmp) > 0 {
+				arryMap = append(arryMap, map[string]interface{}{"matchway": 1, "key": tmp[0], "notkey": nil, "updatetime": time.Now().Unix()})
+			}
+			if len(key) >= countLimit {
+				break
+			}
+		}
+		updateMap[fmt.Sprintf(field, "a_key")] = arryMap
+	} else {
+		// 付费 按一组词
+		for i := 0; i < len(in.Keywords); i++ {
+			tmp := processKeyword(in.Keywords[i])
+			if len(tmp) > 0 {
+				arryMap = append(arryMap, map[string]interface{}{"matchway": 0, "key": tmp, "notkey": nil, "updatetime": time.Now().Unix()})
+			}
+			if len(key) >= countLimit {
+				break
+			}
+		}
+		item := map[string]interface{}{
+			"a_key":      arryMap,
+			"s_item":     "未分类",
+			"updatetime": date.NowFormat(date.Date_Full_Layout),
+		}
+		updateMap[fmt.Sprintf(field, "a_items")] = []map[string]interface{}{item}
+	}
+
+	updateMap[fmt.Sprintf(field, "l_modifydate")] = date.NowFormat(date.Date_Full_Layout)
+	updateMap["i_ts_guide"] = tsGuidefinished
+	if !IC.Compatible.Update(in.UserId, updateMap) {
+		logx.Error("设置订阅向导更新失败", in.UserId, updateMap)
+		return nil, errors.New("设置订阅向导更新失败")
+	}
+
+	return &bxsubscribe.StatusResp{}, nil
+}
+
+// 保存入库之前,处理订阅的关键词
+func processKeyword(keyword string) []string {
+	keywordReg := regexp.MustCompile("([\\s\u3000\u2003\u00a0+,,])+")
+	spaceReg := regexp.MustCompile("\\s+")
+	keyword = keywordReg.ReplaceAllString(keyword, " ")
+	keyword = spaceReg.ReplaceAllString(keyword, " ")
+	keyword = strings.Trim(keyword, " ")
+	if keyword == "" {
+		return nil
+	}
+	return strings.Split(keyword, " ")
+}

+ 8 - 2
jyBXSubscribe/rpc/internal/server/bxsubscribeserver.go

@@ -1,4 +1,4 @@
-// Code generated by goctl. DO NOT EDIT.
+// Code generated by goctl. DO NOT EDIT!
 // Source: bxsubscribe.proto
 
 package server
@@ -124,8 +124,14 @@ func (s *BxsubscribeServer) BidDistributor(ctx context.Context, in *bxsubscribe.
 	return l.BidDistributor(in)
 }
 
-// 订阅推荐列表
+//  订阅推荐列表
 func (s *BxsubscribeServer) BidRecList(ctx context.Context, in *bxsubscribe.BidRecListReq) (*bxsubscribe.SubscribeInfosResp, error) {
 	l := logic.NewBidRecListLogic(ctx, s.svcCtx)
 	return l.BidRecList(in)
 }
+
+//  保存订阅向导设置
+func (s *BxsubscribeServer) SaveTSGuide(ctx context.Context, in *bxsubscribe.SaveTSGuideReq) (*bxsubscribe.StatusResp, error) {
+	l := logic.NewSaveTSGuideLogic(ctx, s.svcCtx)
+	return l.SaveTSGuide(in)
+}

+ 304 - 124
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.31.0
-// 	protoc        v3.15.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.19.4
 // source: bxsubscribe.proto
 
 //import "google/protobuf/struct.proto";
@@ -802,6 +802,7 @@ func (x *SubscribeInfo) GetDistrict() string {
 	return ""
 }
 
+//
 type WinnerInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -873,6 +874,7 @@ func (x *WinnerInfo) GetWinnerId() string {
 	return ""
 }
 
+//
 type SomeInfoReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1053,6 +1055,7 @@ type SomeInfo struct {
 	IsRead      bool     `protobuf:"varint,7,opt,name=isRead,proto3" json:"isRead,omitempty"`           //某个通知??是否已读
 	Industry    []string `protobuf:"bytes,8,rep,name=industry,proto3" json:"industry,omitempty"`        //会员订阅的行业
 	UserId      string   `protobuf:"bytes,9,opt,name=userId,proto3" json:"userId,omitempty"`            //用户id
+	Subsetinfo  string   `protobuf:"bytes,10,opt,name=subsetinfo,proto3" json:"subsetinfo,omitempty"`   // 订阅设置信息
 }
 
 func (x *SomeInfo) Reset() {
@@ -1150,6 +1153,14 @@ func (x *SomeInfo) GetUserId() string {
 	return ""
 }
 
+func (x *SomeInfo) GetSubsetinfo() string {
+	if x != nil {
+		return x.Subsetinfo
+	}
+	return ""
+}
+
+//
 type StatusResp struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1363,7 +1374,7 @@ func (x *UpdateSubScribeInfoReq) GetUserType() string {
 	return ""
 }
 
-// 城市
+//城市
 type CityList struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1411,7 +1422,7 @@ func (x *CityList) GetCity() []string {
 	return nil
 }
 
-// 分类
+//分类
 type Items struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1475,7 +1486,7 @@ func (x *Items) GetAKey() []*Keys {
 	return nil
 }
 
-// 关键词
+//关键词
 type Keys struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1618,7 +1629,7 @@ func (x *KeyItems) GetAKey() []*Key {
 	return nil
 }
 
-// 关键词
+//关键词
 type Key struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2228,7 +2239,7 @@ func (x *List) GetValue() []string {
 	return nil
 }
 
-// 订阅设置
+//订阅设置
 type Subscribe struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2411,7 +2422,7 @@ func (x *UserReq) GetEntId() int64 {
 	return 0
 }
 
-// 用户权益
+//用户权益
 type UserResq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -4182,6 +4193,133 @@ func (x *BidRecListReq) GetPositionType() int64 {
 	return 0
 }
 
+type SaveTSGuideReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId        string   `protobuf:"bytes,1,opt,name=appId,proto3" json:"appId,omitempty"`
+	UserId       string   `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
+	UserType     string   `protobuf:"bytes,3,opt,name=userType,proto3" json:"userType,omitempty"`
+	NewUserId    string   `protobuf:"bytes,4,opt,name=newUserId,proto3" json:"newUserId,omitempty"`
+	EntId        string   `protobuf:"bytes,5,opt,name=entId,proto3" json:"entId,omitempty"`
+	AccountId    string   `protobuf:"bytes,6,opt,name=accountId,proto3" json:"accountId,omitempty"`
+	PositionType string   `protobuf:"bytes,7,opt,name=positionType,proto3" json:"positionType,omitempty"`
+	PositionId   string   `protobuf:"bytes,8,opt,name=positionId,proto3" json:"positionId,omitempty"`
+	Area         string   `protobuf:"bytes,9,opt,name=area,proto3" json:"area,omitempty"`          // 省份、城市  格式  {"福建" : ["福州市","厦门市",]}
+	District     string   `protobuf:"bytes,10,opt,name=district,proto3" json:"district,omitempty"` // 区县 格式  {"莆田市" : ["城厢区","荔城区","秀屿区","仙游县"]}
+	Keywords     []string `protobuf:"bytes,11,rep,name=keywords,proto3" json:"keywords,omitempty"` // 关键词 ["关键词1 附加词","关键词2"]
+}
+
+func (x *SaveTSGuideReq) Reset() {
+	*x = SaveTSGuideReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_bxsubscribe_proto_msgTypes[46]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SaveTSGuideReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SaveTSGuideReq) ProtoMessage() {}
+
+func (x *SaveTSGuideReq) ProtoReflect() protoreflect.Message {
+	mi := &file_bxsubscribe_proto_msgTypes[46]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SaveTSGuideReq.ProtoReflect.Descriptor instead.
+func (*SaveTSGuideReq) Descriptor() ([]byte, []int) {
+	return file_bxsubscribe_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *SaveTSGuideReq) GetAppId() string {
+	if x != nil {
+		return x.AppId
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetUserId() string {
+	if x != nil {
+		return x.UserId
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetUserType() string {
+	if x != nil {
+		return x.UserType
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetNewUserId() string {
+	if x != nil {
+		return x.NewUserId
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetEntId() string {
+	if x != nil {
+		return x.EntId
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetAccountId() string {
+	if x != nil {
+		return x.AccountId
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetPositionType() string {
+	if x != nil {
+		return x.PositionType
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetPositionId() string {
+	if x != nil {
+		return x.PositionId
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetArea() string {
+	if x != nil {
+		return x.Area
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetDistrict() string {
+	if x != nil {
+		return x.District
+	}
+	return ""
+}
+
+func (x *SaveTSGuideReq) GetKeywords() []string {
+	if x != nil {
+		return x.Keywords
+	}
+	return nil
+}
+
 var File_bxsubscribe_proto protoreflect.FileDescriptor
 
 var file_bxsubscribe_proto_rawDesc = []byte{
@@ -4362,7 +4500,7 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
 	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
 	0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64,
-	0x61, 0x74, 0x61, 0x22, 0x88, 0x02, 0x0a, 0x08, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f,
+	0x61, 0x74, 0x61, 0x22, 0xa8, 0x02, 0x0a, 0x08, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f,
 	0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
 	0x52, 0x06, 0x68, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x49, 0x6e,
 	0x54, 0x53, 0x67, 0x75, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69,
@@ -4378,7 +4516,9 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e,
 	0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
 	0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x60,
+	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e,
+	0x0a, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x60,
 	0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09,
 	0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
 	0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72,
@@ -4769,93 +4909,118 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a,
 	0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20,
 	0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
-	0x65, 0x32, 0xd1, 0x0a, 0x0a, 0x0b, 0x42, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12,
-	0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x1a,
-	0x1f, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x12, 0x45, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e,
-	0x66, 0x6f, 0x12, 0x18, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
-	0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x62,
-	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74,
-	0x65, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23,
-	0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x70, 0x64,
-	0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f,
+	0x65, 0x22, 0xbc, 0x02, 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x53, 0x47, 0x75, 0x69, 0x64,
+	0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
+	0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c,
+	0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x74,
+	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
+	0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x09, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74,
+	0x72, 0x69, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74,
+	0x72, 0x69, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73,
+	0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73,
+	0x32, 0x96, 0x0b, 0x0a, 0x0b, 0x42, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+	0x12, 0x4d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e,
+	0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62,
+	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f,
+	0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62,
+	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12,
+	0x45, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66,
+	0x6f, 0x12, 0x18, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e,
+	0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x62, 0x78,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e,
+	0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e,
+	0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+	0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0d, 0x42,
+	0x79, 0x50, 0x75, 0x73, 0x68, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x2e, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x42, 0x79, 0x50, 0x75, 0x73,
+	0x68, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x07,
+	0x53, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73,
+	0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71,
+	0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x47, 0x65, 0x74,
+	0x4b, 0x65, 0x79, 0x12, 0x16, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x62, 0x78,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73,
+	0x70, 0x12, 0x3f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x62, 0x78,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
+	0x73, 0x71, 0x12, 0x49, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62,
+	0x75, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+	0x62, 0x65, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f,
+	0x72, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+	0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e, 0x0a,
+	0x0e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x12,
+	0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65,
+	0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a,
+	0x1c, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x44, 0x69,
+	0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a,
+	0x0d, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d,
+	0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65, 0x74,
+	0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e,
+	0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x56, 0x69, 0x65, 0x77,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x08, 0x75, 0x73,
+	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
+	0x71, 0x12, 0x3f, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x55, 0x73,
+	0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75,
+	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x12, 0x45, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65, 0x74,
+	0x12, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47,
+	0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75,
+	0x73, 0x68, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x65, 0x74,
+	0x50, 0x75, 0x73, 0x68, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73,
+	0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65, 0x74,
 	0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x0d,
-	0x42, 0x79, 0x50, 0x75, 0x73, 0x68, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x2e,
-	0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73,
-	0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e,
-	0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x42, 0x79, 0x50, 0x75,
-	0x73, 0x68, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a,
-	0x07, 0x53, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65,
-	0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x47, 0x65,
-	0x74, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x62,
-	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x65,
-	0x73, 0x70, 0x12, 0x3f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
-	0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x62,
-	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52,
-	0x65, 0x73, 0x71, 0x12, 0x49, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
-	0x62, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4e,
-	0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72,
-	0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47,
-	0x65, 0x74, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
-	0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x44,
-	0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b,
-	0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
-	0x1d, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65,
-	0x74, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b,
-	0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x56, 0x69, 0x65,
-	0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x08, 0x75,
-	0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73,
-	0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66,
-	0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
-	0x73, 0x71, 0x12, 0x3f, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e,
-	0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x55,
-	0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
-	0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65,
-	0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e,
-	0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e,
-	0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50,
-	0x75, 0x73, 0x68, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x65,
-	0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x53, 0x65,
-	0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a,
-	0x15, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
-	0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
-	0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x17, 0x67,
-	0x65, 0x74, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
-	0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
-	0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x62,
-	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66,
-	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12,
-	0x49, 0x0a, 0x0e, 0x62, 0x69, 0x64, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f,
-	0x72, 0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e,
-	0x42, 0x69, 0x64, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65,
-	0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0a, 0x62, 0x69,
-	0x64, 0x52, 0x65, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x42, 0x69, 0x64, 0x52, 0x65, 0x63, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x62, 0x78, 0x73, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x15,
+	0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+	0x62, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+	0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x17, 0x67, 0x65,
+	0x74, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44,
+	0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+	0x62, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x62, 0x78,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x53,
+	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x49,
+	0x0a, 0x0e, 0x62, 0x69, 0x64, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72,
+	0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x42,
+	0x69, 0x64, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
+	0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0a, 0x62, 0x69, 0x64,
+	0x52, 0x65, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73,
+	0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x42, 0x69, 0x64, 0x52, 0x65, 0x63, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x54, 0x53, 0x47, 0x75,
+	0x69, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x53, 0x47, 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71,
+	0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (
@@ -4870,7 +5035,7 @@ func file_bxsubscribe_proto_rawDescGZIP() []byte {
 	return file_bxsubscribe_proto_rawDescData
 }
 
-var file_bxsubscribe_proto_msgTypes = make([]protoimpl.MessageInfo, 49)
+var file_bxsubscribe_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
 var file_bxsubscribe_proto_goTypes = []interface{}{
 	(*SubscribeInfosReq)(nil),       // 0: bxsubscribe.SubscribeInfosReq
 	(*SubscribeInfosResp)(nil),      // 1: bxsubscribe.SubscribeInfosResp
@@ -4918,9 +5083,10 @@ var file_bxsubscribe_proto_goTypes = []interface{}{
 	(*StaffSubscribeDetail)(nil),    // 43: bxsubscribe.StaffSubscribeDetail
 	(*BidDistributorReq)(nil),       // 44: bxsubscribe.BidDistributorReq
 	(*BidRecListReq)(nil),           // 45: bxsubscribe.BidRecListReq
-	nil,                             // 46: bxsubscribe.Subscribe.AreaEntry
-	nil,                             // 47: bxsubscribe.GetPushSetResp.DataEntry
-	nil,                             // 48: bxsubscribe.GetPushSetResp.TimeDataEntry
+	(*SaveTSGuideReq)(nil),          // 46: bxsubscribe.SaveTSGuideReq
+	nil,                             // 47: bxsubscribe.Subscribe.AreaEntry
+	nil,                             // 48: bxsubscribe.GetPushSetResp.DataEntry
+	nil,                             // 49: bxsubscribe.GetPushSetResp.TimeDataEntry
 }
 var file_bxsubscribe_proto_depIdxs = []int32{
 	2,  // 0: bxsubscribe.SubscribeInfosResp.data:type_name -> bxsubscribe.subscribeData
@@ -4930,14 +5096,14 @@ var file_bxsubscribe_proto_depIdxs = []int32{
 	13, // 4: bxsubscribe.Items.a_key:type_name -> bxsubscribe.Keys
 	15, // 5: bxsubscribe.KeyItems.a_key:type_name -> bxsubscribe.Key
 	14, // 6: bxsubscribe.KeyResp.items:type_name -> bxsubscribe.KeyItems
-	46, // 7: bxsubscribe.Subscribe.area:type_name -> bxsubscribe.Subscribe.AreaEntry
+	47, // 7: bxsubscribe.Subscribe.area:type_name -> bxsubscribe.Subscribe.AreaEntry
 	12, // 8: bxsubscribe.Subscribe.items:type_name -> bxsubscribe.Items
 	22, // 9: bxsubscribe.UserResq.data:type_name -> bxsubscribe.Subscribe
 	26, // 10: bxsubscribe.DistributorResp.items:type_name -> bxsubscribe.userResp
 	29, // 11: bxsubscribe.ViewStatusResp.items:type_name -> bxsubscribe.UserStatus
 	32, // 12: bxsubscribe.GetUserInfoResq.data:type_name -> bxsubscribe.GetUserInfo
-	47, // 13: bxsubscribe.GetPushSetResp.data:type_name -> bxsubscribe.GetPushSetResp.DataEntry
-	48, // 14: bxsubscribe.GetPushSetResp.timeData:type_name -> bxsubscribe.GetPushSetResp.TimeDataEntry
+	48, // 13: bxsubscribe.GetPushSetResp.data:type_name -> bxsubscribe.GetPushSetResp.DataEntry
+	49, // 14: bxsubscribe.GetPushSetResp.timeData:type_name -> bxsubscribe.GetPushSetResp.TimeDataEntry
 	41, // 15: bxsubscribe.StaffSubscribeListResp.items:type_name -> bxsubscribe.StaffSubscribe
 	21, // 16: bxsubscribe.Subscribe.AreaEntry.value:type_name -> bxsubscribe.List
 	37, // 17: bxsubscribe.GetPushSetResp.DataEntry.value:type_name -> bxsubscribe.PushSet
@@ -4960,26 +5126,28 @@ var file_bxsubscribe_proto_depIdxs = []int32{
 	42, // 34: bxsubscribe.Bxsubscribe.getStaffSubscribeDetail:input_type -> bxsubscribe.StaffSubscribeDetailReq
 	44, // 35: bxsubscribe.Bxsubscribe.bidDistributor:input_type -> bxsubscribe.BidDistributorReq
 	45, // 36: bxsubscribe.Bxsubscribe.bidRecList:input_type -> bxsubscribe.BidRecListReq
-	1,  // 37: bxsubscribe.Bxsubscribe.GetSubList:output_type -> bxsubscribe.SubscribeInfosResp
-	6,  // 38: bxsubscribe.Bxsubscribe.GetSubSomeInfo:output_type -> bxsubscribe.SomeInfoResp
-	8,  // 39: bxsubscribe.Bxsubscribe.UpdateSubScribeInfo:output_type -> bxsubscribe.StatusResp
-	9,  // 40: bxsubscribe.Bxsubscribe.ByPushHistory:output_type -> bxsubscribe.ByPushHistoryResp
-	8,  // 41: bxsubscribe.Bxsubscribe.SetRead:output_type -> bxsubscribe.StatusResp
-	20, // 42: bxsubscribe.Bxsubscribe.GetKey:output_type -> bxsubscribe.KeyResp
-	24, // 43: bxsubscribe.Bxsubscribe.GetSubScribeInfo:output_type -> bxsubscribe.UserResq
-	8,  // 44: bxsubscribe.Bxsubscribe.MsgDistributor:output_type -> bxsubscribe.StatusResp
-	25, // 45: bxsubscribe.Bxsubscribe.GetDistributor:output_type -> bxsubscribe.DistributorResp
-	28, // 46: bxsubscribe.Bxsubscribe.GetViewStatus:output_type -> bxsubscribe.ViewStatusResp
-	31, // 47: bxsubscribe.Bxsubscribe.userInfo:output_type -> bxsubscribe.GetUserInfoResq
-	8,  // 48: bxsubscribe.Bxsubscribe.setUser:output_type -> bxsubscribe.StatusResp
-	35, // 49: bxsubscribe.Bxsubscribe.getPushSet:output_type -> bxsubscribe.GetPushSetResp
-	8,  // 50: bxsubscribe.Bxsubscribe.setPushSet:output_type -> bxsubscribe.StatusResp
-	40, // 51: bxsubscribe.Bxsubscribe.getStaffSubscribeList:output_type -> bxsubscribe.StaffSubscribeListResp
-	43, // 52: bxsubscribe.Bxsubscribe.getStaffSubscribeDetail:output_type -> bxsubscribe.StaffSubscribeDetail
-	8,  // 53: bxsubscribe.Bxsubscribe.bidDistributor:output_type -> bxsubscribe.StatusResp
-	1,  // 54: bxsubscribe.Bxsubscribe.bidRecList:output_type -> bxsubscribe.SubscribeInfosResp
-	37, // [37:55] is the sub-list for method output_type
-	19, // [19:37] is the sub-list for method input_type
+	46, // 37: bxsubscribe.Bxsubscribe.SaveTSGuide:input_type -> bxsubscribe.SaveTSGuideReq
+	1,  // 38: bxsubscribe.Bxsubscribe.GetSubList:output_type -> bxsubscribe.SubscribeInfosResp
+	6,  // 39: bxsubscribe.Bxsubscribe.GetSubSomeInfo:output_type -> bxsubscribe.SomeInfoResp
+	8,  // 40: bxsubscribe.Bxsubscribe.UpdateSubScribeInfo:output_type -> bxsubscribe.StatusResp
+	9,  // 41: bxsubscribe.Bxsubscribe.ByPushHistory:output_type -> bxsubscribe.ByPushHistoryResp
+	8,  // 42: bxsubscribe.Bxsubscribe.SetRead:output_type -> bxsubscribe.StatusResp
+	20, // 43: bxsubscribe.Bxsubscribe.GetKey:output_type -> bxsubscribe.KeyResp
+	24, // 44: bxsubscribe.Bxsubscribe.GetSubScribeInfo:output_type -> bxsubscribe.UserResq
+	8,  // 45: bxsubscribe.Bxsubscribe.MsgDistributor:output_type -> bxsubscribe.StatusResp
+	25, // 46: bxsubscribe.Bxsubscribe.GetDistributor:output_type -> bxsubscribe.DistributorResp
+	28, // 47: bxsubscribe.Bxsubscribe.GetViewStatus:output_type -> bxsubscribe.ViewStatusResp
+	31, // 48: bxsubscribe.Bxsubscribe.userInfo:output_type -> bxsubscribe.GetUserInfoResq
+	8,  // 49: bxsubscribe.Bxsubscribe.setUser:output_type -> bxsubscribe.StatusResp
+	35, // 50: bxsubscribe.Bxsubscribe.getPushSet:output_type -> bxsubscribe.GetPushSetResp
+	8,  // 51: bxsubscribe.Bxsubscribe.setPushSet:output_type -> bxsubscribe.StatusResp
+	40, // 52: bxsubscribe.Bxsubscribe.getStaffSubscribeList:output_type -> bxsubscribe.StaffSubscribeListResp
+	43, // 53: bxsubscribe.Bxsubscribe.getStaffSubscribeDetail:output_type -> bxsubscribe.StaffSubscribeDetail
+	8,  // 54: bxsubscribe.Bxsubscribe.bidDistributor:output_type -> bxsubscribe.StatusResp
+	1,  // 55: bxsubscribe.Bxsubscribe.bidRecList:output_type -> bxsubscribe.SubscribeInfosResp
+	8,  // 56: bxsubscribe.Bxsubscribe.SaveTSGuide:output_type -> bxsubscribe.StatusResp
+	38, // [38:57] is the sub-list for method output_type
+	19, // [19:38] is the sub-list for method input_type
 	19, // [19:19] is the sub-list for extension type_name
 	19, // [19:19] is the sub-list for extension extendee
 	0,  // [0:19] is the sub-list for field type_name
@@ -5543,6 +5711,18 @@ func file_bxsubscribe_proto_init() {
 				return nil
 			}
 		}
+		file_bxsubscribe_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SaveTSGuideReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
 	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
@@ -5550,7 +5730,7 @@ func file_bxsubscribe_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_bxsubscribe_proto_rawDesc,
 			NumEnums:      0,
-			NumMessages:   49,
+			NumMessages:   50,
 			NumExtensions: 0,
 			NumServices:   1,
 		},

+ 110 - 95
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe_grpc.pb.go

@@ -1,11 +1,9 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
-// - protoc-gen-go-grpc v1.3.0
-// - protoc             v3.15.1
+// - protoc-gen-go-grpc v1.2.0
+// - protoc             v3.19.4
 // source: bxsubscribe.proto
 
-//import "google/protobuf/struct.proto";
-
 package bxsubscribe
 
 import (
@@ -20,67 +18,48 @@ import (
 // Requires gRPC-Go v1.32.0 or later.
 const _ = grpc.SupportPackageIsVersion7
 
-const (
-	Bxsubscribe_GetSubList_FullMethodName              = "/bxsubscribe.Bxsubscribe/GetSubList"
-	Bxsubscribe_GetSubSomeInfo_FullMethodName          = "/bxsubscribe.Bxsubscribe/GetSubSomeInfo"
-	Bxsubscribe_UpdateSubScribeInfo_FullMethodName     = "/bxsubscribe.Bxsubscribe/UpdateSubScribeInfo"
-	Bxsubscribe_ByPushHistory_FullMethodName           = "/bxsubscribe.Bxsubscribe/ByPushHistory"
-	Bxsubscribe_SetRead_FullMethodName                 = "/bxsubscribe.Bxsubscribe/SetRead"
-	Bxsubscribe_GetKey_FullMethodName                  = "/bxsubscribe.Bxsubscribe/GetKey"
-	Bxsubscribe_GetSubScribeInfo_FullMethodName        = "/bxsubscribe.Bxsubscribe/GetSubScribeInfo"
-	Bxsubscribe_MsgDistributor_FullMethodName          = "/bxsubscribe.Bxsubscribe/MsgDistributor"
-	Bxsubscribe_GetDistributor_FullMethodName          = "/bxsubscribe.Bxsubscribe/GetDistributor"
-	Bxsubscribe_GetViewStatus_FullMethodName           = "/bxsubscribe.Bxsubscribe/GetViewStatus"
-	Bxsubscribe_UserInfo_FullMethodName                = "/bxsubscribe.Bxsubscribe/userInfo"
-	Bxsubscribe_SetUser_FullMethodName                 = "/bxsubscribe.Bxsubscribe/setUser"
-	Bxsubscribe_GetPushSet_FullMethodName              = "/bxsubscribe.Bxsubscribe/getPushSet"
-	Bxsubscribe_SetPushSet_FullMethodName              = "/bxsubscribe.Bxsubscribe/setPushSet"
-	Bxsubscribe_GetStaffSubscribeList_FullMethodName   = "/bxsubscribe.Bxsubscribe/getStaffSubscribeList"
-	Bxsubscribe_GetStaffSubscribeDetail_FullMethodName = "/bxsubscribe.Bxsubscribe/getStaffSubscribeDetail"
-	Bxsubscribe_BidDistributor_FullMethodName          = "/bxsubscribe.Bxsubscribe/bidDistributor"
-	Bxsubscribe_BidRecList_FullMethodName              = "/bxsubscribe.Bxsubscribe/bidRecList"
-)
-
 // BxsubscribeClient is the client API for Bxsubscribe service.
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type BxsubscribeClient interface {
-	// 获取订阅推送列表
+	//获取订阅推送列表
 	GetSubList(ctx context.Context, in *SubscribeInfosReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error)
-	// 获取订阅推送相关信息
+	//获取订阅推送相关信息
 	GetSubSomeInfo(ctx context.Context, in *SomeInfoReq, opts ...grpc.CallOption) (*SomeInfoResp, error)
-	// 修改订阅信息接口
+	//修改订阅信息接口
 	UpdateSubScribeInfo(ctx context.Context, in *UpdateSubScribeInfoReq, opts ...grpc.CallOption) (*StatusResp, error)
-	// 推送页面筛选导出
+	//推送页面筛选导出
 	ByPushHistory(ctx context.Context, in *SubscribeInfosReq, opts ...grpc.CallOption) (*ByPushHistoryResp, error)
-	// 推送数据浏览状态修改
+	//推送数据浏览状态修改
 	SetRead(ctx context.Context, in *SetReadReq, opts ...grpc.CallOption) (*StatusResp, error)
-	// 关键词获取
+	//关键词获取
 	GetKey(ctx context.Context, in *GetKeyReq, opts ...grpc.CallOption) (*KeyResp, error)
-	// 订阅设置获取
+	//订阅设置获取
 	GetSubScribeInfo(ctx context.Context, in *UserReq, opts ...grpc.CallOption) (*UserResq, error)
-	// 信息分发
+	//信息分发
 	MsgDistributor(ctx context.Context, in *MsgDistributorReq, opts ...grpc.CallOption) (*StatusResp, error)
-	// 手动分发人员查询
+	//手动分发人员查询
 	GetDistributor(ctx context.Context, in *GetDistributorReq, opts ...grpc.CallOption) (*DistributorResp, error)
-	// 查看状态
+	//查看状态
 	GetViewStatus(ctx context.Context, in *GetViewStatusReq, opts ...grpc.CallOption) (*ViewStatusResp, error)
-	// 用户推送信息查看
+	//用户推送信息查看
 	UserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResq, error)
-	// 用户邮箱保存
+	//用户邮箱保存
 	SetUser(ctx context.Context, in *SetUserInfoReq, opts ...grpc.CallOption) (*StatusResp, error)
-	// 用户推送设置查看
+	//用户推送设置查看
 	GetPushSet(ctx context.Context, in *GetPushSetReq, opts ...grpc.CallOption) (*GetPushSetResp, error)
-	// 用户推送设置修改
+	//用户推送设置修改
 	SetPushSet(ctx context.Context, in *SetPushSetReq, opts ...grpc.CallOption) (*StatusResp, error)
-	// 查看企业员工用户订阅
+	//查看企业员工用户订阅
 	GetStaffSubscribeList(ctx context.Context, in *StaffSubscribeReq, opts ...grpc.CallOption) (*StaffSubscribeListResp, error)
-	// 查看企业员工用户订阅详情
+	//查看企业员工用户订阅详情
 	GetStaffSubscribeDetail(ctx context.Context, in *StaffSubscribeDetailReq, opts ...grpc.CallOption) (*StaffSubscribeDetail, error)
-	// 标讯信息分发
+	//标讯信息分发
 	BidDistributor(ctx context.Context, in *BidDistributorReq, opts ...grpc.CallOption) (*StatusResp, error)
 	// 订阅推荐列表
 	BidRecList(ctx context.Context, in *BidRecListReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error)
+	// 保存订阅向导设置
+	SaveTSGuide(ctx context.Context, in *SaveTSGuideReq, opts ...grpc.CallOption) (*StatusResp, error)
 }
 
 type bxsubscribeClient struct {
@@ -93,7 +72,7 @@ func NewBxsubscribeClient(cc grpc.ClientConnInterface) BxsubscribeClient {
 
 func (c *bxsubscribeClient) GetSubList(ctx context.Context, in *SubscribeInfosReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error) {
 	out := new(SubscribeInfosResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetSubList_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetSubList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -102,7 +81,7 @@ func (c *bxsubscribeClient) GetSubList(ctx context.Context, in *SubscribeInfosRe
 
 func (c *bxsubscribeClient) GetSubSomeInfo(ctx context.Context, in *SomeInfoReq, opts ...grpc.CallOption) (*SomeInfoResp, error) {
 	out := new(SomeInfoResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetSubSomeInfo_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetSubSomeInfo", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -111,7 +90,7 @@ func (c *bxsubscribeClient) GetSubSomeInfo(ctx context.Context, in *SomeInfoReq,
 
 func (c *bxsubscribeClient) UpdateSubScribeInfo(ctx context.Context, in *UpdateSubScribeInfoReq, opts ...grpc.CallOption) (*StatusResp, error) {
 	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_UpdateSubScribeInfo_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/UpdateSubScribeInfo", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -120,7 +99,7 @@ func (c *bxsubscribeClient) UpdateSubScribeInfo(ctx context.Context, in *UpdateS
 
 func (c *bxsubscribeClient) ByPushHistory(ctx context.Context, in *SubscribeInfosReq, opts ...grpc.CallOption) (*ByPushHistoryResp, error) {
 	out := new(ByPushHistoryResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_ByPushHistory_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/ByPushHistory", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -129,7 +108,7 @@ func (c *bxsubscribeClient) ByPushHistory(ctx context.Context, in *SubscribeInfo
 
 func (c *bxsubscribeClient) SetRead(ctx context.Context, in *SetReadReq, opts ...grpc.CallOption) (*StatusResp, error) {
 	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_SetRead_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/SetRead", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -138,7 +117,7 @@ func (c *bxsubscribeClient) SetRead(ctx context.Context, in *SetReadReq, opts ..
 
 func (c *bxsubscribeClient) GetKey(ctx context.Context, in *GetKeyReq, opts ...grpc.CallOption) (*KeyResp, error) {
 	out := new(KeyResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetKey_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetKey", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -147,7 +126,7 @@ func (c *bxsubscribeClient) GetKey(ctx context.Context, in *GetKeyReq, opts ...g
 
 func (c *bxsubscribeClient) GetSubScribeInfo(ctx context.Context, in *UserReq, opts ...grpc.CallOption) (*UserResq, error) {
 	out := new(UserResq)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetSubScribeInfo_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetSubScribeInfo", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -156,7 +135,7 @@ func (c *bxsubscribeClient) GetSubScribeInfo(ctx context.Context, in *UserReq, o
 
 func (c *bxsubscribeClient) MsgDistributor(ctx context.Context, in *MsgDistributorReq, opts ...grpc.CallOption) (*StatusResp, error) {
 	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_MsgDistributor_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/MsgDistributor", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -165,7 +144,7 @@ func (c *bxsubscribeClient) MsgDistributor(ctx context.Context, in *MsgDistribut
 
 func (c *bxsubscribeClient) GetDistributor(ctx context.Context, in *GetDistributorReq, opts ...grpc.CallOption) (*DistributorResp, error) {
 	out := new(DistributorResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetDistributor_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetDistributor", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -174,7 +153,7 @@ func (c *bxsubscribeClient) GetDistributor(ctx context.Context, in *GetDistribut
 
 func (c *bxsubscribeClient) GetViewStatus(ctx context.Context, in *GetViewStatusReq, opts ...grpc.CallOption) (*ViewStatusResp, error) {
 	out := new(ViewStatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetViewStatus_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetViewStatus", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -183,7 +162,7 @@ func (c *bxsubscribeClient) GetViewStatus(ctx context.Context, in *GetViewStatus
 
 func (c *bxsubscribeClient) UserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResq, error) {
 	out := new(GetUserInfoResq)
-	err := c.cc.Invoke(ctx, Bxsubscribe_UserInfo_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/userInfo", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -192,7 +171,7 @@ func (c *bxsubscribeClient) UserInfo(ctx context.Context, in *GetUserInfoReq, op
 
 func (c *bxsubscribeClient) SetUser(ctx context.Context, in *SetUserInfoReq, opts ...grpc.CallOption) (*StatusResp, error) {
 	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_SetUser_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/setUser", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -201,7 +180,7 @@ func (c *bxsubscribeClient) SetUser(ctx context.Context, in *SetUserInfoReq, opt
 
 func (c *bxsubscribeClient) GetPushSet(ctx context.Context, in *GetPushSetReq, opts ...grpc.CallOption) (*GetPushSetResp, error) {
 	out := new(GetPushSetResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetPushSet_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/getPushSet", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -210,7 +189,7 @@ func (c *bxsubscribeClient) GetPushSet(ctx context.Context, in *GetPushSetReq, o
 
 func (c *bxsubscribeClient) SetPushSet(ctx context.Context, in *SetPushSetReq, opts ...grpc.CallOption) (*StatusResp, error) {
 	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_SetPushSet_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/setPushSet", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -219,7 +198,7 @@ func (c *bxsubscribeClient) SetPushSet(ctx context.Context, in *SetPushSetReq, o
 
 func (c *bxsubscribeClient) GetStaffSubscribeList(ctx context.Context, in *StaffSubscribeReq, opts ...grpc.CallOption) (*StaffSubscribeListResp, error) {
 	out := new(StaffSubscribeListResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetStaffSubscribeList_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/getStaffSubscribeList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -228,7 +207,7 @@ func (c *bxsubscribeClient) GetStaffSubscribeList(ctx context.Context, in *Staff
 
 func (c *bxsubscribeClient) GetStaffSubscribeDetail(ctx context.Context, in *StaffSubscribeDetailReq, opts ...grpc.CallOption) (*StaffSubscribeDetail, error) {
 	out := new(StaffSubscribeDetail)
-	err := c.cc.Invoke(ctx, Bxsubscribe_GetStaffSubscribeDetail_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/getStaffSubscribeDetail", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -237,7 +216,7 @@ func (c *bxsubscribeClient) GetStaffSubscribeDetail(ctx context.Context, in *Sta
 
 func (c *bxsubscribeClient) BidDistributor(ctx context.Context, in *BidDistributorReq, opts ...grpc.CallOption) (*StatusResp, error) {
 	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_BidDistributor_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/bidDistributor", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -246,7 +225,16 @@ func (c *bxsubscribeClient) BidDistributor(ctx context.Context, in *BidDistribut
 
 func (c *bxsubscribeClient) BidRecList(ctx context.Context, in *BidRecListReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error) {
 	out := new(SubscribeInfosResp)
-	err := c.cc.Invoke(ctx, Bxsubscribe_BidRecList_FullMethodName, in, out, opts...)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/bidRecList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *bxsubscribeClient) SaveTSGuide(ctx context.Context, in *SaveTSGuideReq, opts ...grpc.CallOption) (*StatusResp, error) {
+	out := new(StatusResp)
+	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/SaveTSGuide", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -257,42 +245,44 @@ func (c *bxsubscribeClient) BidRecList(ctx context.Context, in *BidRecListReq, o
 // All implementations must embed UnimplementedBxsubscribeServer
 // for forward compatibility
 type BxsubscribeServer interface {
-	// 获取订阅推送列表
+	//获取订阅推送列表
 	GetSubList(context.Context, *SubscribeInfosReq) (*SubscribeInfosResp, error)
-	// 获取订阅推送相关信息
+	//获取订阅推送相关信息
 	GetSubSomeInfo(context.Context, *SomeInfoReq) (*SomeInfoResp, error)
-	// 修改订阅信息接口
+	//修改订阅信息接口
 	UpdateSubScribeInfo(context.Context, *UpdateSubScribeInfoReq) (*StatusResp, error)
-	// 推送页面筛选导出
+	//推送页面筛选导出
 	ByPushHistory(context.Context, *SubscribeInfosReq) (*ByPushHistoryResp, error)
-	// 推送数据浏览状态修改
+	//推送数据浏览状态修改
 	SetRead(context.Context, *SetReadReq) (*StatusResp, error)
-	// 关键词获取
+	//关键词获取
 	GetKey(context.Context, *GetKeyReq) (*KeyResp, error)
-	// 订阅设置获取
+	//订阅设置获取
 	GetSubScribeInfo(context.Context, *UserReq) (*UserResq, error)
-	// 信息分发
+	//信息分发
 	MsgDistributor(context.Context, *MsgDistributorReq) (*StatusResp, error)
-	// 手动分发人员查询
+	//手动分发人员查询
 	GetDistributor(context.Context, *GetDistributorReq) (*DistributorResp, error)
-	// 查看状态
+	//查看状态
 	GetViewStatus(context.Context, *GetViewStatusReq) (*ViewStatusResp, error)
-	// 用户推送信息查看
+	//用户推送信息查看
 	UserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResq, error)
-	// 用户邮箱保存
+	//用户邮箱保存
 	SetUser(context.Context, *SetUserInfoReq) (*StatusResp, error)
-	// 用户推送设置查看
+	//用户推送设置查看
 	GetPushSet(context.Context, *GetPushSetReq) (*GetPushSetResp, error)
-	// 用户推送设置修改
+	//用户推送设置修改
 	SetPushSet(context.Context, *SetPushSetReq) (*StatusResp, error)
-	// 查看企业员工用户订阅
+	//查看企业员工用户订阅
 	GetStaffSubscribeList(context.Context, *StaffSubscribeReq) (*StaffSubscribeListResp, error)
-	// 查看企业员工用户订阅详情
+	//查看企业员工用户订阅详情
 	GetStaffSubscribeDetail(context.Context, *StaffSubscribeDetailReq) (*StaffSubscribeDetail, error)
-	// 标讯信息分发
+	//标讯信息分发
 	BidDistributor(context.Context, *BidDistributorReq) (*StatusResp, error)
 	// 订阅推荐列表
 	BidRecList(context.Context, *BidRecListReq) (*SubscribeInfosResp, error)
+	// 保存订阅向导设置
+	SaveTSGuide(context.Context, *SaveTSGuideReq) (*StatusResp, error)
 	mustEmbedUnimplementedBxsubscribeServer()
 }
 
@@ -354,6 +344,9 @@ func (UnimplementedBxsubscribeServer) BidDistributor(context.Context, *BidDistri
 func (UnimplementedBxsubscribeServer) BidRecList(context.Context, *BidRecListReq) (*SubscribeInfosResp, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method BidRecList not implemented")
 }
+func (UnimplementedBxsubscribeServer) SaveTSGuide(context.Context, *SaveTSGuideReq) (*StatusResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SaveTSGuide not implemented")
+}
 func (UnimplementedBxsubscribeServer) mustEmbedUnimplementedBxsubscribeServer() {}
 
 // UnsafeBxsubscribeServer may be embedded to opt out of forward compatibility for this service.
@@ -377,7 +370,7 @@ func _Bxsubscribe_GetSubList_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetSubList_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/GetSubList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetSubList(ctx, req.(*SubscribeInfosReq))
@@ -395,7 +388,7 @@ func _Bxsubscribe_GetSubSomeInfo_Handler(srv interface{}, ctx context.Context, d
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetSubSomeInfo_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/GetSubSomeInfo",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetSubSomeInfo(ctx, req.(*SomeInfoReq))
@@ -413,7 +406,7 @@ func _Bxsubscribe_UpdateSubScribeInfo_Handler(srv interface{}, ctx context.Conte
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_UpdateSubScribeInfo_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/UpdateSubScribeInfo",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).UpdateSubScribeInfo(ctx, req.(*UpdateSubScribeInfoReq))
@@ -431,7 +424,7 @@ func _Bxsubscribe_ByPushHistory_Handler(srv interface{}, ctx context.Context, de
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_ByPushHistory_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/ByPushHistory",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).ByPushHistory(ctx, req.(*SubscribeInfosReq))
@@ -449,7 +442,7 @@ func _Bxsubscribe_SetRead_Handler(srv interface{}, ctx context.Context, dec func
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_SetRead_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/SetRead",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).SetRead(ctx, req.(*SetReadReq))
@@ -467,7 +460,7 @@ func _Bxsubscribe_GetKey_Handler(srv interface{}, ctx context.Context, dec func(
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetKey_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/GetKey",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetKey(ctx, req.(*GetKeyReq))
@@ -485,7 +478,7 @@ func _Bxsubscribe_GetSubScribeInfo_Handler(srv interface{}, ctx context.Context,
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetSubScribeInfo_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/GetSubScribeInfo",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetSubScribeInfo(ctx, req.(*UserReq))
@@ -503,7 +496,7 @@ func _Bxsubscribe_MsgDistributor_Handler(srv interface{}, ctx context.Context, d
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_MsgDistributor_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/MsgDistributor",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).MsgDistributor(ctx, req.(*MsgDistributorReq))
@@ -521,7 +514,7 @@ func _Bxsubscribe_GetDistributor_Handler(srv interface{}, ctx context.Context, d
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetDistributor_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/GetDistributor",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetDistributor(ctx, req.(*GetDistributorReq))
@@ -539,7 +532,7 @@ func _Bxsubscribe_GetViewStatus_Handler(srv interface{}, ctx context.Context, de
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetViewStatus_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/GetViewStatus",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetViewStatus(ctx, req.(*GetViewStatusReq))
@@ -557,7 +550,7 @@ func _Bxsubscribe_UserInfo_Handler(srv interface{}, ctx context.Context, dec fun
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_UserInfo_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/userInfo",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).UserInfo(ctx, req.(*GetUserInfoReq))
@@ -575,7 +568,7 @@ func _Bxsubscribe_SetUser_Handler(srv interface{}, ctx context.Context, dec func
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_SetUser_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/setUser",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).SetUser(ctx, req.(*SetUserInfoReq))
@@ -593,7 +586,7 @@ func _Bxsubscribe_GetPushSet_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetPushSet_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/getPushSet",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetPushSet(ctx, req.(*GetPushSetReq))
@@ -611,7 +604,7 @@ func _Bxsubscribe_SetPushSet_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_SetPushSet_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/setPushSet",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).SetPushSet(ctx, req.(*SetPushSetReq))
@@ -629,7 +622,7 @@ func _Bxsubscribe_GetStaffSubscribeList_Handler(srv interface{}, ctx context.Con
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetStaffSubscribeList_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/getStaffSubscribeList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetStaffSubscribeList(ctx, req.(*StaffSubscribeReq))
@@ -647,7 +640,7 @@ func _Bxsubscribe_GetStaffSubscribeDetail_Handler(srv interface{}, ctx context.C
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_GetStaffSubscribeDetail_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/getStaffSubscribeDetail",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).GetStaffSubscribeDetail(ctx, req.(*StaffSubscribeDetailReq))
@@ -665,7 +658,7 @@ func _Bxsubscribe_BidDistributor_Handler(srv interface{}, ctx context.Context, d
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_BidDistributor_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/bidDistributor",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).BidDistributor(ctx, req.(*BidDistributorReq))
@@ -683,7 +676,7 @@ func _Bxsubscribe_BidRecList_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Bxsubscribe_BidRecList_FullMethodName,
+		FullMethod: "/bxsubscribe.Bxsubscribe/bidRecList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(BxsubscribeServer).BidRecList(ctx, req.(*BidRecListReq))
@@ -691,6 +684,24 @@ func _Bxsubscribe_BidRecList_Handler(srv interface{}, ctx context.Context, dec f
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Bxsubscribe_SaveTSGuide_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SaveTSGuideReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BxsubscribeServer).SaveTSGuide(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bxsubscribe.Bxsubscribe/SaveTSGuide",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BxsubscribeServer).SaveTSGuide(ctx, req.(*SaveTSGuideReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 // Bxsubscribe_ServiceDesc is the grpc.ServiceDesc for Bxsubscribe service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -770,6 +781,10 @@ var Bxsubscribe_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "bidRecList",
 			Handler:    _Bxsubscribe_BidRecList_Handler,
 		},
+		{
+			MethodName: "SaveTSGuide",
+			Handler:    _Bxsubscribe_SaveTSGuide_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "bxsubscribe.proto",