Browse Source

feat:新增修改超级订阅订阅设置修改

zhangxinlei1996 2 năm trước cách đây
mục cha
commit
2cf5526c49
30 tập tin đã thay đổi với 2567 bổ sung79 xóa
  1. 8 1
      jyBXSubscribe/README.md
  2. BIN
      jyBXSubscribe/api/api.exe
  3. 19 0
      jyBXSubscribe/api/bxsubscribe.api
  4. 4 0
      jyBXSubscribe/api/etc/db.yaml
  5. 12 1
      jyBXSubscribe/api/init/db.go
  6. 4 3
      jyBXSubscribe/api/init/init.go
  7. 5 0
      jyBXSubscribe/api/internal/handler/routes.go
  8. 28 0
      jyBXSubscribe/api/internal/handler/subscribeupdatehandler.go
  9. 82 0
      jyBXSubscribe/api/internal/logic/subscribeupdatelogic.go
  10. 17 0
      jyBXSubscribe/api/internal/types/types.go
  11. 30 0
      jyBXSubscribe/api/logs/access.log
  12. 0 0
      jyBXSubscribe/api/logs/error.log
  13. 4 0
      jyBXSubscribe/api/logs/error.log-2022-08-29
  14. 0 0
      jyBXSubscribe/api/logs/severe.log
  15. 0 0
      jyBXSubscribe/api/logs/slow.log
  16. 0 0
      jyBXSubscribe/api/logs/stat.log
  17. 430 0
      jyBXSubscribe/api/logs/stat.log-2022-08-29
  18. 8 0
      jyBXSubscribe/entity/common.go
  19. 18 4
      jyBXSubscribe/rpc/bxsubscribe.go
  20. 47 0
      jyBXSubscribe/rpc/bxsubscribe.proto
  21. 20 7
      jyBXSubscribe/rpc/bxsubscribe/bxsubscribe.go
  22. 10 21
      jyBXSubscribe/rpc/init/init.go
  23. 107 0
      jyBXSubscribe/rpc/internal/logic/updatesubscribeinfologic.go
  24. 6 0
      jyBXSubscribe/rpc/internal/server/bxsubscribeserver.go
  25. 162 0
      jyBXSubscribe/rpc/model/service/coverage
  26. 722 0
      jyBXSubscribe/rpc/model/service/coverage.html
  27. 109 0
      jyBXSubscribe/rpc/model/service/subscribe.go
  28. 116 0
      jyBXSubscribe/rpc/model/service/subscribe_test.go
  29. 560 41
      jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go
  30. 39 1
      jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe_grpc.pb.go

+ 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

@@ -39,10 +39,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.MgoLog.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)
+		}
+	}
+}

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

@@ -0,0 +1,82 @@
+package logic
+
+import (
+	"context"
+	"fmt"
+	it "jyBXSubscribe/api/init"
+	"jyBXSubscribe/api/internal/svc"
+	"jyBXSubscribe/api/internal/types"
+	"jyBXSubscribe/rpc/model/service"
+
+	"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 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 {
+		resp.Data = map[string]interface{}{
+			"status": status,
+		}
+	}
+	return
+}

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

@@ -31,3 +31,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"`
+}

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

@@ -0,0 +1,30 @@
+{"@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"}

+ 0 - 0
jyBXSubscribe/api/logs/error.log


+ 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"}

+ 0 - 0
jyBXSubscribe/api/logs/severe.log


+ 0 - 0
jyBXSubscribe/api/logs/slow.log


+ 0 - 0
jyBXSubscribe/api/logs/stat.log


+ 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

@@ -82,9 +82,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...)
+}

+ 10 - 21
jyBXSubscribe/rpc/init/init.go

@@ -1,32 +1,23 @@
 package init
 
 import (
-	"flag"
-	_ "github.com/go-sql-driver/mysql"
-	"github.com/zeromicro/go-zero/core/conf"
-	"github.com/zeromicro/go-zero/core/logx"
 	"jyBXSubscribe/entity"
 	"jyBXSubscribe/rpc/internal/config"
-)
 
-var configF = flag.String("cf", "etc/bxsubscribe.yaml", "the config file")
+	_ "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 Logc entity.Logc
 
-func init() {
-	//初始化基本配置
-	conf.MustLoad(*configF, &C)
-	//初始化数据库配置
-	conf.MustLoad(*dbFile, &DB)
+func InitC() {
 	//初始mongodb
 	MongoDBInit(&DB.Mongo)
 	//初始化msyql
@@ -35,15 +26,13 @@ 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, "--日志记录")
 		}

+ 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>

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

@@ -0,0 +1,109 @@
+// @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 != "" {
+		setMap["o_vipjy.i_matchbuyerclass_other"] = this.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)
+			}
+		})
+	}
+}

+ 560 - 41
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe.pb.go

@@ -1,13 +1,12 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.23.0
-// 	protoc        v3.15.5
+// 	protoc-gen-go v1.27.1
+// 	protoc        v3.19.4
 // source: bxsubscribe.proto
 
 package bxsubscribe
 
 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 SubscribeInfosReq struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -771,6 +766,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{
@@ -886,19 +1272,80 @@ 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,
-	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x32, 0xa3, 0x01, 0x0a, 0x0b,
-	0x42, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x47,
-	0x65, 0x74, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x62, 0x78, 0x73, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62, 0x78, 0x73, 0x75,
-	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x0e, 0x47, 0x65,
-	0x74, 0x53, 0x75, 0x62, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x62,
-	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
-	0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
-	0x70, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
-	0x62, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x0a, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72,
+	0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72,
+	0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f,
+	0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xf9, 0x03,
+	0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62,
+	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x41, 0x0a, 0x04, 0x61, 0x72, 0x65, 0x61,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x53, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x2e, 0x41, 0x72, 0x65, 0x61,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x61, 0x72, 0x65, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x62,
+	0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
+	0x0a, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x69,
+	0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x62, 0x78, 0x73,
+	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05,
+	0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x74, 0x79, 0x70,
+	0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x74, 0x79, 0x70,
+	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79, 0x12, 0x22, 0x0a,
+	0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x6d, 0x61, 0x74, 0x63,
+	0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x61, 0x74, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x61, 0x74, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
+	0x07, 0x61, 0x70, 0x70, 0x70, 0x75, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+	0x61, 0x70, 0x70, 0x70, 0x75, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6c, 0x70,
+	0x75, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6c, 0x70,
+	0x75, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72,
+	0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x62, 0x75, 0x79, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x73,
+	0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x4e, 0x0a, 0x09, 0x41, 0x72, 0x65,
+	0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73,
+	0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x43, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1e, 0x0a, 0x08, 0x43, 0x69, 0x74,
+	0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x22, 0x66, 0x0a, 0x05, 0x49, 0x74, 0x65,
+	0x6d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75,
+	0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x61, 0x5f, 0x6b,
+	0x65, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62,
+	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x04, 0x61, 0x4b, 0x65,
+	0x79, 0x22, 0x8a, 0x01, 0x0a, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06,
+	0x6e, 0x6f, 0x74, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f,
+	0x74, 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
+	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x77, 0x61, 0x79,
+	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x32, 0xf8,
+	0x01, 0x0a, 0x0b, 0x42, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x4d,
+	0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a,
+	0x0e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x18, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f,
+	0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x62, 0x78, 0x73, 0x75,
+	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53, 0x6f, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75,
+	0x62, 0x53, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x62, 0x78,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x53, 0x75, 0x62, 0x53, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71,
+	0x1a, 0x17, 0x2e, 0x62, 0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x62,
+	0x78, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (
@@ -913,29 +1360,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() }
@@ -1028,6 +1487,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{
@@ -1035,7 +1554,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,
 		},

+ 39 - 1
jyBXSubscribe/rpc/type/bxsubscribe/bxsubscribe_grpc.pb.go

@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
 // - protoc-gen-go-grpc v1.2.0
-// - protoc             v3.15.5
+// - protoc             v3.19.4
 // source: bxsubscribe.proto
 
 package bxsubscribe
@@ -26,6 +26,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 +56,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 +73,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 +88,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 +140,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 +173,10 @@ var Bxsubscribe_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "GetSubSomeInfo",
 			Handler:    _Bxsubscribe_GetSubSomeInfo_Handler,
 		},
+		{
+			MethodName: "UpdateSubScribeInfo",
+			Handler:    _Bxsubscribe_UpdateSubScribeInfo_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "bxsubscribe.proto",