WH01243 2 жил өмнө
parent
commit
52bb855331

+ 1 - 0
jyBXSubscribe/api/bxsubscribe.api

@@ -28,6 +28,7 @@ type (
 		FileExists string `json:"fileExists,optional"`
 		UserType   string `path:"userType,default=fType,options=fType|vType|mType|eType"` //fType:普通用户;vType:超级订阅用户;mType:大会员用户;eType:商机管理用户;
 		NewUserId  int64  `header:"newUserId"`
+		IsEnt      bool   `json:"isEnt,optional"`
 	}
 	//
 	someInfoReq {

+ 2 - 2
jyBXSubscribe/api/etc/bxsubscribe-api.yaml

@@ -1,7 +1,7 @@
 Name: bxsubscribe-api
 Host: 0.0.0.0
 Port: 8002
-Timeout: 8000
+Timeout: 20000
 Webrpcport: 8012
 Gateway:
   ServerCode: jybxsub
@@ -12,7 +12,7 @@ Subscribe:
     Hosts:
       - 127.0.0.1:2379
     Key: bxsubscribe.rpc
-  Timeout: 12000
+  Timeout: 20000
 AppId: 10000
 MgoLogsName: jybxsubscribe_logs
 MgoLogsCount: 500

+ 1 - 0
jyBXSubscribe/api/internal/logic/subscribeListLogic.go

@@ -45,6 +45,7 @@ func (l *SubscribeListLogic) SubscribeList(req *types.SubscribeReq) (resp *types
 		EntUserId:  req.EntUserId,
 		DeptId:     req.DeptId,
 		NewUserId:  req.NewUserId,
+		IsEnt:      req.IsEnt,
 	})
 	if err != nil {
 		return &types.CommonResp{

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

@@ -20,6 +20,7 @@ type SubscribeReq struct {
 	FileExists string `json:"fileExists,optional"`
 	UserType   string `path:"userType,default=fType,options=fType|vType|mType|eType"` //fType:普通用户;vType:超级订阅用户;mType:大会员用户;eType:商机管理用户;
 	NewUserId  int64  `header:"newUserId"`
+	IsEnt      bool   `json:"isEnt,optional"`
 }
 
 type SomeInfoReq struct {

+ 5 - 5
jyBXSubscribe/go.mod

@@ -5,10 +5,10 @@ go 1.16
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20220617085837-48c1bf245c2f
 	bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4
+	bp.jydev.jianyu360.cn/BaseService/jyCodeService v0.0.0-20220927093612-72958b15cdf0
 	github.com/go-sql-driver/mysql v1.6.0
-	github.com/golang/protobuf v1.5.2
-	github.com/zeromicro/go-zero v1.3.3
-	go.mongodb.org/mongo-driver v1.9.1
-	google.golang.org/grpc v1.46.0
-	google.golang.org/protobuf v1.28.0
+	github.com/zeromicro/go-zero v1.4.0
+	go.mongodb.org/mongo-driver v1.10.1
+	google.golang.org/grpc v1.48.0
+	google.golang.org/protobuf v1.28.1
 )

+ 170 - 54
jyBXSubscribe/go.sum

@@ -10,6 +10,8 @@ bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698/go.mod h1:ojo/
 bp.jydev.jianyu360.cn/BaseService/gateway v0.0.0-20220419090715-88ddb32961be/go.mod h1:Yj4oabIGItuMoF0BXYLz2XAnF581kxgXBrvlUtIJrkI=
 bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4 h1:zl5eZrKDBENVVBUiPpzyQQ0/SBdGUmZS3thXycSEO1g=
 bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4/go.mod h1:BMLd/5wb3BIEGhnEgF9y1sJN9P5/Dw9kYsoiE9V8I9g=
+bp.jydev.jianyu360.cn/BaseService/jyCodeService v0.0.0-20220927093612-72958b15cdf0 h1:IxOy/G/OzOmDql81jdDfgiwvh0GYcTcuCob875KsF6o=
+bp.jydev.jianyu360.cn/BaseService/jyCodeService v0.0.0-20220927093612-72958b15cdf0/go.mod h1:Def9i6RggnFvYswG767+jI+S7wMPkzx3D7Bs6Gnj2Q8=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53/go.mod h1:E5lcDI3k4FESLxiAetCfWQTq8qfpy9cv0yN1oKoEO34=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220419023723-0b32d4a41751/go.mod h1:6KL5LMEku83uRbre0W/bj5kXG2I6pJGBFtktmtp51yM=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982/go.mod h1:wsHNO91h37H+xE4ZNny0yd7mtpODeDJxbVYhIRMR+qw=
@@ -50,24 +52,30 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
 github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
 github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw=
+github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
 github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg=
 github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
+github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
 github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
 github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
 github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
 github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
+github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
 github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
 github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/ClickHouse/clickhouse-go v1.5.1/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
+github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
+github.com/ClickHouse/clickhouse-go/v2 v2.2.0/go.mod h1:8f2XZUi7XoeU+uPIytSi1cvx8fmJxi7vIgqpvYTF1+o=
 github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
 github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
 github.com/Shopify/sarama v1.30.0/go.mod h1:zujlQQx1kzHsh4jfV1USnptCQrHAEZ2Hk8fTKCulPVs=
 github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0=
+github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -75,8 +83,9 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
 github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
 github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk=
 github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
-github.com/alicebob/miniredis/v2 v2.17.0 h1:EwLdrIS50uczw71Jc7iVSxZluTKj5nfSP8n7ARRnJy0=
 github.com/alicebob/miniredis/v2 v2.17.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I=
+github.com/alicebob/miniredis/v2 v2.22.0 h1:lIHHiSkEyS1MkKHCHzN+0mWrA4YdbGdimE5iZ2sHSzo=
+github.com/alicebob/miniredis/v2 v2.22.0/go.mod h1:XNqvJdQJv5mSuVMc0ynneafpnL/zv52acZ6kqeS0t88=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
@@ -139,16 +148,19 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.
 github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
 github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
 github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
 github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
+github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
 github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
 github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
+github.com/fullstorydev/grpcurl v1.8.6/go.mod h1:WhP7fRQdhxz2TkL97u+TCb505sxfH78W1usyoB3tepw=
 github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM=
 github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
@@ -165,13 +177,17 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
 github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
 github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
+github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
 github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
 github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
 github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
@@ -179,13 +195,13 @@ github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL9
 github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
 github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg=
 github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w=
+github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
+github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
 github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
@@ -219,13 +235,14 @@ github.com/gogf/gf/v2 v2.0.6/go.mod h1:8uYzw7qNzuq8vrhVlWke1b1925FFqOJIgmyYW1sr/
 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU=
 github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
+github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
+github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
 github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
@@ -257,6 +274,7 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
 github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -268,8 +286,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
@@ -283,6 +302,7 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf
 github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -290,11 +310,17 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
 github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I=
 github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
+github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
+github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
+github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
+github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU=
+github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
 github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
 github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
 github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
+github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
 github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
@@ -306,11 +332,11 @@ github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslC
 github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=
 github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
 github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
 github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
@@ -319,6 +345,12 @@ github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/U
 github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
 github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc=
 github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
+github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ=
+github.com/jhump/protoreflect v1.10.3/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg=
+github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=
+github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
 github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
 github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
 github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=
@@ -354,8 +386,9 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@@ -363,6 +396,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/longbridgeapp/sqlparser v0.3.1 h1:iWOZWGIFgQrJRgobLXUNJdvqGRpbVXkyKUKUA5CNJBE=
 github.com/longbridgeapp/sqlparser v0.3.1/go.mod h1:GIHaUq8zvYyHLCLMJJykx1CdM6LHtkUih/QaJXySSx4=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
@@ -373,11 +407,13 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ
 github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
 github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
 github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
-github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
 github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
 github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
@@ -386,6 +422,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/mkevac/debugcharts v0.0.0-20191222103121-ae1c48aa8615/go.mod h1:Ad7oeElCZqA1Ufj0U9/liOF4BtVepxRcTvr2ey7zTvM=
+github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -393,12 +431,15 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
 github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
 github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
 github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso=
 github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
 github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
@@ -412,34 +453,48 @@ github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
 github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
 github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
 github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
 github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c=
 github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
+github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
 github.com/openzipkin/zipkin-go v0.3.0/go.mod h1:4c3sLeE8xjNqehmF5RpAFLPLJxXscc0R4l6Zg0P1tTQ=
 github.com/openzipkin/zipkin-go v0.4.0 h1:CtfRrOVZtbDj8rt1WXjklw0kqqJQwICrCKmlfUuBUUw=
 github.com/openzipkin/zipkin-go v0.4.0/go.mod h1:4c3sLeE8xjNqehmF5RpAFLPLJxXscc0R4l6Zg0P1tTQ=
+github.com/paulmach/orb v0.7.1/go.mod h1:FWRlTgl88VI1RBx/MkrwWDRhQ96ctqMCh8boXhmqB/A=
+github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY=
+github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
 github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
+github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
+github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
 github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
+github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
+github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
 github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ=
 github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=
+github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -448,8 +503,9 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
 github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.30.0 h1:JEkYlQnpzrzQFxi6gnukFPdQ+ac82oRhzMcIduJu/Ug=
 github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
+github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
+github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
@@ -464,7 +520,13 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L
 github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/shirou/gopsutil v2.19.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
+github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -483,26 +545,36 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu
 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
 github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
+github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
+github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
 github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
 github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
 github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
-github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
 github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
-github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
+github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=
+github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
 github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
+github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=
+github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
 github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
 github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
@@ -513,21 +585,25 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da h1:NimzV1aGyq29m5ukMK0AMWEhFaL/lrEOaephfuoiARg=
 github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
+github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLCur2yWnJzwQEKRcAHXo6seXGuSwWw=
+github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
+github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 github.com/zeromicro/go-zero v1.3.2/go.mod h1:DEj3Fwj1Ui1ltsgf6YqwTL9nD4+tYzIRX0c1pWtQo1E=
-github.com/zeromicro/go-zero v1.3.3 h1:6qv9PcfqfB1tMgp1FJlP1LfWSZ4XD+FwojvA2h5LL2k=
-github.com/zeromicro/go-zero v1.3.3/go.mod h1:LwuYc2V04ZHhWPWGJYQ+kJ5DT4QSkeaZGqXiQcpkfks=
-go.etcd.io/etcd/api/v3 v3.5.2 h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI=
+github.com/zeromicro/go-zero v1.4.0 h1:gtJ6XY7AZUJvA9omWNAWqxCd4hRE5vo1ObS2q+dUJgo=
+github.com/zeromicro/go-zero v1.4.0/go.mod h1:1amLn98K7c6FLntb9f8hdmq26ajtolOg4DTFWnRt54o=
 go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
-go.etcd.io/etcd/client/pkg/v3 v3.5.2 h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE=
+go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc=
+go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
 go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
-go.etcd.io/etcd/client/v3 v3.5.2 h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA=
+go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg=
+go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
 go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o=
+go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4=
+go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY=
 go.mongodb.org/mongo-driver v1.5.0/go.mod h1:boiGPFqyBs5R0R5qf2ErokGRekMfwn+MqKaUyHs7wy0=
-go.mongodb.org/mongo-driver v1.9.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
-go.mongodb.org/mongo-driver v1.9.1 h1:m078y9v7sBItkt1aaoe2YlvWEXcD263e1a4E1fBrJ1c=
-go.mongodb.org/mongo-driver v1.9.1/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
+go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4=
+go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
 go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -535,24 +611,32 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
 go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg=
-go.opentelemetry.io/otel v1.3.0 h1:APxLf0eiBwLl+SOXiJJCVYzA1OOJNyAoV8C5RNRyy7Y=
 go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
-go.opentelemetry.io/otel/exporters/jaeger v1.3.0 h1:HfydzioALdtcB26H5WHc4K47iTETJCdloL7VN579/L0=
+go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
+go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw=
+go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo=
 go.opentelemetry.io/otel/exporters/jaeger v1.3.0/go.mod h1:KoYHi1BtkUPncGSRtCe/eh1ijsnePhSkxwzz07vU0Fc=
-go.opentelemetry.io/otel/exporters/zipkin v1.3.0 h1:uOD28dZ7yIKITTcUS6MeAGNHYy3uhP7DTkhcJM6onlQ=
+go.opentelemetry.io/otel/exporters/jaeger v1.9.0 h1:gAEgEVGDWwFjcis9jJTOJqZNxDzoZfR12WNIxr7g9Ww=
+go.opentelemetry.io/otel/exporters/jaeger v1.9.0/go.mod h1:hquezOLVAybNW6vanIxkdLXTXvzlj2Vn3wevSP15RYs=
 go.opentelemetry.io/otel/exporters/zipkin v1.3.0/go.mod h1:LxGGfHIYbvsFnrJtBcazb0yG24xHdDGrT/H6RB9r3+8=
+go.opentelemetry.io/otel/exporters/zipkin v1.9.0 h1:06b/nt6xao6th00aue9WU3ZDTTe+InaMXA/vym6pLuA=
+go.opentelemetry.io/otel/exporters/zipkin v1.9.0/go.mod h1:HyIvYIu37wV4Wx5azd7e05x9k/dOz9KB4x0plw2QNvs=
 go.opentelemetry.io/otel/sdk v1.0.0/go.mod h1:PCrDHlSy5x1kjezSdL37PhbFUMjrsLRshJ2zCzeXwbM=
-go.opentelemetry.io/otel/sdk v1.3.0 h1:3278edCoH89MEJ0Ky8WQXVmDQv3FX4ZJ3Pp+9fJreAI=
 go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs=
+go.opentelemetry.io/otel/sdk v1.9.0 h1:LNXp1vrr83fNXTHgU8eO89mhzxb/bbWAsHG6fNf3qWo=
+go.opentelemetry.io/otel/sdk v1.9.0/go.mod h1:AEZc8nt5bd2F7BC24J5R0mrjYnpEgYHyTcM/vrSple4=
 go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs=
-go.opentelemetry.io/otel/trace v1.3.0 h1:doy8Hzb1RJ+I3yFhtDmwNc7tIyw1tNMOIsyPzp1NOGY=
 go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk=
+go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
+go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc=
+go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/automaxprocs v1.4.0 h1:CpDZl6aOlLhReez+8S3eEotD7Jx0Os++lemPlMULQP0=
 go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q=
+go.uber.org/automaxprocs v1.5.1 h1:e1YG66Lrk73dn4qhg8WFSvhF0JuFQF0ERIp4rpuV8Qk=
+go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
 go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
 go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
 go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
@@ -573,9 +657,11 @@ golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPh
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
-golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 h1:kETrAMYZq6WVGPa8IIixL0CaEcIUNi+1WX7grUoi3y8=
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -648,9 +734,10 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220421235706-1d1ef9303861 h1:yssD99+7tqHWO5Gwh81phT+67hg+KttniBr6UnEXOY8=
-golang.org/x/net v0.0.0-20220421235706-1d1ef9303861/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220531201128-c960675eff93 h1:MYimHLfoXEpOhqd/zgoA/uoXzHB86AEky4LAx5ij9xA=
+golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -691,11 +778,13 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191220220014-0732a990476f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -710,6 +799,7 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -727,16 +817,24 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc=
-golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220429233432-b5fbb4746d32/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
+golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
+golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc=
+golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -751,8 +849,10 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 h1:GZokNIeuVkl3aZHJchRrr13WCsols02MLUcz1U9is6M=
+golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -794,8 +894,10 @@ golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWc
 golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
@@ -808,7 +910,6 @@ golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
 google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
@@ -864,10 +965,11 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
 google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
 google.golang.org/genproto v0.0.0-20220228195345-15d65a4533f7/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220422154200-b37d22cd5731 h1:nquqdM9+ps0JZcIiI70+tqoaIFS5Ql4ZuK8UXnz3HfE=
-google.golang.org/genproto v0.0.0-20220422154200-b37d22cd5731/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 h1:qRu95HZ148xXw+XeZ3dvqe85PxH4X8+jIo0iRPKcEnM=
+google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -886,8 +988,9 @@ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ
 google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k=
 google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
-google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8=
-google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w=
+google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -898,16 +1001,19 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
 google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
+google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
@@ -930,8 +1036,10 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gorm.io/driver/mysql v1.0.5 h1:WAAmvLK2rG0tCOqrf5XcLi2QUwugd4rcVJ/W3aoon9o=
 gorm.io/driver/mysql v1.0.5/go.mod h1:N1OIhHAIhx5SunkMGqWbGFVeh4yTNWKmMo1GOAsohLI=
 gorm.io/gorm v1.21.3 h1:qDFi55ZOsjZTwk5eN+uhAmHi8GysJ/qCTichM/yO7ME=
@@ -943,26 +1051,34 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
 honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.20.12 h1:LfRpmRkJLwPP8eaYehsVVmIIfg1yCBIIUHaSsdqCgHA=
 k8s.io/api v0.20.12/go.mod h1:A2brwyEkVLM3wQGNnzoAa5JsQRzHK0uoOQ+bsnv7V68=
-k8s.io/apimachinery v0.20.12 h1:2c0LIVNMvB8k2Ozstmhl2zGeCEcPazznuLYEwxFdNjM=
+k8s.io/api v0.22.9 h1:PidjRtgd0zDa6SvyooBLH/SP62uOhEBY0kx0UYRGr1o=
+k8s.io/api v0.22.9/go.mod h1:rcjO/FPOuvc3x7nQWx29UcDrFJMx82RxDob71ntNH4A=
 k8s.io/apimachinery v0.20.12/go.mod h1:uM7hCI0NyBymUwgshMgZyte475lxhr+QH6h3cvdnzEc=
-k8s.io/client-go v0.20.12 h1:U75SxTC31BHT9i7CbX/hL4v+U1Wkzy/E1vt5ClDPp3I=
+k8s.io/apimachinery v0.22.9 h1:5qjnpBk6eC9me0SAzokCUMI0KVF2PENK1PnykF8/Gjo=
+k8s.io/apimachinery v0.22.9/go.mod h1:ZvVLP5iLhwVFg2Yx9Gh5W0um0DUauExbRhe+2Z8I1EU=
 k8s.io/client-go v0.20.12/go.mod h1:NBJj6Evp73Xy/4v/O/RDRaH0+3JoxNfjRxkyRgrdbsA=
+k8s.io/client-go v0.22.9 h1:5p2R2LsoBfaE6QnXfWFmyyvxrFXtfegUGRMZSpTI+Q8=
+k8s.io/client-go v0.22.9/go.mod h1:IoH7exYnoH/zgvHOuVxh2c4yJepcCBt72FzCTisOc4k=
 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
 k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
+k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
 k8s.io/klog/v2 v2.40.1 h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4=
 k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
 k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
-k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw=
+k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
+k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
+k8s.io/utils v0.0.0-20220706174534-f6158b442e7c h1:hFZO68mv/0xe8+V0gRT9BAq3/31cKjjeVv4nScriuBk=
+k8s.io/utils v0.0.0-20220706174534-f6158b442e7c/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
 rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
-sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno=
 sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
+sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
+sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
 sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=

+ 1 - 0
jyBXSubscribe/rpc/bxsubscribe.proto

@@ -22,6 +22,7 @@ message SubscribeInfosReq {
   string  entUserId = 16;
   string deptId = 17;
   int64 newUserId = 18;
+  bool IsEnt=19;
 }
 
 message SubscribeInfosResp {

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

@@ -4,7 +4,7 @@ Etcd:
   Hosts:
   - 127.0.0.1:2379
   Key: bxsubscribe.rpc
-Timeout: 8000
+Timeout: 20000
 Webrpcport: 8011
 DefaultDay: 7
 DefaulCount:
@@ -13,5 +13,5 @@ DefaulCount:
 CodeServiceConf:
   Etcd:
     Hosts:
-      - 192.168.3.206:2379
+      - 127.0.0.1:2379
     Key: codeservice.rpc

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

@@ -8,14 +8,14 @@ mysql:
         maxIdleConns: 5
     baseService:
         dbName: base_service
-        address: 192.168.3.217:4000
+        address: 192.168.3.14:4000
         userName: root
         password: '=PDT49#80Z!RVv52_z'
         maxOpenConns: 5
         maxIdleConns: 5
     globalCommonData:
         dbName: global_common_data
-        address: 192.168.3.217:4000
+        address: 192.168.3.14:4000
         userName: root
         password: '=PDT49#80Z!RVv52_z'
         maxOpenConns: 5
@@ -23,7 +23,7 @@ mysql:
 redis:
     addr:
         - other=192.168.3.206:1712
-        - push=192.168.3.206:1712
+        - push=127.0.0.1:6379
         - pushcache_1=127.0.0.1:6379
         - pushcache_2_a=127.0.0.1:6379
         - pushcache_2_b=127.0.0.1:6379

+ 40 - 46
jyBXSubscribe/rpc/init/init.go

@@ -1,60 +1,54 @@
 package init
 
 import (
-        "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
-        "flag"
-        _ "github.com/go-sql-driver/mysql"
-        "github.com/zeromicro/go-zero/core/discov"
-        "github.com/zeromicro/go-zero/core/logx"
-        "github.com/zeromicro/go-zero/zrpc"
-        "jyBXSubscribe/entity"
-        "jyBXSubscribe/rpc/internal/config"
-)
-
-_ "github.com/go-sql-driver/mysql"
-"github.com/zeromicro/go-zero/core/logx"
+	codePb "bp.jydev.jianyu360.cn/BaseService/jyCodeService/rpc/codeservice/codeservice"
+	_ "github.com/go-sql-driver/mysql"
+	"github.com/zeromicro/go-zero/core/discov"
+	"github.com/zeromicro/go-zero/core/logx"
+	"github.com/zeromicro/go-zero/zrpc"
+	"jyBXSubscribe/entity"
+	"jyBXSubscribe/rpc/internal/config"
+	"log"
 )
 
 var C config.Config
 var err error
+var CodeLib codePb.CodeService
 
 //
 var DB config.Db
 
-//
-var logFile = flag.String("lf", "etc/logs.yaml", "the log file")
-var logc entity.Logc
-var codLib codeService.codeservice
+//var codLib
 var Logc entity.Logc
 
-func Init() {
-        //初始mongodb
-        MongoDBInit(&DB.Mongo)
-        //初始化msyql
-        MysqlInit(&DB.Mysql)
-        //初始redis
-        RedisInit(&DB.Redis)
-        //初始es
-        EsInit(&DB.Es)
-        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()
-        //代码表服务加载
-        codeClient := zrpc.MustNewClient(zrpc.RpcClientConf{
-	      Etcd: discov.EtcdConf{
-		    Hosts: C.UserCenterConf.Etcd.Hosts,
-		    Key:   C.UserCenterConf.Etcd.Key,
-	      },
-        })
-        entity.UserLib = usercenter.NewUserCenter(userClient)
+func InitC() {
+	log.Println("111111")
+	//初始mongodb
+	MongoDBInit(&DB.Mongo)
+	//初始化msyql
+	MysqlInit(&DB.Mysql)
+	//初始redis
+	RedisInit(&DB.Redis)
+	//初始es
+	EsInit(&DB.Es)
+	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, "--日志记录")
+		}
+	}
+	//代码表服务加载
+	codeClient := zrpc.MustNewClient(zrpc.RpcClientConf{
+		Etcd: discov.EtcdConf{
+			Hosts: C.CodeServiceConf.Etcd.Hosts,
+			Key:   C.CodeServiceConf.Etcd.Key,
+		},
+	})
+	logx.Info("CodeService初始化")
+	CodeLib = codePb.NewCodeService(codeClient)
 }

+ 14 - 14
jyBXSubscribe/rpc/internal/config/config.go

@@ -1,24 +1,24 @@
 package config
 
 import (
-        "github.com/zeromicro/go-zero/zrpc"
-        "jyBXSubscribe/entity"
+	"github.com/zeromicro/go-zero/zrpc"
+	"jyBXSubscribe/entity"
 )
 
 type Config struct {
-        zrpc.RpcServerConf
-        Webrpcport  int64
-        DefaultDay  int
-        DefaulCount struct {
-	      Pay  int
-	      Free int
-        }
-        CodeService zrpc.RpcClientConf
+	zrpc.RpcServerConf
+	Webrpcport  int64
+	DefaultDay  int
+	DefaulCount struct {
+		Pay  int
+		Free int
+	}
+	CodeServiceConf zrpc.RpcClientConf
 }
 
 type Db struct {
-        Mysql entity.Mysql      `json:"mysql"`
-        Redis entity.RedisStuct `json:"redis"`
-        Es    entity.EsStruct   `json:"es"`
-        Mongo entity.Mongo      `json:"mongo"`
+	Mysql entity.Mysql      `json:"mysql"`
+	Redis entity.RedisStuct `json:"redis"`
+	Es    entity.EsStruct   `json:"es"`
+	Mongo entity.Mongo      `json:"mongo"`
 }

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

@@ -53,6 +53,7 @@ func (l *GetSubListLogic) GetSubList(in *bxsubscribe.SubscribeInfosReq) (*bxsubs
 		DeptId:           in.DeptId,                          //商机管理部门id
 		NewUserId:        in.NewUserId,
 		BaseServiceMysql: IC.BaseServiceMysql,
+		IsEnt:            in.IsEnt,
 	}
 	/*  if in.UserType == "mType" {
 	    	  spqp.BaseServiceMysql = IC.MemberPushMysql
@@ -67,7 +68,7 @@ func (l *GetSubListLogic) GetSubList(in *bxsubscribe.SubscribeInfosReq) (*bxsubs
 	 *免费用户默认推送50条
 	 *大会员、新版商机管理、超级订阅用户 默认推送1000条记录
 	 */
-	if in.PageNum == 1 && spqp.IsEmpty() && len(list) == 0 {
+	if in.PageNum == 1 && spqp.IsEmpty() && len(list) == 0 && in.IsEnt == false {
 		hasNextPage, total, list = model.NewSubscribePush(in.UserType).DefaultDatas(spqp)
 	}
 	//查询是否收藏

+ 140 - 140
jyBXSubscribe/rpc/internal/logic/getsublistlogic_test.go

@@ -1,156 +1,156 @@
 package logic
 
 import (
-        elastic "app.yhyue.com/moapp/jybase/esv1"
-        "app.yhyue.com/moapp/jybase/mongodb"
-        "app.yhyue.com/moapp/jybase/mysql"
-        "app.yhyue.com/moapp/jybase/redis"
-        "context"
-        "github.com/zeromicro/go-zero/core/logx"
-        "jyBXSubscribe/entity"
-        IC "jyBXSubscribe/rpc/init"
-        "jyBXSubscribe/rpc/internal/config"
-        "jyBXSubscribe/rpc/internal/svc"
-        "jyBXSubscribe/rpc/type/bxsubscribe"
-        "log"
-        "reflect"
-        "strings"
-        "testing"
+	elastic "app.yhyue.com/moapp/jybase/esv1"
+	"app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/mysql"
+	"app.yhyue.com/moapp/jybase/redis"
+	"context"
+	"github.com/zeromicro/go-zero/core/logx"
+	"jyBXSubscribe/entity"
+	IC "jyBXSubscribe/rpc/init"
+	"jyBXSubscribe/rpc/internal/config"
+	"jyBXSubscribe/rpc/internal/svc"
+	"jyBXSubscribe/rpc/type/bxsubscribe"
+	"log"
+	"reflect"
+	"strings"
+	"testing"
 )
 
 func init() {
 
-        logx.Info("--初始化 mongodb--")
-        IC.Mgo = mongodb.MongodbSim{
-	      MongodbAddr: "192.168.3.206:27080",
-	      Size:        5,
-	      DbName:      "qfw",
-        }
-        IC.Mgo.InitPool()
-        IC.DB = config.Db{Mongo: entity.Mongo{
-	      Bidding: &entity.MongoStruct{
-		    Collection:     "bidding",
-		    CollectionBack: "bidding_back",
-	      },
-        }}
-        IC.DB.Mongo.Bidding.Collection = "bidding_back"
-        //
-        logx.Info("--初始化 mongodb bidding--")
-        IC.MgoBidding = mongodb.MongodbSim{
-	      MongodbAddr: "192.168.3.206:27001",
-	      Size:        5,
-	      DbName:      "qfw_data",
-	      UserName:    "jyDevGroup",
-	      Password:    "jy@DevGroup",
-        }
-        IC.MgoBidding.InitPool()
+	logx.Info("--初始化 mongodb--")
+	IC.Mgo = mongodb.MongodbSim{
+		MongodbAddr: "192.168.3.206:27080",
+		Size:        5,
+		DbName:      "qfw",
+	}
+	IC.Mgo.InitPool()
+	IC.DB = config.Db{Mongo: entity.Mongo{
+		Bidding: &entity.MongoStruct{
+			Collection:     "bidding",
+			CollectionBack: "bidding_back",
+		},
+	}}
+	IC.DB.Mongo.Bidding.Collection = "bidding_back"
+	//
+	logx.Info("--初始化 mongodb bidding--")
+	IC.MgoBidding = mongodb.MongodbSim{
+		MongodbAddr: "192.168.3.206:27001",
+		Size:        5,
+		DbName:      "qfw_data",
+		UserName:    "jyDevGroup",
+		Password:    "jy@DevGroup",
+	}
+	IC.MgoBidding.InitPool()
 
-        logx.Info("--初始化 mysql--")
-        IC.MainMysql = &mysql.Mysql{
-	      Address:      "192.168.3.11:3366",
-	      UserName:     "root",
-	      PassWord:     "Topnet123",
-	      DBName:       "jianyu",
-	      MaxOpenConns: 5,
-	      MaxIdleConns: 5,
-        }
-        IC.MainMysql.Init()
+	logx.Info("--初始化 mysql--")
+	IC.MainMysql = &mysql.Mysql{
+		Address:      "192.168.3.11:3366",
+		UserName:     "root",
+		PassWord:     "Topnet123",
+		DBName:       "jianyu",
+		MaxOpenConns: 5,
+		MaxIdleConns: 5,
+	}
+	IC.MainMysql.Init()
 
-        //初始化 mysql-EntnichePush
-        logx.Info("--初始化 商机管理推送 mysql--")
-        IC.BaseServiceMysql = &mysql.Mysql{
-	      Address:      "192.168.3.217:4000",
-	      UserName:     "root",
-	      PassWord:     "=PDT49#80Z!RVv52_z",
-	      DBName:       "base_service",
-	      MaxOpenConns: 5,
-	      MaxIdleConns: 5,
-        }
-        IC.BaseServiceMysql.Init()
+	//初始化 mysql-EntnichePush
+	logx.Info("--初始化 商机管理推送 mysql--")
+	IC.BaseServiceMysql = &mysql.Mysql{
+		Address:      "192.168.3.217:4000",
+		UserName:     "root",
+		PassWord:     "=PDT49#80Z!RVv52_z",
+		DBName:       "base_service",
+		MaxOpenConns: 5,
+		MaxIdleConns: 5,
+	}
+	IC.BaseServiceMysql.Init()
 
-        //初始化 mysql-GlobalCommonData
+	//初始化 mysql-GlobalCommonData
 
-        logx.Info("--初始化 推送 mysql--")
-        IC.GlobalCommonData = &mysql.Mysql{
-	      Address:      "192.168.3.217:4000",
-	      UserName:     "root",
-	      PassWord:     "=PDT49#80Z!RVv52_z",
-	      DBName:       "global_common_data",
-	      MaxOpenConns: 5,
-	      MaxIdleConns: 5,
-        }
-        IC.GlobalCommonData.Init()
+	logx.Info("--初始化 推送 mysql--")
+	IC.GlobalCommonData = &mysql.Mysql{
+		Address:      "192.168.3.217:4000",
+		UserName:     "root",
+		PassWord:     "=PDT49#80Z!RVv52_z",
+		DBName:       "global_common_data",
+		MaxOpenConns: 5,
+		MaxIdleConns: 5,
+	}
+	IC.GlobalCommonData.Init()
 
-        logx.Info("--初始化 redis--")
-        redis.InitRedisBySize(strings.Join([]string{"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"}, ","), 100, 30, 300)
-        //初始化 elasticsearch
-        logx.Info("--初始化 elasticsearch--")
-        elastic.InitElasticSize("http://192.168.3.206:9800", 5)
-        IC.PushMapping.Init(IC.GlobalCommonData)
+	logx.Info("--初始化 redis--")
+	redis.InitRedisBySize(strings.Join([]string{"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"}, ","), 100, 30, 300)
+	//初始化 elasticsearch
+	logx.Info("--初始化 elasticsearch--")
+	elastic.InitElasticSize("http://192.168.3.206:9800", 5)
+	//IC.PushMapping.Init(IC.GlobalCommonData)
 }
 
 func TestGetSubListLogic_GetSubList(t *testing.T) {
-        type fields struct {
-	      ctx    context.Context
-	      svcCtx *svc.ServiceContext
-	      Logger logx.Logger
-        }
-        type args struct {
-	      in *bxsubscribe.SubscribeInfosReq
-        }
-        tests := []struct {
-	      name    string
-	      fields  fields
-	      args    args
-	      want    *bxsubscribe.SubscribeInfosResp
-	      wantErr bool
-        }{
-	      // TODO: Add test cases.
-	      {
-		    name:   "推送记录查看",
-		    fields: fields{},
-		    args: args{
-			  in: &bxsubscribe.SubscribeInfosReq{
-				PageNum:    1,
-				PageSize:   20,
-				SelectTime: "",
-				Area:       "",
-				City:       "",
-				BuyerClass:   "人大,政协,党委办,组织,宣传,统战,纪委,政府办,发改委,财政,教育,科技,工信,民政,民宗,人社,公安,检察院,法院,司法,应急管理,军队,自然资源,生态环境,住建,市政,城管,交通,水利,农业,气象,文旅,卫健委,医疗,学校,档案,体育,政务中心,机关事务,国资委,海关,税务,市场监管,商务,人行,银保监,证监,审计,出版广电,统计,公共资源交易,社会团体",
-				Subtype: "",
-				KeyWords:   "",
-				Industry:    "",
-				UserType:   "mType",
-				UserId:     "5e8eb60ae138234b4f91aacf",
-				EntId:      "1111",
-				AppId:      "10000",
-				Price:      "",
-				FileExists: "",
-				EntUserId:  "",
-				DeptId:     "1111",
-				NewUserId:  72668,
-			  },
-		    },
-		    want:    nil,
-		    wantErr: true,
-	      },
-        }
-        for _, tt := range tests {
-	      t.Run(tt.name, func(t *testing.T) {
-		    l := &GetSubListLogic{
-			  ctx:    tt.fields.ctx,
-			  svcCtx: tt.fields.svcCtx,
-			  Logger: tt.fields.Logger,
-		    }
-		    got, err := l.GetSubList(tt.args.in)
-		    log.Println(got)
-		    if (err != nil) != tt.wantErr {
-			  t.Errorf("GetSubList() error = %v, wantErr %v", err, tt.wantErr)
-			  return
-		    }
-		    if !reflect.DeepEqual(got, tt.want) {
-			  t.Errorf("GetSubList() got = %v, want %v", got, tt.want)
-		    }
-	      })
-        }
+	type fields struct {
+		ctx    context.Context
+		svcCtx *svc.ServiceContext
+		Logger logx.Logger
+	}
+	type args struct {
+		in *bxsubscribe.SubscribeInfosReq
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		args    args
+		want    *bxsubscribe.SubscribeInfosResp
+		wantErr bool
+	}{
+		// TODO: Add test cases.
+		{
+			name:   "推送记录查看",
+			fields: fields{},
+			args: args{
+				in: &bxsubscribe.SubscribeInfosReq{
+					PageNum:    1,
+					PageSize:   20,
+					SelectTime: "",
+					Area:       "",
+					City:       "",
+					BuyerClass: "人大,政协,党委办,组织,宣传,统战,纪委,政府办,发改委,财政,教育,科技,工信,民政,民宗,人社,公安,检察院,法院,司法,应急管理,军队,自然资源,生态环境,住建,市政,城管,交通,水利,农业,气象,文旅,卫健委,医疗,学校,档案,体育,政务中心,机关事务,国资委,海关,税务,市场监管,商务,人行,银保监,证监,审计,出版广电,统计,公共资源交易,社会团体",
+					Subtype:    "",
+					KeyWords:   "",
+					Industry:   "",
+					UserType:   "mType",
+					UserId:     "5e8eb60ae138234b4f91aacf",
+					EntId:      "1111",
+					AppId:      "10000",
+					Price:      "",
+					FileExists: "",
+					EntUserId:  "",
+					DeptId:     "1111",
+					NewUserId:  72668,
+				},
+			},
+			want:    nil,
+			wantErr: true,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			l := &GetSubListLogic{
+				ctx:    tt.fields.ctx,
+				svcCtx: tt.fields.svcCtx,
+				Logger: tt.fields.Logger,
+			}
+			got, err := l.GetSubList(tt.args.in)
+			log.Println(got)
+			if (err != nil) != tt.wantErr {
+				t.Errorf("GetSubList() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if !reflect.DeepEqual(got, tt.want) {
+				t.Errorf("GetSubList() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
 }

+ 1 - 1
jyBXSubscribe/rpc/internal/logic/getsubsomeinfologic.go

@@ -61,7 +61,7 @@ func (l *GetSubSomeInfoLogic) GetSubSomeInfo(in *bxsubscribe.SomeInfoReq) (*bxsu
 			today_1 := t.Unix()
 			today_2 := t.AddDate(0, 0, 1).Unix()
 			//错误
-			if IC.BaseServiceMysql.CountBySql("select count(1) as count from pushsubscribe where isvip =1 and userid =? and buyerclass=?  and (date between ? and ? )", common.InterfaceToStr(in.NewUserId), 93, today_1, today_2) > 0 {
+			if IC.BaseServiceMysql.CountBySql("select count(1) as count from pushsubscribe a left join global_common_data.dws_f_bid_baseinfo b on a.infoid=b.infoid   where a.isvip =1 and a.userid =? and b.buyerclass_code=?  and (a.date between ? and ? )", common.InterfaceToStr(in.NewUserId), 93, today_1, today_2) > 0 {
 				resp.Data.OtherFlag = true
 			}
 		} else {

+ 1055 - 1029
jyBXSubscribe/rpc/model/push.go

@@ -1,1205 +1,1231 @@
 package model
 
 import (
-        "app.yhyue.com/moapp/jybase/common"
-        "app.yhyue.com/moapp/jybase/date"
-        "app.yhyue.com/moapp/jybase/encrypt"
-        "app.yhyue.com/moapp/jybase/esv1"
-        "app.yhyue.com/moapp/jybase/mongodb"
-        "app.yhyue.com/moapp/jybase/mysql"
-        "app.yhyue.com/moapp/jybase/redis"
-        "database/sql"
-        "encoding/json"
-        "fmt"
-        "github.com/zeromicro/go-zero/core/logx"
-        "go.mongodb.org/mongo-driver/bson/primitive"
-        IC "jyBXSubscribe/rpc/init"
-        ms "jyBXSubscribe/rpc/model/service"
-        "jyBXSubscribe/rpc/type/bxsubscribe"
-        "log"
-        "strconv"
-        "strings"
-        "sync"
-        "time"
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	"app.yhyue.com/moapp/jybase/esv1"
+	"app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/mysql"
+	"app.yhyue.com/moapp/jybase/redis"
+	"bp.jydev.jianyu360.cn/BaseService/jyCodeService/rpc/codeservice/codeservice"
+	"context"
+	"database/sql"
+	"encoding/json"
+	"fmt"
+	"github.com/zeromicro/go-zero/core/logx"
+	"go.mongodb.org/mongo-driver/bson/primitive"
+	IC "jyBXSubscribe/rpc/init"
+	ms "jyBXSubscribe/rpc/model/service"
+	"jyBXSubscribe/rpc/type/bxsubscribe"
+	"log"
+	"strconv"
+	"strings"
+	"sync"
+	"time"
 )
 
 //
 const (
-        pageSize            = 100
-        AllSubPushCacheSize = 250
-        query               = `{"query":{"terms":{"_id":["%s"]}},"_source":["_id","area", "publishtime", "s_subscopeclass", "subtype", "title", "toptype", "type", "buyerclass","bidamount","budget","projectname","buyer","bidopentime","s_winner","filetext"],"from":0,"size":%d}`
-        mongodb_fields      = `{"_id":1,"area":1,"publishtime":1,"s_subscopeclass":1,"subtype":1,"title":1,"toptype":1,"type":1, "buyerclass":1,"budget":1,"bidamount":1,"s_winner":1,"bidopentime":1,"buyer":1,"projectname":1}`
+	pageSize            = 100
+	AllSubPushCacheSize = 250
+	query               = `{"query":{"terms":{"_id":["%s"]}},"_source":["_id","area", "publishtime", "s_subscopeclass", "subtype", "title", "toptype", "type", "buyerclass","bidamount","budget","projectname","buyer","bidopentime","s_winner","filetext"],"from":0,"size":%d}`
+	mongodb_fields      = `{"_id":1,"area":1,"publishtime":1,"s_subscopeclass":1,"subtype":1,"title":1,"toptype":1,"type":1, "buyerclass":1,"budget":1,"bidamount":1,"s_winner":1,"bidopentime":1,"buyer":1,"projectname":1}`
 
-        SubFreeFlag  = "fType"
-        SubVipFlag   = "vType"
-        MemberFlag   = "mType"
-        EntnicheFlag = "eType"
-        oneDay       = 24 * 60 * 60
-        Baseinfo     = "global_common_data.bid_baseinfo"
-        BidTags      = "global_common_data.bid_tags"
+	SubFreeFlag  = "fType"
+	SubVipFlag   = "vType"
+	MemberFlag   = "mType"
+	EntnicheFlag = "eType"
+	oneDay       = 24 * 60 * 60
+	Baseinfo     = "global_common_data.dws_f_bid_baseinfo"
+	BidTags      = "global_common_data.dws_f_bid_tags"
 )
 
 var (
-         ennicheInsertCollKey   = []string{"entid", "deptid", "userid", "infoid", "matchkeys", "date"}
-        subscribeInsertCollKey = []string{"userid", "infoid", "matchkeys", "date", "isvip"}
-        memberInsertCollKey    = []string{"userid", "infoid", "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{
-        SubFreeFlag:  &AboutDbMsg{"pushsubscribe", "subpush"},
-        SubVipFlag:   &AboutDbMsg{"pushsubscribe", "subpush"},
-        MemberFlag:   &AboutDbMsg{"pushmember", "memberpush"},
-        EntnicheFlag: &AboutDbMsg{"pushentniche", "entnichepush"},
+	SubFreeFlag:  &AboutDbMsg{"pushsubscribe", "subpush"},
+	SubVipFlag:   &AboutDbMsg{"pushsubscribe", "subpush"},
+	MemberFlag:   &AboutDbMsg{"pushmember", "memberpush"},
+	EntnicheFlag: &AboutDbMsg{"pushentniche", "entnichepush"},
 }
 
 type AboutDbMsg struct {
-        MysqlTable   string
-        RedisKeyFlag string
+	MysqlTable   string
+	RedisKeyFlag string
 }
 
 type SubPush struct {
-        Date  string
-        Datas []*bxsubscribe.SubscribeInfo
-        Count int64
+	Date  string
+	Datas []*bxsubscribe.SubscribeInfo
+	Count int64
 }
 
 type PushCa struct {
-        Date       int64
-        InfoId     string
-        Visit      int
-        Index      int64
-        Keys       []string
-        Type       int
-        Isvip      int
-        FileExists bool
+	Date       int64
+	InfoId     string
+	Visit      int
+	Index      int64
+	Keys       []string
+	Type       int
+	Isvip      int
+	FileExists bool
 }
 
 //查询参数
 type SubPushQueryParam struct {
-        Mgo_bidding      mongodb.MongodbSim //
-        Bidding          string             //
-        Bidding_back     string             //
-        UserId           string             //用户id
-        PageNum          int                //页面
-        PageSize         int                //每页数量
-        SelectTime       string             //时间
-        Area             string             //区域
-        City             string             //城市
-        Buyerclass       string             //采购单位行业
-        Subtype          string             //信息类型 二级分类
-        Subscopeclass    string             //信息行业
-        Key              string             //订阅词
-        Export           bool               //导出
-        EntId            string             //企业id
-        Price            string             //价格
-        FileExists       string             //是否有附件;默认全部;1:有附件;-1:无附件
-        EntUserId        string             //商机管理用户id
-        DeptId           string             //商机管理用户部门id
-        BaseServiceMysql *mysql.Mysql
-        NewUserId        int64
+	Mgo_bidding      mongodb.MongodbSim //
+	Bidding          string             //
+	Bidding_back     string             //
+	UserId           string             //用户id
+	PageNum          int                //页面
+	PageSize         int                //每页数量
+	SelectTime       string             //时间
+	Area             string             //区域
+	City             string             //城市
+	Buyerclass       string             //采购单位行业
+	Subtype          string             //信息类型 二级分类
+	Subscopeclass    string             //信息行业
+	Key              string             //订阅词
+	Export           bool               //导出
+	EntId            string             //企业id
+	Price            string             //价格
+	FileExists       string             //是否有附件;默认全部;1:有附件;-1:无附件
+	EntUserId        string             //商机管理用户id
+	DeptId           string             //商机管理用户部门id
+	BaseServiceMysql *mysql.Mysql
+	NewUserId        int64
+	IsEnt            bool
 }
 
 func (spqp *SubPushQueryParam) IsEmpty() bool {
-        return spqp.SelectTime == "" && spqp.Area == "" && spqp.City == "" && spqp.Buyerclass == "" && spqp.Subscopeclass == "" && spqp.Subtype == "" && spqp.Key == "" && spqp.Price == "" && spqp.FileExists == ""
+	return spqp.SelectTime == "" && spqp.Area == "" && spqp.City == "" && spqp.Buyerclass == "" && spqp.Subscopeclass == "" && spqp.Subtype == "" && spqp.Key == "" && spqp.Price == "" && spqp.FileExists == ""
 }
 
 type subscribePush struct {
-        ModuleFlag string
+	ModuleFlag string
 }
 
 func NewSubscribePush(module ...string) *subscribePush {
-        m := ""
-        if len(module) > 0 {
-	      m = module[0]
-        }
-        return &subscribePush{m}
+	m := ""
+	if len(module) > 0 {
+		m = module[0]
+	}
+	return &subscribePush{m}
 }
 
 //从pushcache_2_a中取
 func (s *subscribePush) GetTodayCache(userId string) (*SubPush, error) {
-        pc_a, err := redis.GetNewBytes("pushcache_2_b", s.todayKey(userId))
-        if err != nil {
-	      return nil, err
-        }
-        if pc_a == nil {
-	      return nil, nil
-        }
-        var p *SubPush
-        if err := json.Unmarshal(*pc_a, &p); err != nil {
-	      return nil, err
-        }
-        return p, nil
+	pc_a, err := redis.GetNewBytes("pushcache_2_b", s.todayKey(userId))
+	if err != nil {
+		return nil, err
+	}
+	if pc_a == nil {
+		return nil, nil
+	}
+	var p *SubPush
+	if err := json.Unmarshal(*pc_a, &p); err != nil {
+		return nil, err
+	}
+	return p, nil
 }
 
 //往pushcache_2_a中放
 func (s *subscribePush) PutTodayCache(userId string, pc_a *SubPush) {
-        redis.Put("pushcache_2_b", s.todayKey(userId), pc_a, oneDay)
+	redis.Put("pushcache_2_b", s.todayKey(userId), pc_a, oneDay)
 }
 
 //获取redis key
 func (s *subscribePush) todayKey(userId string) string {
-        return fmt.Sprintf("%s_%s", aboutDbMsg[s.ModuleFlag].RedisKeyFlag, userId)
+	return fmt.Sprintf("%s_%s", aboutDbMsg[s.ModuleFlag].RedisKeyFlag, userId)
 }
 func (s *subscribePush) allKey(userId string) string {
-        return fmt.Sprintf("all_%s_%s", aboutDbMsg[s.ModuleFlag].RedisKeyFlag, userId)
+	return fmt.Sprintf("all_%s_%s", aboutDbMsg[s.ModuleFlag].RedisKeyFlag, userId)
 }
 
 //历史推送记录中单条信息格式化
 func (s *subscribePush) InfoFormat(p *PushCa, info *map[string]interface{}) *bxsubscribe.SubscribeInfo {
-        area := common.ObjToString((*info)["area"])
-        if area == "A" {
-	      area = "全国"
-        }
-        industry := common.ObjToString((*info)["s_subscopeclass"])
-        scs := strings.Split(industry, ",")
-        if len(scs) > 0 {
-	      industry = scs[0]
-	      if industry != "" {
-		    iss := strings.Split(industry, "_")
-		    if len(iss) > 0 {
-			  industry = iss[0]
-		    }
-	      }
-        }
-        infotype := common.ObjToString((*info)["subtype"])
-        if infotype == "" {
-	      infotype = common.ObjToString((*info)["toptype"])
-        }
-        if infotype == "" {
-	      infotype = common.ObjToString((*info)["type"])
-	      if infotype == "tender" {
-		    infotype = "招标"
-	      } else if infotype == "bid" {
-		    infotype = "中标"
-	      }
-        }
-        _id := p.InfoId
-        if _id == "" {
-	      _id = common.ObjToString((*info)["_id"])
-        }
-        return &bxsubscribe.SubscribeInfo{
-	      XId:          encrypt.EncodeArticleId2ByCheck(_id),
-	      Title:        common.ObjToString((*info)["title"]),
-	      Area:         area,
-	      BuyerClass:   common.ObjToString((*info)["buyerclass"]),
-	      Subtype:      infotype,
-	      Industry:     industry,
-	      PublishTime:  common.Int64All((*info)["publishtime"]),
-	      CaIndex:      p.Index,
-	      CaDate:       p.Date,
-	      CaIsvisit:    int64(p.Visit),
-	      CaIsvip:      int64(p.Isvip),
-	      CaType:       int64(p.Type),
-	      MatchKeys:    p.Keys,
-	      Budget:       common.ObjToString((*info)["budget"]),
-	      BidAmount:    common.ObjToString((*info)["bidamount"]),
-	      Buyer:        common.ObjToString((*info)["buyer"]),
-	      ProjectName:  common.ObjToString((*info)["projectname"]),
-	      Winner:       common.ObjToString((*info)["s_winner"]),
-	      BidOpenTime:  common.ObjToString((*info)["bidopentime"]),
-	      CaFileExists: p.FileExists,
-        }
+	area := common.ObjToString((*info)["area"])
+	if area == "A" {
+		area = "全国"
+	}
+	industry := common.ObjToString((*info)["s_subscopeclass"])
+	scs := strings.Split(industry, ",")
+	if len(scs) > 0 {
+		industry = scs[0]
+		if industry != "" {
+			iss := strings.Split(industry, "_")
+			if len(iss) > 0 {
+				industry = iss[0]
+			}
+		}
+	}
+	infotype := common.ObjToString((*info)["subtype"])
+	if infotype == "" {
+		infotype = common.ObjToString((*info)["toptype"])
+	}
+	if infotype == "" {
+		infotype = common.ObjToString((*info)["type"])
+		if infotype == "tender" {
+			infotype = "招标"
+		} else if infotype == "bid" {
+			infotype = "中标"
+		}
+	}
+	_id := p.InfoId
+	if _id == "" {
+		_id = common.ObjToString((*info)["_id"])
+	}
+	return &bxsubscribe.SubscribeInfo{
+		XId:          encrypt.EncodeArticleId2ByCheck(_id),
+		Title:        common.InterfaceToStr((*info)["title"]),
+		Area:         area,
+		BuyerClass:   common.InterfaceToStr((*info)["buyerclass"]),
+		Subtype:      infotype,
+		Industry:     industry,
+		PublishTime:  common.Int64All((*info)["publishtime"]),
+		CaIndex:      p.Index,
+		CaDate:       p.Date,
+		CaIsvisit:    int64(p.Visit),
+		CaIsvip:      int64(p.Isvip),
+		CaType:       int64(p.Type),
+		MatchKeys:    p.Keys,
+		Budget:       common.InterfaceToStr((*info)["budget"]),
+		BidAmount:    common.InterfaceToStr((*info)["bidamount"]),
+		Buyer:        common.InterfaceToStr((*info)["buyer"]),
+		ProjectName:  common.InterfaceToStr((*info)["projectname"]),
+		Winner:       common.InterfaceToStr((*info)["s_winner"]),
+		BidOpenTime:  common.InterfaceToStr((*info)["bidopentime"]),
+		CaFileExists: p.FileExists,
+	}
 }
 
 func (s *subscribePush) Datas(spqp *SubPushQueryParam) (hasNextPage bool, total int64, result []*bxsubscribe.SubscribeInfo) {
-        logx.Info(spqp.UserId, spqp.NewUserId, s.ModuleFlag, "subscribePush query param:", "SelectTime:", spqp.SelectTime, "Area:", spqp.Area, "City:", spqp.City, "Subtype:", spqp.Subtype, "Subscopeclass:", spqp.Subscopeclass, "Buyerclass:", spqp.Buyerclass, "Key:", spqp.Key, "PageNum:", spqp.PageNum, "Price:", spqp.Price, "FileExists:", spqp.FileExists)
-        if spqp.UserId == "" {
-	      return
-        }
-        if spqp.PageNum < 1 {
-	      spqp.PageNum = 1
-        }
-        if spqp.PageSize < 1 || spqp.PageSize > pageSize {
-	      if !spqp.Export {
-		    spqp.PageSize = pageSize
-	      } else { //数据导出查询20000条限制
-		    if spqp.PageSize < 1 || spqp.PageSize > 20000 {
-			  spqp.PageSize = 20000
-		    }
-	      }
-        }
-        starttime, endtime := int64(0), int64(0)
-        if len(strings.Split(spqp.SelectTime, "_")) == 2 {
-	      st := strings.Split(spqp.SelectTime, "_")[0]
-	      et := strings.Split(spqp.SelectTime, "_")[1]
-	      if st != "" && et != "" {
-		    starttime, _ = strconv.ParseInt(st, 0, 64)
-		    endtime, _ = strconv.ParseInt(et, 0, 64)
-		    if endtime > 0 {
-			  etTime := time.Unix(endtime, 0)
-			  endtime = time.Date(etTime.Year(), etTime.Month(), etTime.Day(), 23, 59, 59, 0, time.Local).Unix()
-		    }
-	      }
-        }
-        nowFormat := date.NowFormat(date.Date_Short_Layout)
-        start := (spqp.PageNum - 1) * spqp.PageSize
-        end := start + spqp.PageSize
-        //时间是今天,没有别的过滤条件--首先读取当前推送缓存数据 其次查询数据库
-        if nowFormat == date.FormatDateByInt64(&starttime, date.Date_Short_Layout) && spqp.Area == "" && spqp.City == "" && spqp.Buyerclass == "" && spqp.Subscopeclass == "" && spqp.Subtype == "" && spqp.Key == "" && spqp.Price == "" && spqp.FileExists == "" {
-	      logx.Info("a1:", s.todayKey(spqp.UserId))
-	      subPush, err := s.GetTodayCache(spqp.UserId)
-	      if err != nil {
-		    logx.Info(spqp.UserId, "GetTodayCache Error", err)
-	      }
-	      if err != nil || subPush == nil || subPush.Date != nowFormat || len(subPush.Datas) == 0 {
-		    list, countSearch := s.getDatasFromMysql(spqp, starttime, endtime, spqp.PageSize, false)
-		    subPush = &SubPush{
-			  Date:  nowFormat,
-			  Datas: list,
-			  Count: countSearch,
-		    }
-		    s.PutTodayCache(spqp.UserId, subPush)
-	      }
-	      length := len(subPush.Datas)
-	      if end > length {
-		    end = length
-	      }
-	      if start < length {
-		    result = subPush.Datas[start:end]
-	      }
-	      total = int64(length)
-        } else if spqp.IsEmpty() && (spqp.PageNum-1)*spqp.PageSize <= 250 { //全部,没有过滤条件 之前缓存5页*50条=250
-	      logx.Info("a2:", s.allKey(spqp.UserId))
-	      allCache, err := s.GetAllCache(spqp.UserId)
-	      if err != nil {
-		    logx.Info(spqp.UserId, "GetAllCache Error", err)
-	      }
-	      if err != nil || allCache == nil || allCache.Date != nowFormat || len(allCache.Datas) == 0 {
-		    spqp.PageNum = 1
-		    logx.Info(1111)
-		    list, countSearch := s.getDatasFromMysql(spqp, starttime, endtime, AllSubPushCacheSize, true)
-		    allCache = &SubPush{
-			  Date:  nowFormat,
-			  Datas: list,
-			  Count: countSearch,
-		    }
-		    s.PutAllCache(spqp.UserId, allCache)
-	      }
-	      length := len(allCache.Datas)
-	      if end > length {
-		    end = length
-	      }
-	      if start < length {
-		    result = allCache.Datas[start:end]
-	      }
-	      total = allCache.Count
-        } else {
-	      logx.Info("a4")
-	      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{}
-        }
-        hasNextPage = len(result) >= spqp.PageSize
-        return
+	logx.Info(spqp.UserId, spqp.NewUserId, s.ModuleFlag, "subscribePush query param:", "SelectTime:", spqp.SelectTime, "Area:", spqp.Area, "City:", spqp.City, "Subtype:", spqp.Subtype, "Subscopeclass:", spqp.Subscopeclass, "Buyerclass:", spqp.Buyerclass, "Key:", spqp.Key, "PageNum:", spqp.PageNum, "Price:", spqp.Price, "FileExists:", spqp.FileExists)
+	if spqp.UserId == "" {
+		return
+	}
+	if spqp.PageNum < 1 {
+		spqp.PageNum = 1
+	}
+	if spqp.PageSize < 1 || spqp.PageSize > pageSize {
+		if !spqp.Export {
+			spqp.PageSize = pageSize
+		} else { //数据导出查询20000条限制
+			if spqp.PageSize < 1 || spqp.PageSize > 20000 {
+				spqp.PageSize = 20000
+			}
+		}
+	}
+	starttime, endtime := int64(0), int64(0)
+	if len(strings.Split(spqp.SelectTime, "_")) == 2 {
+		st := strings.Split(spqp.SelectTime, "_")[0]
+		et := strings.Split(spqp.SelectTime, "_")[1]
+		if st != "" && et != "" {
+			starttime, _ = strconv.ParseInt(st, 0, 64)
+			endtime, _ = strconv.ParseInt(et, 0, 64)
+			if endtime > 0 {
+				etTime := time.Unix(endtime, 0)
+				endtime = time.Date(etTime.Year(), etTime.Month(), etTime.Day(), 23, 59, 59, 0, time.Local).Unix()
+			}
+		}
+	}
+	nowFormat := date.NowFormat(date.Date_Short_Layout)
+	start := (spqp.PageNum - 1) * spqp.PageSize
+	end := start + spqp.PageSize
+	//时间是今天,没有别的过滤条件--首先读取当前推送缓存数据 其次查询数据库
+	if nowFormat == date.FormatDateByInt64(&starttime, date.Date_Short_Layout) && spqp.Area == "" && spqp.City == "" && spqp.Buyerclass == "" && spqp.Subscopeclass == "" && spqp.Subtype == "" && spqp.Key == "" && spqp.Price == "" && spqp.FileExists == "" {
+		logx.Info("a1:", s.todayKey(spqp.UserId))
+		subPush := &SubPush{}
+		var err error
+		if spqp.IsEnt == false {
+			subPush, err = s.GetTodayCache(spqp.UserId)
+		}
+		if err != nil {
+			logx.Info(spqp.UserId, "GetTodayCache Error", err)
+		}
+		if err != nil || subPush == nil || subPush.Date != nowFormat || len(subPush.Datas) == 0 {
+			list, countSearch := s.getDatasFromMysql(spqp, starttime, endtime, spqp.PageSize, false)
+			subPush = &SubPush{
+				Date:  nowFormat,
+				Datas: list,
+				Count: countSearch,
+			}
+			if spqp.IsEnt == false {
+				s.PutTodayCache(spqp.UserId, subPush)
+			}
+		}
+		length := len(subPush.Datas)
+		if end > length {
+			end = length
+		}
+		if start < length {
+			result = subPush.Datas[start:end]
+		}
+		total = int64(length)
+	} else if spqp.IsEmpty() && (spqp.PageNum-1)*spqp.PageSize <= 250 { //全部,没有过滤条件 之前缓存5页*50条=250
+		logx.Info("a2:", s.allKey(spqp.UserId))
+		allCache := &SubPush{}
+		var err error
+		if spqp.IsEnt == false {
+			allCache, err = s.GetAllCache(spqp.UserId)
+		}
+		if err != nil {
+			logx.Info(spqp.UserId, "GetAllCache Error", err)
+		}
+		if err != nil || allCache == nil || allCache.Date != nowFormat || len(allCache.Datas) == 0 {
+			spqp.PageNum = 1
+			logx.Info(1111)
+			list, countSearch := s.getDatasFromMysql(spqp, starttime, endtime, AllSubPushCacheSize, true)
+			allCache = &SubPush{
+				Date:  nowFormat,
+				Datas: list,
+				Count: countSearch,
+			}
+			if spqp.IsEnt == false {
+				s.PutTodayCache(spqp.UserId, allCache)
+			}
+		}
+		length := len(allCache.Datas)
+		if end > length {
+			end = length
+		}
+		if start < length {
+			result = allCache.Datas[start:end]
+		}
+		total = allCache.Count
+	} else {
+		logx.Info("a4")
+		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{}
+	}
+	hasNextPage = len(result) >= spqp.PageSize
+	return
 }
 
 //
 func (s *subscribePush) getDatasFromMysql(spqp *SubPushQueryParam, starttime, endtime int64, size int, isLimit bool) (result []*bxsubscribe.SubscribeInfo, count int64) {
-        querys := []string{fmt.Sprintf("a.userid='%s'", common.If(s.ModuleFlag == "eType", spqp.EntUserId, common.InterfaceToStr(spqp.NewUserId)))}
-        //时间
-        if starttime > 0 && endtime > 0 {
-	      querys = append(querys, fmt.Sprintf("a.date>=%d and date<=%d", starttime, endtime))
-        } else if starttime > 0 && endtime == 0 {
-	      querys = append(querys, fmt.Sprintf("a.date>=%d", starttime))
-        } else if starttime == 0 && endtime > 0 {
-	      querys = append(querys, fmt.Sprintf("a.date<=%d", endtime))
-        }
-        if spqp.Area != "" || spqp.City != "" {
-	      var sqlAreaCity = ""
-	      //城市
-	      city := []string{}
-	      for _, v := range strings.Split(spqp.City, ",") {
-		    if IC.PushMapping.City[v] != "" {
-			  city = append(city, fmt.Sprint(IC.PushMapping.City[v]))
-		    } else {
-			  city = append(city, "-1")
-		    }
-	      }
-	      if len(city) == 1 {
-		    city = append(city, "9999")
-	      }
-	      if len(city) > 0 {
-		    sqlAreaCity = fmt.Sprintf("p.city in (%s)", strings.Join(city, ","))
-	      }
-	      //区域
-	      var sqlArea = ""
-	      area := []string{}
-	      for _, v := range strings.Split(spqp.Area, ",") {
-		    if IC.PushMapping.Area[v] != "" {
-			  area = append(area, fmt.Sprint(IC.PushMapping.Area[v]))
-		    } else {
-			  area = append(area, "-1")
-		    }
-	      }
-	      if len(area) == 1 {
-		    area = append(area, "9999")
-	      }
-	      if len(area) > 0 {
-		    sqlArea = fmt.Sprintf("p.area in (%s)", strings.Join(area, ","))
-	      }
-	      if sqlAreaCity != "" && sqlArea != "" {
-		    sqlAreaCity = "( " + sqlAreaCity + " or " + sqlArea + " )"
-	      } else if sqlAreaCity == "" && sqlArea != "" {
-		    sqlAreaCity = sqlArea
-	      }
-	      if sqlAreaCity != "" {
-		    querys = append(querys, sqlAreaCity)
-	      }
-        }
-        //采购单位行业
-        if spqp.Buyerclass != "" {
-	      buyerclass := []string{}
-	      for _, v := range strings.Split(spqp.Buyerclass, ",") {
-		    if IC.PushMapping.Buyerclass[v] != "" {
-			  buyerclass = append(buyerclass, fmt.Sprint(IC.PushMapping.Buyerclass[v]))
-		    }
-	      }
-	      if len(buyerclass) == 1 {
-		    buyerclass = append(buyerclass, "9999")
-	      }
-	      if len(buyerclass) > 0 {
-		    querys = append(querys, fmt.Sprintf("b.buyerclass_code in (%s)", strings.Join(buyerclass, ",")))
-	      }
+	querys := []string{}
+	if spqp.IsEnt {
+		querys = []string{fmt.Sprintf("a.entId='%s'", spqp.EntId)}
+	} else {
+		querys = []string{fmt.Sprintf("a.userid='%s'", common.If(s.ModuleFlag == "eType", spqp.EntUserId, common.InterfaceToStr(spqp.NewUserId)))}
 
-        }
-        //信息类型
-        if spqp.Subtype != "" {
-	      subtype := []string{}
-	      for _, v := range strings.Split(spqp.Subtype, ",") {
-		    if IC.PushMapping.Subtype[v] != "" {
-			  subtype = append(subtype, fmt.Sprint(IC.PushMapping.Subtype[v]))
-		    }
+	}
+	codeMap, err := IC.CodeLib.CodeTransformation(context.Background(), &codeservice.Request{})
+	if codeMap.Data == nil || err != nil {
+		logx.Error("代码表获取失败")
+		return result, count
+	}
+	//时间
+	if starttime > 0 && endtime > 0 {
+		querys = append(querys, fmt.Sprintf("a.date>=%d and date<=%d", starttime, endtime))
+	} else if starttime > 0 && endtime == 0 {
+		querys = append(querys, fmt.Sprintf("a.date>=%d", starttime))
+	} else if starttime == 0 && endtime > 0 {
+		querys = append(querys, fmt.Sprintf("a.date<=%d", endtime))
+	}
+	if spqp.Area != "" || spqp.City != "" {
+		var sqlAreaCity = ""
+		//城市
+		city := []string{}
+		for _, v := range strings.Split(spqp.City, ",") {
+			if codeMap.Data.City[v] != "" {
+				city = append(city, fmt.Sprint(codeMap.Data.City[v]))
+			} else {
+				city = append(city, "-1")
+			}
+		}
+		if len(city) == 1 {
+			city = append(city, "9999")
+		}
+		if len(city) > 0 {
+			sqlAreaCity = fmt.Sprintf("b.city_code in (%s)", strings.Join(city, ","))
+		}
+		//区域
+		var sqlArea = ""
+		area := []string{}
+		for _, v := range strings.Split(spqp.Area, ",") {
+			if codeMap.Data.Area[v] != "" {
+				area = append(area, fmt.Sprint(codeMap.Data.Area[v]))
+			} else {
+				area = append(area, "-1")
+			}
+		}
+		if len(area) == 1 {
+			area = append(area, "9999")
+		}
+		if len(area) > 0 {
+			sqlArea = fmt.Sprintf("b.area_code in (%s)", strings.Join(area, ","))
+		}
+		if sqlAreaCity != "" && sqlArea != "" {
+			sqlAreaCity = "( " + sqlAreaCity + " or " + sqlArea + " )"
+		} else if sqlAreaCity == "" && sqlArea != "" {
+			sqlAreaCity = sqlArea
+		}
+		if sqlAreaCity != "" {
+			querys = append(querys, sqlAreaCity)
+		}
+	}
+	//采购单位行业
+	if spqp.Buyerclass != "" {
+		buyerclass := []string{}
+		for _, v := range strings.Split(spqp.Buyerclass, ",") {
+			if codeMap.Data.Buyerclass[v] != "" {
+				buyerclass = append(buyerclass, fmt.Sprint(codeMap.Data.Buyerclass[v]))
+			}
+		}
+		if len(buyerclass) == 1 {
+			buyerclass = append(buyerclass, "9999")
+		}
+		if len(buyerclass) > 0 {
+			querys = append(querys, fmt.Sprintf("b.buyerclass_code in (%s)", strings.Join(buyerclass, ",")))
+		}
 
-	      }
-	      if len(subtype) == 1 {
-		    subtype = append(subtype, "9999")
-	      }
-	      if len(subtype) > 0 {
-		    querys = append(querys, fmt.Sprintf("b.subtype_code in (%s)", strings.Join(subtype, ",")))
-	      }
+	}
+	//信息类型
+	if spqp.Subtype != "" {
+		subtype := []string{}
+		for _, v := range strings.Split(spqp.Subtype, ",") {
+			if codeMap.Data.Subtype[v] != "" {
+				subtype = append(subtype, fmt.Sprint(codeMap.Data.Subtype[v]))
+			}
 
-        }
-        //信息行业
-        if spqp.Subscopeclass != "" {
-	      find_in_set := []string{}
-	      for _, v := range strings.Split(spqp.Subscopeclass, ",") {
-		    if IC.PushMapping.Subscopeclass[v] != "" {
-			  find_in_set = append(find_in_set, fmt.Sprintf("find_in_set('%s',t.subscopeclass) and t.labelcode=2 ", IC.PushMapping.Subscopeclass[v]))
-		    }
+		}
+		if len(subtype) == 1 {
+			subtype = append(subtype, "9999")
+		}
+		if len(subtype) > 0 {
+			querys = append(querys, fmt.Sprintf("b.subtype_code in (%s)", strings.Join(subtype, ",")))
+		}
 
-	      }
-	      if len(find_in_set) == 1 {
-		    querys = append(querys, find_in_set[0])
-	      } else if len(find_in_set) > 1 {
-		    querys = append(querys, fmt.Sprintf("(%s)", strings.Join(find_in_set, " or ")))
-	      }
-        }
-        //关键词
-        if spqp.Key != "" {
-	      find_in_set := []string{}
-	      for _, v := range strings.Split(spqp.Key, ",") {
-		    find_in_set = append(find_in_set, fmt.Sprintf("find_in_set('%s',replace(replace(a.matchkeys,'+',','),' ',','))", v))
-	      }
-	      if len(find_in_set) == 1 {
-		    querys = append(querys, find_in_set[0])
-	      } else if len(find_in_set) > 1 {
-		    querys = append(querys, fmt.Sprintf("(%s)", strings.Join(find_in_set, " or ")))
-	      }
-        }
-        //价格- 预算和中标金额
-        if spqp.Price != "" && strings.Contains(spqp.Price, "-") {
-	      minPriceStr, maxPriceStr := strings.Split(spqp.Price, "-")[0], strings.Split(spqp.Price, "-")[1]
-	      minPrice := common.Int64All(common.Float64All(minPriceStr) * 10000) //换成元
-	      maxPrice := common.Int64All(common.Float64All(maxPriceStr) * 10000) //换成元
-	      if minPriceStr != "" && maxPriceStr != "" {
-		    querys = append(querys, fmt.Sprintf("((b.bidamount>=%d and b.bidamount<=%d) or (b.budget>=%d and b.budget<=%d and b.bidamount is null))", minPrice, maxPrice, minPrice, maxPrice))
-	      } else if minPriceStr != "" {
-		    querys = append(querys, fmt.Sprintf("(b.bidamount>=%d  or (b.budget>=%d and b.bidamount is null))", minPrice, minPrice))
-	      } else if maxPriceStr != "" {
-		    querys = append(querys, fmt.Sprintf("(b.bidamount<=%d or (b.budget<=%d and b.bidamount is null))", maxPrice, maxPrice))
-	      }
-        }
-        //附件
-        if spqp.FileExists != "" {
-	      if spqp.FileExists == "1" {
-		    querys = append(querys, fmt.Sprintf("b.isvalidfile =1 "))
-	      } else if spqp.FileExists == "-1" {
-		    querys = append(querys, fmt.Sprintf("b.isvalidfile =0 "))
-	      }
-        }
-        searchSql := fmt.Sprintf(" from %s  a LEFT JOIN %s b ON a.infoid = b.infoid LEFT JOIN %s t on t.infoid = b.infoid and t.labelcode=2  where %s"+
-	      " order by a.id desc", aboutDbMsg[s.ModuleFlag].MysqlTable, Baseinfo, BidTags, 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,a.infoid,a.isvisit,a.matchkeys,a.type,b.isvalidfile as attachment_count"
-        if s.ModuleFlag != MemberFlag && s.ModuleFlag != EntnicheFlag {
-	      findSql += ",isvip"
-        }
-        findSql += searchSql
-        if isLimit {
-	      findSql += fmt.Sprintf(" limit %d,%d", (spqp.PageNum-1)*size, size)
-        }
-        logx.Info(spqp.NewUserId, "subscribePush query sql:", findSql)
-        list := spqp.BaseServiceMysql.SelectBySql(findSql)
-        if list != nil && len(*list) > 0 {
-	      pushCas := s.GetJyPushs(*list)
-	      result = s.GetInfoByIds(spqp.Mgo_bidding, spqp.Bidding, spqp.Bidding_back, pushCas)
-        } else {
-	      result = []*bxsubscribe.SubscribeInfo{}
-        }
-        return
+	}
+	//信息行业
+	if spqp.Subscopeclass != "" {
+		find_in_set := []string{}
+		for _, v := range strings.Split(spqp.Subscopeclass, ",") {
+			if codeMap.Data.Subscopeclass[v] != "" {
+				find_in_set = append(find_in_set, codeMap.Data.Subscopeclass[v])
+			}
+
+		}
+		if len(find_in_set) == 1 {
+			querys = append(querys, find_in_set[0])
+		} else if len(find_in_set) > 1 {
+			querys = append(querys, fmt.Sprintf(" t.labelvalues in (%s)", strings.Join(find_in_set, ",")))
+		}
+	}
+	//关键词
+	if spqp.Key != "" {
+		find_in_set := []string{}
+		for _, v := range strings.Split(spqp.Key, ",") {
+			find_in_set = append(find_in_set, fmt.Sprintf("find_in_set('%s',replace(replace(a.matchkeys,'+',','),' ',','))", v))
+		}
+		if len(find_in_set) == 1 {
+			querys = append(querys, find_in_set[0])
+		} else if len(find_in_set) > 1 {
+			querys = append(querys, fmt.Sprintf("(%s)", strings.Join(find_in_set, " or ")))
+		}
+	}
+	//价格- 预算和中标金额
+	if spqp.Price != "" && strings.Contains(spqp.Price, "-") {
+		minPriceStr, maxPriceStr := strings.Split(spqp.Price, "-")[0], strings.Split(spqp.Price, "-")[1]
+		minPrice := common.Int64All(common.Float64All(minPriceStr) * 10000) //换成元
+		maxPrice := common.Int64All(common.Float64All(maxPriceStr) * 10000) //换成元
+		if minPriceStr != "" && maxPriceStr != "" {
+			querys = append(querys, fmt.Sprintf("((b.bidamount>=%d and b.bidamount<=%d) or (b.budget>=%d and b.budget<=%d and b.bidamount is null))", minPrice, maxPrice, minPrice, maxPrice))
+		} else if minPriceStr != "" {
+			querys = append(querys, fmt.Sprintf("(b.bidamount>=%d  or (b.budget>=%d and b.bidamount is null))", minPrice, minPrice))
+		} else if maxPriceStr != "" {
+			querys = append(querys, fmt.Sprintf("(b.bidamount<=%d or (b.budget<=%d and b.bidamount is null))", maxPrice, maxPrice))
+		}
+	}
+	//附件
+	if spqp.FileExists != "" {
+		if spqp.FileExists == "1" {
+			querys = append(querys, fmt.Sprintf("b.isvalidfile =1 "))
+		} else if spqp.FileExists == "-1" {
+			querys = append(querys, fmt.Sprintf("b.isvalidfile =0 "))
+		}
+	}
+	searchSql := fmt.Sprintf(" from %s  a LEFT JOIN %s b ON a.infoid = b.infoid LEFT JOIN %s t on t.infoid = b.infoid and t.labelcode=2  where %s"+
+		" order by a.id desc", aboutDbMsg[s.ModuleFlag].MysqlTable, Baseinfo, BidTags, 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,a.infoid,a.isvisit,a.matchkeys,a.type,b.isvalidfile as attachment_count"
+	if s.ModuleFlag != MemberFlag && s.ModuleFlag != EntnicheFlag {
+		findSql += ",isvip"
+	}
+	findSql += searchSql
+	if isLimit {
+		findSql += fmt.Sprintf(" limit %d,%d", (spqp.PageNum-1)*size, size)
+	}
+	logx.Info(spqp.NewUserId, "subscribePush query sql:", findSql)
+	list := spqp.BaseServiceMysql.SelectBySql(findSql)
+	if list != nil && len(*list) > 0 {
+		pushCas := s.GetJyPushs(*list)
+		result = s.GetInfoByIds(spqp.Mgo_bidding, spqp.Bidding, spqp.Bidding_back, pushCas)
+	} else {
+		result = []*bxsubscribe.SubscribeInfo{}
+	}
+	return
 }
 
 //根据id取内容
 func (s *subscribePush) GetInfoByIds(Mgo_bidding mongodb.MongodbSim, bidding, bidding_back string, pushCas []*PushCa) []*bxsubscribe.SubscribeInfo {
-        array := make([]*bxsubscribe.SubscribeInfo, len(pushCas))
-        if len(pushCas) == 0 {
-	      return array
-        }
-        m := map[string]bool{}
-        ids := []string{}
-        for _, v := range pushCas {
-	      if m[v.InfoId] {
-		    continue
-	      }
-	      m[v.InfoId] = true
-	      ids = append(ids, v.InfoId)
-        }
-        infos := map[string]map[string]interface{}{}
-        //redis
-        es_ids := []string{}
-        for _, v := range ids {
-	      //剑鱼程序未找到赋值 位置;猜测在推送程序中
-	      info_i := redis.Get("pushcache_1", fmt.Sprintf("info_%s", v))
-	      if info_i != nil {
-		    info_m, _ := info_i.(map[string]interface{})
-		    info_m["_id"] = v
-		    infos[v] = info_m
-	      } else {
-		    es_ids = append(es_ids, v)
-	      }
-        }
-        //elasticsearch
-        if len(es_ids) > 0 {
-	      list := elastic.Get("bidding", "bidding", fmt.Sprintf(query, strings.Join(es_ids, `","`), len(es_ids)))
-	      if list != nil {
-		    for _, v := range *list {
-			  _id := common.ObjToString(v["_id"])
-			  infos[_id] = v
-		    }
-	      }
-        }
-        //mongodb bidding
-        mgo_ids := []primitive.ObjectID{}
-        for _, v := range es_ids {
-	      if infos[v] == nil {
-		    _id, _ := primitive.ObjectIDFromHex(v)
-		    mgo_ids = append(mgo_ids, _id)
-	      }
-        }
-        if len(mgo_ids) > 0 {
-	      list, ok := Mgo_bidding.Find(bidding, map[string]interface{}{"_id": map[string]interface{}{"$in": mgo_ids}}, nil, mongodb_fields, false, -1, -1)
-	      if ok && *list != nil {
-		    for _, v := range *list {
-			  _id := mongodb.BsonIdToSId(v["_id"])
-			  v["_id"] = _id
-			  infos[_id] = v
-		    }
-	      }
-        }
-        //mongodb bidding_back
-        mgo_back_ids := []primitive.ObjectID{}
-        for _, v := range mgo_ids {
-	      if infos[mongodb.BsonIdToSId(v)] == nil {
-		    mgo_back_ids = append(mgo_back_ids, v)
-	      }
-        }
-        if len(mgo_back_ids) > 0 {
-	      list, ok := Mgo_bidding.Find(bidding_back, map[string]interface{}{"_id": map[string]interface{}{"$in": mgo_back_ids}}, nil, mongodb_fields, false, -1, -1)
-	      if ok && *list != nil {
-		    for _, v := range *list {
-			  _id := mongodb.BsonIdToSId(v["_id"])
-			  v["_id"] = _id
-			  infos[_id] = v
-		    }
-	      }
-        }
-        //
-        for k, v := range pushCas {
-	      info := infos[v.InfoId]
-	      if info == nil {
-		    info = map[string]interface{}{}
-	      }
-	      array[k] = s.InfoFormat(v, &info)
-        }
-        return array
+	array := make([]*bxsubscribe.SubscribeInfo, len(pushCas))
+	if len(pushCas) == 0 {
+		return array
+	}
+	m := map[string]bool{}
+	ids := []string{}
+	for _, v := range pushCas {
+		if m[v.InfoId] {
+			continue
+		}
+		m[v.InfoId] = true
+		ids = append(ids, v.InfoId)
+	}
+	infos := map[string]map[string]interface{}{}
+	//redis
+	es_ids := []string{}
+	for _, v := range ids {
+		//剑鱼程序未找到赋值 位置;猜测在推送程序中
+		info_i := redis.Get("pushcache_1", fmt.Sprintf("info_%s", v))
+		if info_i != nil {
+			info_m, _ := info_i.(map[string]interface{})
+			info_m["_id"] = v
+			infos[v] = info_m
+		} else {
+			es_ids = append(es_ids, v)
+		}
+	}
+	//elasticsearch
+	if len(es_ids) > 0 {
+		list := elastic.Get("bidding", "bidding", fmt.Sprintf(query, strings.Join(es_ids, `","`), len(es_ids)))
+		if list != nil {
+			for _, v := range *list {
+				_id := common.ObjToString(v["_id"])
+				infos[_id] = v
+			}
+		}
+	}
+	//mongodb bidding
+	mgo_ids := []primitive.ObjectID{}
+	for _, v := range es_ids {
+		if infos[v] == nil {
+			_id, _ := primitive.ObjectIDFromHex(v)
+			mgo_ids = append(mgo_ids, _id)
+		}
+	}
+	if len(mgo_ids) > 0 {
+		list, ok := Mgo_bidding.Find(bidding, map[string]interface{}{"_id": map[string]interface{}{"$in": mgo_ids}}, nil, mongodb_fields, false, -1, -1)
+		if ok && *list != nil {
+			for _, v := range *list {
+				_id := mongodb.BsonIdToSId(v["_id"])
+				v["_id"] = _id
+				infos[_id] = v
+			}
+		}
+	}
+	//mongodb bidding_back
+	mgo_back_ids := []primitive.ObjectID{}
+	for _, v := range mgo_ids {
+		if infos[mongodb.BsonIdToSId(v)] == nil {
+			mgo_back_ids = append(mgo_back_ids, v)
+		}
+	}
+	if len(mgo_back_ids) > 0 {
+		list, ok := Mgo_bidding.Find(bidding_back, map[string]interface{}{"_id": map[string]interface{}{"$in": mgo_back_ids}}, nil, mongodb_fields, false, -1, -1)
+		if ok && *list != nil {
+			for _, v := range *list {
+				_id := mongodb.BsonIdToSId(v["_id"])
+				v["_id"] = _id
+				infos[_id] = v
+			}
+		}
+	}
+	//
+	for k, v := range pushCas {
+		info := infos[v.InfoId]
+		if info == nil {
+			info = map[string]interface{}{}
+		}
+		array[k] = s.InfoFormat(v, &info)
+	}
+	return array
 }
 
 //获取历史推送
 func (s *subscribePush) GetJyPushs(datas []map[string]interface{}) (pushCas []*PushCa) {
-        pushCas = []*PushCa{}
-        for _, v := range datas {
-	      keys := []string{}
-	      if matchkeys := common.ObjToString(v["matchkeys"]); matchkeys != "" {
-		    keys = strings.Split(matchkeys, " ")
-	      }
-	      pushCas = append(pushCas, &PushCa{
-		    Date:       common.Int64All(v["date"]),
-		    InfoId:     common.ObjToString(v["infoid"]),
-		    Visit:      common.IntAll(v["isvisit"]),
-		    Index:      common.Int64All(v["id"]),
-		    Keys:       keys,
-		    Type:       common.IntAll(v["type"]),
-		    Isvip:      common.IntAll(v["isvip"]),
-		    FileExists: common.IntAll(v["attachment_count"]) > 0,
-	      })
-        }
-        return
+	pushCas = []*PushCa{}
+	for _, v := range datas {
+		keys := []string{}
+		if matchkeys := common.ObjToString(v["matchkeys"]); matchkeys != "" {
+			keys = strings.Split(matchkeys, " ")
+		}
+		pushCas = append(pushCas, &PushCa{
+			Date:       common.Int64All(v["date"]),
+			InfoId:     common.ObjToString(v["infoid"]),
+			Visit:      common.IntAll(v["isvisit"]),
+			Index:      common.Int64All(v["id"]),
+			Keys:       keys,
+			Type:       common.IntAll(v["type"]),
+			Isvip:      common.IntAll(v["isvip"]),
+			FileExists: common.IntAll(v["attachment_count"]) > 0,
+		})
+	}
+	return
 }
 
 //查看全部列表缓存
 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)
+	log.Println(s.allKey(userId), datas, oneDay)
+	redis.Put("pushcache_2_a", s.allKey(userId), datas, oneDay)
 }
 
 func (s *subscribePush) GetAllCache(userId string) (*SubPush, error) {
-        return s.GetCache("pushcache_2_a", s.allKey(userId))
+	return s.GetCache("pushcache_2_a", s.allKey(userId))
 }
 
 func (s *subscribePush) GetCache(code, key string) (*SubPush, error) {
-        pc_a, err := redis.GetNewBytes(code, key)
-        if err != nil {
-	      return nil, err
-        }
-        if pc_a == nil {
-	      return nil, nil
-        }
-        var p *SubPush
-        if err := json.Unmarshal(*pc_a, &p); err != nil {
-	      return nil, err
-        }
-        return p, nil
+	pc_a, err := redis.GetNewBytes(code, key)
+	if err != nil {
+		return nil, err
+	}
+	if pc_a == nil {
+		return nil, nil
+	}
+	var p *SubPush
+	if err := json.Unmarshal(*pc_a, &p); err != nil {
+		return nil, err
+	}
+	return p, nil
 }
 
 //是否收藏
 func (s *subscribePush) MakeCollection(userId string, list []*bxsubscribe.SubscribeInfo) {
-        if list == nil || len(list) == 0 {
-	      return
-        }
-        param := []interface{}{userId}
-        wh := []string{}
-        for _, v := range list {
-	      array := encrypt.DecodeArticleId2ByCheck(v.XId)
-	      if len(array) == 1 && array[0] != "" {
-		    param = append(param, array[0])
-		    wh = append(wh, "?")
-	      }
-        }
-        if len(wh) > 0 {
-	      result := IC.MainMysql.SelectBySql(`select bid from bdcollection where userid=? and bid in (`+strings.Join(wh, ",")+`)`, param...)
-	      bid_map := map[string]bool{}
-	      if result != nil {
-		    for _, v := range *result {
-			  bid_map[encrypt.EncodeArticleId2ByCheck(common.ObjToString(v["bid"]))] = true
-		    }
-	      }
-	      for _, v := range list {
-		    if bid_map[v.XId] {
-			  v.Collection = 1
-		    }
-	      }
-        }
+	if list == nil || len(list) == 0 {
+		return
+	}
+	param := []interface{}{userId}
+	wh := []string{}
+	for _, v := range list {
+		array := encrypt.DecodeArticleId2ByCheck(v.XId)
+		if len(array) == 1 && array[0] != "" {
+			param = append(param, array[0])
+			wh = append(wh, "?")
+		}
+	}
+	if len(wh) > 0 {
+		result := IC.MainMysql.SelectBySql(`select bid from bdcollection where userid=? and bid in (`+strings.Join(wh, ",")+`)`, param...)
+		bid_map := map[string]bool{}
+		if result != nil {
+			for _, v := range *result {
+				bid_map[encrypt.EncodeArticleId2ByCheck(common.ObjToString(v["bid"]))] = true
+			}
+		}
+		for _, v := range list {
+			if bid_map[v.XId] {
+				v.Collection = 1
+			}
+		}
+	}
 }
 
 //仅移动端首页使用,历史推送7天信息
 func (s *subscribePush) sevenDayKey(userId string) string {
-        return fmt.Sprintf("7day_subpush_%s", userId)
+	return fmt.Sprintf("7day_subpush_%s", userId)
 }
 
 func (s *subscribePush) PutSevenDayCache(userId string, datas []*bxsubscribe.SubscribeInfo) {
-        redis.Put("pushcache_2_a", s.sevenDayKey(userId), SubPush{Datas: datas}, 7*24*60*60)
+	redis.Put("pushcache_2_a", s.sevenDayKey(userId), SubPush{Datas: datas}, 7*24*60*60)
 }
 
 //从pushcache_2_a中取
 func (s *subscribePush) GetSevenDayCache(userId string) ([]*bxsubscribe.SubscribeInfo, error) {
-        allPush, _ := s.GetCache("pushcache_2_a", s.sevenDayKey(userId))
-        if allPush != nil && allPush.Datas != nil && len(allPush.Datas) > 0 {
-	      return allPush.Datas, nil
-        }
-        return nil, nil
+	allPush, _ := s.GetCache("pushcache_2_a", s.sevenDayKey(userId))
+	if allPush != nil && allPush.Datas != nil && len(allPush.Datas) > 0 {
+		return allPush.Datas, nil
+	}
+	return nil, nil
 }
 
 //历史推送记录中单条信息格式化
 func InfoFormats(info map[string]interface{}, tmp map[string]interface{}) map[string]interface{} {
-        area := common.ObjToString(info["area"])
-        if area == "A" {
-	      area = "全国"
-        }
-        industry := common.ObjToString(info["s_subscopeclass"])
-        scs := strings.Split(industry, ",")
-        if len(scs) > 0 {
-	      industry = scs[0]
-	      if industry != "" {
-		    iss := strings.Split(industry, "_")
-		    if len(iss) > 0 {
-			  industry = iss[0]
-		    }
-	      }
-        }
-        infotype := common.ObjToString(info["subtype"])
-        if infotype == "" {
-	      infotype = common.ObjToString(info["toptype"])
-        }
-        if infotype == "" {
-	      infotype = common.ObjToString(info["type"])
-	      if infotype == "tender" {
-		    infotype = "招标"
-	      } else if infotype == "bid" {
-		    infotype = "中标"
-	      }
-        }
-        info["type"] = infotype
-        return info
+	area := common.ObjToString(info["area"])
+	if area == "A" {
+		area = "全国"
+	}
+	industry := common.ObjToString(info["s_subscopeclass"])
+	scs := strings.Split(industry, ",")
+	if len(scs) > 0 {
+		industry = scs[0]
+		if industry != "" {
+			iss := strings.Split(industry, "_")
+			if len(iss) > 0 {
+				industry = iss[0]
+			}
+		}
+	}
+	infotype := common.ObjToString(info["subtype"])
+	if infotype == "" {
+		infotype = common.ObjToString(info["toptype"])
+	}
+	if infotype == "" {
+		infotype = common.ObjToString(info["type"])
+		if infotype == "tender" {
+			infotype = "招标"
+		} else if infotype == "bid" {
+			infotype = "中标"
+		}
+	}
+	info["type"] = infotype
+	return info
 }
 
 //UpdateUserPushUnread 更新app未读标识为已读
 func UpdateUserPushUnread(userid string, vt string) {
-        if vt == MemberFlag {
-	      IC.Mgo.UpdateById("user", userid, map[string]interface{}{"$set": map[string]interface{}{"i_member_apppushunread": 0}})
-        } else if vt == EntnicheFlag {
-	      IC.Mgo.UpdateById("user", userid, map[string]interface{}{"$set": map[string]interface{}{"i_entniche_apppushunread": 0}})
-        } else {
-	      IC.Mgo.UpdateById("user", userid, map[string]interface{}{"$set": map[string]interface{}{"i_apppushunread": 0}})
-        }
+	if vt == MemberFlag {
+		IC.Mgo.UpdateById("user", userid, map[string]interface{}{"$set": map[string]interface{}{"i_member_apppushunread": 0}})
+	} else if vt == EntnicheFlag {
+		IC.Mgo.UpdateById("user", userid, map[string]interface{}{"$set": map[string]interface{}{"i_entniche_apppushunread": 0}})
+	} else {
+		IC.Mgo.UpdateById("user", userid, map[string]interface{}{"$set": map[string]interface{}{"i_apppushunread": 0}})
+	}
 }
 
 //
 
 //获取用户信息
 func (s *subscribePush) UserInfo(userId string) (*map[string]interface{}, int64) {
-        user, ok := IC.Mgo.FindById("user", userId, `{"s_m_openid":1,"a_m_openid":1,"s_phone":1,"a_mergeorder":1,"o_jy":1,"l_firstpushtime":1,"i_vip_status":1,"l_vip_endtime":1,"o_vipjy":1,"i_member_status":1,"o_member_jy":1}`)
-        if !ok || user == nil {
-	      return nil, 0
-        }
-        return user, common.Int64All((*user)["l_firstpushtime"])
+	user, ok := IC.Mgo.FindById("user", userId, `{"s_m_openid":1,"a_m_openid":1,"s_phone":1,"a_mergeorder":1,"o_jy":1,"l_firstpushtime":1,"i_vip_status":1,"l_vip_endtime":1,"o_vipjy":1,"i_member_status":1,"o_member_jy":1}`)
+	if !ok || user == nil {
+		return nil, 0
+	}
+	return user, common.Int64All((*user)["l_firstpushtime"])
 }
 
 //是否有订阅词
 func GetKeySet(t string, u *map[string]interface{}, data []string) (bool, []string) {
-        var industry_ = []string{}
-        if u != nil {
-	      if t == SubFreeFlag {
-		    o_jy, _ := (*u)["o_jy"].(map[string]interface{})
-		    a_key, _ := o_jy["a_key"].([]interface{})
-		    return len(a_key) > 0, industry_
-	      } else {
-		    var obj map[string]interface{}
-		    if t == SubVipFlag {
-			  obj, _ = (*u)["o_vipjy"].(map[string]interface{})
-		    } else if t == MemberFlag {
-			  obj, _ = (*u)["o_member_jy"].(map[string]interface{})
-		    } else if t == EntnicheFlag {
-			  if len(data) > 0 {
-				return true, data
-			  } else {
-				return false, data
-			  }
-		    }
-		    if obj != nil {
-			  if buyerclassObj, ok := obj["a_buyerclass"].([]interface{}); ok {
-				industry_ = common.ObjArrToStringArr(buyerclassObj)
-			  }
-			  itmes, _ := obj["a_items"].([]interface{})
-			  for _, v := range itmes {
-				item, _ := v.(map[string]interface{})
-				keys, _ := item["a_key"].([]interface{})
-				if len(keys) > 0 {
-				        return true, industry_
+	var industry_ = []string{}
+	if u != nil {
+		if t == SubFreeFlag {
+			o_jy, _ := (*u)["o_jy"].(map[string]interface{})
+			a_key, _ := o_jy["a_key"].([]interface{})
+			return len(a_key) > 0, industry_
+		} else {
+			var obj map[string]interface{}
+			if t == SubVipFlag {
+				obj, _ = (*u)["o_vipjy"].(map[string]interface{})
+			} else if t == MemberFlag {
+				obj, _ = (*u)["o_member_jy"].(map[string]interface{})
+			} else if t == EntnicheFlag {
+				if len(data) > 0 {
+					return true, data
+				} else {
+					return false, data
+				}
+			}
+			if obj != nil {
+				if buyerclassObj, ok := obj["a_buyerclass"].([]interface{}); ok {
+					industry_ = common.ObjArrToStringArr(buyerclassObj)
 				}
-			  }
-		    }
-	      }
-        }
-        return false, industry_
+				itmes, _ := obj["a_items"].([]interface{})
+				for _, v := range itmes {
+					item, _ := v.(map[string]interface{})
+					keys, _ := item["a_key"].([]interface{})
+					if len(keys) > 0 {
+						return true, industry_
+					}
+				}
+			}
+		}
+	}
+	return false, industry_
 }
 
 const (
-        INDEX      = "bidding"
-        TYPE       = "bidding"
-        bidField   = `"_id","title","publishtime","toptype","subtype","type","area","city","s_subscopeclass","buyerclass","budget","bidamount","filetext","spidercode","site"`
-        bidTime    = `{"":{"publishtime":{"gt":%d}}}`
-        bidSort    = `{"publishtime":"desc"}`
-        findfields = `"title"`
+	INDEX      = "bidding"
+	TYPE       = "bidding"
+	bidField   = `"_id","title","publishtime","toptype","subtype","type","area","city","s_subscopeclass","buyerclass","budget","bidamount","filetext","spidercode","site"`
+	bidTime    = `{"":{"publishtime":{"gt":%d}}}`
+	bidSort    = `{"publishtime":"desc"}`
+	findfields = `"title"`
 )
 
 //首次访问推送页面 默认生成推送数据
 //默认匹配es 7天内数据
 func (s *subscribePush) DefaultDatas(spqp *SubPushQueryParam) (hasNextPage bool, total int64, result []*bxsubscribe.SubscribeInfo) {
-        if spqp.UserId == "" {
-	      return false, 0, nil
-        }
-        t1 := time.Now()
-        log.Println("userId:", spqp.UserId)
-        log.Println("newUserId:", spqp.NewUserId)
-        //用户信息
-        bsp := s.getUserInfo(spqp)
-        logx.Info("获取用户信息耗时:", time.Since(t1))
-        t2 := time.Now()
-        if len(bsp.Keyword) > 0 {
-	      logx.Info(time.Since(t1), "--bsp:", bsp)
-	      //获取查询语句
-	      qstr := s.getDefaultDatasSQL(bsp)
-	      list := elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSort, bidField, 0, bsp.Size, 0, false)
-	      logx.Info(time.Since(t1), "count:", len(*list))
-	      if list != nil && len(*list) > 0 {
-		    total = int64(len(*list))
-		    //超过50条先处理50条 返回前50条
-		    listOne := *list
-		    if len(*list) > pageSize {
-			  listOne = (*list)[:pageSize]
-		    }
-		    result = s.listManager(spqp, listOne, bsp.Keyword, (len(listOne)+pageSize)/pageSize)
-		    if len(*list) > pageSize {
-			  hasNextPage = true
-			  listOther := (*list)[pageSize:]
-			  go s.listManager(spqp, listOther, bsp.Keyword, (len(listOther)+pageSize)/pageSize)
-		    }
-	      }
-        }
-        logx.Info("请求耗时:", time.Since(t2))
-        return
+	if spqp.UserId == "" {
+		return false, 0, nil
+	}
+	t1 := time.Now()
+	log.Println("userId:", spqp.UserId)
+	log.Println("newUserId:", spqp.NewUserId)
+	//用户信息
+	bsp := s.getUserInfo(spqp)
+	logx.Info("获取用户信息耗时:", time.Since(t1))
+	t2 := time.Now()
+	if len(bsp.Keyword) > 0 {
+		logx.Info(time.Since(t1), "--bsp:", bsp)
+		//获取查询语句
+		qstr := s.getDefaultDatasSQL(bsp)
+		list := elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSort, bidField, 0, bsp.Size, 0, false)
+		logx.Info(time.Since(t1), "count:", len(*list))
+		if list != nil && len(*list) > 0 {
+			total = int64(len(*list))
+			//超过50条先处理50条 返回前50条
+			listOne := *list
+			if len(*list) > pageSize {
+				listOne = (*list)[:pageSize]
+			}
+			result = s.listManager(spqp, listOne, bsp.Keyword, (len(listOne)+pageSize)/pageSize)
+			if len(*list) > pageSize {
+				hasNextPage = true
+				listOther := (*list)[pageSize:]
+				go s.listManager(spqp, listOther, bsp.Keyword, (len(listOther)+pageSize)/pageSize)
+			}
+		}
+	}
+	logx.Info("请求耗时:", time.Since(t2))
+	return
 }
 
 //保存推送表
 func (s *subscribePush) listManager(spqp *SubPushQueryParam, list []map[string]interface{}, keyword []ViewKeyWord, ccount int) (resultList []*bxsubscribe.SubscribeInfo) {
-        t2 := time.Now()
-        now := time.Now().Unix()
-        var (
-	      wg = &sync.WaitGroup{}
-	      wc = make(chan bool, ccount)
-        )
-        for _, v := range list {
-	      wg.Add(1)
-	      wc <- true
-	      go func(v map[string]interface{}) {
-		    defer func() {
-			  wg.Done()
-			  <-wc
-		    }()
-		    redisKey := fmt.Sprintf("pushinfo_%s_%s", spqp.UserId, common.ObjToString(v["_id"]))
-		    title := strings.Replace(common.ObjToString(v["title"]), "\n", "", -1)
-		    var pushInsert = []interface{}{}
-		    infoid := common.InterfaceToStr(v["_id"])
-		    log.Println("infoid", infoid)
-		    spqp.BaseServiceMysql.ExecTx("推送记录保存", func(tx *sql.Tx) bool {
-			  //推送记录
-			  matchkeys := getKeys(title, keyword)
-			  matchkey := strings.Join(matchkeys, " ")
-			  entid := spqp.EntId
-			  entUserId := spqp.EntUserId
-			  deptid := spqp.DeptId
-			  id := int64(0)
-			  switch s.ModuleFlag {
-			  case "eType":
-				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(infoid), matchkey, now)
-				id, _ = spqp.BaseServiceMysql.InsertIgnoreBatch(aboutDbMsg[s.ModuleFlag].MysqlTable, memberInsertCollKey, pushInsert)
-			  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)
+	t2 := time.Now()
+	now := time.Now().Unix()
+	var (
+		wg = &sync.WaitGroup{}
+		wc = make(chan bool, ccount)
+	)
+	for _, v := range list {
+		wg.Add(1)
+		wc <- true
+		go func(v map[string]interface{}) {
+			defer func() {
+				wg.Done()
+				<-wc
+			}()
+			redisKey := fmt.Sprintf("pushinfo_%s_%s", spqp.UserId, common.ObjToString(v["_id"]))
+			title := strings.Replace(common.ObjToString(v["title"]), "\n", "", -1)
+			var pushInsert = []interface{}{}
+			infoid := common.InterfaceToStr(v["_id"])
+			log.Println("infoid", infoid)
+			spqp.BaseServiceMysql.ExecTx("推送记录保存", func(tx *sql.Tx) bool {
+				//推送记录
+				matchkeys := getKeys(title, keyword)
+				matchkey := strings.Join(matchkeys, " ")
+				entid := spqp.EntId
+				entUserId := spqp.EntUserId
+				deptid := spqp.DeptId
+				id := int64(0)
+				switch s.ModuleFlag {
+				case "eType":
+					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(infoid), matchkey, now)
+					id, _ = spqp.BaseServiceMysql.InsertIgnoreBatch(aboutDbMsg[s.ModuleFlag].MysqlTable, memberInsertCollKey, pushInsert)
+				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 {
-				redis.Put("pushcache_2_a", redisKey, 1, 86400)
-				resultList = append(resultList, s.InfoFormat(&PushCa{
-				        InfoId:     infoid,
-				        Date:       time.Now().Unix(),
-				        Index:      id,
-				        Keys:       matchkeys,
-				        FileExists: v["filetext"] != nil,
-				}, &v))
-				return true
-			  }
-			  return false
-		    })
-	      }(v)
-        }
-        wg.Wait()
-        log.Println("数据处理耗时:", time.Since(t2))
-        return
+				}
+				if id > 0 {
+					redis.Put("pushcache_2_a", redisKey, 1, 86400)
+					resultList = append(resultList, s.InfoFormat(&PushCa{
+						InfoId:     infoid,
+						Date:       time.Now().Unix(),
+						Index:      id,
+						Keys:       matchkeys,
+						FileExists: v["filetext"] != nil,
+					}, &v))
+					return true
+				}
+				return false
+			})
+		}(v)
+	}
+	wg.Wait()
+	log.Println("数据处理耗时:", time.Since(t2))
+	return
 }
 
 //获取匹配得关键词
 func getKeys(title string, keywords []ViewKeyWord) (str []string) {
-        if len(keywords) > 0 {
-        L:
-	      for _, v := range keywords {
-		    for _, vk := range v.Keyword {
-			  if strings.Contains(title, vk) {
-				str = append(str, v.Keyword...)
-				break L
-			  }
-		    }
-		    for _, va := range v.Appended {
-			  if strings.Contains(title, va) {
-				str = append(str, v.Appended...)
-				break L
-			  }
-		    }
-	      }
-        }
-        return
+	if len(keywords) > 0 {
+	L:
+		for _, v := range keywords {
+			for _, vk := range v.Keyword {
+				if strings.Contains(title, vk) {
+					str = append(str, v.Keyword...)
+					break L
+				}
+			}
+			for _, va := range v.Appended {
+				if strings.Contains(title, va) {
+					str = append(str, v.Appended...)
+					break L
+				}
+			}
+		}
+	}
+	return
 }
 
 //获取查询语句
 func (s *subscribePush) getDefaultDatasSQL(bsp *ViewCondition) (str string) {
-        query := `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": %d}}}`
-        query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
-        multi_match := `{"multi_match": {"query": %s,"type": "phrase", "fields": [%s]}}`
-        query_bool_must_and := `{"bool":{"must":[%s]%s}}`
+	query := `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match": %d}}}`
+	query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
+	multi_match := `{"multi_match": {"query": %s,"type": "phrase", "fields": [%s]}}`
+	query_bool_must_and := `{"bool":{"must":[%s]%s}}`
 
-        bools := []string{}
-        musts := []string{}
-        //发布时间最新7天
-        musts = append(musts, fmt.Sprintf(bidTime, time.Now().AddDate(0, 0, -365*4).Unix()))
-        //省份
-        areaCity := []string{}
-        if len(bsp.Area) > 0 {
-	      areaquery := `{"terms":{"area":[`
-	      for k, v := range bsp.Area {
-		    if k > 0 {
-			  areaquery += `,`
-		    }
-		    areaquery += `"` + v + `"`
-	      }
-	      areaquery += `]}}`
-	      areaCity = append(areaCity, areaquery)
-        }
+	bools := []string{}
+	musts := []string{}
+	//发布时间最新7天
+	musts = append(musts, fmt.Sprintf(bidTime, time.Now().AddDate(0, 0, -365*4).Unix()))
+	//省份
+	areaCity := []string{}
+	if len(bsp.Area) > 0 {
+		areaquery := `{"terms":{"area":[`
+		for k, v := range bsp.Area {
+			if k > 0 {
+				areaquery += `,`
+			}
+			areaquery += `"` + v + `"`
+		}
+		areaquery += `]}}`
+		areaCity = append(areaCity, areaquery)
+	}
 
-        //城市
-        if len(bsp.City) > 0 {
-	      areaquery := `{"terms":{"city":[`
-	      for k, v := range bsp.City {
-		    if k > 0 {
-			  areaquery += `,`
-		    }
-		    areaquery += `"` + v + `"`
-	      }
-	      areaquery += `]}}`
-	      areaCity = append(areaCity, areaquery)
-        }
-        if len(areaCity) > 0 {
-	      musts = append(musts, fmt.Sprintf(query_bool_should, strings.Join(areaCity, ",")))
-        }
-        if len(bsp.Subtype) > 0 {
-	      subquery := `{"terms":{"subtype":[`
-	      for k, v := range bsp.Subtype {
-		    if k > 0 {
-			  subquery += `,`
-		    }
-		    subquery += `"` + v + `"`
-	      }
-	      subquery += `]}}`
-	      musts = append(musts, subquery)
-        }
-        if len(bsp.Buyerclass) > 0 {
-	      Buyerclass := `{"terms":{"buyerclass":[`
-	      for k, v := range bsp.Buyerclass {
-		    if k > 0 {
-			  Buyerclass += `,`
-		    }
-		    Buyerclass += `"` + v + `"`
-	      }
-	      Buyerclass += `]}}`
-	      musts = append(musts, Buyerclass)
-        }
-        boolsNum := 0 //should
-        if len(bsp.Keyword) > 0 {
-	      boolsNum = 1
-	      if bsp.SelectType == "" || bsp.SelectType == "2" {
-		    bsp.SelectType = "detail\", \"title"
-	      } else {
-		    bsp.SelectType = "title"
-	      }
-	      multi_match = fmt.Sprintf(multi_match, "%s", "\""+bsp.SelectType+"\"")
+	//城市
+	if len(bsp.City) > 0 {
+		areaquery := `{"terms":{"city":[`
+		for k, v := range bsp.City {
+			if k > 0 {
+				areaquery += `,`
+			}
+			areaquery += `"` + v + `"`
+		}
+		areaquery += `]}}`
+		areaCity = append(areaCity, areaquery)
+	}
+	if len(areaCity) > 0 {
+		musts = append(musts, fmt.Sprintf(query_bool_should, strings.Join(areaCity, ",")))
+	}
+	if len(bsp.Subtype) > 0 {
+		subquery := `{"terms":{"subtype":[`
+		for k, v := range bsp.Subtype {
+			if k > 0 {
+				subquery += `,`
+			}
+			subquery += `"` + v + `"`
+		}
+		subquery += `]}}`
+		musts = append(musts, subquery)
+	}
+	if len(bsp.Buyerclass) > 0 {
+		Buyerclass := `{"terms":{"buyerclass":[`
+		for k, v := range bsp.Buyerclass {
+			if k > 0 {
+				Buyerclass += `,`
+			}
+			Buyerclass += `"` + v + `"`
+		}
+		Buyerclass += `]}}`
+		musts = append(musts, Buyerclass)
+	}
+	boolsNum := 0 //should
+	if len(bsp.Keyword) > 0 {
+		boolsNum = 1
+		if bsp.SelectType == "" || bsp.SelectType == "2" {
+			bsp.SelectType = "detail\", \"title"
+		} else {
+			bsp.SelectType = "title"
+		}
+		multi_match = fmt.Sprintf(multi_match, "%s", "\""+bsp.SelectType+"\"")
 
-	      for _, v := range bsp.Keyword {
-		    shoulds := []string{}
-		    must_not := []string{}
-		    //附加词
-		    for _, vv := range v.Keyword {
-			  vv = strings.TrimSpace(vv)
-			  if vv == "" {
-				continue
-			  }
-			  shoulds = append(shoulds, fmt.Sprintf(multi_match, "\""+vv+"\""))
-		    }
+		for _, v := range bsp.Keyword {
+			shoulds := []string{}
+			must_not := []string{}
+			//附加词
+			for _, vv := range v.Keyword {
+				vv = strings.TrimSpace(vv)
+				if vv == "" {
+					continue
+				}
+				shoulds = append(shoulds, fmt.Sprintf(multi_match, "\""+vv+"\""))
+			}
 
-		    for _, vv := range v.Appended {
-			  vv = strings.TrimSpace(vv)
-			  if vv == "" {
-				continue
-			  }
-			  shoulds = append(shoulds, fmt.Sprintf(multi_match, "\""+vv+"\""))
-		    }
+			for _, vv := range v.Appended {
+				vv = strings.TrimSpace(vv)
+				if vv == "" {
+					continue
+				}
+				shoulds = append(shoulds, fmt.Sprintf(multi_match, "\""+vv+"\""))
+			}
 
-		    //排除词
-		    for _, vv := range v.Exclude {
-			  vv = strings.TrimSpace(vv)
-			  if vv == "" {
-				continue
-			  }
-			  must_not = append(must_not, fmt.Sprintf(multi_match, "\""+vv+"\""))
-		    }
+			//排除词
+			for _, vv := range v.Exclude {
+				vv = strings.TrimSpace(vv)
+				if vv == "" {
+					continue
+				}
+				must_not = append(must_not, fmt.Sprintf(multi_match, "\""+vv+"\""))
+			}
 
-		    //添加
-		    if len(shoulds) > 0 {
-			  notStr := ""
-			  if len(must_not) > 0 {
-				notStr = fmt.Sprintf(`,"must_not":[%s]`, strings.Join(must_not, ","))
-			  }
-			  bools = append(bools, fmt.Sprintf(query_bool_must_and, strings.Join(shoulds, ","), notStr))
-		    }
-	      }
-        }
+			//添加
+			if len(shoulds) > 0 {
+				notStr := ""
+				if len(must_not) > 0 {
+					notStr = fmt.Sprintf(`,"must_not":[%s]`, strings.Join(must_not, ","))
+				}
+				bools = append(bools, fmt.Sprintf(query_bool_must_and, strings.Join(shoulds, ","), notStr))
+			}
+		}
+	}
 
-        qstr := fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ","), boolsNum)
-        logx.Info("----", qstr)
-        return qstr
+	qstr := fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(bools, ","), boolsNum)
+	logx.Info("----", qstr)
+	return qstr
 }
 
 /*已选条件--关键词*/
 type ViewKeyWord struct {
-        Keyword  []string `json:"key"`       //关键词
-        Appended []string `json:"appendkey"` //附加词
-        Exclude  []string `json:"notkey"`    //排除词
-        MatchWay int      `json:"matchway"`  //匹配模式
+	Keyword  []string `json:"key"`       //关键词
+	Appended []string `json:"appendkey"` //附加词
+	Exclude  []string `json:"notkey"`    //排除词
+	MatchWay int      `json:"matchway"`  //匹配模式
 }
 
 /*已选条件*/
 type ViewCondition struct {
-        Area       []string      //地区-省份
-        City       []string      //地区-城市
-        Buyerclass []string      //采购行业
-        Keyword    []ViewKeyWord //关键词
-        SelectType string        //筛选(正文 or 标题)
-        Subtype    []string      //信息类型
-        Size       int           //数量
+	Area       []string      //地区-省份
+	City       []string      //地区-城市
+	Buyerclass []string      //采购行业
+	Keyword    []ViewKeyWord //关键词
+	SelectType string        //筛选(正文 or 标题)
+	Subtype    []string      //信息类型
+	Size       int           //数量
 }
 
 //获取用户信息
 func (s *subscribePush) getUserInfo(spqp *SubPushQueryParam) (vc *ViewCondition) {
-        var isPayBool = false
-        var tmpInfo = struct {
-	      Items      []interface{}
-	      BuyerClass []interface{}
-	      SubType    []interface{}
-	      Area       map[string]interface{}
-	      SelectType string
-        }{}
-        switch s.ModuleFlag {
-        case "mType":
-	      userMap, ok := IC.Mgo.FindById("user", spqp.UserId, `{"o_member_jy":1,"i_member_status":1}`)
-	      if !ok || userMap == nil || len(*userMap) == 0 {
-		    return &ViewCondition{}
-	      }
-	      //大会员
-	      if common.IntAll((*userMap)["i_member_status"]) > 0 {
-		    isPayBool = true
-		    o_member_jy, _ := (*userMap)["o_member_jy"].(map[string]interface{})
-		    tmpInfo.Items, _ = o_member_jy["a_items"].([]interface{})
-		    tmpInfo.BuyerClass, _ = o_member_jy["a_buyerclass"].([]interface{})
-		    tmpInfo.SubType, _ = o_member_jy["a_infotype"].([]interface{})
-		    tmpInfo.Area, _ = o_member_jy["o_area"].(map[string]interface{})
-	      }
-        case "vType":
-	      userMap, ok := IC.Mgo.FindById("user", spqp.UserId, `{"o_vipjy":1,"i_vip_status":1}`)
-	      if !ok || userMap == nil || len(*userMap) == 0 {
-		    return &ViewCondition{}
-	      }
-	      if common.IntAll((*userMap)["i_vip_status"]) > 0 {
-		    isPayBool = true
-		    o_vipjy, _ := (*userMap)["o_vipjy"].(map[string]interface{})
-		    tmpInfo.Items, _ = o_vipjy["a_items"].([]interface{})
-		    tmpInfo.BuyerClass, _ = o_vipjy["a_buyerclass"].([]interface{})
-		    tmpInfo.SubType, _ = o_vipjy["a_infotype"].([]interface{})
-		    tmpInfo.Area, _ = o_vipjy["o_area"].(map[string]interface{})
-	      }
-        case "eType":
-	      //商机管理
-	      entUserId, _ := strconv.Atoi(spqp.EntUserId)
-	      entId, _ := strconv.Atoi(spqp.EntId)
-	      entInfo, deptId := (&ms.MatchJob{}).Start(entId, entUserId)
-	      if entInfo != nil && len(entInfo) > 0 {
-		    spqp.DeptId = strconv.Itoa(deptId)
-		    isPayBool = true
-		    tmpInfo.Items, _ = entInfo["a_items"].([]interface{})
-		    tmpInfo.BuyerClass, _ = entInfo["a_buyerclass"].([]interface{})
-		    tmpInfo.SubType, _ = entInfo["a_infotype"].([]interface{})
-		    tmpInfo.Area, _ = entInfo["o_area"].(map[string]interface{})
-	      }
-        default:
-	      userMap, ok := IC.Mgo.FindById("user", spqp.UserId, `{"o_jy":1}`)
-	      if !ok || userMap == nil || len(*userMap) == 0 {
-		    return &ViewCondition{}
-	      }
-	      o_jy, _ := (*userMap)["o_jy"].(map[string]interface{})
-	      if o_jy["a_key"] != nil {
-		    tmpInfo.Items, _ = o_jy["a_key"].([]interface{})
-		    //信息类型
-		    tmpInfo.SubType, _ = o_jy["a_infotype"].([]interface{})
-		    //省份
-		    tmpInfo.Area, _ = o_jy["o_area"].(map[string]interface{})
-		    if common.IntAllDef(o_jy["i_ppstatus"], 0) == 1 && o_jy["o_area_p"] != nil {
-			  tmpInfo.Area, _ = o_jy["o_area_p"].(map[string]interface{})
-		    }
-	      }
-        }
-        vc = &ViewCondition{
-	      Buyerclass: common.ObjArrToStringArr(tmpInfo.BuyerClass),
-	      Subtype:    common.ObjArrToStringArr(tmpInfo.SubType),
-	      Area:       getStringArrFromDbResult(tmpInfo.Area, 1),
-	      City:       getStringArrFromDbResult(tmpInfo.Area, 2),
-	      SelectType: "1",
-        }
-        //付费用户
-        if isPayBool {
-	      vc.Size = IC.C.DefaulCount.Pay
-	      vc.Keyword = getKeyWordArrFromDbResult(tmpInfo.Items, "", -1)
-        } else {
-	      vc.Size = IC.C.DefaulCount.Free
-	      vc.Keyword = getKeyWordArrFromDbResultByFree(tmpInfo.Items, "", -1)
-	      //vc.Keyword = getKeyWordArrFromDbResult(tmpInfo.Items, "", -1)
-        }
-        vc.Size = 10
+	var isPayBool = false
+	var tmpInfo = struct {
+		Items      []interface{}
+		BuyerClass []interface{}
+		SubType    []interface{}
+		Area       map[string]interface{}
+		SelectType string
+	}{}
+	switch s.ModuleFlag {
+	case "mType":
+		userMap, ok := IC.Mgo.FindById("user", spqp.UserId, `{"o_member_jy":1,"i_member_status":1}`)
+		if !ok || userMap == nil || len(*userMap) == 0 {
+			return &ViewCondition{}
+		}
+		//大会员
+		if common.IntAll((*userMap)["i_member_status"]) > 0 {
+			isPayBool = true
+			o_member_jy, _ := (*userMap)["o_member_jy"].(map[string]interface{})
+			tmpInfo.Items, _ = o_member_jy["a_items"].([]interface{})
+			tmpInfo.BuyerClass, _ = o_member_jy["a_buyerclass"].([]interface{})
+			tmpInfo.SubType, _ = o_member_jy["a_infotype"].([]interface{})
+			tmpInfo.Area, _ = o_member_jy["o_area"].(map[string]interface{})
+		}
+	case "vType":
+		userMap, ok := IC.Mgo.FindById("user", spqp.UserId, `{"o_vipjy":1,"i_vip_status":1}`)
+		if !ok || userMap == nil || len(*userMap) == 0 {
+			return &ViewCondition{}
+		}
+		if common.IntAll((*userMap)["i_vip_status"]) > 0 {
+			isPayBool = true
+			o_vipjy, _ := (*userMap)["o_vipjy"].(map[string]interface{})
+			tmpInfo.Items, _ = o_vipjy["a_items"].([]interface{})
+			tmpInfo.BuyerClass, _ = o_vipjy["a_buyerclass"].([]interface{})
+			tmpInfo.SubType, _ = o_vipjy["a_infotype"].([]interface{})
+			tmpInfo.Area, _ = o_vipjy["o_area"].(map[string]interface{})
+		}
+	case "eType":
+		//商机管理
+		entUserId, _ := strconv.Atoi(spqp.EntUserId)
+		entId, _ := strconv.Atoi(spqp.EntId)
+		entInfo, deptId := (&ms.MatchJob{}).Start(entId, entUserId)
+		if entInfo != nil && len(entInfo) > 0 {
+			spqp.DeptId = strconv.Itoa(deptId)
+			isPayBool = true
+			tmpInfo.Items, _ = entInfo["a_items"].([]interface{})
+			tmpInfo.BuyerClass, _ = entInfo["a_buyerclass"].([]interface{})
+			tmpInfo.SubType, _ = entInfo["a_infotype"].([]interface{})
+			tmpInfo.Area, _ = entInfo["o_area"].(map[string]interface{})
+		}
+	default:
+		userMap, ok := IC.Mgo.FindById("user", spqp.UserId, `{"o_jy":1}`)
+		if !ok || userMap == nil || len(*userMap) == 0 {
+			return &ViewCondition{}
+		}
+		o_jy, _ := (*userMap)["o_jy"].(map[string]interface{})
+		if o_jy["a_key"] != nil {
+			tmpInfo.Items, _ = o_jy["a_key"].([]interface{})
+			//信息类型
+			tmpInfo.SubType, _ = o_jy["a_infotype"].([]interface{})
+			//省份
+			tmpInfo.Area, _ = o_jy["o_area"].(map[string]interface{})
+			if common.IntAllDef(o_jy["i_ppstatus"], 0) == 1 && o_jy["o_area_p"] != nil {
+				tmpInfo.Area, _ = o_jy["o_area_p"].(map[string]interface{})
+			}
+		}
+	}
+	vc = &ViewCondition{
+		Buyerclass: common.ObjArrToStringArr(tmpInfo.BuyerClass),
+		Subtype:    common.ObjArrToStringArr(tmpInfo.SubType),
+		Area:       getStringArrFromDbResult(tmpInfo.Area, 1),
+		City:       getStringArrFromDbResult(tmpInfo.Area, 2),
+		SelectType: "1",
+	}
+	//付费用户
+	if isPayBool {
+		vc.Size = IC.C.DefaulCount.Pay
+		vc.Keyword = getKeyWordArrFromDbResult(tmpInfo.Items, "", -1)
+	} else {
+		vc.Size = IC.C.DefaulCount.Free
+		vc.Keyword = getKeyWordArrFromDbResultByFree(tmpInfo.Items, "", -1)
+		//vc.Keyword = getKeyWordArrFromDbResult(tmpInfo.Items, "", -1)
+	}
+	vc.Size = 10
 
-        return
+	return
 }
 
 //关键词 附加词 排除词
 func getKeyWordArrFromDbResult(a_items []interface{}, item string, index int) (arr []ViewKeyWord) {
-        if a_items == nil {
-	      return
-        }
-        for _, v := range a_items {
-	      vm, _ := v.(map[string]interface{})
-	      if item != "" && index >= 0 && item != common.ObjToString(vm["s_item"]) {
-		    continue
-	      }
-	      kwsArr := vm["a_key"]
-	      for i, k := range kwsArr.([]interface{}) {
-		    if item != "" && index >= 0 && i != index {
-			  continue
-		    }
-		    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)
-		    }
-	      }
-        }
-        return
+	if a_items == nil {
+		return
+	}
+	for _, v := range a_items {
+		vm, _ := v.(map[string]interface{})
+		if item != "" && index >= 0 && item != common.ObjToString(vm["s_item"]) {
+			continue
+		}
+		kwsArr := vm["a_key"]
+		for i, k := range kwsArr.([]interface{}) {
+			if item != "" && index >= 0 && i != index {
+				continue
+			}
+			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)
+			}
+		}
+	}
+	return
 }
 
 // //关键词 附加词 排除词  省份订阅包 - 普通用户
 func getKeyWordArrFromDbResultByFree(a_items []interface{}, item string, index int) (arr []ViewKeyWord) {
-        if a_items == nil {
-	      return
-        }
-        for _, v := range a_items {
-	      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,
-			  })
-		    }
-		    for _, kk := range kw.Appended {
-			  arr = append(arr, ViewKeyWord{
-				Keyword: []string{kk},
-				Exclude: kw.Exclude,
-			  })
-		    }
-	      } else {
-		    arr = append(arr, kw)
-	      }
-        }
+	if a_items == nil {
+		return
+	}
+	for _, v := range a_items {
+		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,
+				})
+			}
+			for _, kk := range kw.Appended {
+				arr = append(arr, ViewKeyWord{
+					Keyword: []string{kk},
+					Exclude: kw.Exclude,
+				})
+			}
+		} else {
+			arr = append(arr, kw)
+		}
+	}
 
-        return
+	return
 }
 
 //地区格式化
 func getStringArrFromDbResult(area map[string]interface{}, i int) (arr []string) {
-        if area == nil {
-	      return
-        }
-        var eareArr []string
-        var cityArr []string
-        for k, v := range area {
-	      if len(v.([]interface{})) > 0 {
-		    cityArr = append(cityArr, common.ObjArrToStringArr(v.([]interface{}))...)
-	      } else {
-		    eareArr = append(eareArr, k)
-	      }
-        }
-        if i == 1 {
-	      arr = eareArr
-        } else {
-	      arr = cityArr
-        }
-        return
+	if area == nil {
+		return
+	}
+	var eareArr []string
+	var cityArr []string
+	for k, v := range area {
+		if len(v.([]interface{})) > 0 {
+			cityArr = append(cityArr, common.ObjArrToStringArr(v.([]interface{}))...)
+		} else {
+			eareArr = append(eareArr, k)
+		}
+	}
+	if i == 1 {
+		arr = eareArr
+	} else {
+		arr = cityArr
+	}
+	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
+	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
 }

+ 0 - 1713
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go

@@ -1,1713 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-<<<<<<< HEAD
-// 	protoc-gen-go v1.28.0
-// 	protoc        v3.15.1
-=======
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.19.4
->>>>>>> master
-// source: bxsubscribe.proto
-
-package bxsubscribe
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type SubscribeInfosReq struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	PageNum    int64  `protobuf:"varint,1,opt,name=pageNum,proto3" json:"pageNum,omitempty"`
-	PageSize   int64  `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"`
-	SelectTime string `protobuf:"bytes,3,opt,name=selectTime,proto3" json:"selectTime,omitempty"`
-	Area       string `protobuf:"bytes,4,opt,name=area,proto3" json:"area,omitempty"`
-	City       string `protobuf:"bytes,5,opt,name=city,proto3" json:"city,omitempty"`
-	Industry   string `protobuf:"bytes,6,opt,name=industry,proto3" json:"industry,omitempty"`
-	BuyerClass string `protobuf:"bytes,7,opt,name=buyerClass,proto3" json:"buyerClass,omitempty"`
-	KeyWords   string `protobuf:"bytes,8,opt,name=keyWords,proto3" json:"keyWords,omitempty"`
-	Subtype    string `protobuf:"bytes,9,opt,name=subtype,proto3" json:"subtype,omitempty"`
-	UserType   string `protobuf:"bytes,10,opt,name=userType,proto3" json:"userType,omitempty"` //fType:普通用户;vType:超级订阅用户;mType:大会员用户;eType:商机管理用户;
-	UserId     string `protobuf:"bytes,11,opt,name=userId,proto3" json:"userId,omitempty"`
-	EntId      string `protobuf:"bytes,12,opt,name=entId,proto3" json:"entId,omitempty"`
-	AppId      string `protobuf:"bytes,13,opt,name=appId,proto3" json:"appId,omitempty"`
-	Price      string `protobuf:"bytes,14,opt,name=price,proto3" json:"price,omitempty"`
-	FileExists string `protobuf:"bytes,15,opt,name=fileExists,proto3" json:"fileExists,omitempty"`
-	EntUserId  string `protobuf:"bytes,16,opt,name=entUserId,proto3" json:"entUserId,omitempty"`
-	DeptId     string `protobuf:"bytes,17,opt,name=deptId,proto3" json:"deptId,omitempty"`
-	NewUserId  int64  `protobuf:"varint,18,opt,name=newUserId,proto3" json:"newUserId,omitempty"`
-}
-
-func (x *SubscribeInfosReq) Reset() {
-	*x = SubscribeInfosReq{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribeInfosReq) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribeInfosReq) ProtoMessage() {}
-
-func (x *SubscribeInfosReq) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[0]
-	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 SubscribeInfosReq.ProtoReflect.Descriptor instead.
-func (*SubscribeInfosReq) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *SubscribeInfosReq) GetPageNum() int64 {
-	if x != nil {
-		return x.PageNum
-	}
-	return 0
-}
-
-func (x *SubscribeInfosReq) GetPageSize() int64 {
-	if x != nil {
-		return x.PageSize
-	}
-	return 0
-}
-
-func (x *SubscribeInfosReq) GetSelectTime() string {
-	if x != nil {
-		return x.SelectTime
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetArea() string {
-	if x != nil {
-		return x.Area
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetCity() string {
-	if x != nil {
-		return x.City
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetIndustry() string {
-	if x != nil {
-		return x.Industry
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetBuyerClass() string {
-	if x != nil {
-		return x.BuyerClass
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetKeyWords() string {
-	if x != nil {
-		return x.KeyWords
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetSubtype() string {
-	if x != nil {
-		return x.Subtype
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetUserType() string {
-	if x != nil {
-		return x.UserType
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetUserId() string {
-	if x != nil {
-		return x.UserId
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetEntId() string {
-	if x != nil {
-		return x.EntId
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetAppId() string {
-	if x != nil {
-		return x.AppId
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetPrice() string {
-	if x != nil {
-		return x.Price
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetFileExists() string {
-	if x != nil {
-		return x.FileExists
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetEntUserId() string {
-	if x != nil {
-		return x.EntUserId
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetDeptId() string {
-	if x != nil {
-		return x.DeptId
-	}
-	return ""
-}
-
-func (x *SubscribeInfosReq) GetNewUserId() int64 {
-	if x != nil {
-		return x.NewUserId
-	}
-	return 0
-}
-
-type SubscribeInfosResp struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ErrCode int64          `protobuf:"varint,1,opt,name=err_code,json=errCode,proto3" json:"err_code,omitempty"`
-	ErrMsg  string         `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"`
-	Data    *SubscribeData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *SubscribeInfosResp) Reset() {
-	*x = SubscribeInfosResp{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribeInfosResp) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribeInfosResp) ProtoMessage() {}
-
-func (x *SubscribeInfosResp) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[1]
-	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 SubscribeInfosResp.ProtoReflect.Descriptor instead.
-func (*SubscribeInfosResp) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *SubscribeInfosResp) GetErrCode() int64 {
-	if x != nil {
-		return x.ErrCode
-	}
-	return 0
-}
-
-func (x *SubscribeInfosResp) GetErrMsg() string {
-	if x != nil {
-		return x.ErrMsg
-	}
-	return ""
-}
-
-func (x *SubscribeInfosResp) GetData() *SubscribeData {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type SubscribeData struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Count       int64            `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
-	HasNextPage bool             `protobuf:"varint,2,opt,name=hasNextPage,proto3" json:"hasNextPage,omitempty"`
-	List        []*SubscribeInfo `protobuf:"bytes,3,rep,name=list,proto3" json:"list,omitempty"`
-}
-
-func (x *SubscribeData) Reset() {
-	*x = SubscribeData{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribeData) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribeData) ProtoMessage() {}
-
-func (x *SubscribeData) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[2]
-	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 SubscribeData.ProtoReflect.Descriptor instead.
-func (*SubscribeData) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *SubscribeData) GetCount() int64 {
-	if x != nil {
-		return x.Count
-	}
-	return 0
-}
-
-func (x *SubscribeData) GetHasNextPage() bool {
-	if x != nil {
-		return x.HasNextPage
-	}
-	return false
-}
-
-func (x *SubscribeData) GetList() []*SubscribeInfo {
-	if x != nil {
-		return x.List
-	}
-	return nil
-}
-
-type SubscribeInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	XId          string   `protobuf:"bytes,1,opt,name=_id,json=Id,proto3" json:"_id,omitempty"` //和推送程序 缓存保持一致
-	Title        string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
-	Area         string   `protobuf:"bytes,3,opt,name=area,proto3" json:"area,omitempty"`
-	BuyerClass   string   `protobuf:"bytes,4,opt,name=buyerClass,proto3" json:"buyerClass,omitempty"`
-	Subtype      string   `protobuf:"bytes,5,opt,name=subtype,proto3" json:"subtype,omitempty"`
-	Industry     string   `protobuf:"bytes,6,opt,name=industry,proto3" json:"industry,omitempty"`
-	PublishTime  int64    `protobuf:"varint,7,opt,name=publishTime,proto3" json:"publishTime,omitempty"`
-	CaIndex      int64    `protobuf:"varint,8,opt,name=ca_index,json=caIndex,proto3" json:"ca_index,omitempty"`
-	CaDate       int64    `protobuf:"varint,9,opt,name=ca_date,json=caDate,proto3" json:"ca_date,omitempty"`
-	CaIsvisit    int64    `protobuf:"varint,10,opt,name=ca_isvisit,json=caIsvisit,proto3" json:"ca_isvisit,omitempty"`
-	CaType       int64    `protobuf:"varint,11,opt,name=ca_type,json=caType,proto3" json:"ca_type,omitempty"`
-	MatchKeys    []string `protobuf:"bytes,12,rep,name=matchKeys,proto3" json:"matchKeys,omitempty"`
-	Budget       string   `protobuf:"bytes,13,opt,name=budget,proto3" json:"budget,omitempty"`
-	BidAmount    string   `protobuf:"bytes,14,opt,name=bidAmount,proto3" json:"bidAmount,omitempty"`
-	Collection   int64    `protobuf:"varint,15,opt,name=collection,proto3" json:"collection,omitempty"`
-	Buyer        string   `protobuf:"bytes,16,opt,name=buyer,proto3" json:"buyer,omitempty"`
-	ProjectName  string   `protobuf:"bytes,17,opt,name=projectName,proto3" json:"projectName,omitempty"`
-	Winner       string   `protobuf:"bytes,18,opt,name=winner,proto3" json:"winner,omitempty"`
-	BidOpenTime  string   `protobuf:"bytes,19,opt,name=bidOpenTime,proto3" json:"bidOpenTime,omitempty"`
-	CaIsvip      int64    `protobuf:"varint,20,opt,name=ca_isvip,json=caIsvip,proto3" json:"ca_isvip,omitempty"`
-	CaFileExists bool     `protobuf:"varint,21,opt,name=ca_fileExists,json=caFileExists,proto3" json:"ca_fileExists,omitempty"`
-}
-
-func (x *SubscribeInfo) Reset() {
-	*x = SubscribeInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SubscribeInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SubscribeInfo) ProtoMessage() {}
-
-func (x *SubscribeInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[3]
-	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 SubscribeInfo.ProtoReflect.Descriptor instead.
-func (*SubscribeInfo) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SubscribeInfo) GetXId() string {
-	if x != nil {
-		return x.XId
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetTitle() string {
-	if x != nil {
-		return x.Title
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetArea() string {
-	if x != nil {
-		return x.Area
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetBuyerClass() string {
-	if x != nil {
-		return x.BuyerClass
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetSubtype() string {
-	if x != nil {
-		return x.Subtype
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetIndustry() string {
-	if x != nil {
-		return x.Industry
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetPublishTime() int64 {
-	if x != nil {
-		return x.PublishTime
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetCaIndex() int64 {
-	if x != nil {
-		return x.CaIndex
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetCaDate() int64 {
-	if x != nil {
-		return x.CaDate
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetCaIsvisit() int64 {
-	if x != nil {
-		return x.CaIsvisit
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetCaType() int64 {
-	if x != nil {
-		return x.CaType
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetMatchKeys() []string {
-	if x != nil {
-		return x.MatchKeys
-	}
-	return nil
-}
-
-func (x *SubscribeInfo) GetBudget() string {
-	if x != nil {
-		return x.Budget
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetBidAmount() string {
-	if x != nil {
-		return x.BidAmount
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetCollection() int64 {
-	if x != nil {
-		return x.Collection
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetBuyer() string {
-	if x != nil {
-		return x.Buyer
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetProjectName() string {
-	if x != nil {
-		return x.ProjectName
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetWinner() string {
-	if x != nil {
-		return x.Winner
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetBidOpenTime() string {
-	if x != nil {
-		return x.BidOpenTime
-	}
-	return ""
-}
-
-func (x *SubscribeInfo) GetCaIsvip() int64 {
-	if x != nil {
-		return x.CaIsvip
-	}
-	return 0
-}
-
-func (x *SubscribeInfo) GetCaFileExists() bool {
-	if x != nil {
-		return x.CaFileExists
-	}
-	return false
-}
-
-//
-type SomeInfoReq 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 int64  `protobuf:"varint,4,opt,name=newUserId,proto3" json:"newUserId,omitempty"`
-}
-
-func (x *SomeInfoReq) Reset() {
-	*x = SomeInfoReq{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SomeInfoReq) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SomeInfoReq) ProtoMessage() {}
-
-func (x *SomeInfoReq) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[4]
-	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 SomeInfoReq.ProtoReflect.Descriptor instead.
-func (*SomeInfoReq) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *SomeInfoReq) GetAppId() string {
-	if x != nil {
-		return x.AppId
-	}
-	return ""
-}
-
-func (x *SomeInfoReq) GetUserId() string {
-	if x != nil {
-		return x.UserId
-	}
-	return ""
-}
-
-func (x *SomeInfoReq) GetUserType() string {
-	if x != nil {
-		return x.UserType
-	}
-	return ""
-}
-
-func (x *SomeInfoReq) GetNewUserId() int64 {
-	if x != nil {
-		return x.NewUserId
-	}
-	return 0
-}
-
-type SomeInfoResp struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ErrCode int64     `protobuf:"varint,1,opt,name=err_code,json=errCode,proto3" json:"err_code,omitempty"`
-	ErrMsg  string    `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"`
-	Data    *SomeInfo `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *SomeInfoResp) Reset() {
-	*x = SomeInfoResp{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SomeInfoResp) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SomeInfoResp) ProtoMessage() {}
-
-func (x *SomeInfoResp) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[5]
-	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 SomeInfoResp.ProtoReflect.Descriptor instead.
-func (*SomeInfoResp) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *SomeInfoResp) GetErrCode() int64 {
-	if x != nil {
-		return x.ErrCode
-	}
-	return 0
-}
-
-func (x *SomeInfoResp) GetErrMsg() string {
-	if x != nil {
-		return x.ErrMsg
-	}
-	return ""
-}
-
-func (x *SomeInfoResp) GetData() *SomeInfo {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type SomeInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	HasKey      bool     `protobuf:"varint,1,opt,name=hasKey,proto3" json:"hasKey,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"` //推送数量校验
-	OtherFlag   bool     `protobuf:"varint,6,opt,name=otherFlag,proto3" json:"otherFlag,omitempty"`     //首次用户推送查询“其他”
-	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
-}
-
-func (x *SomeInfo) Reset() {
-	*x = SomeInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SomeInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SomeInfo) ProtoMessage() {}
-
-func (x *SomeInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[6]
-	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 SomeInfo.ProtoReflect.Descriptor instead.
-func (*SomeInfo) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *SomeInfo) GetHasKey() bool {
-	if x != nil {
-		return x.HasKey
-	}
-	return false
-}
-
-func (x *SomeInfo) GetIsInTSguide() bool {
-	if x != nil {
-		return x.IsInTSguide
-	}
-	return false
-}
-
-func (x *SomeInfo) GetIsExpire() int64 {
-	if x != nil {
-		return x.IsExpire
-	}
-	return 0
-}
-
-func (x *SomeInfo) GetIsOnTail() int64 {
-	if x != nil {
-		return x.IsOnTail
-	}
-	return 0
-}
-
-func (x *SomeInfo) GetIsPassCount() bool {
-	if x != nil {
-		return x.IsPassCount
-	}
-	return false
-}
-
-func (x *SomeInfo) GetOtherFlag() bool {
-	if x != nil {
-		return x.OtherFlag
-	}
-	return false
-}
-
-func (x *SomeInfo) GetIsRead() bool {
-	if x != nil {
-		return x.IsRead
-	}
-	return false
-}
-
-func (x *SomeInfo) GetIndustry() []string {
-	if x != nil {
-		return x.Industry
-	}
-	return nil
-}
-
-func (x *SomeInfo) GetUserId() string {
-	if x != nil {
-		return x.UserId
-	}
-	return ""
-}
-
-//
-type StatusResp struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ErrorMsg  string `protobuf:"bytes,1,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"`
-	ErrorCode int64  `protobuf:"varint,2,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"`
-	Status    int64  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
-}
-
-func (x *StatusResp) Reset() {
-	*x = StatusResp{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *StatusResp) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StatusResp) ProtoMessage() {}
-
-func (x *StatusResp) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[7]
-	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 StatusResp.ProtoReflect.Descriptor instead.
-func (*StatusResp) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *StatusResp) GetErrorMsg() string {
-	if x != nil {
-		return x.ErrorMsg
-	}
-	return ""
-}
-
-func (x *StatusResp) GetErrorCode() int64 {
-	if x != nil {
-		return x.ErrorCode
-	}
-	return 0
-}
-
-func (x *StatusResp) GetStatus() int64 {
-	if x != nil {
-		return x.Status
-	}
-	return 0
-}
-
-type UpdateSubScribeInfoReq struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Area            map[string]*CityList `protobuf:"bytes,1,rep,name=area,proto3" json:"area,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //地区
-	Buyerclass      []string             `protobuf:"bytes,2,rep,name=buyerclass,proto3" json:"buyerclass,omitempty"`                                                                             //采购单位类型
-	Items           []*Items             `protobuf:"bytes,3,rep,name=items,proto3" json:"items,omitempty"`                                                                                       //关键词
-	Infotype        []string             `protobuf:"bytes,4,rep,name=infotype,proto3" json:"infotype,omitempty"`                                                                                 //信息类型
-	Matchway        string               `protobuf:"bytes,5,opt,name=matchway,proto3" json:"matchway,omitempty"`                                                                                 //匹配方式 1标题 2正文
-	Projectmatch    string               `protobuf:"bytes,6,opt,name=projectmatch,proto3" json:"projectmatch,omitempty"`                                                                         //项目匹配 1开始 0关闭
-	Ratemode        string               `protobuf:"bytes,7,opt,name=ratemode,proto3" json:"ratemode,omitempty"`                                                                                 // 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
-	Apppush         string               `protobuf:"bytes,8,opt,name=apppush,proto3" json:"apppush,omitempty"`                                                                                   //app推送 1开启 0关闭
-	Mailpush        string               `protobuf:"bytes,9,opt,name=mailpush,proto3" json:"mailpush,omitempty"`                                                                                 //邮箱推送 1开启 0关闭
-	Mail            string               `protobuf:"bytes,10,opt,name=mail,proto3" json:"mail,omitempty"`                                                                                        //邮箱
-	Otherbuyerclass string               `protobuf:"bytes,11,opt,name=otherbuyerclass,proto3" json:"otherbuyerclass,omitempty"`                                                                  //匹配未分类类型 1匹配 0不匹配
-	UserId          string               `protobuf:"bytes,12,opt,name=userId,proto3" json:"userId,omitempty"`                                                                                    //用户id
-}
-
-func (x *UpdateSubScribeInfoReq) Reset() {
-	*x = UpdateSubScribeInfoReq{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UpdateSubScribeInfoReq) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateSubScribeInfoReq) ProtoMessage() {}
-
-func (x *UpdateSubScribeInfoReq) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[8]
-	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 UpdateSubScribeInfoReq.ProtoReflect.Descriptor instead.
-func (*UpdateSubScribeInfoReq) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *UpdateSubScribeInfoReq) GetArea() map[string]*CityList {
-	if x != nil {
-		return x.Area
-	}
-	return nil
-}
-
-func (x *UpdateSubScribeInfoReq) GetBuyerclass() []string {
-	if x != nil {
-		return x.Buyerclass
-	}
-	return nil
-}
-
-func (x *UpdateSubScribeInfoReq) GetItems() []*Items {
-	if x != nil {
-		return x.Items
-	}
-	return nil
-}
-
-func (x *UpdateSubScribeInfoReq) GetInfotype() []string {
-	if x != nil {
-		return x.Infotype
-	}
-	return nil
-}
-
-func (x *UpdateSubScribeInfoReq) GetMatchway() string {
-	if x != nil {
-		return x.Matchway
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetProjectmatch() string {
-	if x != nil {
-		return x.Projectmatch
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetRatemode() string {
-	if x != nil {
-		return x.Ratemode
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetApppush() string {
-	if x != nil {
-		return x.Apppush
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetMailpush() string {
-	if x != nil {
-		return x.Mailpush
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetMail() string {
-	if x != nil {
-		return x.Mail
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetOtherbuyerclass() string {
-	if x != nil {
-		return x.Otherbuyerclass
-	}
-	return ""
-}
-
-func (x *UpdateSubScribeInfoReq) GetUserId() string {
-	if x != nil {
-		return x.UserId
-	}
-	return ""
-}
-
-//城市
-type CityList struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	City []string `protobuf:"bytes,1,rep,name=city,proto3" json:"city,omitempty"`
-}
-
-func (x *CityList) Reset() {
-	*x = CityList{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CityList) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CityList) ProtoMessage() {}
-
-func (x *CityList) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[9]
-	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 CityList.ProtoReflect.Descriptor instead.
-func (*CityList) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *CityList) GetCity() []string {
-	if x != nil {
-		return x.City
-	}
-	return nil
-}
-
-//分类
-type Items struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SItem      string  `protobuf:"bytes,1,opt,name=s_item,json=sItem,proto3" json:"s_item,omitempty"` //分类名称
-	UpdateTime int64   `protobuf:"varint,2,opt,name=updateTime,proto3" json:"updateTime,omitempty"`
-	AKey       []*Keys `protobuf:"bytes,3,rep,name=a_key,json=aKey,proto3" json:"a_key,omitempty"`
-}
-
-func (x *Items) Reset() {
-	*x = Items{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Items) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Items) ProtoMessage() {}
-
-func (x *Items) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[10]
-	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 Items.ProtoReflect.Descriptor instead.
-func (*Items) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Items) GetSItem() string {
-	if x != nil {
-		return x.SItem
-	}
-	return ""
-}
-
-func (x *Items) GetUpdateTime() int64 {
-	if x != nil {
-		return x.UpdateTime
-	}
-	return 0
-}
-
-func (x *Items) GetAKey() []*Keys {
-	if x != nil {
-		return x.AKey
-	}
-	return nil
-}
-
-//关键词
-type Keys struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Key        []string `protobuf:"bytes,1,rep,name=key,proto3" json:"key,omitempty"`
-	Notkey     []string `protobuf:"bytes,2,rep,name=notkey,proto3" json:"notkey,omitempty"`
-	UpdateTime int64    `protobuf:"varint,3,opt,name=updateTime,proto3" json:"updateTime,omitempty"`
-	Matchway   int64    `protobuf:"varint,4,opt,name=matchway,proto3" json:"matchway,omitempty"`
-	AppendKey  []string `protobuf:"bytes,5,rep,name=appendKey,proto3" json:"appendKey,omitempty"`
-}
-
-func (x *Keys) Reset() {
-	*x = Keys{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_bxsubscribe_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Keys) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Keys) ProtoMessage() {}
-
-func (x *Keys) ProtoReflect() protoreflect.Message {
-	mi := &file_bxsubscribe_proto_msgTypes[11]
-	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 Keys.ProtoReflect.Descriptor instead.
-func (*Keys) Descriptor() ([]byte, []int) {
-	return file_bxsubscribe_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Keys) GetKey() []string {
-	if x != nil {
-		return x.Key
-	}
-	return nil
-}
-
-func (x *Keys) GetNotkey() []string {
-	if x != nil {
-		return x.Notkey
-	}
-	return nil
-}
-
-func (x *Keys) GetUpdateTime() int64 {
-	if x != nil {
-		return x.UpdateTime
-	}
-	return 0
-}
-
-func (x *Keys) GetMatchway() int64 {
-	if x != nil {
-		return x.Matchway
-	}
-	return 0
-}
-
-func (x *Keys) GetAppendKey() []string {
-	if x != nil {
-		return x.AppendKey
-	}
-	return nil
-}
-
-var File_bxsubscribe_proto protoreflect.FileDescriptor
-
-var file_bxsubscribe_proto_rawDesc = []byte{
-	0x0a, 0x11, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
-	0x22, 0xed, 0x03, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e,
-	0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75,
-	0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d,
-	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
-	0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
-	0x61, 0x72, 0x65, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61,
-	0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x63, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79,
-	0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73,
-	0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07,
-	0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
-	0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79,
-	0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79,
-	0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e,
-	0x74, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x49, 0x64,
-	0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18,
-	0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09,
-	0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65,
-	0x70, 0x74, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x70, 0x74,
-<<<<<<< HEAD
-	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18,
-	0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64,
-	0x22, 0x78, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66,
-	0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f,
-	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64,
-	0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61,
-	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
-	0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x77, 0x0a, 0x0d, 0x73, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63,
-	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
-	0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x4e, 0x65, 0x78, 0x74, 0x50,
-	0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e,
-	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c,
-	0x69, 0x73, 0x74, 0x22, 0xd4, 0x04, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0f, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04,
-	0x61, 0x72, 0x65, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61,
-	0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73,
-	0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e,
-	0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
-	0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73,
-	0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x5f, 0x69,
-	0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x61, 0x49, 0x6e,
-	0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x61, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
-	0x63, 0x61, 0x5f, 0x69, 0x73, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x63, 0x61, 0x49, 0x73, 0x76, 0x69, 0x73, 0x69, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63,
-	0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x61,
-	0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79,
-	0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4b, 0x65,
-	0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69,
-	0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62,
-	0x69, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c,
-	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x6f,
-	0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65,
-	0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x20,
-	0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65,
-	0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x4f,
-	0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62,
-	0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61,
-	0x5f, 0x69, 0x73, 0x76, 0x69, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x61,
-	0x49, 0x73, 0x76, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65,
-	0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61,
-	0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x75, 0x0a, 0x0b, 0x53, 0x6f,
-	0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 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, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x49,
-	0x64, 0x22, 0x6d, 0x0a, 0x0c, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
-	0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07,
-	0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65,
-	0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 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, 0x12, 0x16, 0x0a,
-	0x06, 0x68, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68,
-<<<<<<< HEAD
-	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,
-=======
-	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,
-=======
-	0x49, 0x64, 0x22, 0x78, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f,
-	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43,
-	0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2e, 0x0a, 0x04,
-	0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x78, 0x73,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x77, 0x0a, 0x0d,
-	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a,
-	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x61,
-	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x4e, 0x65, 0x78,
-	0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
-	0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xd4, 0x04, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
-	0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0f, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72,
-	0x65, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x61,
-	0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08,
-	0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70,
-	0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61,
-	0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x61,
-	0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x65,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x61, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1d,
-	0x0a, 0x0a, 0x63, 0x61, 0x5f, 0x69, 0x73, 0x76, 0x69, 0x73, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x63, 0x61, 0x49, 0x73, 0x76, 0x69, 0x73, 0x69, 0x74, 0x12, 0x17, 0x0a,
-	0x07, 0x63, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
-	0x63, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4b,
-	0x65, 0x79, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68,
-	0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x0d,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09,
-	0x62, 0x69, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x62, 0x69, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f,
-	0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75,
-	0x79, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72,
-	0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18,
-	0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61,
-	0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69,
-	0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0b, 0x62, 0x69, 0x64, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08,
-	0x63, 0x61, 0x5f, 0x69, 0x73, 0x76, 0x69, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
-	0x63, 0x61, 0x49, 0x73, 0x76, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x5f, 0x66, 0x69,
-	0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
-	0x63, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x0b,
-	0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 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, 0x22, 0x6d, 0x0a, 0x0c, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66,
-	0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x5f, 0x63, 0x6f, 0x64,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65,
-	0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 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, 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,
->>>>>>> origin/feature/v1.1.5
-	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,
-<<<<<<< HEAD
-	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,
-=======
-	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 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, 0x6f, 0x72, 0x5f,
-	0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f,
-	0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xf9, 0x03,
-	0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x41, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 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, 0x2e, 0x41, 0x72, 0x65, 0x61,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x62,
-	0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x69,
-	0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78, 0x73,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05,
-	0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x74, 0x79, 0x70,
-	0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x74, 0x79, 0x70,
-	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79, 0x12, 0x22, 0x0a,
-	0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x74, 0x63,
-	0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x61, 0x74, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x61, 0x74, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
-	0x07, 0x61, 0x70, 0x70, 0x70, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
-	0x61, 0x70, 0x70, 0x70, 0x75, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6c, 0x70,
-	0x75, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6c, 0x70,
-	0x75, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72,
-	0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73,
-	0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x4e, 0x0a, 0x09, 0x41, 0x72, 0x65,
-	0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73,
-	0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x43, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1e, 0x0a, 0x08, 0x43, 0x69, 0x74,
-	0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x22, 0x66, 0x0a, 0x05, 0x49, 0x74, 0x65,
-	0x6d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64,
-	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x61, 0x5f, 0x6b,
-	0x65, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62,
-	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x04, 0x61, 0x4b, 0x65,
-	0x79, 0x22, 0x8a, 0x01, 0x0a, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06,
-	0x6e, 0x6f, 0x74, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f,
-	0x74, 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
-	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79,
-	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x32, 0xf8,
-	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, 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, 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,
->>>>>>> master
->>>>>>> origin/feature/v1.1.5
-}
-
-var (
-	file_bxsubscribe_proto_rawDescOnce sync.Once
-	file_bxsubscribe_proto_rawDescData = file_bxsubscribe_proto_rawDesc
-)
-
-func file_bxsubscribe_proto_rawDescGZIP() []byte {
-	file_bxsubscribe_proto_rawDescOnce.Do(func() {
-		file_bxsubscribe_proto_rawDescData = protoimpl.X.CompressGZIP(file_bxsubscribe_proto_rawDescData)
-	})
-	return file_bxsubscribe_proto_rawDescData
-}
-
-var file_bxsubscribe_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
-var file_bxsubscribe_proto_goTypes = []interface{}{
-	(*SubscribeInfosReq)(nil),      // 0: bxsubscribe.SubscribeInfosReq
-	(*SubscribeInfosResp)(nil),     // 1: bxsubscribe.SubscribeInfosResp
-	(*SubscribeData)(nil),          // 2: bxsubscribe.subscribeData
-	(*SubscribeInfo)(nil),          // 3: bxsubscribe.subscribeInfo
-	(*SomeInfoReq)(nil),            // 4: bxsubscribe.SomeInfoReq
-	(*SomeInfoResp)(nil),           // 5: bxsubscribe.SomeInfoResp
-	(*SomeInfo)(nil),               // 6: bxsubscribe.SomeInfo
-	(*StatusResp)(nil),             // 7: bxsubscribe.StatusResp
-	(*UpdateSubScribeInfoReq)(nil), // 8: bxsubscribe.UpdateSubScribeInfoReq
-	(*CityList)(nil),               // 9: bxsubscribe.CityList
-	(*Items)(nil),                  // 10: bxsubscribe.Items
-	(*Keys)(nil),                   // 11: bxsubscribe.Keys
-	nil,                            // 12: bxsubscribe.UpdateSubScribeInfoReq.AreaEntry
-}
-var file_bxsubscribe_proto_depIdxs = []int32{
-	2,  // 0: bxsubscribe.SubscribeInfosResp.data:type_name -> bxsubscribe.subscribeData
-	3,  // 1: bxsubscribe.subscribeData.list:type_name -> bxsubscribe.subscribeInfo
-	6,  // 2: bxsubscribe.SomeInfoResp.data:type_name -> bxsubscribe.SomeInfo
-	12, // 3: bxsubscribe.UpdateSubScribeInfoReq.area:type_name -> bxsubscribe.UpdateSubScribeInfoReq.AreaEntry
-	10, // 4: bxsubscribe.UpdateSubScribeInfoReq.items:type_name -> bxsubscribe.Items
-	11, // 5: bxsubscribe.Items.a_key:type_name -> bxsubscribe.Keys
-	9,  // 6: bxsubscribe.UpdateSubScribeInfoReq.AreaEntry.value:type_name -> bxsubscribe.CityList
-	0,  // 7: bxsubscribe.Bxsubscribe.GetSubList:input_type -> bxsubscribe.SubscribeInfosReq
-	4,  // 8: bxsubscribe.Bxsubscribe.GetSubSomeInfo:input_type -> bxsubscribe.SomeInfoReq
-	8,  // 9: bxsubscribe.Bxsubscribe.UpdateSubScribeInfo:input_type -> bxsubscribe.UpdateSubScribeInfoReq
-	1,  // 10: bxsubscribe.Bxsubscribe.GetSubList:output_type -> bxsubscribe.SubscribeInfosResp
-	5,  // 11: bxsubscribe.Bxsubscribe.GetSubSomeInfo:output_type -> bxsubscribe.SomeInfoResp
-	7,  // 12: bxsubscribe.Bxsubscribe.UpdateSubScribeInfo:output_type -> bxsubscribe.StatusResp
-	10, // [10:13] is the sub-list for method output_type
-	7,  // [7:10] is the sub-list for method input_type
-	7,  // [7:7] is the sub-list for extension type_name
-	7,  // [7:7] is the sub-list for extension extendee
-	0,  // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_bxsubscribe_proto_init() }
-func file_bxsubscribe_proto_init() {
-	if File_bxsubscribe_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_bxsubscribe_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribeInfosReq); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribeInfosResp); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribeData); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscribeInfo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SomeInfoReq); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SomeInfoResp); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SomeInfo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*StatusResp); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateSubScribeInfoReq); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CityList); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Items); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_bxsubscribe_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Keys); 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{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_bxsubscribe_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   13,
-			NumExtensions: 0,
-			NumServices:   1,
-		},
-		GoTypes:           file_bxsubscribe_proto_goTypes,
-		DependencyIndexes: file_bxsubscribe_proto_depIdxs,
-		MessageInfos:      file_bxsubscribe_proto_msgTypes,
-	}.Build()
-	File_bxsubscribe_proto = out.File
-	file_bxsubscribe_proto_rawDesc = nil
-	file_bxsubscribe_proto_goTypes = nil
-	file_bxsubscribe_proto_depIdxs = nil
-}

+ 0 - 187
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe_grpc.pb.go

@@ -1,187 +0,0 @@
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.2.0
-<<<<<<< HEAD
-// - protoc             v3.15.1
-=======
-// - protoc             v3.19.4
->>>>>>> master
-// source: bxsubscribe.proto
-
-package bxsubscribe
-
-import (
-	context "context"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
-
-// 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)
-}
-
-type bxsubscribeClient struct {
-	cc grpc.ClientConnInterface
-}
-
-func NewBxsubscribeClient(cc grpc.ClientConnInterface) BxsubscribeClient {
-	return &bxsubscribeClient{cc}
-}
-
-func (c *bxsubscribeClient) GetSubList(ctx context.Context, in *SubscribeInfosReq, opts ...grpc.CallOption) (*SubscribeInfosResp, error) {
-	out := new(SubscribeInfosResp)
-	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetSubList", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *bxsubscribeClient) GetSubSomeInfo(ctx context.Context, in *SomeInfoReq, opts ...grpc.CallOption) (*SomeInfoResp, error) {
-	out := new(SomeInfoResp)
-	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/GetSubSomeInfo", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *bxsubscribeClient) UpdateSubScribeInfo(ctx context.Context, in *UpdateSubScribeInfoReq, opts ...grpc.CallOption) (*StatusResp, error) {
-	out := new(StatusResp)
-	err := c.cc.Invoke(ctx, "/bxsubscribe.Bxsubscribe/UpdateSubScribeInfo", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// BxsubscribeServer is the server API for Bxsubscribe service.
-// 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)
-	mustEmbedUnimplementedBxsubscribeServer()
-}
-
-// UnimplementedBxsubscribeServer must be embedded to have forward compatible implementations.
-type UnimplementedBxsubscribeServer struct {
-}
-
-func (UnimplementedBxsubscribeServer) GetSubList(context.Context, *SubscribeInfosReq) (*SubscribeInfosResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetSubList not implemented")
-}
-func (UnimplementedBxsubscribeServer) GetSubSomeInfo(context.Context, *SomeInfoReq) (*SomeInfoResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetSubSomeInfo not implemented")
-}
-func (UnimplementedBxsubscribeServer) UpdateSubScribeInfo(context.Context, *UpdateSubScribeInfoReq) (*StatusResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateSubScribeInfo not implemented")
-}
-func (UnimplementedBxsubscribeServer) mustEmbedUnimplementedBxsubscribeServer() {}
-
-// UnsafeBxsubscribeServer may be embedded to opt out of forward compatibility for this service.
-// Use of this interface is not recommended, as added methods to BxsubscribeServer will
-// result in compilation errors.
-type UnsafeBxsubscribeServer interface {
-	mustEmbedUnimplementedBxsubscribeServer()
-}
-
-func RegisterBxsubscribeServer(s grpc.ServiceRegistrar, srv BxsubscribeServer) {
-	s.RegisterService(&Bxsubscribe_ServiceDesc, srv)
-}
-
-func _Bxsubscribe_GetSubList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SubscribeInfosReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(BxsubscribeServer).GetSubList(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/bxsubscribe.Bxsubscribe/GetSubList",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(BxsubscribeServer).GetSubList(ctx, req.(*SubscribeInfosReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Bxsubscribe_GetSubSomeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SomeInfoReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(BxsubscribeServer).GetSubSomeInfo(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/bxsubscribe.Bxsubscribe/GetSubSomeInfo",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(BxsubscribeServer).GetSubSomeInfo(ctx, req.(*SomeInfoReq))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Bxsubscribe_UpdateSubScribeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(UpdateSubScribeInfoReq)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(BxsubscribeServer).UpdateSubScribeInfo(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/bxsubscribe.Bxsubscribe/UpdateSubScribeInfo",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(BxsubscribeServer).UpdateSubScribeInfo(ctx, req.(*UpdateSubScribeInfoReq))
-	}
-	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)
-var Bxsubscribe_ServiceDesc = grpc.ServiceDesc{
-	ServiceName: "bxsubscribe.Bxsubscribe",
-	HandlerType: (*BxsubscribeServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetSubList",
-			Handler:    _Bxsubscribe_GetSubList_Handler,
-		},
-		{
-			MethodName: "GetSubSomeInfo",
-			Handler:    _Bxsubscribe_GetSubSomeInfo_Handler,
-		},
-		{
-			MethodName: "UpdateSubScribeInfo",
-			Handler:    _Bxsubscribe_UpdateSubScribeInfo_Handler,
-		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "bxsubscribe.proto",
-}