Bläddra i källkod

联调缺失字段补全

WH01243 2 år sedan
förälder
incheckning
3f9a8756fd

+ 4 - 2
jyBXBase/rpc/init/init.go

@@ -3,6 +3,8 @@ package init
 import (
       "flag"
       _ "github.com/go-sql-driver/mysql"
+      "github.com/zeromicro/go-zero/core/conf"
+      "github.com/zeromicro/go-zero/core/logx"
       "jyBXBase/entity"
       "jyBXBase/rpc/internal/config"
 )
@@ -20,7 +22,7 @@ var logFile = flag.String("lf", "etc/logs.yaml", "the logs file")
 var logc entity.Logc
 
 func init() {
-	/*//基本配置
+	//基本配置
 	conf.MustLoad(*configFile, &C)
 	//数据库配置
 	conf.MustLoad(*dbFile, &DB)
@@ -44,5 +46,5 @@ func init() {
 			})
 			logx.Info(v, "--日志记录")
 		}
-	}*/
+	}
 }

+ 1 - 1
jyBXBase/rpc/model/newestBidding.go

@@ -54,7 +54,7 @@ func GetNewestInfo(userId, userType string, newUserId int64) *NewestInfo {
         return nt
 }
 func (n *NewestInfo) GetPushHistory() (res []*bxbase.NewestList) {
-        findSQL := "select b.infoid,a.matchkeys,b.attachment_count,b.budget,b.bidamount from %s a LEFT JOIN %s b ON a.bidid = b.id LEFT JOIN %s p on b.area=p.id or  b.city=p.id  where a.userid = '%s'  and a.date >= %d order by a.id desc limit 50"
+        findSQL := "select b.infoid,a.matchkeys,b.attachment_count,b.budget,b.bidamount from %s a LEFT JOIN %s b ON a.infoid = b.infoid LEFT JOIN %s p on b.area=p.id or  b.city=p.id  where a.userid = '%s'  and a.date >= %d order by a.id desc limit 50"
         findSQL = fmt.Sprintf(findSQL, n.TableName, Pushbidding, Province, MC.InterfaceToStr(n.NewUserId), time.Now().AddDate(0, 0, -7).Unix())
         log.Println(findSQL)
         list := n.MysqlDb.SelectBySql(findSQL)

+ 3 - 3
jyBXSubscribe/api/bxsubscribe.api

@@ -12,9 +12,9 @@ type (
 	subscribeReq {
 		AppId      string `header:"appId"`
 		UserId     string `header:"userId"`
-		EntId      string `header:"entId"`
-		EntUserId  string `header:"entUserId"`
-		DeptId     string `header:"deptId"` //部门id
+		EntId      string `header:"entId,optional"`
+		EntUserId  string `header:"entUserId,optional"`
+		DeptId     string `header:"deptId,optional"` //部门id
 		PageNum    int64  `json:"pageNum,optional"`
 		PageSize   int64  `json:"pageSize,optional"`
 		SelectTime string `json:"selectTime,optional"`

+ 3 - 3
jyBXSubscribe/api/internal/types/types.go

@@ -4,9 +4,9 @@ package types
 type SubscribeReq struct {
 	AppId      string `header:"appId"`
 	UserId     string `header:"userId"`
-	EntId      string `header:"entId"`
-	EntUserId  string `header:"entUserId"`
-	DeptId     string `header:"deptId"` //部门id
+	EntId      string `header:"entId,optional"`
+	EntUserId  string `header:"entUserId,optional"`
+	DeptId     string `header:"deptId,optional"` //部门id
 	PageNum    int64  `json:"pageNum,optional"`
 	PageSize   int64  `json:"pageSize,optional"`
 	SelectTime string `json:"selectTime,optional"`

+ 3 - 2
jyBXSubscribe/entity/db.go

@@ -21,8 +21,9 @@ type MongoStruct struct {
 
 //
 type Mysql struct {
-	Main        *MysqlStruct `json:"main,omitempty"`
-	BaseService *MysqlStruct `json:"baseService,omitempty"`
+	Main             *MysqlStruct `json:"main,omitempty"`
+	BaseService      *MysqlStruct `json:"baseService,omitempty"`
+	GlobalCommonData *MysqlStruct `json:"globalCommonData,omitempty"`
 }
 
 //mysql

+ 1 - 1
jyBXSubscribe/rpc/bxsubscribe.proto

@@ -74,7 +74,7 @@ message SomeInfoResp {
 }
 message SomeInfo{
   bool hasKey = 1;//免费用户和超级订阅是否有订阅词
-  bool isInGuide = 2;//是否进入向导
+  bool isInTSguide = 2;//是否进入向导
   int64 isExpire = 3;//超级订阅到期提醒
   int64 isOnTail = 4;//超级订阅试用状态
   bool isPassCount = 5;//推送数量校验

+ 10 - 3
jyBXSubscribe/rpc/etc/db.yaml

@@ -13,13 +13,20 @@ mysql:
         password: '=PDT49#80Z!RVv52_z'
         maxOpenConns: 5
         maxIdleConns: 5
+    globalCommonData:
+        dbName: global_common_data
+        address: 192.168.3.217:4000
+        userName: root
+        password: '=PDT49#80Z!RVv52_z'
+        maxOpenConns: 5
+        maxIdleConns: 5
 redis:
     addr:
         - other=192.168.3.206:1712
         - push=192.168.3.206:1712
-        - pushcache_1=192.168.3.206:5000
-        - pushcache_2_a=192.168.3.206:5001
-        - pushcache_2_b=192.168.3.206:5002
+        - pushcache_1=127.0.0.1:6379
+        - pushcache_2_a=127.0.0.1:6379
+        - pushcache_2_b=127.0.0.1:6379
 es:
     addr: http://192.168.3.206:9800
     size: 30

+ 83 - 69
jyBXSubscribe/rpc/init/db.go

@@ -4,94 +4,108 @@
 package init
 
 import (
-    "github.com/zeromicro/go-zero/core/logx"
-    "strings"
+	"github.com/zeromicro/go-zero/core/logx"
+	"strings"
 
-    "jyBXSubscribe/entity"
+	"jyBXSubscribe/entity"
 
-    "app.yhyue.com/moapp/jybase/esv1"
-    "app.yhyue.com/moapp/jybase/mongodb"
-    "app.yhyue.com/moapp/jybase/mysql"
-    "app.yhyue.com/moapp/jybase/redis"
+	"app.yhyue.com/moapp/jybase/esv1"
+	"app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/mysql"
+	"app.yhyue.com/moapp/jybase/redis"
 )
 
 var (
-    MainMysql         *mysql.Mysql
-    BaseServiceMysql  *mysql.Mysql
-    Mgo               mongodb.MongodbSim
-    MgoBidding        mongodb.MongodbSim
+	MainMysql        *mysql.Mysql
+	BaseServiceMysql *mysql.Mysql
+	Mgo              mongodb.MongodbSim
+	MgoBidding       mongodb.MongodbSim
+	GlobalCommonData *mysql.Mysql
 )
 
 //
 func MongoDBInit(em *entity.Mongo) {
-    //初始化 mongodb
-    if em.Main.Address != "" {
-        logx.Info("--初始化 mongodb--")
-        Mgo = mongodb.MongodbSim{
-	  MongodbAddr: em.Main.Address,
-	  Size:        em.Main.Size,
-	  DbName:      em.Main.DbName,
-        }
-        Mgo.InitPool()
-    }
-    //
-    if em.Bidding.Address != "" {
-        logx.Info("--初始化 mongodb bidding--")
-        MgoBidding = mongodb.MongodbSim{
-	  MongodbAddr: em.Bidding.Address,
-	  Size:        em.Bidding.Size,
-	  DbName:      em.Bidding.DbName,
-	  UserName:    em.Bidding.UserName,
-	  Password:    em.Bidding.Password,
-        }
-        MgoBidding.InitPool()
-    }
+	//初始化 mongodb
+	if em.Main.Address != "" {
+		logx.Info("--初始化 mongodb--")
+		Mgo = mongodb.MongodbSim{
+			MongodbAddr: em.Main.Address,
+			Size:        em.Main.Size,
+			DbName:      em.Main.DbName,
+		}
+		Mgo.InitPool()
+	}
+	//
+	if em.Bidding.Address != "" {
+		logx.Info("--初始化 mongodb bidding--")
+		MgoBidding = mongodb.MongodbSim{
+			MongodbAddr: em.Bidding.Address,
+			Size:        em.Bidding.Size,
+			DbName:      em.Bidding.DbName,
+			UserName:    em.Bidding.UserName,
+			Password:    em.Bidding.Password,
+		}
+		MgoBidding.InitPool()
+	}
 }
 
 //
 func MysqlInit(mm *entity.Mysql) {
-    //初始化 mysql-main
-    if mm.Main.Address != "" {
-        logx.Info("--初始化 mysql--")
-        MainMysql = &mysql.Mysql{
-	  Address:      mm.Main.Address,
-	  UserName:     mm.Main.UserName,
-	  PassWord:     mm.Main.Password,
-	  DBName:       mm.Main.DbName,
-	  MaxOpenConns: mm.Main.MaxOpenConns,
-	  MaxIdleConns: mm.Main.MaxIdleConns,
-        }
-        MainMysql.Init()
-    }
-    //初始化 mysql-BaseService
-    if mm.BaseService.Address != "" {
-        logx.Info("--初始化 推送 mysql--")
-        BaseServiceMysql = &mysql.Mysql{
-	  Address:      mm.BaseService.Address,
-	  UserName:     mm.BaseService.UserName,
-	  PassWord:     mm.BaseService.Password,
-	  DBName:       mm.BaseService.DbName,
-	  MaxOpenConns: mm.BaseService.MaxOpenConns,
-	  MaxIdleConns: mm.BaseService.MaxIdleConns,
-        }
-        BaseServiceMysql.Init()
-    }
+	//初始化 mysql-main
+	if mm.Main.Address != "" {
+		logx.Info("--初始化 mysql--")
+		MainMysql = &mysql.Mysql{
+			Address:      mm.Main.Address,
+			UserName:     mm.Main.UserName,
+			PassWord:     mm.Main.Password,
+			DBName:       mm.Main.DbName,
+			MaxOpenConns: mm.Main.MaxOpenConns,
+			MaxIdleConns: mm.Main.MaxIdleConns,
+		}
+		MainMysql.Init()
+	}
+	//初始化 mysql-BaseService
+	if mm.BaseService.Address != "" {
+		logx.Info("--初始化 推送 mysql--")
+		BaseServiceMysql = &mysql.Mysql{
+			Address:      mm.BaseService.Address,
+			UserName:     mm.BaseService.UserName,
+			PassWord:     mm.BaseService.Password,
+			DBName:       mm.BaseService.DbName,
+			MaxOpenConns: mm.BaseService.MaxOpenConns,
+			MaxIdleConns: mm.BaseService.MaxIdleConns,
+		}
+		BaseServiceMysql.Init()
+	}
+	//初始化 mysql-GlobalCommonData
+	if mm.GlobalCommonData.Address != "" {
+		logx.Info("--初始化 推送 mysql--")
+		GlobalCommonData = &mysql.Mysql{
+			Address:      mm.GlobalCommonData.Address,
+			UserName:     mm.GlobalCommonData.UserName,
+			PassWord:     mm.GlobalCommonData.Password,
+			DBName:       mm.GlobalCommonData.DbName,
+			MaxOpenConns: mm.GlobalCommonData.MaxOpenConns,
+			MaxIdleConns: mm.GlobalCommonData.MaxIdleConns,
+		}
+		GlobalCommonData.Init()
+	}
 }
 
 //
 func RedisInit(rm *entity.RedisStuct) {
-    //初始化 redis
-    if len(rm.Addr) > 0 {
-        logx.Info("--初始化 redis--")
-        redis.InitRedisBySize(strings.Join(rm.Addr, ","), 100, 30, 300)
-    }
+	//初始化 redis
+	if len(rm.Addr) > 0 {
+		logx.Info("--初始化 redis--")
+		redis.InitRedisBySize(strings.Join(rm.Addr, ","), 100, 30, 300)
+	}
 }
 
 //
 func EsInit(es *entity.EsStruct) {
-    //初始化 elasticsearch
-    if es.Addr != "" {
-        logx.Info("--初始化 elasticsearch--")
-        elastic.InitElasticSize(es.Addr, es.Size)
-    }
+	//初始化 elasticsearch
+	if es.Addr != "" {
+		logx.Info("--初始化 elasticsearch--")
+		elastic.InitElasticSize(es.Addr, es.Size)
+	}
 }

+ 33 - 33
jyBXSubscribe/rpc/init/init.go

@@ -1,10 +1,12 @@
 package init
 
 import (
-      "flag"
-      _ "github.com/go-sql-driver/mysql"
-      "jyBXSubscribe/entity"
-      "jyBXSubscribe/rpc/internal/config"
+	"flag"
+	_ "github.com/go-sql-driver/mysql"
+	"github.com/zeromicro/go-zero/core/conf"
+	"github.com/zeromicro/go-zero/core/logx"
+	"jyBXSubscribe/entity"
+	"jyBXSubscribe/rpc/internal/config"
 )
 
 var configF = flag.String("cf", "etc/bxsubscribe.yaml", "the config file")
@@ -20,34 +22,32 @@ var DB config.Db
 var logFile = flag.String("lf", "etc/logs.yaml", "the log file")
 var logc entity.Logc
 
-
-
 func init() {
-      /*//初始化基本配置
-          conf.MustLoad(*configF, &C)
-          //初始化数据库配置
-          conf.MustLoad(*dbFile, &DB)
-          //初始mongodb
-          MongoDBInit(&DB.Mongo)
-          //初始化msyql
-          MysqlInit(&DB.Mysql)
-          //初始redis
-          RedisInit(&DB.Redis)
-          //初始es
-          EsInit(&DB.Es)
-          //初始化日志信息
-          conf.MustLoad(*logFile, &logc)
-          if len(logc.Level) > 0 {
-              for _, v := range logc.Level {
-      	  logx.MustSetup(logx.LogConf{
-      	      Mode:     logc.Mode,
-      	      Path:     logc.Path,
-      	      Level:    v,
-      	      KeepDays: logc.KeepDays,
-      	  })
-      	  logx.Info(v, "--日志记录")
-              }
-          }
-          //
-          PushMapping.Init(BaseServiceMysql)*/
+	//初始化基本配置
+	conf.MustLoad(*configF, &C)
+	//初始化数据库配置
+	conf.MustLoad(*dbFile, &DB)
+	//初始mongodb
+	MongoDBInit(&DB.Mongo)
+	//初始化msyql
+	MysqlInit(&DB.Mysql)
+	//初始redis
+	RedisInit(&DB.Redis)
+	//初始es
+	EsInit(&DB.Es)
+	//初始化日志信息
+	conf.MustLoad(*logFile, &logc)
+	if len(logc.Level) > 0 {
+		for _, v := range logc.Level {
+			logx.MustSetup(logx.LogConf{
+				Mode:     logc.Mode,
+				Path:     logc.Path,
+				Level:    v,
+				KeepDays: logc.KeepDays,
+			})
+			logx.Info(v, "--日志记录")
+		}
+	}
+	//
+	PushMapping.Init(GlobalCommonData)
 }

+ 90 - 64
jyBXSubscribe/rpc/init/pushmapping.go

@@ -1,76 +1,102 @@
 package init
 
 import (
-    util "app.yhyue.com/moapp/jybase/common"
-    "app.yhyue.com/moapp/jybase/mysql"
-    "log"
+	util "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/mysql"
+	"fmt"
+	"log"
 )
 
 var PushMapping = &pushMapping{}
 
 type pushMapping struct {
-    Area          map[string]int
-    City          map[string]int
-    Toptype       map[string]int
-    Subtype       map[string]int
-    Buyerclass    map[string]int
-    Subscopeclass map[string]int
+	Area          map[string]string
+	City          map[string]string
+	Toptype       map[string]string
+	Subtype       map[string]string
+	Buyerclass    map[string]string
+	Subscopeclass map[string]string
 }
 
+const (
+	CODEAREA          = "code_area"
+	CODEBIDSCOPE      = "code_bidscope"
+	CODEBIDTOPSUBTYPE = "code_bidtopsubtype"
+	CODEBUYERCLASS    = "code_buyerclass"
+)
+
 func (p *pushMapping) Init(Mysql *mysql.Mysql) {
-    infotype := Mysql.SelectBySql("select id,type,name from infotype")
-    p.Toptype = map[string]int{}
-    p.Subtype = map[string]int{}
-    p.Buyerclass = map[string]int{}
-    p.Subscopeclass = map[string]int{}
-    if infotype != nil && len(*infotype) > 0 {
-        for _, v := range *infotype {
-	  id := util.IntAll(v["id"])
-	  tp := util.IntAll(v["type"])
-	  name := util.ObjToString(v["name"])
-	  if tp == 1 {
-	      p.Toptype[name] = id
-	  } else if tp == 2 {
-	      p.Subtype[name] = id
-	  } else if tp == 3 {
-	      p.Buyerclass[name] = id
-	  } else if tp == 4 {
-	      p.Subscopeclass[name] = id
-	  }
-        }
-        if len(p.Toptype) == 0 {
-	  log.Fatalln("PushMapping Toptype Init Error")
-        }
-        if len(p.Subtype) == 0 {
-	  log.Fatalln("PushMapping Subtype Init Error")
-        }
-        if len(p.Buyerclass) == 0 {
-	  log.Fatalln("PushMapping Buyerclass Init Error")
-        }
-        if len(p.Subscopeclass) == 0 {
-	  log.Fatalln("PushMapping Subscopeclass Init Error")
-        }
-    }
-    //
-    p.Area = map[string]int{}
-    p.City = map[string]int{}
-    province := Mysql.SelectBySql("select id,level,name from province")
-    if province != nil && len(*province) > 0 {
-        for _, v := range *province {
-	  id := util.IntAll(v["id"])
-	  level := util.IntAll(v["level"])
-	  name := util.ObjToString(v["name"])
-	  if level == 1 {
-	      p.Area[name] = id
-	  } else if level == 2 {
-	      p.City[name] = id
-	  }
-        }
-        if len(p.Area) == 0 {
-	  log.Fatalln("PushMapping Area Init Error")
-        }
-        if len(p.City) == 0 {
-	  log.Fatalln("PushMapping City Init Error")
-        }
-    }
+	//公告类型处理
+	infotype := Mysql.SelectBySql(fmt.Sprintf("select level,code,name from %s", CODEBIDTOPSUBTYPE))
+	p.Toptype = map[string]string{}
+	p.Subtype = map[string]string{}
+	if infotype != nil && len(*infotype) > 0 {
+		for _, v := range *infotype {
+			level := util.IntAll(v["level"])
+			code := util.ObjToString(v["code"])
+			name := util.ObjToString(v["name"])
+			if level == 1 {
+				p.Toptype[name] = code
+			} else if level == 2 {
+				p.Subtype[name] = code
+			}
+		}
+		if len(p.Toptype) == 0 {
+			log.Fatalln("PushMapping Toptype Init Error")
+		}
+		if len(p.Subtype) == 0 {
+			log.Fatalln("PushMapping Subtype Init Error")
+		}
+	}
+	//采购单位行业
+	p.Buyerclass = map[string]string{}
+	buyerclass := Mysql.SelectBySql(fmt.Sprintf("select code,name from %s where level=1", CODEBUYERCLASS))
+	if buyerclass != nil && len(*buyerclass) > 0 {
+		for _, v := range *buyerclass {
+			code := util.ObjToString(v["code"])
+			name := util.ObjToString(v["name"])
+			p.Buyerclass[name] = code
+		}
+
+		if len(p.Buyerclass) == 0 {
+			log.Fatalln("PushMapping Buyerclass Init Error")
+		}
+	}
+	//信息行业
+	p.Subscopeclass = map[string]string{}
+	subscopeclass := Mysql.SelectBySql(fmt.Sprintf("select code,name from %s where level=2", CODEBIDSCOPE))
+	if subscopeclass != nil && len(*subscopeclass) > 0 {
+		for _, v := range *subscopeclass {
+			code := util.ObjToString(v["code"])
+			name := util.ObjToString(v["name"])
+			p.Subscopeclass[name] = code
+		}
+
+		if len(p.Subscopeclass) == 0 {
+			log.Fatalln("PushMapping subscopeclass Init Error")
+		}
+	}
+	//省份处理
+	p.Area = map[string]string{}
+	p.City = map[string]string{}
+	province := Mysql.SelectBySql(fmt.Sprintf("select code,area,city from %s where (district is null or district='')", CODEAREA))
+	if province != nil && len(*province) > 0 {
+		for _, v := range *province {
+			code := util.ObjToString(v["code"])
+			city := util.ObjToString(v["city"])
+			area := util.ObjToString(v["area"])
+			if city == "" {
+				p.Area[area] = code
+			} else {
+				p.City[city] = code
+			}
+		}
+		if len(p.Area) == 0 {
+			log.Fatalln("PushMapping Area Init Error")
+		}
+		if len(p.City) == 0 {
+			log.Fatalln("PushMapping City Init Error")
+		}
+	}
+
 }

+ 2 - 2
jyBXSubscribe/rpc/internal/logic/getsublistlogic.go

@@ -61,8 +61,8 @@ func (l *GetSubListLogic) GetSubList(in *bxsubscribe.SubscribeInfosReq) (*bxsubs
 	          } else {
 	    	  spqp.BaseServiceMysql = IC.PushMysql
 	          }*/
-	hasNextPage, total, list := false, int64(0), []*bxsubscribe.SubscribeInfo{}
-	//hasNextPage, total, list := model.NewSubscribePush(in.UserType).Datas(spqp)
+	//hasNextPage, total, list := false, int64(0), []*bxsubscribe.SubscribeInfo{}
+	hasNextPage, total, list := model.NewSubscribePush(in.UserType).Datas(spqp)
 	/*
 	 *无推送记录生成推送记录
 	 *免费用户默认推送50条

+ 2 - 0
jyBXSubscribe/rpc/internal/logic/getsubsomeinfologic.go

@@ -73,5 +73,7 @@ func (l *GetSubSomeInfoLogic) GetSubSomeInfo(in *bxsubscribe.SomeInfoReq) (*bxsu
 			resp.Data.IsPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+todayNum+"_"+in.UserId) >= 150
 		}
 	}
+	//是否进入想到查询
+	resp.Data.IsInTSguide = model.NewSubscribePush().IsInTsGuide(in.UserId)
 	return resp, nil
 }

+ 79 - 62
jyBXSubscribe/rpc/model/push.go

@@ -41,9 +41,9 @@ const (
 
 var (
 	buildingInsertCollKey  = []string{"infoid", "area", "city", "buyerclass", "toptype", "subtype", "subscopeclass", "budget", "bidamount", "attachment_count", "publishtime"}
-	ennicheInsertCollKey   = []string{"entid", "deptid", "userid", "bidid", "matchkeys", "date"}
-	subscribeInsertCollKey = []string{"userid", "bidid", "matchkeys", "date"}
-	memberInsertCollKey    = []string{"userid", "bidid", "matchkeys", "date"}
+	ennicheInsertCollKey   = []string{"entid", "deptid", "userid", "infoid", "matchkeys", "date"}
+	subscribeInsertCollKey = []string{"userid", "infoid", "matchkeys", "date", "isvip"}
+	memberInsertCollKey    = []string{"userid", "infoid", "matchkeys", "date"}
 )
 
 var aboutDbMsg map[string]*AboutDbMsg = map[string]*AboutDbMsg{
@@ -290,6 +290,7 @@ func (s *subscribePush) Datas(spqp *SubPushQueryParam) (hasNextPage bool, total
 		result, total = s.getDatasFromMysql(spqp, starttime, endtime, spqp.PageSize, true)
 	}
 	logx.Info("-------------------------------------------------", len(result))
+	log.Println(spqp.IsEmpty() && (spqp.PageNum-1)*spqp.PageSize <= 250)
 	if result == nil {
 		result = []*bxsubscribe.SubscribeInfo{}
 	}
@@ -313,7 +314,7 @@ func (s *subscribePush) getDatasFromMysql(spqp *SubPushQueryParam, starttime, en
 		//城市
 		city := []string{}
 		for _, v := range strings.Split(spqp.City, ",") {
-			if IC.PushMapping.City[v] > 0 {
+			if IC.PushMapping.City[v] != "" {
 				city = append(city, fmt.Sprint(IC.PushMapping.City[v]))
 			} else {
 				city = append(city, "-1")
@@ -329,7 +330,7 @@ func (s *subscribePush) getDatasFromMysql(spqp *SubPushQueryParam, starttime, en
 		var sqlArea = ""
 		area := []string{}
 		for _, v := range strings.Split(spqp.Area, ",") {
-			if IC.PushMapping.Area[v] > 0 {
+			if IC.PushMapping.Area[v] != "" {
 				area = append(area, fmt.Sprint(IC.PushMapping.Area[v]))
 			} else {
 				area = append(area, "-1")
@@ -421,13 +422,13 @@ func (s *subscribePush) getDatasFromMysql(spqp *SubPushQueryParam, starttime, en
 			querys = append(querys, fmt.Sprintf("b.attachment_count is null"))
 		}
 	}
-	searchSql := fmt.Sprintf(" from %s  a LEFT JOIN %s b ON a.bidid = b.id LEFT JOIN %s p on b.area=p.id or  b.city=p.id where %s"+
+	searchSql := fmt.Sprintf(" from %s  a LEFT JOIN %s b ON a.infoid = b.infoid LEFT JOIN %s p on b.area=p.id or  b.city=p.id where %s"+
 		" order by a.id desc", aboutDbMsg[s.ModuleFlag].MysqlTable, Pushbidding, Province, strings.Join(querys, " and "))
 	fmt.Println("searchSql", searchSql)
 	//查询总数
 	count = spqp.BaseServiceMysql.CountBySql(fmt.Sprintf("select count(a.id)" + searchSql))
 	logx.Info("count:", count, "---", s.ModuleFlag)
-	findSql := "select a.id,a.date,b.infoid,a.isvisit,a.matchkeys,a.type"
+	findSql := "select a.id,a.date,a.infoid,a.isvisit,a.matchkeys,a.type,b.attachment_count"
 	if s.ModuleFlag != MemberFlag && s.ModuleFlag != EntnicheFlag {
 		findSql += ",isvip"
 	}
@@ -555,6 +556,7 @@ func (s *subscribePush) GetJyPushs(datas []map[string]interface{}) (pushCas []*P
 
 //查看全部列表缓存
 func (s *subscribePush) PutAllCache(userId string, datas *SubPush) {
+	log.Println(s.allKey(userId), datas, oneDay)
 	redis.Put("pushcache_2_a", s.allKey(userId), datas, oneDay)
 }
 
@@ -800,7 +802,7 @@ func (s *subscribePush) listManager(spqp *SubPushQueryParam, list []map[string]i
 			subscopeClass := ""
 			infoid = common.InterfaceToStr(v["_id"])
 			if v["area"] != nil {
-				area = common.InterfaceToStr(common.If(common.ObjToString(v["area"]) == "A", 0, common.If(IC.PushMapping.Area[common.ObjToString(v["area"])] > 0, IC.PushMapping.Area[common.ObjToString(v["area"])], 0)))
+				area = common.InterfaceToStr(common.If(common.ObjToString(v["area"]) == "A", 0, common.If(IC.PushMapping.Area[common.ObjToString(v["area"])] != "", IC.PushMapping.Area[common.ObjToString(v["area"])], 0)))
 			}
 
 			publishtime := ""
@@ -808,16 +810,16 @@ func (s *subscribePush) listManager(spqp *SubPushQueryParam, list []map[string]i
 				publishtime = time.Unix(common.Int64All(v["publishtime"]), 0).Format(date.Date_Full_Layout)
 			}
 			if v["city"] != nil {
-				city = common.InterfaceToStr(common.If(IC.PushMapping.City[common.ObjToString(v["city"])] > 0, IC.PushMapping.City[common.ObjToString(v["city"])], 0))
+				city = common.InterfaceToStr(common.If(IC.PushMapping.City[common.ObjToString(v["city"])] != "", IC.PushMapping.City[common.ObjToString(v["city"])], 0))
 			}
 			if v["subtype"] != nil {
-				subtype = common.InterfaceToStr(common.If(IC.PushMapping.Subtype[common.ObjToString(v["subtype"])] > 0, IC.PushMapping.Subtype[common.ObjToString(v["subtype"])], 0))
+				subtype = common.InterfaceToStr(common.If(IC.PushMapping.Subtype[common.ObjToString(v["subtype"])] != "", IC.PushMapping.Subtype[common.ObjToString(v["subtype"])], 0))
 			}
 			if v["toptype"] != nil {
-				toptype = common.InterfaceToStr(common.If(IC.PushMapping.Toptype[common.ObjToString(v["toptype"])] > 0, IC.PushMapping.Toptype[common.ObjToString(v["toptype"])], 0))
+				toptype = common.InterfaceToStr(common.If(IC.PushMapping.Toptype[common.ObjToString(v["toptype"])] != "", IC.PushMapping.Toptype[common.ObjToString(v["toptype"])], 0))
 			}
 			if v["buyerclass"] != nil {
-				buyerclass = common.InterfaceToStr(common.If(IC.PushMapping.Buyerclass[common.ObjToString(v["buyerclass"])] > 0, IC.PushMapping.Buyerclass[common.ObjToString(v["buyerclass"])], 0))
+				buyerclass = common.InterfaceToStr(common.If(IC.PushMapping.Buyerclass[common.ObjToString(v["buyerclass"])] != "", IC.PushMapping.Buyerclass[common.ObjToString(v["buyerclass"])], 0))
 			}
 			if v["isValidFile"] != nil {
 				isValidFile, _ := v["isValidFile"].(bool)
@@ -840,21 +842,22 @@ func (s *subscribePush) listManager(spqp *SubPushQueryParam, list []map[string]i
 					subscopeClass = strings.Join(subscopeclass, ",")
 				}
 			}
+			log.Println("infoid", infoid)
 			buildingInsert = append(buildingInsert, infoid, area, city, buyerclass, toptype, subtype, subscopeClass, budget, bidamount, attachment_count, publishtime)
 			spqp.BaseServiceMysql.ExecTx("推送记录保存", func(tx *sql.Tx) bool {
-				id1, id2 := spqp.BaseServiceMysql.InsertIgnoreBatchByTx(tx, Pushbidding, buildingInsertCollKey, buildingInsert)
-				log.Println(id1, id2)
-				if id1 == 0 {
-					//有历史记录,需要查询信息id
-					data := spqp.BaseServiceMysql.FindOne(Pushbidding, map[string]interface{}{
-						"infoid": infoid,
-					}, "id", "")
-					if data != nil {
-						id2 = common.Int64All((*data)["id"])
-					} else {
-						return false
-					}
-				}
+				_, _ = spqp.BaseServiceMysql.InsertIgnoreBatchByTx(tx, Pushbidding, buildingInsertCollKey, buildingInsert)
+				/*log.Println(id1, id2)
+				  if id1 == 0 {
+				  	//有历史记录,需要查询信息id
+				  	data := spqp.BaseServiceMysql.FindOne(Pushbidding, map[string]interface{}{
+				  		"infoid": infoid,
+				  	}, "id", "")
+				  	if data != nil {
+				  		id2 = common.Int64All((*data)["id"])
+				  	} else {
+				  		return false
+				  	}
+				  }*/
 				//推送记录
 				matchkeys := getKeys(title, keyword)
 				matchkey := strings.Join(matchkeys, " ")
@@ -864,26 +867,29 @@ func (s *subscribePush) listManager(spqp *SubPushQueryParam, list []map[string]i
 				id := int64(0)
 				switch s.ModuleFlag {
 				case "eType":
-					pushInsert = append(pushInsert, entid, deptid, entUserId, common.InterfaceToStr(id2), matchkey, now)
+					pushInsert = append(pushInsert, entid, deptid, entUserId, common.InterfaceToStr(infoid), matchkey, now)
 					id, _ = spqp.BaseServiceMysql.InsertIgnoreBatch(aboutDbMsg[s.ModuleFlag].MysqlTable, ennicheInsertCollKey, pushInsert)
 				case "mType":
-					pushInsert = append(pushInsert, common.InterfaceToStr(spqp.NewUserId), common.InterfaceToStr(id2), matchkey, now)
+					pushInsert = append(pushInsert, common.InterfaceToStr(spqp.NewUserId), common.InterfaceToStr(infoid), matchkey, now)
 					id, _ = spqp.BaseServiceMysql.InsertIgnoreBatch(aboutDbMsg[s.ModuleFlag].MysqlTable, memberInsertCollKey, pushInsert)
-				default:
-					pushInsert = append(pushInsert, common.InterfaceToStr(spqp.NewUserId), common.InterfaceToStr(id2), matchkey, now)
+				case "vType":
+					pushInsert = append(pushInsert, common.InterfaceToStr(spqp.NewUserId), common.InterfaceToStr(infoid), matchkey, now, 1)
+					id, _ = spqp.BaseServiceMysql.InsertIgnoreBatch(aboutDbMsg[s.ModuleFlag].MysqlTable, subscribeInsertCollKey, pushInsert)
+				case "fType":
+					pushInsert = append(pushInsert, common.InterfaceToStr(spqp.NewUserId), common.InterfaceToStr(infoid), matchkey, now, 0)
 					id, _ = spqp.BaseServiceMysql.InsertIgnoreBatch(aboutDbMsg[s.ModuleFlag].MysqlTable, subscribeInsertCollKey, pushInsert)
 
 				}
 				if id > 0 {
-					return true
 					redis.Put("pushcache_2_a", redisKey, 1, 86400)
 					resultList = append(resultList, s.InfoFormat(&PushCa{
-						InfoId:     common.ObjToString(v["_id"]),
+						InfoId:     infoid,
 						Date:       time.Now().Unix(),
 						Index:      id,
 						Keys:       matchkeys,
 						FileExists: v["filetext"] != nil,
 					}, &v))
+					return true
 				}
 				return false
 			})
@@ -926,7 +932,7 @@ func (s *subscribePush) getDefaultDatasSQL(bsp *ViewCondition) (str string) {
 	bools := []string{}
 	musts := []string{}
 	//发布时间最新7天
-	musts = append(musts, fmt.Sprintf(bidTime, time.Now().AddDate(0, 0, -7).Unix()))
+	musts = append(musts, fmt.Sprintf(bidTime, time.Now().AddDate(0, 0, -365).Unix()))
 	//省份
 	areaCity := []string{}
 	if len(bsp.Area) > 0 {
@@ -1134,6 +1140,7 @@ func (s *subscribePush) getUserInfo(spqp *SubPushQueryParam) (vc *ViewCondition)
 	} else {
 		vc.Size = IC.C.DefaulCount.Free
 		vc.Keyword = getKeyWordArrFromDbResultByFree(tmpInfo.Items, "", -1)
+		//vc.Keyword = getKeyWordArrFromDbResult(tmpInfo.Items, "", -1)
 	}
 	vc.Size = 10
 
@@ -1188,40 +1195,30 @@ func getKeyWordArrFromDbResultByFree(a_items []interface{}, item string, index i
 		return
 	}
 	for _, v := range a_items {
-		vmr, _ := v.([]interface{})
-		vm, _ := vmr[0].(map[string]interface{})
-		if item != "" && index >= 0 && item != common.ObjToString(vm["s_item"]) {
-			continue
-		}
-		kwsArr := vmr
-		for i, k := range kwsArr {
-			if item != "" && index >= 0 && i != index {
-				continue
+		kw := ViewKeyWord{}
+		b, e := json.Marshal(v)
+		if e != nil {
+			log.Println(e.Error())
+		}
+		json.Unmarshal(b, &kw)
+		if kw.MatchWay == 1 {
+			for _, kk := range kw.Keyword {
+				arr = append(arr, ViewKeyWord{
+					Keyword: []string{kk},
+					Exclude: kw.Exclude,
+				})
 			}
-			kw := ViewKeyWord{}
-			b, e := json.Marshal(k)
-			if e != nil {
-				log.Println(e.Error())
-			}
-			json.Unmarshal(b, &kw)
-			if kw.MatchWay == 1 {
-				for _, kk := range kw.Keyword {
-					arr = append(arr, ViewKeyWord{
-						Keyword: []string{kk},
-						Exclude: kw.Exclude,
-					})
-				}
-				for _, kk := range kw.Appended {
-					arr = append(arr, ViewKeyWord{
-						Keyword: []string{kk},
-						Exclude: kw.Exclude,
-					})
-				}
-			} else {
-				arr = append(arr, kw)
+			for _, kk := range kw.Appended {
+				arr = append(arr, ViewKeyWord{
+					Keyword: []string{kk},
+					Exclude: kw.Exclude,
+				})
 			}
+		} else {
+			arr = append(arr, kw)
 		}
 	}
+
 	return
 }
 
@@ -1246,3 +1243,23 @@ func getStringArrFromDbResult(area map[string]interface{}, i int) (arr []string)
 	}
 	return
 }
+
+//IsInTsGuide 是否进入向导
+func (s *subscribePush) IsInTsGuide(userid string) bool {
+	if userid == "" {
+		return false
+	}
+	data, ok := IC.Mgo.FindById("user", userid, `{"o_jy":1,"i_ts_guide":1,"":1,"i_member_status":1,"i_vip_status":1}`)
+	if ok {
+		//付费用户无免费订阅,不进入订阅向导页面
+		if common.IntAll((*data)["i_member_status"]) > 0 || common.IntAll((*data)["i_vip_status"]) > 0 {
+			return false
+		}
+		o_jy, _ := (*data)["o_jy"].(map[string]interface{})
+		i_ts_guide := common.IntAll((*data)["i_ts_guide"])
+		if i_ts_guide == 2 || (i_ts_guide == 0 && len(o_jy) == 0) {
+			return true
+		}
+	}
+	return false
+}

+ 31 - 31
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go

@@ -677,7 +677,7 @@ type SomeInfo struct {
 	unknownFields protoimpl.UnknownFields
 
 	HasKey      bool     `protobuf:"varint,1,opt,name=hasKey,proto3" json:"hasKey,omitempty"`           //免费用户和超级订阅是否有订阅词
-	IsInGuide   bool     `protobuf:"varint,2,opt,name=isInGuide,proto3" json:"isInGuide,omitempty"`     //是否进入向导
+	IsInTSguide bool     `protobuf:"varint,2,opt,name=isInTSguide,proto3" json:"isInTSguide,omitempty"` //是否进入向导
 	IsExpire    int64    `protobuf:"varint,3,opt,name=isExpire,proto3" json:"isExpire,omitempty"`       //超级订阅到期提醒
 	IsOnTail    int64    `protobuf:"varint,4,opt,name=isOnTail,proto3" json:"isOnTail,omitempty"`       //超级订阅试用状态
 	IsPassCount bool     `protobuf:"varint,5,opt,name=isPassCount,proto3" json:"isPassCount,omitempty"` //推送数量校验
@@ -726,9 +726,9 @@ func (x *SomeInfo) GetHasKey() bool {
 	return false
 }
 
-func (x *SomeInfo) GetIsInGuide() bool {
+func (x *SomeInfo) GetIsInTSguide() bool {
 	if x != nil {
-		return x.IsInGuide
+		return x.IsInTSguide
 	}
 	return false
 }
@@ -885,35 +885,35 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	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, 0x84, 0x02, 0x0a, 0x08, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a,
+	0x22, 0x88, 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, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x49, 0x6e, 0x47, 0x75, 0x69,
-	0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x49, 0x6e, 0x47, 0x75,
-	0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x12,
-	0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x54, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x54, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x69,
-	0x73, 0x50, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0b, 0x69, 0x73, 0x50, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a,
-	0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x69,
-	0x73, 0x52, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 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, 0x32, 0xa3, 0x01, 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, 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,
+	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, 0x73, 0x49, 0x6e,
+	0x54, 0x53, 0x67, 0x75, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x45, 0x78, 0x70,
+	0x69, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x45, 0x78, 0x70,
+	0x69, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x54, 0x61, 0x69, 0x6c, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4f, 0x6e, 0x54, 0x61, 0x69, 0x6c, 0x12,
+	0x20, 0x0a, 0x0b, 0x69, 0x73, 0x50, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e,
+	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x12,
+	0x16, 0x0a, 0x06, 0x69, 0x73, 0x52, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 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, 0x32, 0xa3, 0x01, 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, 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 (