WH01243 преди 2 години
родител
ревизия
07d009cf78
променени са 35 файла, в които са добавени 3061 реда и са изтрити 219 реда
  1. 5 0
      jyBXCore/README.md
  2. 4 4
      jyBXCore/go.mod
  3. 165 50
      jyBXCore/go.sum
  4. 3 0
      jyBXCore/rpc/bxcore.proto
  5. 1 0
      jyBXCore/rpc/etc/bxcore.yaml
  6. 1 0
      jyBXCore/rpc/internal/config/config.go
  7. 4 3
      jyBXCore/rpc/internal/logic/getsearchlistlogic.go
  8. 129 102
      jyBXCore/rpc/type/bxcore/bxcore.pb.go
  9. 7 7
      jyBXCore/rpc/util/search.go
  10. 8 1
      jyBXSubscribe/README.md
  11. BIN
      jyBXSubscribe/api/api.exe
  12. 19 0
      jyBXSubscribe/api/bxsubscribe.api
  13. 4 0
      jyBXSubscribe/api/etc/db.yaml
  14. 12 1
      jyBXSubscribe/api/init/db.go
  15. 4 3
      jyBXSubscribe/api/init/init.go
  16. 5 0
      jyBXSubscribe/api/internal/handler/routes.go
  17. 28 0
      jyBXSubscribe/api/internal/handler/subscribeupdatehandler.go
  18. 140 0
      jyBXSubscribe/api/internal/logic/subscribeupdatelogic.go
  19. 17 0
      jyBXSubscribe/api/internal/types/types.go
  20. 33 0
      jyBXSubscribe/api/logs/access.log
  21. 4 0
      jyBXSubscribe/api/logs/error.log-2022-08-29
  22. 430 0
      jyBXSubscribe/api/logs/stat.log-2022-08-29
  23. 8 0
      jyBXSubscribe/entity/common.go
  24. 18 4
      jyBXSubscribe/rpc/bxsubscribe.go
  25. 47 0
      jyBXSubscribe/rpc/bxsubscribe.proto
  26. 20 7
      jyBXSubscribe/rpc/bxsubscribe/bxsubscribe.go
  27. 11 16
      jyBXSubscribe/rpc/init/init.go
  28. 107 0
      jyBXSubscribe/rpc/internal/logic/updatesubscribeinfologic.go
  29. 6 0
      jyBXSubscribe/rpc/internal/server/bxsubscribeserver.go
  30. 162 0
      jyBXSubscribe/rpc/model/service/coverage
  31. 722 0
      jyBXSubscribe/rpc/model/service/coverage.html
  32. 110 0
      jyBXSubscribe/rpc/model/service/subscribe.go
  33. 116 0
      jyBXSubscribe/rpc/model/service/subscribe_test.go
  34. 669 21
      jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go
  35. 42 0
      jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe_grpc.pb.go

+ 5 - 0
jyBXCore/README.md

@@ -1,5 +1,10 @@
 ### 剑鱼微服务
 
+api:
+    goctl api go -api bxcore.api -dir . -style goZero
+rpc:
+    goctl rpc protoc bxcore.proto --go_out=./type --go-grpc_out=./type --zrpc_out=.
+
 #### 接口文档地址
 ```
 https://yapi.jydev.jianyu360.com/project/63/interface/api/cat_96

+ 4 - 4
jyBXCore/go.mod

@@ -3,11 +3,11 @@ module jyBXCore
 go 1.16
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20220701093636-1a2604e6265f
+	app.yhyue.com/moapp/jybase v0.0.0-20220829123944-ed6966c3fcb3
 	bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4
 	github.com/go-sql-driver/mysql v1.6.0
 	github.com/golang/protobuf v1.5.2
-	github.com/zeromicro/go-zero v1.3.3
-	google.golang.org/grpc v1.47.0
-	google.golang.org/protobuf v1.28.0
+	github.com/zeromicro/go-zero v1.4.0
+	google.golang.org/grpc v1.49.0
+	google.golang.org/protobuf v1.28.1
 )

+ 165 - 50
jyBXCore/go.sum

@@ -4,8 +4,8 @@ app.yhyue.com/moapp/jybase v0.0.0-20220415064050-37ce64b3e2d4/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20220418104200-46c3fff161c7/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 app.yhyue.com/moapp/jybase v0.0.0-20220420032112-668025915ee4/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 app.yhyue.com/moapp/jybase v0.0.0-20220421060131-a1001013ba46/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
-app.yhyue.com/moapp/jybase v0.0.0-20220701093636-1a2604e6265f h1:FXXQc+p6IN4YWRR8/onMOLmHLrsvTa2lO4W/ATv7cK0=
-app.yhyue.com/moapp/jybase v0.0.0-20220701093636-1a2604e6265f/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
+app.yhyue.com/moapp/jybase v0.0.0-20220829123944-ed6966c3fcb3 h1:yKOLZmtjWansB6QvwMbeqXDdm4kq3ALc92aqVzyCgu4=
+app.yhyue.com/moapp/jybase v0.0.0-20220829123944-ed6966c3fcb3/go.mod h1:HelrO6tcD9TcKb/HOP2BLbzppyDz2kpQSFhPMQTUgbQ=
 bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698/go.mod h1:ojo/AUH9Yr1wzarEjOaNMkj1Cet/9r8IgLyba64Z52E=
 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=
@@ -50,24 +50,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 +81,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 +146,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 +175,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 +193,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 +233,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 +272,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 +284,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 +300,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 +308,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 +330,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 +343,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=
@@ -363,6 +393,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=
@@ -386,6 +417,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 +426,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 +448,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 +498,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=
@@ -465,6 +516,10 @@ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
 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/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 +538,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,20 +578,27 @@ 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.3.5/go.mod h1:wh4o794b7Ul3W0k35Pw9nc3iB4O0OpaQTMQz/PJc1bc=
+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 h1:f3aLGJvQmBl8d9S40IL+jEyBC6hfLPbJjv9t5hEM9ck=
-go.mongodb.org/mongo-driver v1.9.0/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
+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=
@@ -534,24 +606,37 @@ 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.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
+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.8.0/go.mod h1:GbWg+ng88rDtx+id26C34QLqw2erqJeAjsCx9AFeHfE=
+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.8.0/go.mod h1:0uYAyCuGT67MFV9Z/Mmx93wGuugHw0FbxMc74fs3LNo=
+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.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c=
+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.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
+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,8 +658,10 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
 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 h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
+golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/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=
@@ -647,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=
@@ -690,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=
@@ -709,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=
@@ -726,14 +817,19 @@ 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 h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/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-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -750,8 +846,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=
@@ -793,8 +891,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=
@@ -807,7 +907,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=
@@ -863,10 +962,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=
@@ -885,9 +985,11 @@ 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/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8=
+google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
 google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw=
+google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
 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 +1000,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 +1035,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 +1050,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=

+ 3 - 0
jyBXCore/rpc/bxcore.proto

@@ -40,6 +40,9 @@ message SearchData {
   repeated string historyKeys = 4;
   repeated SearchList list = 5;
   int64  totalPage = 6;
+  string interceptWord = 7;
+  int64  interceptLimit = 8;
+  string  interceptKeywords= 9;
 }
 
 message  SearchList {

+ 1 - 0
jyBXCore/rpc/etc/bxcore.yaml

@@ -31,3 +31,4 @@ PaySearchLimit:
   WordSize: 7
   PageNum: 1
   PageSize: 20
+KeywordsLimit: 35

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

@@ -34,6 +34,7 @@ type Config struct {
 		PageNum  int64
 		PageSize int64
 	}
+	KeywordsLimit int
 }
 
 type Db struct {

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

@@ -36,8 +36,9 @@ func (l *GetSearchListLogic) GetSearchList(in *bxcore.SearchReq) (*bxcore.Search
 	defer MC.Catch()
 	t := time.Now()
 	res := &bxcore.SearchData{
-		Count: 0,
-		List:  []*bxcore.SearchList{},
+		Count:          0,
+		List:           []*bxcore.SearchList{},
+		InterceptLimit: int64(MC.IntAllDef(IC.C.KeywordsLimit, 35)),
 	}
 	if in.UserId != "" {
 		//历史记录
@@ -77,7 +78,7 @@ func (l *GetSearchListLogic) GetSearchList(in *bxcore.SearchReq) (*bxcore.Search
 	res.IsLimit = 1
 	//以后可能会出现 关键词 C++ 等带+的关键词
 	if in.KeyWords != "" {
-		_, _, in.KeyWords = util.InterceptSearchKW(in.KeyWords, false, len(in.Industry) == 0)
+		res.InterceptKeywords, res.InterceptWord, in.KeyWords = util.InterceptSearchKW(in.KeyWords, MC.IntAllDef(IC.C.KeywordsLimit, 35), len(in.Industry) == 0)
 	}
 	//查询数据
 	if in.KeyWords != "" || in.Industry != "" {

+ 129 - 102
jyBXCore/rpc/type/bxcore/bxcore.pb.go

@@ -1,13 +1,12 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.23.0
+// 	protoc-gen-go v1.28.0
 // 	protoc        v3.15.5
 // source: bxcore.proto
 
 package bxcore
 
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
 	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
 	reflect "reflect"
@@ -21,10 +20,6 @@ const (
 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 )
 
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
-
 type SearchReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -308,12 +303,15 @@ type SearchData struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Count       int64         `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
-	KeyWords    string        `protobuf:"bytes,2,opt,name=keyWords,proto3" json:"keyWords,omitempty"`
-	IsLimit     int64         `protobuf:"varint,3,opt,name=isLimit,proto3" json:"isLimit,omitempty"`
-	HistoryKeys []string      `protobuf:"bytes,4,rep,name=historyKeys,proto3" json:"historyKeys,omitempty"`
-	List        []*SearchList `protobuf:"bytes,5,rep,name=list,proto3" json:"list,omitempty"`
-	TotalPage   int64         `protobuf:"varint,6,opt,name=totalPage,proto3" json:"totalPage,omitempty"`
+	Count             int64         `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
+	KeyWords          string        `protobuf:"bytes,2,opt,name=keyWords,proto3" json:"keyWords,omitempty"`
+	IsLimit           int64         `protobuf:"varint,3,opt,name=isLimit,proto3" json:"isLimit,omitempty"`
+	HistoryKeys       []string      `protobuf:"bytes,4,rep,name=historyKeys,proto3" json:"historyKeys,omitempty"`
+	List              []*SearchList `protobuf:"bytes,5,rep,name=list,proto3" json:"list,omitempty"`
+	TotalPage         int64         `protobuf:"varint,6,opt,name=totalPage,proto3" json:"totalPage,omitempty"`
+	InterceptWord     string        `protobuf:"bytes,7,opt,name=interceptWord,proto3" json:"interceptWord,omitempty"`
+	InterceptLimit    int64         `protobuf:"varint,8,opt,name=interceptLimit,proto3" json:"interceptLimit,omitempty"`
+	InterceptKeywords string        `protobuf:"bytes,9,opt,name=interceptKeywords,proto3" json:"interceptKeywords,omitempty"`
 }
 
 func (x *SearchData) Reset() {
@@ -390,6 +388,27 @@ func (x *SearchData) GetTotalPage() int64 {
 	return 0
 }
 
+func (x *SearchData) GetInterceptWord() string {
+	if x != nil {
+		return x.InterceptWord
+	}
+	return ""
+}
+
+func (x *SearchData) GetInterceptLimit() int64 {
+	if x != nil {
+		return x.InterceptLimit
+	}
+	return 0
+}
+
+func (x *SearchData) GetInterceptKeywords() string {
+	if x != nil {
+		return x.InterceptKeywords
+	}
+	return ""
+}
+
 type SearchList struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -927,7 +946,7 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72,
 	0x72, 0x4d, 0x73, 0x67, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01,
 	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72,
-	0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc0, 0x01, 0x0a,
+	0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xbc, 0x02, 0x0a,
 	0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 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, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20,
@@ -939,95 +958,103 @@ var file_bxcore_proto_rawDesc = []byte{
 	0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
 	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73,
 	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x22,
-	0xb7, 0x05, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e,
-	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
-	0x0a, 0x04, 0x61, 0x72, 0x65, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72,
-	0x65, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x72, 0x65, 0x61, 0x55, 0x72, 0x6c, 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, 0x12, 0x0a, 0x04,
-	0x63, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79,
-	0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x75,
-	0x73, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75,
-	0x73, 0x74, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79,
-	0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x75, 0x73,
-	0x74, 0x72, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73,
-	0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x62,
-	0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79,
-	0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x55,
-	0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73,
-	0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73,
-	0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x43, 0x6f,
-	0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69,
-	0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69,
-	0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62,
-	0x69, 0x64, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67,
-	0x65, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74,
-	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, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e,
-	0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72,
-	0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18,
-	0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x69,
-	0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66,
-	0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f,
-	0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x17, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x70, 0x69,
-	0x64, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
-	0x70, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x05, 0x50, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x43, 0x6f,
-	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76,
-	0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61,
-	0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a,
-	0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x70, 0x74, 0x12,
-	0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65,
-	0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x72,
-	0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72,
-	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70,
-	0x72, 0x6f, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22,
-	0xc2, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52,
-	0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65,
-	0x4f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x4f,
-	0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a,
-	0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06,
-	0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73,
-	0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79,
-	0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
-	0x54, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69,
-	0x6d, 0x69, 0x74, 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, 0x12, 0x0a, 0x04, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32,
-	0x80, 0x01, 0x0a, 0x06, 0x42, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65,
-	0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78,
-	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12,
-	0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
-	0x73, 0x70, 0x12, 0x3e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69,
-	0x74, 0x12, 0x16, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
-	0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65,
-	0x73, 0x70, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61, 0x67, 0x65, 0x12,
+	0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x57, 0x6f, 0x72, 0x64,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70,
+	0x74, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65,
+	0x70, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a,
+	0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72,
+	0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x63,
+	0x65, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xb7, 0x05, 0x0a, 0x0a,
+	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72,
+	0x65, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x18,
+	0x0a, 0x07, 0x61, 0x72, 0x65, 0x61, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x07, 0x61, 0x72, 0x65, 0x61, 0x55, 0x72, 0x6c, 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, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06,
+	0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65,
+	0x74, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79,
+	0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x55, 0x72, 0x6c, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x75, 0x73, 0x74, 0x72, 0x79, 0x55,
+	0x72, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d,
+	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68,
+	0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e,
+	0x0a, 0x0a, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1e,
+	0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01,
+	0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x14,
+	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
+	0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63,
+	0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6f, 0x6c,
+	0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x69, 0x64, 0x61, 0x6d, 0x6f,
+	0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x69, 0x64, 0x61, 0x6d,
+	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 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, 0x14,
+	0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62,
+	0x75, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x13,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b,
+	0x62, 0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x6f, 0x70, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f,
+	0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x49, 0x6e,
+	0x66, 0x6f, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x16,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64,
+	0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, 0x43,
+	0x6f, 0x64, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x70, 0x69, 0x64, 0x65,
+	0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x05, 0x50, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x64,
+	0x65, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74,
+	0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x72, 0x6f,
+	0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70,
+	0x72, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+	0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x70, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x61,
+	0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x54,
+	0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79,
+	0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65,
+	0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70,
+	0x70, 0x72, 0x6f, 0x76, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xc2, 0x01, 0x0a, 0x0e,
+	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14,
+	0x0a, 0x05, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61,
+	0x70, 0x70, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x14,
+	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63,
+	0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x65,
+	0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72,
+	0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
+	0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65,
+	0x22, 0x59, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 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, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0x80, 0x01, 0x0a, 0x06,
+	0x42, 0x78, 0x43, 0x6f, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x62, 0x78, 0x63,
+	0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3e,
+	0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x2e,
+	0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d,
+	0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x53,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0a,
+	0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x78, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (

+ 7 - 7
jyBXCore/rpc/util/search.go

@@ -62,21 +62,21 @@ func FilteKey(k string) string {
 	return k
 }
 
-//超过20个字,截断
+//超过keywordsLimit个字,截断
 //返回截取后的字符串和截取掉中的前3个字
-func InterceptSearchKW(word string, isIntercept, isFilter bool) (b_word, a_word, s_word string) {
+func InterceptSearchKW(word string, keywordsLimit int, isFilter bool) (b_word, a_word, s_word string) {
 	if isFilter {
 		word = FilteKey(word)
 	}
 	word = MatchSpace.ReplaceAllString(strings.TrimSpace(word), " ")
 	words := []rune(word)
-	if len(words) > 20 && isIntercept {
-		b_word = string(words[:20])
+	if len(words) > keywordsLimit {
+		b_word = string(words[:keywordsLimit])
 		b_word = strings.TrimSpace(b_word)
-		if len(words) > 23 {
-			a_word = string(words[20:23])
+		if len(words) > keywordsLimit+3 {
+			a_word = string(words[keywordsLimit : keywordsLimit+3])
 		} else {
-			a_word = string(words[20:])
+			a_word = string(words[keywordsLimit:])
 		}
 	} else {
 		b_word = word

+ 8 - 1
jyBXSubscribe/README.md

@@ -21,4 +21,11 @@ https://yapi.jydev.jianyu360.com/project/63/interface/api/cat_104
     6.首次用户推送查询“其他”
     7.某个通知??是否已读
     8.会员订阅的行业
-```
+3、订阅信息接口
+```
+
+
+goctl api go -api bxsubscribe.api -dir . -style goZero 
+ 
+ 
+goctl rpc protoc bxsubscribe.proto --go_out=./type --go-grpc_out=./type --zrpc_out=.

BIN
jyBXSubscribe/api/api.exe


+ 19 - 0
jyBXSubscribe/api/bxsubscribe.api

@@ -41,10 +41,29 @@ type (
 		Err_msg  string      `json:"error_msg"`
 		Data     interface{} `json:"data"`
 	}
+	//
+	subscribeUpdateReq {
+		Area            map[string]interface{}   `json:"area,optional"`            //地区
+		Buyerclass      []string                 `json:"buyerclass,optional"`      //采购单位类型
+		Items           []map[string]interface{} `json:"items,optional"`           //关键词
+		Infotype        []string                 `json:"infotype,optional"`        //信息类型
+		Matchway        string                   `json:"matchway,optional"`        //匹配方式 1标题 2正文
+		Projectmatch    string                   `json:"projectmatch,optional"`    //项目匹配 1开始 0关闭
+		Ratemode        string                   `json:"ratemode,optional"`        // 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
+		Apppush         string                   `json:"apppush,optional"`         //app推送 1开启 0关闭
+		Mailpush        string                   `json:"mailpush,optional"`        //邮箱推送 1开启 0关闭
+		Mail            string                   `json:"mail,optional"`            //邮箱
+		Otherbuyerclass string                   `json:"otherbuyerclass,optional"` //匹配未分类类型 1匹配 0不匹配
+		AppId           string                   `header:"appId,optional"`
+		UserType        string                   `path:"userType,optional"`
+		UserId          string                   `header:"userId,optional"`
+	}
 )
 service bxsubscribe-api {
 	@handler subscribeList
 	post /jybx/subscribe/:userType/list(subscribeReq) returns (commonResp)
 	@handler someInfo
 	post /jybx/subscribe/:userType/someInfo(someInfoReq) returns (commonResp)
+	@handler subscribeUpdate
+	post /jybx/subscribe/:userType/update(subscribeUpdateReq) returns (commonResp)
 }

+ 4 - 0
jyBXSubscribe/api/etc/db.yaml

@@ -1,4 +1,8 @@
 mongo:
+    main:
+        dbName: qfw
+        size: 5
+        address: 192.168.3.206:27080
     mgoLog:
         address: 192.168.3.206:27090
         size: 5

+ 12 - 1
jyBXSubscribe/api/init/db.go

@@ -4,13 +4,15 @@
 package init
 
 import (
+	"jyBXSubscribe/entity"
+
 	"app.yhyue.com/moapp/jybase/mongodb"
 	"github.com/zeromicro/go-zero/core/logx"
-	"jyBXSubscribe/entity"
 )
 
 var (
 	MgoLog mongodb.MongodbSim
+	Mgo    mongodb.MongodbSim
 )
 
 //
@@ -27,4 +29,13 @@ func MongoDBInit(em *entity.Mongo) {
 		}
 		MgoLog.InitPool()
 	}
+	if em.Main.Address != "" {
+		logx.Info("--初始化 mongodb log--")
+		Mgo = mongodb.MongodbSim{
+			MongodbAddr: em.Main.Address,
+			Size:        em.Main.Size,
+			DbName:      em.Main.DbName,
+		}
+		Mgo.InitPool()
+	}
 }

+ 4 - 3
jyBXSubscribe/api/init/init.go

@@ -1,14 +1,15 @@
 package init
 
 import (
-	MC "app.yhyue.com/moapp/jybase/common"
 	"flag"
-	"github.com/zeromicro/go-zero/core/conf"
-	"github.com/zeromicro/go-zero/core/logx"
 	"jyBXSubscribe/api/internal/config"
 	"jyBXSubscribe/entity"
 	"log"
 	"regexp"
+
+	MC "app.yhyue.com/moapp/jybase/common"
+	"github.com/zeromicro/go-zero/core/conf"
+	"github.com/zeromicro/go-zero/core/logx"
 )
 
 var configFile = flag.String("cf", "etc/bxsubscribe-api.yaml", "the config file")

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

@@ -22,6 +22,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/jybx/subscribe/:userType/someInfo",
 				Handler: someInfoHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodPost,
+				Path:    "/jybx/subscribe/:userType/update",
+				Handler: subscribeUpdateHandler(serverCtx),
+			},
 		},
 	)
 }

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

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

+ 140 - 0
jyBXSubscribe/api/internal/logic/subscribeupdatelogic.go

@@ -0,0 +1,140 @@
+package logic
+
+import (
+	"context"
+	"fmt"
+	it "jyBXSubscribe/api/init"
+	"jyBXSubscribe/api/internal/svc"
+	"jyBXSubscribe/api/internal/types"
+	"jyBXSubscribe/rpc/model/service"
+	"time"
+
+	"app.yhyue.com/moapp/jybase/common"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type SubscribeUpdateLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewSubscribeUpdateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SubscribeUpdateLogic {
+	return &SubscribeUpdateLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+//
+func (l *SubscribeUpdateLogic) SubscribeUpdate(req *types.SubscribeUpdateReq) (resp *types.CommonResp, err error) {
+	resp = &types.CommonResp{} //出参
+
+	if req.UserId == "" {
+		return
+	}
+	subService := &service.SubseribeService{
+		UserId: req.UserId,
+		Mgo:    it.Mgo,
+	}
+	if req.Area != nil {
+		subService.Area = req.Area
+	}
+	if req.Apppush != "" {
+		subService.Apppush = req.Apppush
+	}
+	if req.Buyerclass != nil {
+		subService.Buyerclass = req.Buyerclass
+	}
+	if req.Infotype != nil {
+		subService.Infotype = req.Infotype
+	}
+	if KeyWordsRepeat(req.Items) {
+		resp.Data = map[string]interface{}{
+			"status": -1,
+		}
+		resp.Err_code, resp.Err_msg = -1, "关键词设置异常"
+		return
+	}
+	if req.Items != nil {
+		subService.Items = req.Items
+	}
+	if req.Mail != "" {
+		subService.Mail = req.Mail
+	}
+	if req.Mailpush != "" {
+		subService.Mailpush = req.Mailpush
+	}
+	if req.Matchway != "" {
+		subService.Matchway = req.Matchway
+	}
+	if req.Otherbuyerclass != "" {
+		subService.Otherbuyerclass = req.Otherbuyerclass
+	}
+	if req.Projectmatch != "" {
+		subService.Projectmatch = req.Projectmatch
+	}
+	if req.Ratemode != "" {
+		subService.Ratemode = req.Ratemode
+	}
+	status, err := subService.Update()
+	if err != nil {
+		resp.Err_code, resp.Err_msg = -1, "修改失败"
+		l.Error(fmt.Sprintf("%+v", req), resp.Err_msg)
+	} else {
+		it.MgoLog.Save("ovipjy_log", map[string]interface{}{
+			"userid":     req.UserId,
+			"o_vipjy":    req,
+			"createtime": time.Now().Unix(),
+			"type":       "o_vipjy",
+		})
+		resp.Data = map[string]interface{}{
+			"status": status,
+		}
+	}
+	return
+}
+
+//判断关键词是否异常,
+func KeyWordsRepeat(aitems []map[string]interface{}) bool {
+	m := map[string]bool{} //去重的数组
+	// 录入的关键词
+	i := 0
+	for _, items := range aitems {
+		for kk, vv := range items {
+			if kk == "a_key" {
+				for _, n := range common.ObjArrToMapArr(vv.([]interface{})) {
+					db_not := []string{}
+					db_key := []string{}
+					db_append := []string{}
+					matchway := 0
+					if n["key"] != nil {
+						db_key = common.ObjArrToStringArr(n["key"].([]interface{}))
+					}
+					if n["notkey"] != nil {
+						db_not = common.ObjArrToStringArr(n["notkey"].([]interface{}))
+					}
+					if n["appendkey"] != nil {
+						db_append = common.ObjArrToStringArr(n["appendkey"].([]interface{}))
+					}
+					if n["matchway"] != nil {
+						matchway = common.IntAll(n["matchway"])
+					}
+					key := fmt.Sprintf("%v%v%v%s", db_key, db_append, db_not, matchway)
+					if m[key] {
+						return true //有重复 不可以提交
+					}
+					i++
+					m[key] = true
+				}
+			}
+		}
+	}
+	if i > 300 {
+		//关键词大于300异常
+		return true
+	}
+	return false
+}

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

@@ -33,3 +33,20 @@ type CommonResp struct {
 	Err_msg  string      `json:"error_msg"`
 	Data     interface{} `json:"data"`
 }
+
+type SubscribeUpdateReq struct {
+	Area            map[string]interface{}   `json:"area,optional"`            //地区
+	Buyerclass      []string                 `json:"buyerclass,optional"`      //采购单位类型
+	Items           []map[string]interface{} `json:"items,optional"`           //关键词
+	Infotype        []string                 `json:"infotype,optional"`        //信息类型
+	Matchway        string                   `json:"matchway,optional"`        //匹配方式 1标题 2正文
+	Projectmatch    string                   `json:"projectmatch,optional"`    //项目匹配 1开始 0关闭
+	Ratemode        string                   `json:"ratemode,optional"`        // 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
+	Apppush         string                   `json:"apppush,optional"`         //app推送 1开启 0关闭
+	Mailpush        string                   `json:"mailpush,optional"`        //邮箱推送 1开启 0关闭
+	Mail            string                   `json:"mail,optional"`            //邮箱
+	Otherbuyerclass string                   `json:"otherbuyerclass,optional"` //匹配未分类类型 1匹配 0不匹配
+	AppId           string                   `header:"appId,optional"`
+	UserType        string                   `path:"userType,optional"`
+	UserId          string                   `header:"userId,optional"`
+}

+ 33 - 0
jyBXSubscribe/api/logs/access.log

@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 {"@timestamp":"2022-09-09T08:45:11.260+08:00","level":"info","duration":"153.9ms","content":"[HTTP] POST - 200 - /jybx/subscribe/fType/list - 127.0.0.1:49848 - ApiPOST Runtime +https://www.apipost.cn","trace":"17617ced98c38358b04c6b746160c73a","span":"90a102578f08965c"}
 {"@timestamp":"2022-09-09T08:47:48.897+08:00","level":"info","duration":"8003.6ms","content":"fail - discov:/127.0.0.1:2379/bxsubscribe.rpc/bxsubscribe.Bxsubscribe/GetSubList - pageNum:1 pageSize:10 userType:\"fType\" userId:\"6233ea2675219e035e762a90\" newUserId:73535 - rpc error: code = DeadlineExceeded desc = context deadline exceeded","trace":"f2c49ee2698f57ccc27869513ec6919c","span":"70e9fab2332f4275"}
 {"@timestamp":"2022-09-09T08:50:32.109+08:00","level":"info","duration":"7189.2ms","content":"[HTTP] POST - 200 - /jybx/subscribe/fType/list - 127.0.0.1:50420 - ApiPOST Runtime +https://www.apipost.cn","trace":"25e126eef180472c5e8b9422b0cbdb36","span":"920098e3e5cc0601"}
@@ -58,3 +59,35 @@
 {"@timestamp":"2022-09-13T16:52:39.371+08:00","level":"info","content":"info--日志记录"}
 {"@timestamp":"2022-09-13T16:52:39.371+08:00","level":"info","content":"error--日志记录"}
 {"@timestamp":"2022-09-13T16:54:55.467+08:00","level":"info","duration":"0.0ms","content":"fail - discov:/127.0.0.1:2379/bxsubscribe.rpc/bxsubscribe.Bxsubscribe/GetSubList - pageNum:1  pageSize:100  userType:\"vType\"  userId:\"61f3a3c746af8f8a5c513175\"  newUserId:73116 - rpc error: code = DeadlineExceeded desc = context deadline exceeded","trace":"1d7ae02f0e7dd14b9dbd5e810b5dbd9a","span":"781f9552a443071f"}
+=======
+{"@timestamp":"2022-08-29T18:13:40.224+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:13:40.224+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:15:17.285+08:00","level":"info","duration":"0.7ms","content":"[HTTP] POST - 400 - /jybx/subscribe/vType/update - 127.0.0.1:58617 - PostmanRuntime/7.26.8","trace":"22d7f6fb0fec9c0ce573ee55e17ac26f","span":"02bbc02426c5373e"}
+{"@timestamp":"2022-08-29T18:16:36.879+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:16:36.879+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:16:39.300+08:00","level":"info","duration":"2.4ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:58847 - PostmanRuntime/7.26.8","trace":"09c2199d4b942aa27281a48429a647d1","span":"113e1b7579d473b2"}
+{"@timestamp":"2022-08-29T18:19:29.554+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:19:29.554+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:19:31.645+08:00","level":"info","duration":"6.4ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:59333 - PostmanRuntime/7.26.8","trace":"20586d51a67336c351fc30c7aae83e34","span":"fe88f451d4f42222"}
+{"@timestamp":"2022-08-29T18:20:01.371+08:00","level":"info","duration":"2.9ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:59333 - PostmanRuntime/7.26.8","trace":"1bdabdc8c9bebb5714fd2d378a0d69a5","span":"8c4c44f41d4ebc36"}
+{"@timestamp":"2022-08-29T18:21:57.202+08:00","level":"info","duration":"3.8ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:59333 - PostmanRuntime/7.26.8","trace":"7da82a9cecfd4f3bfb7348082cf0d9ff","span":"78110b2fc8f344cb"}
+{"@timestamp":"2022-08-29T18:22:14.016+08:00","level":"info","duration":"3.6ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:59333 - PostmanRuntime/7.26.8","trace":"dd011cd695fef38179c23d0f57ae9de3","span":"b12f98b22561b4ef"}
+{"@timestamp":"2022-08-29T18:23:50.966+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:23:50.966+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:23:53.617+08:00","level":"info","duration":"6.8ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:59961 - PostmanRuntime/7.26.8","trace":"db1a345037ca36cbc6cb3785722d3c34","span":"a638cf96dff50696"}
+{"@timestamp":"2022-08-29T18:25:02.690+08:00","level":"info","duration":"6.4ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:59961 - PostmanRuntime/7.26.8","trace":"1f4a34f816dbfe7c21c72793705a620f","span":"455ab9fa0fedeafc"}
+{"@timestamp":"2022-08-29T18:31:59.291+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:31:59.291+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:32:01.602+08:00","level":"info","duration":"2.0ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:61395 - PostmanRuntime/7.26.8","trace":"f935e43e6a1bb1199b25c76520973d41","span":"5396d7180a852bd6"}
+{"@timestamp":"2022-08-29T18:40:48.215+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:40:48.215+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:40:54.434+08:00","level":"info","duration":"2.1ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:62806 - PostmanRuntime/7.26.8","trace":"693866bd249e07b58335609cb890547c","span":"bf8cdbf53b09dec1"}
+{"@timestamp":"2022-08-29T18:41:46.220+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T18:41:46.220+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T18:41:48.197+08:00","level":"info","duration":"1.2ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:62952 - PostmanRuntime/7.26.8","trace":"268f4271bd85fc030638bf6c5b131117","span":"57dfe7b7a874f60c"}
+{"@timestamp":"2022-08-29T19:32:57.157+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T19:32:57.157+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T19:34:12.928+08:00","level":"info","content":"info--日志记录"}
+{"@timestamp":"2022-08-29T19:34:12.928+08:00","level":"info","content":"error--日志记录"}
+{"@timestamp":"2022-08-29T19:34:15.830+08:00","level":"info","duration":"5.3ms","content":"[HTTP] POST - 200 - /jybx/subscribe/vType/update - 127.0.0.1:54214 - PostmanRuntime/7.26.8","trace":"a832b54aaa3a012c27295ed053ccea32","span":"2b079e9db7873f2d"}
+>>>>>>> origin/feature/v1.1.5

+ 4 - 0
jyBXSubscribe/api/logs/error.log-2022-08-29

@@ -0,0 +1,4 @@
+{"@timestamp":"2022-08-29T18:18:55.220+08:00","level":"error","content":"discovbuilder.go:34 bad resolver state"}
+{"@timestamp":"2022-08-29T18:24:54.444+08:00","level":"error","content":"discovbuilder.go:34 bad resolver state"}
+{"@timestamp":"2022-08-29T23:44:51.129+08:00","level":"error","content":"discovbuilder.go:34 bad resolver state"}
+{"@timestamp":"2022-08-29T23:44:51.433+08:00","level":"error","content":"NewReigster.go:111 etcdserver: requested lease not found"}

+ 430 - 0
jyBXSubscribe/api/logs/stat.log-2022-08-29

@@ -0,0 +1,430 @@
+{"@timestamp":"2022-08-29T18:14:40.200+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.1Mi, TotalAlloc=8.2Mi, Sys=18.9Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:14:40.246+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:15:40.196+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=8.5Mi, Sys=18.9Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:15:40.243+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T18:16:17.296+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.7ms, 90th: 0.7ms, 99th: 0.7ms, 99.9th: 0.7ms"}
+{"@timestamp":"2022-08-29T18:16:39.300+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 1258, reqs: 1"}
+{"@timestamp":"2022-08-29T18:17:36.878+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=8.3Mi, Sys=19.2Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:17:36.893+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T18:17:39.310+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 2.0ms, med: 2.4ms, 90th: 2.4ms, 99th: 2.4ms, 99.9th: 2.4ms"}
+{"@timestamp":"2022-08-29T18:18:36.867+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=8.6Mi, Sys=19.2Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:18:36.899+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:18:39.303+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:19:31.645+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 2423, reqs: 1"}
+{"@timestamp":"2022-08-29T18:20:29.548+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=8.4Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:20:29.579+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 2, pass: 2, drop: 0"}
+{"@timestamp":"2022-08-29T18:20:31.661+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 4.5ms, med: 6.4ms, 90th: 6.4ms, 99th: 6.4ms, 99.9th: 6.4ms"}
+{"@timestamp":"2022-08-29T18:21:29.548+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.6Mi, TotalAlloc=8.7Mi, Sys=18.4Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:21:29.579+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:21:31.656+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:21:57.202+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 1809, reqs: 2"}
+{"@timestamp":"2022-08-29T18:22:29.554+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=8.9Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:22:29.585+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 2, pass: 2, drop: 0"}
+{"@timestamp":"2022-08-29T18:22:31.660+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 3.5ms, med: 3.8ms, 90th: 3.8ms, 99th: 3.8ms, 99.9th: 3.8ms"}
+{"@timestamp":"2022-08-29T18:23:29.575+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:23:29.575+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=9.1Mi, Sys=18.7Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:23:31.660+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:23:53.616+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 2386, reqs: 1"}
+{"@timestamp":"2022-08-29T18:24:50.957+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=8.4Mi, Sys=19.9Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:24:50.988+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T18:24:53.626+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 6.0ms, med: 6.8ms, 90th: 6.8ms, 99th: 6.8ms, 99.9th: 6.8ms"}
+{"@timestamp":"2022-08-29T18:25:02.690+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 2397, reqs: 1"}
+{"@timestamp":"2022-08-29T18:25:50.954+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.8Mi, TotalAlloc=8.9Mi, Sys=19.9Mi, NumGC=3"}
+{"@timestamp":"2022-08-29T18:25:50.984+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T18:25:53.618+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 6.0ms, med: 6.4ms, 90th: 6.4ms, 99th: 6.4ms, 99.9th: 6.4ms"}
+{"@timestamp":"2022-08-29T18:26:50.962+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.1Mi, TotalAlloc=9.0Mi, Sys=19.9Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:26:50.993+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:26:53.617+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:27:51.025+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.1Mi, Sys=19.9Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:27:51.027+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:27:53.626+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:28:50.965+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.0Mi, TotalAlloc=9.2Mi, Sys=19.9Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T18:28:50.980+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:28:53.629+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:29:50.955+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.1Mi, TotalAlloc=9.4Mi, Sys=19.9Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T18:29:50.987+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:29:53.629+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:30:50.960+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.0Mi, TotalAlloc=9.5Mi, Sys=20.2Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T18:30:50.990+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:30:53.622+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:32:01.602+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 746, reqs: 1"}
+{"@timestamp":"2022-08-29T18:32:59.277+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.1Mi, TotalAlloc=9.0Mi, Sys=19.4Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:32:59.308+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T18:33:01.617+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 2.0ms, med: 2.0ms, 90th: 2.0ms, 99th: 2.0ms, 99.9th: 2.0ms"}
+{"@timestamp":"2022-08-29T18:33:59.279+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=9.2Mi, Sys=19.4Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:33:59.309+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:34:01.609+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:34:59.278+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.4Mi, Sys=19.7Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T18:34:59.310+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:35:01.617+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:35:59.281+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=9.5Mi, Sys=19.7Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T18:35:59.312+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:36:01.608+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:36:59.292+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.6Mi, Sys=19.7Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T18:36:59.308+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:37:01.612+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:37:59.288+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=9.7Mi, Sys=19.7Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T18:37:59.305+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:38:01.617+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:38:59.286+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.9Mi, Sys=19.7Mi, NumGC=7"}
+{"@timestamp":"2022-08-29T18:38:59.317+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:39:01.606+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:39:59.287+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=10.0Mi, Sys=19.7Mi, NumGC=7"}
+{"@timestamp":"2022-08-29T18:39:59.318+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:40:54.433+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 733, reqs: 1"}
+{"@timestamp":"2022-08-29T18:41:48.197+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 1038, reqs: 1"}
+{"@timestamp":"2022-08-29T18:42:46.221+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.1Mi, TotalAlloc=9.2Mi, Sys=23.5Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:42:46.241+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T18:42:48.201+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 1.0ms, med: 1.1ms, 90th: 1.1ms, 99th: 1.1ms, 99.9th: 1.1ms"}
+{"@timestamp":"2022-08-29T18:43:46.212+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=9.4Mi, Sys=23.8Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T18:43:46.243+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:43:48.201+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:44:46.216+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.6Mi, Sys=23.8Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T18:44:46.247+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:44:48.213+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:45:46.223+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=9.8Mi, Sys=23.8Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T18:45:46.238+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:45:48.205+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:46:46.211+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.9Mi, Sys=23.8Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T18:46:46.242+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:46:48.212+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:47:46.210+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=10.1Mi, Sys=23.8Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T18:47:46.240+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:47:48.203+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:48:46.207+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=10.3Mi, Sys=23.8Mi, NumGC=7"}
+{"@timestamp":"2022-08-29T18:48:46.239+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:48:48.210+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:49:46.218+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=10.4Mi, Sys=23.8Mi, NumGC=7"}
+{"@timestamp":"2022-08-29T18:49:46.249+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:49:48.212+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:50:46.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=10.6Mi, Sys=23.8Mi, NumGC=8"}
+{"@timestamp":"2022-08-29T18:50:46.251+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:50:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:51:46.216+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=10.8Mi, Sys=23.8Mi, NumGC=8"}
+{"@timestamp":"2022-08-29T18:51:46.247+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:51:48.202+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:52:46.212+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=10.9Mi, Sys=23.8Mi, NumGC=9"}
+{"@timestamp":"2022-08-29T18:52:46.244+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:52:48.204+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:53:46.215+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=11.1Mi, Sys=23.8Mi, NumGC=9"}
+{"@timestamp":"2022-08-29T18:53:46.246+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:53:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:54:46.208+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=11.2Mi, Sys=23.8Mi, NumGC=10"}
+{"@timestamp":"2022-08-29T18:54:46.239+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:54:48.198+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:55:46.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=11.4Mi, Sys=23.8Mi, NumGC=10"}
+{"@timestamp":"2022-08-29T18:55:46.251+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:55:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:56:46.219+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=11.5Mi, Sys=23.8Mi, NumGC=11"}
+{"@timestamp":"2022-08-29T18:56:46.249+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:56:48.204+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:57:46.212+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=11.7Mi, Sys=23.8Mi, NumGC=11"}
+{"@timestamp":"2022-08-29T18:57:46.243+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:57:48.211+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:58:46.221+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=11.9Mi, Sys=23.8Mi, NumGC=12"}
+{"@timestamp":"2022-08-29T18:58:46.237+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:58:48.205+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T18:59:46.215+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=12.0Mi, Sys=23.8Mi, NumGC=12"}
+{"@timestamp":"2022-08-29T18:59:46.246+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T18:59:48.201+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:00:46.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=12.2Mi, Sys=23.8Mi, NumGC=13"}
+{"@timestamp":"2022-08-29T19:00:46.251+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:00:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:01:46.211+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=12.3Mi, Sys=23.8Mi, NumGC=13"}
+{"@timestamp":"2022-08-29T19:01:46.241+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:01:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:02:46.221+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=12.5Mi, Sys=23.8Mi, NumGC=14"}
+{"@timestamp":"2022-08-29T19:02:46.252+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:02:48.198+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:03:46.216+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=12.6Mi, Sys=23.8Mi, NumGC=14"}
+{"@timestamp":"2022-08-29T19:03:46.247+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:03:48.209+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:04:46.210+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=12.8Mi, Sys=23.8Mi, NumGC=15"}
+{"@timestamp":"2022-08-29T19:04:46.241+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:04:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:05:46.217+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.0Mi, Sys=23.8Mi, NumGC=15"}
+{"@timestamp":"2022-08-29T19:05:46.247+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:05:48.200+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:06:46.208+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=13.1Mi, Sys=23.8Mi, NumGC=16"}
+{"@timestamp":"2022-08-29T19:06:46.239+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:06:48.207+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:07:46.213+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.3Mi, Sys=23.8Mi, NumGC=16"}
+{"@timestamp":"2022-08-29T19:07:46.244+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:07:48.204+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:08:46.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=13.4Mi, Sys=23.8Mi, NumGC=17"}
+{"@timestamp":"2022-08-29T19:08:46.252+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:08:48.207+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:09:46.209+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.6Mi, Sys=23.8Mi, NumGC=17"}
+{"@timestamp":"2022-08-29T19:09:46.240+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:09:48.210+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:10:46.222+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=13.7Mi, Sys=23.8Mi, NumGC=18"}
+{"@timestamp":"2022-08-29T19:10:46.252+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:10:48.198+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:11:46.217+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.9Mi, Sys=23.8Mi, NumGC=18"}
+{"@timestamp":"2022-08-29T19:11:46.248+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:11:48.199+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:12:46.214+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=14.1Mi, Sys=23.8Mi, NumGC=19"}
+{"@timestamp":"2022-08-29T19:12:46.245+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:12:48.204+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:13:46.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=14.2Mi, Sys=23.8Mi, NumGC=19"}
+{"@timestamp":"2022-08-29T19:13:46.251+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:13:48.207+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:14:46.215+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=14.4Mi, Sys=23.8Mi, NumGC=20"}
+{"@timestamp":"2022-08-29T19:14:46.245+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:14:48.198+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:15:46.220+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=14.5Mi, Sys=23.8Mi, NumGC=20"}
+{"@timestamp":"2022-08-29T19:15:46.250+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:15:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:16:46.218+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=14.7Mi, Sys=23.8Mi, NumGC=21"}
+{"@timestamp":"2022-08-29T19:16:46.248+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:16:48.210+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:17:46.218+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=14.8Mi, Sys=23.8Mi, NumGC=21"}
+{"@timestamp":"2022-08-29T19:17:46.249+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:17:48.199+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:18:46.210+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.0Mi, Sys=23.8Mi, NumGC=22"}
+{"@timestamp":"2022-08-29T19:18:46.241+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:18:48.203+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:19:46.216+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=15.2Mi, Sys=23.8Mi, NumGC=22"}
+{"@timestamp":"2022-08-29T19:19:46.248+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:19:48.201+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:20:46.213+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.3Mi, Sys=23.8Mi, NumGC=23"}
+{"@timestamp":"2022-08-29T19:20:46.244+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:20:48.199+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:21:46.214+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=15.5Mi, Sys=23.8Mi, NumGC=23"}
+{"@timestamp":"2022-08-29T19:21:46.244+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:21:48.210+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:22:46.208+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.6Mi, Sys=23.8Mi, NumGC=24"}
+{"@timestamp":"2022-08-29T19:22:46.238+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:22:48.212+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:23:46.216+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=15.8Mi, Sys=23.8Mi, NumGC=24"}
+{"@timestamp":"2022-08-29T19:23:46.246+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:23:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:24:46.213+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.9Mi, Sys=23.8Mi, NumGC=25"}
+{"@timestamp":"2022-08-29T19:24:46.243+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:24:48.198+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:25:46.212+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=16.1Mi, Sys=23.8Mi, NumGC=25"}
+{"@timestamp":"2022-08-29T19:25:46.242+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:25:48.204+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:26:46.213+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=16.2Mi, Sys=23.8Mi, NumGC=26"}
+{"@timestamp":"2022-08-29T19:26:46.243+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:26:48.208+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:27:46.214+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=16.4Mi, Sys=23.8Mi, NumGC=26"}
+{"@timestamp":"2022-08-29T19:27:46.245+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:27:48.206+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:28:46.216+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=16.6Mi, Sys=23.8Mi, NumGC=27"}
+{"@timestamp":"2022-08-29T19:28:46.246+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:28:48.211+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:29:46.228+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=16.7Mi, Sys=23.8Mi, NumGC=27"}
+{"@timestamp":"2022-08-29T19:29:46.251+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:29:48.204+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:34:15.830+08:00","level":"stat","content":"p2c - conn: 192.168.150.166:8001, load: 1025, reqs: 1"}
+{"@timestamp":"2022-08-29T19:35:12.919+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=9.2Mi, Sys=23.8Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T19:35:12.951+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 1, pass: 1, drop: 0"}
+{"@timestamp":"2022-08-29T19:35:15.843+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 5.0ms, med: 5.3ms, 90th: 5.3ms, 99th: 5.3ms, 99.9th: 5.3ms"}
+{"@timestamp":"2022-08-29T19:37:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=9.2Mi, Sys=24.3Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T19:37:40.981+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 2, pass: 2, drop: 0"}
+{"@timestamp":"2022-08-29T19:37:42.995+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 3.5ms, med: 4.5ms, 90th: 4.5ms, 99th: 4.5ms, 99.9th: 4.5ms"}
+{"@timestamp":"2022-08-29T19:38:40.943+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.7Mi, TotalAlloc=9.4Mi, Sys=24.3Mi, NumGC=4"}
+{"@timestamp":"2022-08-29T19:38:40.974+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:38:42.993+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:39:40.937+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=9.6Mi, Sys=24.3Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T19:39:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:39:42.993+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:40:40.932+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=9.8Mi, Sys=24.3Mi, NumGC=5"}
+{"@timestamp":"2022-08-29T19:40:40.978+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:40:42.991+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:41:40.945+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=9.9Mi, Sys=24.3Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T19:41:40.976+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:41:42.996+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:42:40.943+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=10.1Mi, Sys=24.3Mi, NumGC=6"}
+{"@timestamp":"2022-08-29T19:42:40.974+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:42:42.994+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:43:40.943+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=10.3Mi, Sys=24.3Mi, NumGC=7"}
+{"@timestamp":"2022-08-29T19:43:40.973+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:43:42.993+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:44:40.941+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=10.4Mi, Sys=24.3Mi, NumGC=7"}
+{"@timestamp":"2022-08-29T19:44:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:44:42.992+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:45:40.940+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=10.6Mi, Sys=24.3Mi, NumGC=8"}
+{"@timestamp":"2022-08-29T19:45:40.971+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:45:43.002+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:46:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=10.8Mi, Sys=24.3Mi, NumGC=8"}
+{"@timestamp":"2022-08-29T19:46:40.981+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:46:42.994+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:47:40.931+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=10.9Mi, Sys=24.3Mi, NumGC=9"}
+{"@timestamp":"2022-08-29T19:47:40.979+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:47:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:48:40.937+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=11.1Mi, Sys=24.3Mi, NumGC=9"}
+{"@timestamp":"2022-08-29T19:48:40.984+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:48:43.002+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:49:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=11.2Mi, Sys=24.3Mi, NumGC=10"}
+{"@timestamp":"2022-08-29T19:49:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:49:43.005+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:50:40.945+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=11.4Mi, Sys=24.3Mi, NumGC=10"}
+{"@timestamp":"2022-08-29T19:50:40.977+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:50:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:51:40.933+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=11.6Mi, Sys=24.3Mi, NumGC=11"}
+{"@timestamp":"2022-08-29T19:51:40.979+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:51:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:52:40.938+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=11.7Mi, Sys=24.3Mi, NumGC=11"}
+{"@timestamp":"2022-08-29T19:52:40.986+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:52:43.003+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:53:40.945+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=11.9Mi, Sys=24.3Mi, NumGC=12"}
+{"@timestamp":"2022-08-29T19:53:40.975+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:53:42.999+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:54:40.938+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=12.0Mi, Sys=24.3Mi, NumGC=12"}
+{"@timestamp":"2022-08-29T19:54:40.985+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:54:42.997+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:55:40.933+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=12.2Mi, Sys=24.3Mi, NumGC=13"}
+{"@timestamp":"2022-08-29T19:55:40.980+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:55:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:56:40.944+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=12.3Mi, Sys=24.3Mi, NumGC=13"}
+{"@timestamp":"2022-08-29T19:56:40.974+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:56:42.990+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:57:40.938+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=12.5Mi, Sys=24.3Mi, NumGC=14"}
+{"@timestamp":"2022-08-29T19:57:40.985+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:57:42.990+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:58:40.942+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=12.7Mi, Sys=24.3Mi, NumGC=14"}
+{"@timestamp":"2022-08-29T19:58:40.974+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:58:42.998+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T19:59:40.946+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=12.8Mi, Sys=24.3Mi, NumGC=15"}
+{"@timestamp":"2022-08-29T19:59:40.976+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T19:59:42.992+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:00:40.946+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.0Mi, Sys=24.3Mi, NumGC=15"}
+{"@timestamp":"2022-08-29T20:00:40.976+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:00:42.999+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:01:40.936+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=13.1Mi, Sys=24.3Mi, NumGC=16"}
+{"@timestamp":"2022-08-29T20:01:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:01:43.003+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:02:40.940+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.3Mi, Sys=24.3Mi, NumGC=16"}
+{"@timestamp":"2022-08-29T20:02:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:02:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:03:40.931+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=13.4Mi, Sys=24.3Mi, NumGC=17"}
+{"@timestamp":"2022-08-29T20:03:40.978+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:03:42.999+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:04:40.937+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.6Mi, Sys=24.3Mi, NumGC=17"}
+{"@timestamp":"2022-08-29T20:04:40.984+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:04:42.996+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:05:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=13.8Mi, Sys=24.3Mi, NumGC=18"}
+{"@timestamp":"2022-08-29T20:05:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:05:42.998+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:06:40.942+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=13.9Mi, Sys=24.3Mi, NumGC=18"}
+{"@timestamp":"2022-08-29T20:06:40.973+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:06:42.996+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:07:40.938+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=14.1Mi, Sys=24.3Mi, NumGC=19"}
+{"@timestamp":"2022-08-29T20:07:40.985+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:07:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:08:40.931+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=14.2Mi, Sys=24.3Mi, NumGC=19"}
+{"@timestamp":"2022-08-29T20:08:40.977+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:08:42.997+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:09:40.936+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=14.4Mi, Sys=24.3Mi, NumGC=20"}
+{"@timestamp":"2022-08-29T20:09:40.981+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:09:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:10:40.941+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=14.6Mi, Sys=24.3Mi, NumGC=20"}
+{"@timestamp":"2022-08-29T20:10:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:10:42.998+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:11:40.936+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=14.7Mi, Sys=24.3Mi, NumGC=21"}
+{"@timestamp":"2022-08-29T20:11:40.983+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:11:42.995+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:12:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=14.9Mi, Sys=24.3Mi, NumGC=21"}
+{"@timestamp":"2022-08-29T20:12:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:12:43.002+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:13:40.932+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.0Mi, Sys=24.3Mi, NumGC=22"}
+{"@timestamp":"2022-08-29T20:13:40.979+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:13:43.001+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:14:40.941+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=15.2Mi, Sys=24.3Mi, NumGC=22"}
+{"@timestamp":"2022-08-29T20:14:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:14:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:15:40.937+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.3Mi, Sys=24.3Mi, NumGC=23"}
+{"@timestamp":"2022-08-29T20:15:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:15:42.999+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:16:40.934+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=15.5Mi, Sys=24.3Mi, NumGC=23"}
+{"@timestamp":"2022-08-29T20:16:40.980+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:16:42.998+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:17:40.937+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=15.7Mi, Sys=24.3Mi, NumGC=24"}
+{"@timestamp":"2022-08-29T20:17:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:17:42.990+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:18:40.944+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=15.8Mi, Sys=24.3Mi, NumGC=24"}
+{"@timestamp":"2022-08-29T20:18:40.976+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:18:43.001+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:19:40.943+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=16.0Mi, Sys=24.3Mi, NumGC=25"}
+{"@timestamp":"2022-08-29T20:19:40.975+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:19:42.994+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:20:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=16.1Mi, Sys=24.3Mi, NumGC=25"}
+{"@timestamp":"2022-08-29T20:20:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:20:42.995+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:21:40.933+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=16.3Mi, Sys=24.3Mi, NumGC=26"}
+{"@timestamp":"2022-08-29T20:21:40.980+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:21:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:22:40.944+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=16.4Mi, Sys=24.3Mi, NumGC=26"}
+{"@timestamp":"2022-08-29T20:22:40.975+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:22:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:23:40.940+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=16.6Mi, Sys=24.3Mi, NumGC=27"}
+{"@timestamp":"2022-08-29T20:23:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:23:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:24:40.933+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=16.7Mi, Sys=24.3Mi, NumGC=27"}
+{"@timestamp":"2022-08-29T20:24:40.979+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:24:42.995+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:25:40.934+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=16.9Mi, Sys=24.3Mi, NumGC=28"}
+{"@timestamp":"2022-08-29T20:25:40.979+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:25:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:26:40.936+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.4Mi, TotalAlloc=17.1Mi, Sys=24.3Mi, NumGC=28"}
+{"@timestamp":"2022-08-29T20:26:40.982+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:26:42.996+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:27:40.932+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=17.2Mi, Sys=24.3Mi, NumGC=29"}
+{"@timestamp":"2022-08-29T20:27:40.979+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:27:43.000+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:28:40.945+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=17.4Mi, Sys=24.3Mi, NumGC=29"}
+{"@timestamp":"2022-08-29T20:28:40.976+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:28:43.003+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:29:40.939+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=17.5Mi, Sys=24.3Mi, NumGC=30"}
+{"@timestamp":"2022-08-29T20:29:40.986+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:29:42.999+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:30:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=17.7Mi, Sys=24.3Mi, NumGC=30"}
+{"@timestamp":"2022-08-29T20:30:40.981+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:30:43.005+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:31:40.941+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=17.8Mi, Sys=24.3Mi, NumGC=31"}
+{"@timestamp":"2022-08-29T20:31:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:31:43.003+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:32:40.938+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=18.0Mi, Sys=24.3Mi, NumGC=31"}
+{"@timestamp":"2022-08-29T20:32:40.984+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:32:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:33:40.942+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=18.2Mi, Sys=24.3Mi, NumGC=32"}
+{"@timestamp":"2022-08-29T20:33:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:33:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:34:40.942+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=18.3Mi, Sys=24.3Mi, NumGC=32"}
+{"@timestamp":"2022-08-29T20:34:40.972+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:34:42.996+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:35:40.943+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=18.5Mi, Sys=24.3Mi, NumGC=33"}
+{"@timestamp":"2022-08-29T20:35:40.974+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:35:43.003+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:36:40.945+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=18.6Mi, Sys=24.3Mi, NumGC=33"}
+{"@timestamp":"2022-08-29T20:36:40.975+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:36:42.998+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:37:40.940+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=18.8Mi, Sys=24.3Mi, NumGC=34"}
+{"@timestamp":"2022-08-29T20:37:40.971+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:37:42.990+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:38:40.932+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=18.9Mi, Sys=24.3Mi, NumGC=34"}
+{"@timestamp":"2022-08-29T20:38:40.978+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:38:42.990+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:39:40.932+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=19.1Mi, Sys=24.3Mi, NumGC=35"}
+{"@timestamp":"2022-08-29T20:39:40.978+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:39:43.001+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:40:40.935+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=19.2Mi, Sys=24.3Mi, NumGC=35"}
+{"@timestamp":"2022-08-29T20:40:40.980+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:40:43.004+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:41:40.943+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=19.4Mi, Sys=24.3Mi, NumGC=36"}
+{"@timestamp":"2022-08-29T20:41:40.974+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:41:42.990+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:42:40.945+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=19.6Mi, Sys=24.3Mi, NumGC=36"}
+{"@timestamp":"2022-08-29T20:42:40.975+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:42:42.997+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:43:40.937+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.3Mi, TotalAlloc=19.7Mi, Sys=24.3Mi, NumGC=37"}
+{"@timestamp":"2022-08-29T20:43:40.983+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:43:43.003+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T20:44:40.933+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.5Mi, TotalAlloc=19.9Mi, Sys=24.3Mi, NumGC=37"}
+{"@timestamp":"2022-08-29T20:44:40.980+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}
+{"@timestamp":"2022-08-29T20:44:42.996+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T23:44:50.515+08:00","level":"stat","content":"CPU: 0m, MEMORY: Alloc=5.2Mi, TotalAlloc=19.9Mi, Sys=24.3Mi, NumGC=38"}
+{"@timestamp":"2022-08-29T23:44:50.515+08:00","level":"stat","content":"(bxsubscribe-api) - qps: 0.0/s, drops: 0, avg time: 0.0ms, med: 0.0ms, 90th: 0.0ms, 99th: 0.0ms, 99.9th: 0.0ms"}
+{"@timestamp":"2022-08-29T23:44:50.515+08:00","level":"stat","content":"(api) shedding_stat [1m], cpu: 0, total: 0, pass: 0, drop: 0"}

+ 8 - 0
jyBXSubscribe/entity/common.go

@@ -0,0 +1,8 @@
+package entity
+
+const (
+	/*********************dbname******************/
+	User = "user" //用户表
+	/*********************errorMsg****************/
+	UPDATE_ERROR_MSG = "修改失败"
+)

+ 18 - 4
jyBXSubscribe/rpc/bxsubscribe.go

@@ -1,22 +1,36 @@
 package main
 
 import (
+	"flag"
 	"fmt"
 	"log"
 
+	IC "jyBXSubscribe/rpc/init"
+	"jyBXSubscribe/rpc/internal/server"
+	"jyBXSubscribe/rpc/internal/svc"
+	"jyBXSubscribe/rpc/type/bxsubscribe"
+
 	MC "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/endless"
+	"github.com/zeromicro/go-zero/core/conf"
 	"github.com/zeromicro/go-zero/core/service"
 	"github.com/zeromicro/go-zero/zrpc"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/reflection"
-	IC "jyBXSubscribe/rpc/init"
-	"jyBXSubscribe/rpc/internal/server"
-	"jyBXSubscribe/rpc/internal/svc"
-	"jyBXSubscribe/rpc/type/bxsubscribe"
 )
 
+var configF = flag.String("cf", "etc/bxsubscribe.yaml", "the config file")
+var dbFile = flag.String("df", "etc/db.yaml", "the db file")
+var logFile = flag.String("lf", "etc/logs.yaml", "the log file")
+
 func main() {
+	//初始化基本配置
+	conf.MustLoad(*configF, &IC.C)
+	//初始化数据库配置
+	conf.MustLoad(*dbFile, &IC.DB)
+	//初始化日志信息
+	conf.MustLoad(*logFile, &IC.Logc)
+	IC.InitC()
 	//
 	go func() {
 		err := endless.ListenAndServe(":"+MC.InterfaceToStr(IC.C.Webrpcport), nil, func() {})

+ 47 - 0
jyBXSubscribe/rpc/bxsubscribe.proto

@@ -84,9 +84,56 @@ message SomeInfo{
   string userId = 9;//用户id
 
 }
+
+//
+message StatusResp{
+	string error_msg =1;
+	int64 error_code=2;
+  	int64 status = 3;
+}
+
+message UpdateSubScribeInfoReq{
+	map<string,CityList> area = 1; //地区
+    repeated string buyerclass=2;//采购单位类型
+    repeated Items items =3;//关键词
+    repeated string infotype=4;//信息类型
+    string matchway =5;//匹配方式 1标题 2正文
+    string projectmatch=6;//项目匹配 1开始 0关闭 
+	string ratemode=7;// 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
+	string apppush=8;//app推送 1开启 0关闭
+	string mailpush=9;//邮箱推送 1开启 0关闭
+	string mail=10;//邮箱
+	string otherbuyerclass=11;//匹配未分类类型 1匹配 0不匹配
+	string userId=12;//用户id
+}
+
+//城市
+message CityList {
+	repeated string city =1;
+}
+
+//分类
+message Items{
+	string s_item =1;//分类名称
+	int64 updateTime=2;
+	repeated Keys a_key=3;
+}
+
+//关键词
+message Keys {
+	repeated string key =1;
+	repeated string notkey=2;
+	int64 updateTime=3; 
+	int64 matchway=4;
+	repeated string appendKey=5;
+}
+
+
 service Bxsubscribe {
   //获取订阅推送列表
   rpc GetSubList(SubscribeInfosReq) returns(SubscribeInfosResp);
   //获取订阅推送相关信息
   rpc GetSubSomeInfo(SomeInfoReq) returns(SomeInfoResp);
+  //修改订阅信息接口
+  rpc UpdateSubScribeInfo(UpdateSubScribeInfoReq)returns(StatusResp);
 }

+ 20 - 7
jyBXSubscribe/rpc/bxsubscribe/bxsubscribe.go

@@ -13,19 +13,26 @@ import (
 )
 
 type (
-	SomeInfo           = bxsubscribe.SomeInfo
-	SomeInfoReq        = bxsubscribe.SomeInfoReq
-	SomeInfoResp       = bxsubscribe.SomeInfoResp
-	SubscribeData      = bxsubscribe.SubscribeData
-	SubscribeInfo      = bxsubscribe.SubscribeInfo
-	SubscribeInfosReq  = bxsubscribe.SubscribeInfosReq
-	SubscribeInfosResp = bxsubscribe.SubscribeInfosResp
+	CityList               = bxsubscribe.CityList
+	Items                  = bxsubscribe.Items
+	Keys                   = bxsubscribe.Keys
+	SomeInfo               = bxsubscribe.SomeInfo
+	SomeInfoReq            = bxsubscribe.SomeInfoReq
+	SomeInfoResp           = bxsubscribe.SomeInfoResp
+	StatusResp             = bxsubscribe.StatusResp
+	SubscribeData          = bxsubscribe.SubscribeData
+	SubscribeInfo          = bxsubscribe.SubscribeInfo
+	SubscribeInfosReq      = bxsubscribe.SubscribeInfosReq
+	SubscribeInfosResp     = bxsubscribe.SubscribeInfosResp
+	UpdateSubScribeInfoReq = bxsubscribe.UpdateSubScribeInfoReq
 
 	Bxsubscribe 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)
 	}
 
 	defaultBxsubscribe struct {
@@ -50,3 +57,9 @@ func (m *defaultBxsubscribe) GetSubSomeInfo(ctx context.Context, in *SomeInfoReq
 	client := bxsubscribe.NewBxsubscribeClient(m.cli.Conn())
 	return client.GetSubSomeInfo(ctx, in, opts...)
 }
+
+// 修改订阅信息接口
+func (m *defaultBxsubscribe) UpdateSubScribeInfo(ctx context.Context, in *UpdateSubScribeInfoReq, opts ...grpc.CallOption) (*StatusResp, error) {
+	client := bxsubscribe.NewBxsubscribeClient(m.cli.Conn())
+	return client.UpdateSubScribeInfo(ctx, in, opts...)
+}

+ 11 - 16
jyBXSubscribe/rpc/init/init.go

@@ -4,7 +4,6 @@ import (
         "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
         "flag"
         _ "github.com/go-sql-driver/mysql"
-        "github.com/zeromicro/go-zero/core/conf"
         "github.com/zeromicro/go-zero/core/discov"
         "github.com/zeromicro/go-zero/core/logx"
         "github.com/zeromicro/go-zero/zrpc"
@@ -12,25 +11,23 @@ import (
         "jyBXSubscribe/rpc/internal/config"
 )
 
-var configF = flag.String("cf", "etc/bxsubscribe.yaml", "the config file")
+_ "github.com/go-sql-driver/mysql"
+"github.com/zeromicro/go-zero/core/logx"
+)
 
 var C config.Config
 var err error
 
 //
-var dbFile = flag.String("df", "etc/db.yaml", "the db file")
 var DB config.Db
 
 //
 var logFile = flag.String("lf", "etc/logs.yaml", "the log file")
 var logc entity.Logc
 var codLib codeService.codeservice
+var Logc entity.Logc
 
-func init() {
-        //初始化基本配置
-        conf.MustLoad(*configF, &C)
-        //初始化数据库配置
-        conf.MustLoad(*dbFile, &DB)
+func Init() {
         //初始mongodb
         MongoDBInit(&DB.Mongo)
         //初始化msyql
@@ -39,21 +36,19 @@ func init() {
         RedisInit(&DB.Redis)
         //初始es
         EsInit(&DB.Es)
-        //初始化日志信息
-        conf.MustLoad(*logFile, &logc)
-        if len(logc.Level) > 0 {
-	      for _, v := range logc.Level {
+        if len(Logc.Level) > 0 {
+	      for _, v := range Logc.Level {
 		    logx.MustSetup(logx.LogConf{
-			  Mode:     logc.Mode,
-			  Path:     logc.Path,
+			  Mode:     Logc.Mode,
+			  Path:     Logc.Path,
 			  Level:    v,
-			  KeepDays: logc.KeepDays,
+			  KeepDays: Logc.KeepDays,
 		    })
 		    logx.Info(v, "--日志记录")
 	      }
         }
         //
-        PushMapping.Init(GlobalCommonData)
+        //PushMapping.Init()
         //代码表服务加载
         codeClient := zrpc.MustNewClient(zrpc.RpcClientConf{
 	      Etcd: discov.EtcdConf{

+ 107 - 0
jyBXSubscribe/rpc/internal/logic/updatesubscribeinfologic.go

@@ -0,0 +1,107 @@
+package logic
+
+import (
+	"context"
+	"fmt"
+	"log"
+
+	IC "jyBXSubscribe/rpc/init"
+	"jyBXSubscribe/rpc/internal/svc"
+	"jyBXSubscribe/rpc/model/service"
+
+	"jyBXSubscribe/rpc/type/bxsubscribe"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type UpdateSubScribeInfoLogic struct {
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	logx.Logger
+}
+
+func NewUpdateSubScribeInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateSubScribeInfoLogic {
+	return &UpdateSubScribeInfoLogic{
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		Logger: logx.WithContext(ctx),
+	}
+}
+
+// 修改订阅信息接口
+func (l *UpdateSubScribeInfoLogic) UpdateSubScribeInfo(in *bxsubscribe.UpdateSubScribeInfoReq) (*bxsubscribe.StatusResp, error) {
+	// todo: add your logic here and delete this line
+	resp := &bxsubscribe.StatusResp{}
+	subService := &service.SubseribeService{
+		UserId: in.UserId,
+	}
+	log.Println("@@@@@@@@@", in.Area == nil, in.Area)
+	if in.Area != nil {
+		//格式转换 地区
+		areaMap := map[string]interface{}{}
+		for k, v := range in.Area {
+			areaMap[k] = v.City
+		}
+		subService.Area = areaMap
+	}
+	//关键词转换
+	if in.Items != nil {
+		items := []map[string]interface{}{}
+		item := map[string]interface{}{}
+		for _, v := range in.Items {
+			item["s_item"] = v.SItem
+			item["updatetime"] = v.UpdateTime
+			akey := []map[string]interface{}{}
+			for _, vv := range v.AKey {
+				akey = append(akey, map[string]interface{}{
+					"key":       vv.Key,
+					"matchway":  vv.Matchway,
+					"appendkey": vv.AppendKey,
+					"notkey":    vv.Notkey,
+				})
+			}
+			item["a_key"] = akey
+			items = append(items)
+		}
+		subService.Items = items
+	}
+	//
+	if in.Apppush != "" {
+		subService.Apppush = in.Apppush
+	}
+	if in.Buyerclass != nil {
+		subService.Buyerclass = in.Buyerclass
+	}
+	if in.Infotype != nil {
+		subService.Infotype = in.Infotype
+	}
+	if in.Mail != "" {
+		subService.Mail = in.Mail
+	}
+	if in.Mailpush != "" {
+		subService.Mailpush = in.Mailpush
+	}
+	if in.Matchway != "" {
+		subService.Matchway = in.Matchway
+	}
+	if in.Ratemode != "" {
+		subService.Ratemode = in.Ratemode
+	}
+	if in.Projectmatch != "" {
+		subService.Projectmatch = in.Projectmatch
+	}
+	if in.Otherbuyerclass != "" {
+		subService.Otherbuyerclass = in.Otherbuyerclass
+	}
+	subService.Mgo = IC.Mgo
+	status, err := subService.Update()
+	if err != nil || status == 0 {
+		l.Error(fmt.Sprintf("%+v", in), err.Error())
+		resp.ErrorMsg = err.Error()
+		resp.ErrorCode = -1
+	} else {
+		resp.Status = status
+	}
+
+	return resp, nil
+}

+ 6 - 0
jyBXSubscribe/rpc/internal/server/bxsubscribeserver.go

@@ -33,3 +33,9 @@ func (s *BxsubscribeServer) GetSubSomeInfo(ctx context.Context, in *bxsubscribe.
 	l := logic.NewGetSubSomeInfoLogic(ctx, s.svcCtx)
 	return l.GetSubSomeInfo(in)
 }
+
+// 修改订阅信息接口
+func (s *BxsubscribeServer) UpdateSubScribeInfo(ctx context.Context, in *bxsubscribe.UpdateSubScribeInfoReq) (*bxsubscribe.StatusResp, error) {
+	l := logic.NewUpdateSubScribeInfoLogic(ctx, s.svcCtx)
+	return l.UpdateSubScribeInfo(in)
+}

+ 162 - 0
jyBXSubscribe/rpc/model/service/coverage

@@ -0,0 +1,162 @@
+mode: set
+jyBXSubscribe/rpc/model/service/entity.go:10.17,21.2 10 0
+jyBXSubscribe/rpc/model/service/entity.go:24.88,32.2 7 0
+jyBXSubscribe/rpc/model/service/entity.go:45.46,47.17 2 0
+jyBXSubscribe/rpc/model/service/entity.go:50.2,50.26 1 0
+jyBXSubscribe/rpc/model/service/entity.go:58.2,58.43 1 0
+jyBXSubscribe/rpc/model/service/entity.go:47.17,49.3 1 0
+jyBXSubscribe/rpc/model/service/entity.go:50.26,57.3 2 0
+jyBXSubscribe/rpc/model/service/entity.go:71.50,73.17 2 0
+jyBXSubscribe/rpc/model/service/entity.go:76.2,76.26 1 0
+jyBXSubscribe/rpc/model/service/entity.go:86.2,86.49 1 0
+jyBXSubscribe/rpc/model/service/entity.go:73.17,75.3 1 0
+jyBXSubscribe/rpc/model/service/entity.go:76.26,85.3 2 0
+jyBXSubscribe/rpc/model/service/entity.go:99.54,101.17 2 0
+jyBXSubscribe/rpc/model/service/entity.go:104.2,104.26 1 0
+jyBXSubscribe/rpc/model/service/entity.go:114.2,114.43 1 0
+jyBXSubscribe/rpc/model/service/entity.go:101.17,103.3 1 0
+jyBXSubscribe/rpc/model/service/entity.go:104.26,113.3 2 0
+jyBXSubscribe/rpc/model/service/entity.go:128.56,130.17 2 0
+jyBXSubscribe/rpc/model/service/entity.go:133.2,133.26 1 0
+jyBXSubscribe/rpc/model/service/entity.go:145.2,145.56 1 0
+jyBXSubscribe/rpc/model/service/entity.go:130.17,132.3 1 0
+jyBXSubscribe/rpc/model/service/entity.go:133.26,144.3 4 0
+jyBXSubscribe/rpc/model/service/entity.go:156.58,158.17 2 0
+jyBXSubscribe/rpc/model/service/entity.go:161.2,161.26 1 0
+jyBXSubscribe/rpc/model/service/entity.go:171.2,171.54 1 0
+jyBXSubscribe/rpc/model/service/entity.go:158.17,160.3 1 0
+jyBXSubscribe/rpc/model/service/entity.go:161.26,170.3 5 0
+jyBXSubscribe/rpc/model/service/entity.go:182.58,184.17 2 0
+jyBXSubscribe/rpc/model/service/entity.go:187.2,187.26 1 0
+jyBXSubscribe/rpc/model/service/entity.go:197.2,197.48 1 0
+jyBXSubscribe/rpc/model/service/entity.go:184.17,186.3 1 0
+jyBXSubscribe/rpc/model/service/entity.go:187.26,196.3 5 0
+jyBXSubscribe/rpc/model/service/entity.go:210.67,224.60 4 0
+jyBXSubscribe/rpc/model/service/entity.go:224.60,225.30 1 0
+jyBXSubscribe/rpc/model/service/entity.go:228.3,239.38 6 0
+jyBXSubscribe/rpc/model/service/entity.go:225.30,226.12 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:32.78,38.2 5 0
+jyBXSubscribe/rpc/model/service/matchjob.go:40.61,53.62 6 0
+jyBXSubscribe/rpc/model/service/matchjob.go:184.2,184.14 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:53.62,54.37 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:182.3,182.39 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:54.37,58.50 4 0
+jyBXSubscribe/rpc/model/service/matchjob.go:64.4,65.45 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:69.4,70.31 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:73.4,74.41 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:79.4,79.18 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:112.4,124.19 4 0
+jyBXSubscribe/rpc/model/service/matchjob.go:128.4,128.36 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:135.4,137.28 3 0
+jyBXSubscribe/rpc/model/service/matchjob.go:148.4,148.43 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:58.50,60.5 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:60.10,60.33 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:60.33,63.5 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:65.45,68.5 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:70.31,72.5 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:74.41,77.5 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:79.18,80.31 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:94.5,94.48 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:80.31,83.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:83.11,83.39 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:83.39,86.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:86.11,86.44 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:86.44,89.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:89.11,89.73 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:89.73,92.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:94.48,95.74 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:95.74,98.7 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:100.10,100.25 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:100.25,101.31 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:101.31,104.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:104.11,104.39 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:104.39,107.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:107.11,107.43 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:107.43,110.6 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:124.19,126.5 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:128.36,131.5 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:131.10,131.40 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:131.40,134.5 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:137.28,139.20 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:142.5,143.24 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:146.5,146.30 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:139.20,140.14 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:143.24,144.14 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:148.43,150.41 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:156.5,157.32 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:160.5,160.26 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:163.5,163.29 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:166.5,166.31 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:169.5,179.29 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:150.41,151.35 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:154.6,154.59 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:151.35,152.15 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:157.32,159.6 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:160.26,162.6 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:163.29,165.6 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:166.31,167.14 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:186.79,187.26 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:211.2,211.12 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:187.26,188.28 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:188.28,199.23 3 0
+jyBXSubscribe/rpc/model/service/matchjob.go:202.4,202.27 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:199.23,200.13 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:202.27,204.5 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:205.9,205.35 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:205.35,207.4 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:207.9,208.12 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:213.48,214.46 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:222.2,224.46 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:241.2,241.54 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:263.2,264.14 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:214.46,217.3 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:217.8,217.80 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:217.80,220.3 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:224.46,225.54 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:228.3,228.54 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:233.3,233.156 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:225.54,227.4 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:228.54,229.42 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:229.42,231.5 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:234.8,234.36 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:234.36,235.53 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:238.3,238.185 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:235.53,237.4 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:241.54,243.34 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:247.3,247.34 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:252.3,252.40 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:243.34,244.12 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:247.34,250.4 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:252.40,253.44 1 0
+jyBXSubscribe/rpc/model/service/matchjob.go:253.44,255.12 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:258.5,259.199 2 0
+jyBXSubscribe/rpc/model/service/matchjob.go:255.12,256.14 1 0
+jyBXSubscribe/rpc/model/service/subscribe.go:37.55,38.23 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:42.2,50.37 4 1
+jyBXSubscribe/rpc/model/service/subscribe.go:55.2,56.21 2 1
+jyBXSubscribe/rpc/model/service/subscribe.go:61.2,62.22 2 1
+jyBXSubscribe/rpc/model/service/subscribe.go:65.2,65.28 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:68.2,68.23 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:71.2,71.26 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:74.2,74.25 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:78.2,78.29 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:82.2,82.25 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:86.2,86.24 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:90.2,90.25 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:94.2,94.21 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:97.2,100.9 2 1
+jyBXSubscribe/rpc/model/service/subscribe.go:104.2,104.48 1 0
+jyBXSubscribe/rpc/model/service/subscribe.go:38.23,40.3 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:50.37,53.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:56.21,59.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:62.22,64.3 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:65.28,67.3 1 0
+jyBXSubscribe/rpc/model/service/subscribe.go:68.23,70.3 1 1
+jyBXSubscribe/rpc/model/service/subscribe.go:71.26,73.3 1 0
+jyBXSubscribe/rpc/model/service/subscribe.go:74.25,77.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:78.29,81.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:82.25,85.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:86.24,89.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:90.25,93.3 2 0
+jyBXSubscribe/rpc/model/service/subscribe.go:94.21,96.3 1 0
+jyBXSubscribe/rpc/model/service/subscribe.go:100.9,103.3 1 1

+ 722 - 0
jyBXSubscribe/rpc/model/service/coverage.html

@@ -0,0 +1,722 @@
+
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<title>service: Go Coverage Report</title>
+		<style>
+			body {
+				background: black;
+				color: rgb(80, 80, 80);
+			}
+			body, pre, #legend span {
+				font-family: Menlo, monospace;
+				font-weight: bold;
+			}
+			#topbar {
+				background: black;
+				position: fixed;
+				top: 0; left: 0; right: 0;
+				height: 42px;
+				border-bottom: 1px solid rgb(80, 80, 80);
+			}
+			#content {
+				margin-top: 50px;
+			}
+			#nav, #legend {
+				float: left;
+				margin-left: 10px;
+			}
+			#legend {
+				margin-top: 12px;
+			}
+			#nav {
+				margin-top: 10px;
+			}
+			#legend span {
+				margin: 0 5px;
+			}
+			.cov0 { color: rgb(192, 0, 0) }
+.cov1 { color: rgb(128, 128, 128) }
+.cov2 { color: rgb(116, 140, 131) }
+.cov3 { color: rgb(104, 152, 134) }
+.cov4 { color: rgb(92, 164, 137) }
+.cov5 { color: rgb(80, 176, 140) }
+.cov6 { color: rgb(68, 188, 143) }
+.cov7 { color: rgb(56, 200, 146) }
+.cov8 { color: rgb(44, 212, 149) }
+.cov9 { color: rgb(32, 224, 152) }
+.cov10 { color: rgb(20, 236, 155) }
+
+		</style>
+	</head>
+	<body>
+		<div id="topbar">
+			<div id="nav">
+				<select id="files">
+				
+				<option value="file0">jyBXSubscribe/rpc/model/service/entity.go (0.0%)</option>
+				
+				<option value="file1">jyBXSubscribe/rpc/model/service/matchjob.go (0.0%)</option>
+				
+				<option value="file2">jyBXSubscribe/rpc/model/service/subscribe.go (57.1%)</option>
+				
+				</select>
+			</div>
+			<div id="legend">
+				<span>not tracked</span>
+			
+				<span class="cov0">not covered</span>
+				<span class="cov8">covered</span>
+			
+			</div>
+		</div>
+		<div id="content">
+		
+		<pre class="file" id="file0" style="display: none">package service
+
+import (
+        util "app.yhyue.com/moapp/jybase/common"
+        . "app.yhyue.com/moapp/jybase/mongodb"
+        "app.yhyue.com/moapp/jybase/mysql"
+        "github.com/zeromicro/go-zero/core/logx"
+)
+
+func ClearEnt() <span class="cov0" title="0">{
+        Ents = map[int]*Ent{}
+        EntUsers = map[int]*EntUser{}
+        EntUserDept = map[int]*EntDeptUser{}
+        EntDeptUsers = map[int][]*EntDeptUser{}
+        EntRuleUsers = map[string][]*EntRuleUser{}
+        EntUserRules = map[int][]*EntRuleUser{}
+        EntDepts = map[int]*EntDept{}
+        EntParentDept = map[int][]*EntDeptParent{}
+        EntChildDept = map[int][]*EntDeptParent{}
+        EntDeptDis = map[int][]*EntDistribute{}
+}</span>
+
+//
+func InitEnt(mysql *mysql.Mysql, mgo *MongodbSim, dbName string, entId, entUserId int) <span class="cov0" title="0">{
+        InitEnts(mysql, entId)
+        InitEntUsers(mysql, entUserId)
+        InitEntDeptUsers(mysql, entUserId)
+        InitEntRuleUsers(mysql, entUserId)
+        InitEntDepts(mysql, entId)
+        InitEntDeptParents(mysql, entId)
+        InitEntDistribute(mgo, dbName, entId)
+}</span>
+
+///////////////////////
+var Ents = map[int]*Ent{}
+
+type Ent struct {
+        Id         int
+        Model      int
+        Name       string
+        DeptParent map[int][]int
+        IsNew      int
+}
+
+func InitEnts(Mysql *mysql.Mysql, entId int) <span class="cov0" title="0">{
+        list := Mysql.SelectBySql("select id,model,name from entniche_info where id=? and isNew=1 and status=1 and model in (1,2)", entId)
+        if list == nil </span><span class="cov0" title="0">{
+                return
+        }</span>
+        <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
+                id := util.IntAll(v["id"])
+                Ents[id] = &amp;Ent{
+                        Id:    id,
+                        Model: util.IntAll(v["model"]),
+                        Name:  util.ObjToString(v["name"]),
+                }
+        }</span>
+        <span class="cov0" title="0">logx.Info("entniche_info加载完成!")</span>
+}
+
+var EntDepts = map[int]*EntDept{}
+
+type EntDept struct {
+        Id     int
+        Pid    int
+        Name   string
+        Nodiff int
+        Subdis int
+}
+
+func InitEntDepts(Mysql *mysql.Mysql, entId int) <span class="cov0" title="0">{
+        list := Mysql.SelectBySql(`select id,name,pid,subdis,nodiff from entniche_department where ent_id=?`, entId)
+        if list == nil </span><span class="cov0" title="0">{
+                return
+        }</span>
+        <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
+                id := util.IntAll(v["id"])
+                EntDepts[id] = &amp;EntDept{
+                        Id:     id,
+                        Pid:    util.IntAll(v["pid"]),
+                        Nodiff: util.IntAll(v["nodiff"]),
+                        Subdis: util.IntAll(v["subdis"]),
+                        Name:   util.ObjToString(v["name"]),
+                }
+        }</span>
+        <span class="cov0" title="0">logx.Info("entniche_department加载完成!")</span>
+}
+
+var EntUsers = map[int]*EntUser{}
+
+type EntUser struct {
+        Id    int
+        Name  string
+        Mail  string
+        Phone string
+        Power int
+}
+
+func InitEntUsers(Mysql *mysql.Mysql, entUserId int) <span class="cov0" title="0">{
+        list := Mysql.SelectBySql(`select id,name,mail,phone,power from entniche_user where id=?`, entUserId)
+        if list == nil </span><span class="cov0" title="0">{
+                return
+        }</span>
+        <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
+                id := util.IntAll(v["id"])
+                EntUsers[id] = &amp;EntUser{
+                        Id:    id,
+                        Name:  util.ObjToString(v["name"]),
+                        Mail:  util.ObjToString(v["mail"]),
+                        Phone: util.ObjToString(v["phone"]),
+                        Power: util.IntAll(v["power"]),
+                }
+        }</span>
+        <span class="cov0" title="0">logx.Info("entniche_user加载完成!")</span>
+}
+
+//我所有的父部门
+var EntParentDept = map[int][]*EntDeptParent{}
+
+//我所有的子部门
+var EntChildDept = map[int][]*EntDeptParent{}
+
+type EntDeptParent struct {
+        Id  int
+        Pid int
+}
+
+func InitEntDeptParents(Mysql *mysql.Mysql, entId int) <span class="cov0" title="0">{
+        list := Mysql.SelectBySql(`select a.id,a.pid from entniche_department_parent a inner join entniche_department b on (a.id=b.id and b.ent_id=?)`, entId)
+        if list == nil </span><span class="cov0" title="0">{
+                return
+        }</span>
+        <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
+                id := util.IntAll(v["id"])
+                pid := util.IntAll(v["pid"])
+                EntParentDept[id] = append(EntParentDept[id], &amp;EntDeptParent{
+                        Id:  id,
+                        Pid: pid,
+                })
+                EntChildDept[pid] = append(EntChildDept[pid], &amp;EntDeptParent{
+                        Id:  id,
+                        Pid: pid,
+                })
+        }</span>
+        <span class="cov0" title="0">logx.Info("entniche_department_parent加载完成!")</span>
+}
+
+var EntUserDept = map[int]*EntDeptUser{}
+var EntDeptUsers = map[int][]*EntDeptUser{}
+
+type EntDeptUser struct {
+        UserId int
+        DeptId int
+}
+
+func InitEntDeptUsers(Mysql *mysql.Mysql, entUserId int) <span class="cov0" title="0">{
+        list := Mysql.SelectBySql(`select dept_id,user_id from entniche_department_user where user_id=?`, entUserId)
+        if list == nil </span><span class="cov0" title="0">{
+                return
+        }</span>
+        <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
+                user_id := util.IntAll(v["user_id"])
+                dept_id := util.IntAll(v["dept_id"])
+                entDeptUser := &amp;EntDeptUser{
+                        UserId: user_id,
+                        DeptId: dept_id,
+                }
+                EntUserDept[user_id] = entDeptUser
+                EntDeptUsers[dept_id] = append(EntDeptUsers[dept_id], entDeptUser)
+        }</span>
+        <span class="cov0" title="0">logx.Info("entniche_department_user加载完成!")</span>
+}
+
+var EntRuleUsers = map[string][]*EntRuleUser{}
+var EntUserRules = map[int][]*EntRuleUser{}
+
+type EntRuleUser struct {
+        UserId int
+        RuleId string
+}
+
+func InitEntRuleUsers(Mysql *mysql.Mysql, entUserId int) <span class="cov0" title="0">{
+        list := Mysql.SelectBySql(`select user_id,rule_id from entniche_user_rule where user_id=?`, entUserId)
+        if list == nil </span><span class="cov0" title="0">{
+                return
+        }</span>
+        <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
+                ruleId := util.ObjToString(v["rule_id"])
+                userId := util.IntAll(v["user_id"])
+                entRuleUser := &amp;EntRuleUser{
+                        UserId: userId,
+                        RuleId: ruleId,
+                }
+                EntRuleUsers[ruleId] = append(EntRuleUsers[ruleId], entRuleUser)
+                EntUserRules[userId] = append(EntUserRules[userId], entRuleUser)
+        }</span>
+        <span class="cov0" title="0">logx.Info("entniche_user_rule加载完成!")</span>
+}
+
+var EntDeptDis = map[int][]*EntDistribute{}
+
+type EntDistribute struct {
+        Id         string
+        DeptId     int
+        Area       map[string]interface{}
+        Buyerclass []interface{}
+        Items      []string
+}
+
+func InitEntDistribute(mgo *MongodbSim, dbName string, entId int) <span class="cov0" title="0">{
+        sess := mgo.GetMgoConn()
+        defer mgo.DestoryMongoConn(sess)
+        it := sess.DB(dbName).C("entniche_distribute").Find(map[string]interface{}{
+                "i_status": map[string]interface{}{"$ne": 1},
+                "i_entid":  entId,
+        }).Select(map[string]interface{}{
+                "_id":          1,
+                "i_entid":      1,
+                "i_deptid":     1,
+                "a_items":      1,
+                "o_area":       1,
+                "a_buyerclass": 1,
+        }).Iter()
+        for temp := make(map[string]interface{}); it.Next(&amp;temp); </span><span class="cov0" title="0">{
+                if temp["i_deptid"] == nil </span><span class="cov0" title="0">{
+                        continue</span>
+                }
+                <span class="cov0" title="0">deptId := util.IntAll(temp["i_deptid"])
+                a_items, _ := temp["a_items"].([]interface{})
+                o_area, _ := temp["o_area"].(map[string]interface{})
+                a_buyerclass, _ := temp["a_buyerclass"].([]interface{})
+                EntDeptDis[deptId] = append(EntDeptDis[deptId], &amp;EntDistribute{
+                        Id:         BsonIdToSId(temp["_id"]),
+                        DeptId:     deptId,
+                        Area:       o_area,
+                        Buyerclass: a_buyerclass,
+                        Items:      util.ObjArrToStringArr(a_items),
+                })
+                temp = make(map[string]interface{})</span>
+        }
+}
+</pre>
+		
+		<pre class="file" id="file1" style="display: none">package service
+
+import (
+        util "app.yhyue.com/moapp/jybase/common"
+        . "app.yhyue.com/moapp/jybase/mongodb"
+        "app.yhyue.com/moapp/jybase/mysql"
+        "github.com/zeromicro/go-zero/core/logx"
+        IC "jyBXSubscribe/rpc/init"
+)
+
+var Mysql *mysql.Mysql
+var Mgo *MongodbSim
+
+//用户基本信息
+type UserInfo struct {
+        Entniche *Entniche
+        SubSet   map[string]interface{}
+}
+
+//
+type Entniche struct {
+        EntId    int    //企业id
+        EntName  string //企业名称
+        DeptId   int    //部门id
+        DeptName string //部门名称
+        DisId    string //分发id
+        UserId   int
+}
+type MatchJob struct {
+}
+
+func (m *MatchJob) Start(entId, entUserId int) (map[string]interface{}, int) <span class="cov0" title="0">{
+        defer util.Catch()
+        defer ClearEnt()
+        InitEnt(IC.MainMysql, &amp;IC.Mgo, "qfw", entId, entUserId)
+        users := m.LoadSubSet(entId)
+        return FinalSub(entUserId, users), EntUserDept[entUserId].DeptId
+}</span>
+
+func (m *MatchJob) LoadSubSet(entId int) map[*UserInfo]bool <span class="cov0" title="0">{
+        defer util.Catch()
+        Users := map[*UserInfo]bool{}
+        sess := Mgo.GetMgoConn()
+        defer Mgo.DestoryMongoConn(sess)
+        it := sess.DB("qfw").C("entniche_rule").Find(map[string]interface{}{
+                "i_entid": entId,
+        }).Select(map[string]interface{}{
+                "i_entid":    1,
+                "i_deptid":   1,
+                "i_userid":   1,
+                "o_entniche": 1,
+        }).Iter()
+        for _temp := make(map[string]interface{}); it.Next(&amp;_temp); </span><span class="cov0" title="0">{
+                func(temp map[string]interface{}) </span><span class="cov0" title="0">{
+                        entId := util.IntAll(temp["i_entid"])
+                        deptId := util.IntAll(temp["i_deptid"])
+                        userId := util.IntAll(temp["i_userid"])
+                        if entId == 0 || (deptId == 0 &amp;&amp; userId == 0) </span><span class="cov0" title="0">{
+                                return
+                        }</span> else<span class="cov0" title="0"> if Ents[entId] == nil </span><span class="cov0" title="0">{
+                                logx.Info("没有找到该企业", entId)
+                                return
+                        }</span>
+                        <span class="cov0" title="0">entName := Ents[entId].Name
+                        if deptId &gt; 0 &amp;&amp; EntDepts[deptId] == nil </span><span class="cov0" title="0">{
+                                logx.Info("没有找到该部门", entName, entId, deptId)
+                                return
+                        }</span>
+                        <span class="cov0" title="0">deptName := ""
+                        if EntDepts[deptId] != nil </span><span class="cov0" title="0">{
+                                deptName = EntDepts[deptId].Name
+                        }</span>
+                        <span class="cov0" title="0">subSet, _ := temp["o_entniche"].(map[string]interface{})
+                        if subSet == nil || len(subSet) == 0 </span><span class="cov0" title="0">{
+                                logx.Info("订阅设置为空,过滤掉", entName, entId, deptName, deptId, userId)
+                                return
+                        }</span>
+                        //
+                        <span class="cov0" title="0">if deptId &gt; 0 </span><span class="cov0" title="0">{ //部门订阅
+                                if Ents[entId].Model != 1 </span><span class="cov0" title="0">{
+                                        logx.Info("不是统一订阅模式,过滤掉", entName, entId, deptName, deptId)
+                                        return
+                                }</span> else<span class="cov0" title="0"> if EntDepts[deptId] == nil </span><span class="cov0" title="0">{
+                                        logx.Info("没有找到该部门,过滤掉", entName, entId, deptName, deptId)
+                                        return
+                                }</span> else<span class="cov0" title="0"> if EntDepts[deptId].Subdis == 0 </span><span class="cov0" title="0">{
+                                        logx.Info("该部门的订阅分发没有开启,过滤掉", entName, entId, deptName, deptId)
+                                        return
+                                }</span> else<span class="cov0" title="0"> if EntDepts[deptId].Nodiff == 0 &amp;&amp; EntDeptDis[deptId] == nil </span><span class="cov0" title="0">{
+                                        logx.Info("该部门开启了订阅分发,没有开启全员无差别接收,但是没有分发规则,过滤掉", entName, entId, deptName, deptId)
+                                        return
+                                }</span>
+                                //如果我的上级部门打开了订阅分发,并且开启了全员无差别接收,本部门规则无效
+                                <span class="cov0" title="0">for _, dept := range EntParentDept[deptId] </span><span class="cov0" title="0">{
+                                        if EntDepts[dept.Pid].Subdis == 1 &amp;&amp; EntDepts[dept.Pid].Nodiff == 1 </span><span class="cov0" title="0">{
+                                                logx.Info("我的上级部门", dept.Pid, "开启了订阅分发和全员无差别,过滤掉", entName, entId, deptName, deptId)
+                                                return
+                                        }</span>
+                                }
+                        } else<span class="cov0" title="0"> if userId &gt; 0 </span><span class="cov0" title="0">{ //个人订阅
+                                if Ents[entId].Model != 2 </span><span class="cov0" title="0">{
+                                        logx.Info("不是个人订阅模式,过滤掉", entName, entId, userId)
+                                        return
+                                }</span> else<span class="cov0" title="0"> if EntUsers[userId] == nil </span><span class="cov0" title="0">{
+                                        logx.Info("没有找到该用户,过滤掉", entName, entId, userId)
+                                        return
+                                }</span> else<span class="cov0" title="0"> if EntUsers[userId].Power == 0 </span><span class="cov0" title="0">{
+                                        logx.Info("该用户没有权限,过滤掉", entName, entId, userId)
+                                        return
+                                }</span>
+                        }
+                        <span class="cov0" title="0">user := &amp;UserInfo{
+                                Entniche: &amp;Entniche{
+                                        EntId:    entId,
+                                        EntName:  entName,
+                                        DeptId:   deptId,
+                                        DeptName: deptName,
+                                        UserId:   userId,
+                                },
+                                SubSet: subSet,
+                        }
+                        logx.Info("加载订阅设置", "entId", entId, "entName", entName, "deptId", deptId, "deptName", deptName, "userId", userId)
+                        Users[user] = true
+                        if deptId &lt;= 0 </span><span class="cov0" title="0">{
+                                return
+                        }</span>
+                        //分发规则
+                        <span class="cov0" title="0">if EntDepts[deptId].Nodiff == 1 </span><span class="cov0" title="0">{
+                                logx.Info("该部门开启了全员无差别,分发规则无效", entName, entId, deptName, deptId)
+                                return
+                        }</span> else<span class="cov0" title="0"> if EntDeptDis[deptId] == nil </span><span class="cov0" title="0">{
+                                logx.Info("该部门没有分发规则", entName, entId, deptName, deptId)
+                                return
+                        }</span>
+                        <span class="cov0" title="0">itemMap := map[string]interface{}{}
+                        items, _ := subSet["a_items"].([]interface{})
+                        for _, v := range items </span><span class="cov0" title="0">{
+                                item, _ := v.(map[string]interface{})
+                                if item == nil </span><span class="cov0" title="0">{
+                                        continue</span>
+                                }
+                                <span class="cov0" title="0">item_name, _ := item["s_item"].(string)
+                                if item_name == "" </span><span class="cov0" title="0">{
+                                        continue</span>
+                                }
+                                <span class="cov0" title="0">itemMap[item_name] = item</span>
+                        }
+                        <span class="cov0" title="0">for _, dis := range EntDeptDis[deptId] </span><span class="cov0" title="0">{
+                                child_items := []interface{}{}
+                                for _, item_name := range dis.Items </span><span class="cov0" title="0">{
+                                        if itemMap[item_name] == nil </span><span class="cov0" title="0">{
+                                                continue</span>
+                                        }
+                                        <span class="cov0" title="0">child_items = append(child_items, itemMap[item_name])</span>
+                                }
+                                <span class="cov0" title="0">child_subSet := map[string]interface{}{}
+                                if len(dis.Buyerclass) &gt; 0 </span><span class="cov0" title="0">{
+                                        child_subSet["a_buyerclass"] = dis.Buyerclass
+                                }</span>
+                                <span class="cov0" title="0">if len(dis.Area) &gt; 0 </span><span class="cov0" title="0">{
+                                        child_subSet["o_area"] = dis.Area
+                                }</span>
+                                <span class="cov0" title="0">if len(child_items) &gt; 0 </span><span class="cov0" title="0">{
+                                        child_subSet["a_items"] = child_items
+                                }</span>
+                                <span class="cov0" title="0">if len(child_subSet) == 0 </span><span class="cov0" title="0">{
+                                        continue</span>
+                                }
+                                <span class="cov0" title="0">child_user := &amp;UserInfo{
+                                        Entniche: &amp;Entniche{
+                                                EntId:    user.Entniche.EntId,
+                                                EntName:  user.Entniche.EntName,
+                                                DeptId:   user.Entniche.DeptId,
+                                                DeptName: user.Entniche.DeptName,
+                                                DisId:    dis.Id,
+                                        },
+                                        SubSet: child_subSet,
+                                }
+                                Users[child_user] = true</span>
+                        }
+                }(_temp)
+                <span class="cov0" title="0">_temp = make(map[string]interface{})</span>
+        }
+        <span class="cov0" title="0">return Users</span>
+}
+func FinalSub(entUserId int, users map[*UserInfo]bool) map[string]interface{} <span class="cov0" title="0">{
+        for k, _ := range users </span><span class="cov0" title="0">{
+                if k.Entniche.DeptId &gt; 0 </span><span class="cov0" title="0">{
+                        k.Entniche.DeptName = EntDepts[k.Entniche.DeptId].Name
+                        staffIds := GetDeptUserIds(&amp;UserInfo{
+                                Entniche: &amp;Entniche{
+                                        EntId:    k.Entniche.EntId,
+                                        EntName:  k.Entniche.EntName,
+                                        DeptId:   k.Entniche.DeptId,
+                                        DeptName: k.Entniche.DeptName,
+                                        DisId:    k.Entniche.DisId,
+                                },
+                        })
+                        if staffIds == nil </span><span class="cov0" title="0">{
+                                continue</span>
+                        }
+                        <span class="cov0" title="0">if staffIds[entUserId] </span><span class="cov0" title="0">{
+                                return k.SubSet
+                        }</span>
+                } else<span class="cov0" title="0"> if k.Entniche.UserId &gt; 0 </span><span class="cov0" title="0">{
+                        return k.SubSet
+                }</span> else<span class="cov0" title="0"> {
+                        continue</span>
+                }
+        }
+        <span class="cov0" title="0">return nil</span>
+}
+func GetDeptUserIds(ui *UserInfo) map[int]bool <span class="cov0" title="0">{
+        if EntDepts[ui.Entniche.DeptId].Subdis == 0 </span><span class="cov0" title="0">{
+                logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "没有开启订阅分发,过滤掉")
+                return nil
+        }</span> else<span class="cov0" title="0"> if EntDepts[ui.Entniche.DeptId].Nodiff == 0 &amp;&amp; ui.Entniche.DisId == "" </span><span class="cov0" title="0">{
+                logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "没有开启全员无差别接收,并且没有分发规则,过滤掉")
+                return nil
+        }</span>
+        //对我的对着生效的用户
+        <span class="cov0" title="0">myIds := map[int]bool{}
+        //打开了全员无差别,下面所有员工都生效
+        if EntDepts[ui.Entniche.DeptId].Nodiff == 1 </span><span class="cov0" title="0">{
+                for _, v := range EntDeptUsers[ui.Entniche.DeptId] </span><span class="cov0" title="0">{
+                        myIds[v.UserId] = true
+                }</span>
+                <span class="cov0" title="0">for _, v := range EntChildDept[ui.Entniche.DeptId] </span><span class="cov0" title="0">{
+                        for _, vv := range EntDeptUsers[v.Id] </span><span class="cov0" title="0">{
+                                myIds[vv.UserId] = true
+                        }</span>
+                }
+                <span class="cov0" title="0">logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "该部门打开了全员无差别", len(myIds), "人接收")</span>
+        } else<span class="cov0" title="0"> if ui.Entniche.DisId != "" </span><span class="cov0" title="0">{
+                for _, v := range EntRuleUsers[ui.Entniche.DisId] </span><span class="cov0" title="0">{
+                        myIds[v.UserId] = true
+                }</span>
+                <span class="cov0" title="0">logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "该规则开启了订阅分发", ui.Entniche.DisId, "规则分发了", len(myIds), "人")</span>
+        }
+        //我的上级部门,过滤掉本部门的人
+        <span class="cov0" title="0">for _, v := range EntParentDept[ui.Entniche.DeptId] </span><span class="cov0" title="0">{
+                //看我的上级部门,有没有开启订阅分发
+                if EntDepts[v.Pid].Subdis == 0 </span><span class="cov0" title="0">{
+                        continue</span>
+                }
+                //看我的上级部门,有没有全员无差别接收
+                <span class="cov0" title="0">if EntDepts[v.Pid].Nodiff == 1 </span><span class="cov0" title="0">{
+                        logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, ui.Entniche.DisId, "上级部门", v.Pid, "打开了全员无差别开关,过滤掉")
+                        return nil
+                }</span>
+                //看我的上级部门,有没有对我设置规则
+                <span class="cov0" title="0">for _, vv := range EntDeptDis[v.Pid] </span><span class="cov0" title="0">{
+                        for _, vvv := range EntRuleUsers[vv.Id] </span><span class="cov0" title="0">{
+                                _, ok := myIds[vvv.UserId]
+                                if !ok </span><span class="cov0" title="0">{
+                                        continue</span>
+                                }
+                                <span class="cov0" title="0">delete(myIds, vvv.UserId)
+                                logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "上级部门", v.Pid, "对我设置的有", vvv.RuleId, "分发规则,此规则作废", vvv.UserId)</span>
+                        }
+                }
+        }
+        <span class="cov0" title="0">logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, ui.Entniche.DisId, "该规则匹配到", len(myIds), "人")
+        return myIds</span>
+}
+</pre>
+		
+		<pre class="file" id="file2" style="display: none">// @Description   订阅设置相关
+package service
+
+import (
+        "errors"
+        "jyBXSubscribe/entity"
+        "log"
+        "strconv"
+
+        "app.yhyue.com/moapp/jybase/common"
+        "app.yhyue.com/moapp/jybase/mongodb"
+        "github.com/zeromicro/go-zero/core/logx"
+)
+
+//
+type SubseribeService struct {
+        Mgo          *mongodb.MongodbSim
+        UserId       string                   //mongodb 的用户id
+        Types        string                   //订阅信息产品类型 超级订阅、大会员、商机管理、免费订阅...
+        Area         map[string]interface{}   //地区
+        Buyerclass   []string                 //采购单位类型
+        Items        []map[string]interface{} //关键词
+        Infotype     []string                 //信息类型
+        Matchway     string                   //匹配方式 1标题 2正文
+        Projectmatch string                   //项目匹配 1开始 0关闭
+        Ratemode     string                   // 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
+        Apppush      string                   //app推送 1开启 0关闭
+        Mailpush     string                   //邮箱推送 1开启 0关闭
+        Mail         string                   //邮箱
+}
+
+// @description          订阅设置相关修改
+// @param                     SubseribeService  用户信息相关
+// @return                    int64 是否成功 1成功 -1失败
+// @return                    error 错误信息
+//TODO 后期需要实现 查询各个身份的订阅设置修改[目前只实现了超级订阅]
+func (this *SubseribeService) Update() (int64, error) <span class="cov8" title="1">{
+        if this.UserId == "" </span><span class="cov8" title="1">{
+                return -1, errors.New(entity.UPDATE_ERROR_MSG)
+        }</span>
+        //查询条件
+        <span class="cov8" title="1">query := map[string]interface{}{
+                "_id": mongodb.StringTOBsonId(this.UserId),
+        }
+        //查询字段
+        fields := `{"i_vip_status":1,"o_vipjy":1}`
+
+        //查询用户信息
+        r, ok := this.Mgo.FindOneByField(entity.User, query, fields)
+        if !ok || r == nil || len(*r) == 0 </span><span class="cov0" title="0">{
+                logx.Error("未找到用户")
+                return -1, errors.New(entity.UPDATE_ERROR_MSG)
+        }</span>
+        //判断用户权益
+        <span class="cov8" title="1">vip_status := common.Int64All((*r)["i_vip_status"])
+        if vip_status &lt;= 0 </span><span class="cov0" title="0">{
+                logx.Error("用户暂无权益")
+                return -1, errors.New(entity.UPDATE_ERROR_MSG)
+        }</span>
+        //权益通过,获取要修改的参数
+        <span class="cov8" title="1">setMap := map[string]interface{}{}
+        if this.Area != nil </span><span class="cov8" title="1">{
+                setMap["o_vipjy.o_area"] = this.Area
+        }</span>
+        <span class="cov8" title="1">if this.Buyerclass != nil </span><span class="cov0" title="0">{
+                setMap["o_vipjy.a_buyerclass"] = this.Buyerclass
+        }</span>
+        <span class="cov8" title="1">if this.Items != nil </span><span class="cov8" title="1">{
+                setMap["o_vipjy.a_items"] = this.Items
+        }</span>
+        <span class="cov8" title="1">if this.Infotype != nil </span><span class="cov0" title="0">{
+                setMap["o_vipjy.a_infotype"] = this.Infotype
+        }</span>
+        <span class="cov8" title="1">if this.Matchway != "" </span><span class="cov0" title="0">{
+                i_matchway, _ := strconv.Atoi(this.Matchway)
+                setMap["o_vipjy.i_matchway"] = i_matchway
+        }</span>
+        <span class="cov8" title="1">if this.Projectmatch != "" </span><span class="cov0" title="0">{
+                i_projectmatch, _ := strconv.Atoi(this.Projectmatch)
+                setMap["o_vipjy.i_projectmatch"] = i_projectmatch
+        }</span>
+        <span class="cov8" title="1">if this.Ratemode != "" </span><span class="cov0" title="0">{
+                i_ratemode, _ := strconv.Atoi(this.Ratemode)
+                setMap["o_vipjy.i_ratemode"] = i_ratemode
+        }</span>
+        <span class="cov8" title="1">if this.Apppush != "" </span><span class="cov0" title="0">{
+                i_apppush, _ := strconv.Atoi(this.Apppush)
+                setMap["o_vipjy.i_apppush"] = i_apppush
+        }</span>
+        <span class="cov8" title="1">if this.Mailpush != "" </span><span class="cov0" title="0">{
+                i_mailpush, _ := strconv.Atoi(this.Mailpush)
+                setMap["o_vipjy.i_mailpush"] = i_mailpush
+        }</span>
+        <span class="cov8" title="1">if this.Mail != "" </span><span class="cov0" title="0">{
+                setMap["o_vipjy.s_email"] = this.Mail
+        }</span>
+        <span class="cov8" title="1">log.Println(setMap)
+        if ok := this.Mgo.UpdateById(entity.User, this.UserId, map[string]interface{}{
+                "$set": setMap,
+        }); ok </span><span class="cov8" title="1">{
+                return 1, nil
+
+        }</span>
+        <span class="cov0" title="0">return -1, errors.New(entity.UPDATE_ERROR_MSG)</span>
+}
+</pre>
+		
+		</div>
+	</body>
+	<script>
+	(function() {
+		var files = document.getElementById('files');
+		var visible;
+		files.addEventListener('change', onChange, false);
+		function select(part) {
+			if (visible)
+				visible.style.display = 'none';
+			visible = document.getElementById(part);
+			if (!visible)
+				return;
+			files.value = part;
+			visible.style.display = 'block';
+			location.hash = part;
+		}
+		function onChange() {
+			select(files.value);
+			window.scrollTo(0, 0);
+		}
+		if (location.hash != "") {
+			select(location.hash.substr(1));
+		}
+		if (!visible) {
+			select("file0");
+		}
+	})();
+	</script>
+</html>

+ 110 - 0
jyBXSubscribe/rpc/model/service/subscribe.go

@@ -0,0 +1,110 @@
+// @Description   订阅设置相关
+package service
+
+import (
+	"errors"
+	"jyBXSubscribe/entity"
+	"log"
+	"strconv"
+
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/mongodb"
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+//
+type SubseribeService struct {
+	Mgo             mongodb.MongodbSim
+	UserId          string                   //mongodb 的用户id
+	Types           string                   //订阅信息产品类型 超级订阅、大会员、商机管理、免费订阅...
+	Area            map[string]interface{}   //地区
+	Buyerclass      []string                 //采购单位类型
+	Items           []map[string]interface{} //关键词
+	Infotype        []string                 //信息类型
+	Matchway        string                   //匹配方式 1标题 2正文
+	Projectmatch    string                   //项目匹配 1开始 0关闭
+	Ratemode        string                   // 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
+	Apppush         string                   //app推送 1开启 0关闭
+	Mailpush        string                   //邮箱推送 1开启 0关闭
+	Mail            string                   //邮箱
+	Otherbuyerclass string                   //匹配未分类类型 1匹配 0不匹配
+}
+
+// @description  	订阅设置相关修改
+// @param     		SubseribeService  用户信息相关
+// @return    		int64 是否成功 1成功 -1失败
+// @return    		error 错误信息
+//TODO 后期需要实现 查询各个身份的订阅设置修改[目前只实现了超级订阅]
+func (this *SubseribeService) Update() (int64, error) {
+	if this.UserId == "" {
+		return -1, errors.New(entity.UPDATE_ERROR_MSG)
+	}
+	//查询条件
+	query := map[string]interface{}{
+		"_id": mongodb.StringTOBsonId(this.UserId),
+	}
+	//查询字段
+	fields := `{"i_vip_status":1,"o_vipjy":1}`
+
+	//查询用户信息
+	r, ok := this.Mgo.FindOneByField(entity.User, query, fields)
+	if !ok || r == nil || len(*r) == 0 {
+		logx.Error("未找到用户")
+		return -1, errors.New(entity.UPDATE_ERROR_MSG)
+	}
+	//判断用户权益
+	vip_status := common.Int64All((*r)["i_vip_status"])
+	if vip_status <= 0 {
+		logx.Error("用户暂无权益")
+		return -1, errors.New(entity.UPDATE_ERROR_MSG)
+	}
+	//权益通过,获取要修改的参数
+	setMap := map[string]interface{}{}
+	if this.Area != nil {
+		setMap["o_vipjy.o_area"] = this.Area
+	}
+	if this.Buyerclass != nil {
+		setMap["o_vipjy.a_buyerclass"] = this.Buyerclass
+	}
+	if this.Items != nil {
+		setMap["o_vipjy.a_items"] = this.Items
+	}
+	if this.Infotype != nil {
+		setMap["o_vipjy.a_infotype"] = this.Infotype
+	}
+	if this.Matchway != "" {
+		i_matchway, _ := strconv.Atoi(this.Matchway)
+		setMap["o_vipjy.i_matchway"] = i_matchway
+	}
+	if this.Projectmatch != "" {
+		i_projectmatch, _ := strconv.Atoi(this.Projectmatch)
+		setMap["o_vipjy.i_projectmatch"] = i_projectmatch
+	}
+	if this.Ratemode != "" {
+		i_ratemode, _ := strconv.Atoi(this.Ratemode)
+		setMap["o_vipjy.i_ratemode"] = i_ratemode
+	}
+	if this.Apppush != "" {
+		i_apppush, _ := strconv.Atoi(this.Apppush)
+		setMap["o_vipjy.i_apppush"] = i_apppush
+	}
+	if this.Mailpush != "" {
+		i_mailpush, _ := strconv.Atoi(this.Mailpush)
+		setMap["o_vipjy.i_mailpush"] = i_mailpush
+	}
+	if this.Mail != "" {
+		setMap["o_vipjy.s_email"] = this.Mail
+	}
+	if this.Otherbuyerclass != "" {
+		i_otherbuyerclass, _ := strconv.Atoi(this.Otherbuyerclass)
+		setMap["o_vipjy.i_matchbuyerclass_other"] = i_otherbuyerclass
+
+	}
+	log.Println(setMap)
+	if ok := this.Mgo.UpdateById(entity.User, this.UserId, map[string]interface{}{
+		"$set": setMap,
+	}); ok {
+		return 1, nil
+	}
+	return -1, errors.New(entity.UPDATE_ERROR_MSG)
+}

+ 116 - 0
jyBXSubscribe/rpc/model/service/subscribe_test.go

@@ -0,0 +1,116 @@
+package service
+
+import (
+	"testing"
+	"time"
+
+	"app.yhyue.com/moapp/jybase/mongodb"
+)
+
+var MgoT *mongodb.MongodbSim
+
+func init() {
+	MgoT = &mongodb.MongodbSim{
+		MongodbAddr: "192.168.3.206:27080",
+		Size:        10,
+		DbName:      "qfw",
+		ReplSet:     "",
+	}
+	MgoT.InitPool()
+
+}
+func TestSubseribeService_Update(t *testing.T) {
+	type fields struct {
+		Mgo          *mongodb.MongodbSim
+		UserId       string
+		Types        string
+		Area         map[string]interface{}
+		Buyerclass   []string
+		Items        []map[string]interface{}
+		Infotype     []string
+		Matchway     string
+		Projectmatch string
+		Ratemode     string
+		Apppush      string
+		Mailpush     string
+		Mail         string
+	}
+	tests := []struct {
+		name    string
+		fields  fields
+		want    int64
+		wantErr bool
+	}{
+		// TODO: Add test cases.
+		{
+			name: "无user测试",
+			fields: fields{
+				Mgo:    MgoT,
+				UserId: "",
+			},
+		},
+		{
+			fields: fields{
+				Mgo:    MgoT,
+				UserId: "6103bb722abfa5f4d81bb1d2",
+				Area:   map[string]interface{}{},
+			},
+		},
+		{
+			fields: fields{
+				Mgo:    MgoT,
+				UserId: "6103bb722abfa5f4d81bb1d1",
+				Area: map[string]interface{}{
+					"北京": []string{},
+				},
+				Items: []map[string]interface{}{
+					map[string]interface{}{
+						"s_item":     "zxl的分类名称1",
+						"updatetime": time.Now().Unix(),
+						"a_key": []map[string]interface{}{
+							map[string]interface{}{
+								"key":        []string{"你好2"},
+								"notkey":     []string{},
+								"appendkey":  []string{},
+								"updatetime": time.Now().Unix(),
+							},
+							map[string]interface{}{
+								"key":        []string{"你好1"},
+								"notkey":     []string{},
+								"appendkey":  []string{},
+								"updatetime": time.Now().Unix(),
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			this := &SubseribeService{
+				Mgo:          tt.fields.Mgo,
+				UserId:       tt.fields.UserId,
+				Types:        tt.fields.Types,
+				Area:         tt.fields.Area,
+				Buyerclass:   tt.fields.Buyerclass,
+				Items:        tt.fields.Items,
+				Infotype:     tt.fields.Infotype,
+				Matchway:     tt.fields.Matchway,
+				Projectmatch: tt.fields.Projectmatch,
+				Ratemode:     tt.fields.Ratemode,
+				Apppush:      tt.fields.Apppush,
+				Mailpush:     tt.fields.Mailpush,
+				Mail:         tt.fields.Mail,
+			}
+			got, err := this.Update()
+			if (err != nil) != tt.wantErr {
+				t.Errorf("Update() error = %v, wantErr %v", err, tt.wantErr)
+				return
+			}
+			if got != tt.want {
+				t.Errorf("Update() got = %v, want %v", got, tt.want)
+			}
+		})
+	}
+}

+ 669 - 21
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go

@@ -1,7 +1,12 @@
 // 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
@@ -782,6 +787,397 @@ func (x *SomeInfo) GetUserId() string {
 	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{
@@ -816,6 +1212,7 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	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,
@@ -887,9 +1284,110 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	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,
@@ -901,6 +1399,7 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	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,
@@ -914,6 +1413,83 @@ var file_bxsubscribe_proto_rawDesc = []byte{
 	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 (
@@ -928,29 +1504,41 @@ func file_bxsubscribe_proto_rawDescGZIP() []byte {
 	return file_bxsubscribe_proto_rawDescData
 }
 
-var file_bxsubscribe_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+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
+	(*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
-	0, // 3: bxsubscribe.Bxsubscribe.GetSubList:input_type -> bxsubscribe.SubscribeInfosReq
-	4, // 4: bxsubscribe.Bxsubscribe.GetSubSomeInfo:input_type -> bxsubscribe.SomeInfoReq
-	1, // 5: bxsubscribe.Bxsubscribe.GetSubList:output_type -> bxsubscribe.SubscribeInfosResp
-	5, // 6: bxsubscribe.Bxsubscribe.GetSubSomeInfo:output_type -> bxsubscribe.SomeInfoResp
-	5, // [5:7] is the sub-list for method output_type
-	3, // [3:5] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
+	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() }
@@ -1043,6 +1631,66 @@ func file_bxsubscribe_proto_init() {
 				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{
@@ -1050,7 +1698,7 @@ func file_bxsubscribe_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_bxsubscribe_proto_rawDesc,
 			NumEnums:      0,
-			NumMessages:   7,
+			NumMessages:   13,
 			NumExtensions: 0,
 			NumServices:   1,
 		},

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

@@ -1,7 +1,11 @@
 // 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
@@ -26,6 +30,8 @@ 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 {
@@ -54,6 +60,15 @@ func (c *bxsubscribeClient) GetSubSomeInfo(ctx context.Context, in *SomeInfoReq,
 	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
@@ -62,6 +77,8 @@ type BxsubscribeServer interface {
 	GetSubList(context.Context, *SubscribeInfosReq) (*SubscribeInfosResp, error)
 	//获取订阅推送相关信息
 	GetSubSomeInfo(context.Context, *SomeInfoReq) (*SomeInfoResp, error)
+	//修改订阅信息接口
+	UpdateSubScribeInfo(context.Context, *UpdateSubScribeInfoReq) (*StatusResp, error)
 	mustEmbedUnimplementedBxsubscribeServer()
 }
 
@@ -75,6 +92,9 @@ func (UnimplementedBxsubscribeServer) GetSubList(context.Context, *SubscribeInfo
 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.
@@ -124,6 +144,24 @@ func _Bxsubscribe_GetSubSomeInfo_Handler(srv interface{}, ctx context.Context, d
 	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)
@@ -139,6 +177,10 @@ var Bxsubscribe_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "GetSubSomeInfo",
 			Handler:    _Bxsubscribe_GetSubSomeInfo_Handler,
 		},
+		{
+			MethodName: "UpdateSubScribeInfo",
+			Handler:    _Bxsubscribe_UpdateSubScribeInfo_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "bxsubscribe.proto",