瀏覽代碼

feat:工作桌面 菜单接口

wangshan 3 年之前
父節點
當前提交
145793b24a
共有 69 個文件被更改,包括 2722 次插入689 次删除
  1. 0 2
      README.md
  2. 2 1
      api/etc/usercenter-api.yaml
  3. 3 3
      api/internal/handler/checkenthandler.go
  4. 3 3
      api/internal/handler/entauthhandler.go
  5. 3 3
      api/internal/handler/entinfohandler.go
  6. 3 3
      api/internal/handler/entlisthandler.go
  7. 3 3
      api/internal/handler/examinehandler.go
  8. 3 3
      api/internal/handler/examineinfohandler.go
  9. 3 3
      api/internal/handler/examinelisthandler.go
  10. 3 3
      api/internal/handler/getstatusbycodehandler.go
  11. 9 4
      api/internal/handler/routes.go
  12. 3 3
      api/internal/handler/updateenthandler.go
  13. 3 3
      api/internal/handler/useraddhandler.go
  14. 3 3
      api/internal/handler/userdelhandler.go
  15. 3 3
      api/internal/handler/userupdatehandler.go
  16. 28 0
      api/internal/handler/workdesktopmenuhandler.go
  17. 4 4
      api/internal/logic/checkentlogic.go
  18. 4 4
      api/internal/logic/entauthlogic.go
  19. 4 4
      api/internal/logic/entinfologic.go
  20. 4 4
      api/internal/logic/entlistlogic.go
  21. 4 4
      api/internal/logic/examineinfologic.go
  22. 4 4
      api/internal/logic/examinelistlogic.go
  23. 4 4
      api/internal/logic/examinelogic.go
  24. 4 4
      api/internal/logic/getstatusbycodelogic.go
  25. 4 4
      api/internal/logic/updateentlogic.go
  26. 4 4
      api/internal/logic/useraddlogic.go
  27. 4 4
      api/internal/logic/userdellogic.go
  28. 4 4
      api/internal/logic/userupdatelogic.go
  29. 43 0
      api/internal/logic/workdesktopmenulogic.go
  30. 1 1
      api/internal/svc/servicecontext.go
  31. 13 0
      api/internal/types/types.go
  32. 18 1
      api/userCenter.api
  33. 5 5
      api/usercenter.go
  34. 2 0
      entity/db.go
  35. 1 1
      entity/ent.go
  36. 150 0
      entity/user.go
  37. 206 0
      entity/workDesktop.go
  38. 86 7
      go.mod
  39. 151 38
      go.sum
  40. 14 4
      rpc/etc/usercenter.yaml
  41. 19 1
      rpc/internal/config/config.go
  42. 21 3
      rpc/internal/db/db.go
  43. 2 2
      rpc/internal/logic/checkentlogic.go
  44. 2 2
      rpc/internal/logic/entauthlogic.go
  45. 2 2
      rpc/internal/logic/entexaminelogic.go
  46. 2 2
      rpc/internal/logic/entinfologic.go
  47. 2 2
      rpc/internal/logic/entlistlogic.go
  48. 2 2
      rpc/internal/logic/entservice.go
  49. 2 2
      rpc/internal/logic/entupdatelogic.go
  50. 2 2
      rpc/internal/logic/examineinfologic.go
  51. 2 2
      rpc/internal/logic/examinelistlogic.go
  52. 2 2
      rpc/internal/logic/getstatusbycodelogic.go
  53. 3 3
      rpc/internal/logic/useraddlogic.go
  54. 3 3
      rpc/internal/logic/userdellogic.go
  55. 3 3
      rpc/internal/logic/userupdatelogic.go
  56. 70 0
      rpc/internal/logic/workdesktopmenulogic.go
  57. 10 3
      rpc/internal/server/usercenterserver.go
  58. 1 1
      rpc/internal/svc/servicecontext.go
  59. 785 263
      rpc/pb/userCenter.pb.go
  60. 563 0
      rpc/pb/userCenter_grpc.pb.go
  61. 2 2
      rpc/test/ent_test.go
  62. 2 2
      rpc/test/user_test.go
  63. 2 2
      rpc/timetask/timetask.go
  64. 225 167
      rpc/userCenter.proto
  65. 6 6
      rpc/usercenter.go
  66. 72 58
      rpc/usercenter/usercenter.go
  67. 2 2
      service/entService.go
  68. 2 2
      service/user.go
  69. 98 0
      service/workDesktop.go

+ 0 - 2
README.md

@@ -1,6 +1,4 @@
 用户/企业中台
-v1.2.1
-工作桌面
 
 $ goctl rpc protoc userCenter.proto --go_out=. --go-grpc_out=. --zrpc_out=.
 

+ 2 - 1
api/etc/usercenter-api.yaml

@@ -6,10 +6,11 @@ UserCenterRpcConf:
     Hosts:
       - 127.0.0.1:2379
     Key: usercenter.rpc
+  Timeout: 10000
 GatewayRpcConf:
   Etcd:
     Hosts:
-      -  192.168.3.240:2379
+      -  192.168.3.206:2379
     Key: gatewayDemo.rpc
 Timeout:  5000
 Logx:

+ 3 - 3
api/internal/handler/checkenthandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 

+ 3 - 3
api/internal/handler/entauthhandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 

+ 3 - 3
api/internal/handler/entinfohandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 

+ 3 - 3
api/internal/handler/entlisthandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 

+ 3 - 3
api/internal/handler/examinehandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 

+ 3 - 3
api/internal/handler/examineinfohandler.go

@@ -3,10 +3,10 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 )
 
 func ExamineInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {

+ 3 - 3
api/internal/handler/examinelisthandler.go

@@ -3,10 +3,10 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 )
 
 func ExamineListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {

+ 3 - 3
api/internal/handler/getstatusbycodehandler.go

@@ -3,10 +3,10 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 )
 
 func GetStatusByCodeHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {

+ 9 - 4
api/internal/handler/routes.go

@@ -4,13 +4,13 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
+	"userCenter/api/internal/svc"
 
 	"github.com/zeromicro/go-zero/rest"
 )
 
-func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) {
-	engine.AddRoutes(
+func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
+	server.AddRoutes(
 		[]rest.Route{
 			{
 				Method:  http.MethodPost,
@@ -57,10 +57,15 @@ func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/userCenter/ent/getStatusByCode",
 				Handler: GetStatusByCodeHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodPost,
+				Path:    "/userCenter/workDesktop/menu",
+				Handler: WorkDesktopMenuHandler(serverCtx),
+			},
 		},
 	)
 
-	engine.AddRoutes(
+	server.AddRoutes(
 		[]rest.Route{
 			{
 				Method:  http.MethodPost,

+ 3 - 3
api/internal/handler/updateenthandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 	"github.com/zeromicro/go-zero/rest/httpx"
 )
 

+ 3 - 3
api/internal/handler/useraddhandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 
 	"github.com/zeromicro/go-zero/rest/httpx"
 )

+ 3 - 3
api/internal/handler/userdelhandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 
 	"github.com/zeromicro/go-zero/rest/httpx"
 )

+ 3 - 3
api/internal/handler/userupdatehandler.go

@@ -3,9 +3,9 @@ package handler
 import (
 	"net/http"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
+	"userCenter/api/internal/logic"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
 
 	"github.com/zeromicro/go-zero/rest/httpx"
 )

+ 28 - 0
api/internal/handler/workdesktopmenuhandler.go

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

+ 4 - 4
api/internal/logic/checkentlogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/entauthlogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/entinfologic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/entlistlogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/examineinfologic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/examinelistlogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/examinelogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/getstatusbycodelogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/updateentlogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 4 - 4
api/internal/logic/useraddlogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	. "userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/core/logx"
 )
 

+ 4 - 4
api/internal/logic/userdellogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	. "userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/core/logx"
 )
 

+ 4 - 4
api/internal/logic/userupdatelogic.go

@@ -3,10 +3,10 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/types"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	"userCenter/entity"
+	. "userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/core/logx"
 )
 

+ 43 - 0
api/internal/logic/workdesktopmenulogic.go

@@ -0,0 +1,43 @@
+package logic
+
+import (
+	"context"
+	"net/http"
+	"userCenter/entity"
+
+	"userCenter/api/internal/svc"
+	"userCenter/api/internal/types"
+	. "userCenter/rpc/usercenter"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type WorkDesktopMenuLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	r      *http.Request
+}
+
+func NewWorkDesktopMenuLogic(ctx context.Context, svcCtx *svc.ServiceContext, r *http.Request) *WorkDesktopMenuLogic {
+	return &WorkDesktopMenuLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		r:      r,
+	}
+}
+
+func (l *WorkDesktopMenuLogic) WorkDesktopMenu(req *types.WorkDesktopMenuReq) (resp *types.Resp, err error) {
+	res, err := entity.UserCenterRpc.WorkDesktopMenu(l.ctx, &WorkDesktopMenuReq{
+		AppId:    req.AppId,
+		UserId:   req.UserId,
+		Phone:    req.Phone,
+		Platform: req.Platform,
+	})
+	return &types.Resp{
+		Error_code: res.ErrorCode,
+		Error_msg:  res.ErrorMsg,
+		Data:       res.Data,
+	}, err
+}

+ 1 - 1
api/internal/svc/servicecontext.go

@@ -1,7 +1,7 @@
 package svc
 
 import (
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/config"
+	"userCenter/api/internal/config"
 )
 
 type ServiceContext struct {

+ 13 - 0
api/internal/types/types.go

@@ -219,3 +219,16 @@ type UserDelReq struct {
 	Authorization string `header:"Authorization"`
 	Id            int64  `json:"id"`
 }
+
+type WorkDesktopMenuReq struct {
+	Platform string `json:"platform,optional"`
+	UserId   string `header:"userId,optional"`
+	AppId    string `header:"appId,optional"`
+	Phone    string `header:"phone,optional"`
+}
+
+type CommonResp struct {
+	Error_code int64       `json:"error_code"`
+	Error_msg  string      `json:"error_msg"`
+	Data       interface{} `json:"data"`
+}

+ 18 - 1
api/userCenter.api

@@ -232,6 +232,20 @@ type (
 		Authorization string `header:"Authorization"`
 		Id            int64  `json:"id"`
 	}
+
+	//工作桌面 -- 菜单
+	WorkDesktopMenuReq {
+		Platform string `json:"platform,optional"`
+		UserId   string `header:"userId,optional"`
+		AppId    string `header:"appId,optional"`
+		Phone    string `header:"phone,optional"`
+	}
+	//
+	CommonResp {
+		Error_code int64       `json:"error_code"`
+		Error_msg  string      `json:"error_msg"`
+		Data       interface{} `json:"data"`
+	}
 )
 
 service userCenter-api {
@@ -240,7 +254,7 @@ service userCenter-api {
 	@handler CheckEnt
 	post /userCenter/ent/check (checkEntReq) returns (resp)
 	@handler EntAuth
-	post /userCenter/ent/auth (authEntReq) returns(resp)
+	post /userCenter/ent/auth (authEntReq) returns (resp)
 	@handler EntList
 	post /userCenter/ent/list (entListReq) returns (entListResp)
 	@handler ExamineList
@@ -253,6 +267,9 @@ service userCenter-api {
 	post /userCenter/ent/update (UpdateEntReq) returns (resp)
 	@handler GetStatusByCode
 	post /userCenter/ent/getStatusByCode (GetStatusByCodeReq) returns (GetStatusByCodeResp)
+	
+	@handler WorkDesktopMenu
+	post /userCenter/workDesktop/menu (WorkDesktopMenuReq) returns (CommonResp)
 }
 
 @server(

+ 5 - 5
api/usercenter.go

@@ -8,11 +8,11 @@ import (
 	"syscall"
 
 	"bp.jydev.jianyu360.cn/BaseService/gateway/core/node"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/config"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/handler"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/api/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/api/internal/config"
+	"userCenter/api/internal/handler"
+	"userCenter/api/internal/svc"
+	"userCenter/entity"
+	"userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/core/conf"
 	"github.com/zeromicro/go-zero/core/logx"
 	"github.com/zeromicro/go-zero/rest"

+ 2 - 0
entity/db.go

@@ -1,6 +1,7 @@
 package entity
 
 import (
+	"app.yhyue.com/moapp/jybase/mongodb"
 	"app.yhyue.com/moapp/jybase/mysql"
 )
 
@@ -9,4 +10,5 @@ var (
 	BaseMysql         *mysql.Mysql
 	UserTable         = "base_user"
 	UserSnapshotTable = "base_user_snapshot"
+	Mgo               mongodb.MongodbSim
 )

+ 1 - 1
entity/ent.go

@@ -13,8 +13,8 @@ import (
 	"app.yhyue.com/moapp/jybase/mysql"
 	resourcepb "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/pb"
 	"bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource"
-	usercenterclient "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/core/logx"
+	usercenterclient "userCenter/rpc/usercenter"
 )
 
 var VarEntInfo = &EntInfo{}

+ 150 - 0
entity/user.go

@@ -0,0 +1,150 @@
+package entity
+
+import (
+	MC "app.yhyue.com/moapp/jybase/common"
+	"github.com/zeromicro/go-zero/core/logx"
+	"sync"
+	"time"
+)
+
+const (
+	IsNewFreeTimeCell       = 1637830020
+	BigmemberUserPowerTable = "bigmember_service_user"
+	RedisCode               = "newother"
+	RedisMenuKey            = "jy_workdesktopmenu_%s_%s"
+)
+
+var (
+	PowerLock        = sync.Mutex{}
+	UserPowerLock    = map[string]*sync.Mutex{}
+	UserPowerMapMap  = map[string]map[string]int{}
+	UserPowerPools   = make(chan string, 5000)
+	UserPowerOutTime = 3 * time.Minute
+)
+
+//用户权限 初始化
+func AutoUserPowerInfo(userId string, internalTime int, bigMemberOff bool) map[string]int {
+	/*
+	* 商机管理--》新版商机管理vs老版商机管理
+	* 大会员--》bigmember_service
+	* 超级订阅--》新版超级订阅vs老版超级订阅
+	* 免费用户--》新免费用户
+	 */
+	if UserPowerMapMap[userId] == nil {
+		PowerLock.Lock()
+		UserPowerLock[userId] = &sync.Mutex{}
+		UserPowerMapMap[userId] = map[string]int{}
+		PowerLock.Unlock()
+
+		UserPowerLock[userId].Lock()
+		defer UserPowerLock[userId].Unlock()
+
+		//查询用户信息
+		data, ok := Mgo.FindById("user", userId, `{"s_phone":1,"s_m_phone":1,i_member_status":1,"s_member_mainid":1,"i_member_sub_status":1,"i_vip_status":1,"o_vipjy":1,"o_jy":1,"l_registedate":1}`)
+		if ok && *data != nil && len(*data) > 0 {
+			phone, _ := MC.If((*data)["s_phone"] != nil, (*data)["s_phone"], (*data)["s_m_phone"]).(string)
+			if phone != "" {
+				//商机管理用户
+				//同一个手机号 多个商机管理角色 其中一个是企业管理员或者部门管理员 查的时候按角色权重排序
+				entNicheInfos := Mysql.SelectBySql(`SELECT i.isNew,r.role_id  FROM (entniche_user u LEFT JOIN entniche_user_role r ON r.user_id = u.id)  LEFT JOIN entniche_info i ON u.ent_id=i.id WHERE u.phone = 13000000727 and u.power=1 and i.status=1 ORDER BY r.role_id DESC`, phone)
+				//商机管理用户信息判断
+				if entNicheInfos != nil && len(*entNicheInfos) > 0 {
+					entNicheInfo := (*entNicheInfos)[0]
+					if MC.ObjToString(entNicheInfo["isNew"]) != "" {
+						switch MC.ObjToString(entNicheInfo["isNew"]) {
+						case "1": //新版商机管理
+							UserPowerMapMap[userId]["110"] = 1
+							switch MC.ObjToString(entNicheInfo["role_id"]) {
+							case "1": //部门管理员
+								UserPowerMapMap[userId]["111"] = 1
+							case "2": //企业管理员
+								UserPowerMapMap[userId]["112"] = 1
+							}
+						case "0": //老版商机管理
+							UserPowerMapMap[userId]["100"] = 1
+							switch MC.ObjToString(entNicheInfo["role_id"]) {
+							case "1": //部门管理员
+								UserPowerMapMap[userId]["101"] = 1
+							case "2": //企业管理员
+								UserPowerMapMap[userId]["102"] = 1
+							}
+						}
+					}
+				}
+				//大会员
+				if memberStatus := MC.IntAll((*data)["i_member_status"]); memberStatus > 0 || bigMemberOff {
+					userId := userId
+					if memberStatus > 0 {
+						UserPowerMapMap[userId]["1"] = memberStatus
+						//是否是子账号 而且 子账号被启用
+						if (*data)["s_member_mainid"] != nil && MC.ObjToString((*data)["s_member_mainid"]) != "" && MC.IntAllDef((*data)["i_member_sub_status"], 0) > 0 {
+							userId = MC.ObjToString((*data)["s_member_mainid"])
+						}
+					}
+					//大会员用户购买的服务
+					serviceList := Mysql.Find(BigmemberUserPowerTable, map[string]interface{}{"s_userid": userId, "i_status": 0}, "DISTINCT(s_serviceid),i_frequency", "", -1, -1)
+					if serviceList != nil && len(*serviceList) != 0 {
+						for _, sv := range *serviceList {
+							UserPowerMapMap[userId][MC.ObjToString(sv["s_serviceid"])] = MC.IntAll(sv["i_frequency"])
+						}
+					}
+				}
+				//VIP用户
+				if vipStatus := MC.IntAll((*data)["i_vip_status"]); vipStatus > 0 {
+					UserPowerMapMap[userId]["200"] = vipStatus
+					if vipSet := MC.ObjToMap((*data)["o_vipjy"]); vipSet != nil {
+						if buySet := MC.ObjToMap((*vipSet)["o_buyset"]); buySet != nil {
+							//vip 升级用户
+							if MC.IntAll((*buySet)["upgrade"]) > 0 {
+								UserPowerMapMap[userId]["201"] = vipStatus
+							}
+						}
+					}
+				}
+				//免费用户
+				freeSet := MC.ObjToMap((*data)["o_jy"])
+				if MC.IntAll((*freeSet)["i_newfree"]) > 0 || IsNewFreeTimeCell < MC.IntAll((*data)["l_registedate"]) {
+					//新免费用户
+					UserPowerMapMap[userId]["300"] = 1
+				}
+				//广东移动DICT
+				if Mysql.CountBySql(`select count(*) from privatedata where phone = ?`, phone) > 0 {
+					UserPowerMapMap[userId]["400"] = 1
+				}
+			}
+		}
+		go func(userId string) {
+			//默认存2分钟
+			time.Sleep(time.Duration(internalTime))
+			UserPowerPools <- userId
+		}(userId)
+	}
+	return UserPowerMapMap[userId]
+}
+
+//定时清用户权限缓存
+func ClearUserPower() {
+	for {
+		select {
+		case userId := <-UserPowerPools:
+			if userId != "" {
+				PowerLock.Lock()
+				userPower := UserPowerMapMap[userId]
+				PowerLock.Unlock()
+				if userPower != nil {
+					func() {
+						UserPowerLock[userId].Lock()
+						defer UserPowerLock[userId].Lock()
+						PowerLock.Lock()
+						delete(UserPowerMapMap, userId)
+						PowerLock.Unlock()
+					}()
+				}
+			}
+		case <-time.After(UserPowerOutTime):
+			logx.Info("-超时-", UserPowerOutTime)
+			//超时时间累加
+			UserPowerOutTime += UserPowerOutTime
+		}
+	}
+}

+ 206 - 0
entity/workDesktop.go

@@ -0,0 +1,206 @@
+package entity
+
+import (
+	MC "app.yhyue.com/moapp/jybase/common"
+	"github.com/zeromicro/go-zero/core/logx"
+	"sort"
+	"strings"
+	"userCenter/rpc/pb"
+)
+
+// WorkDesktopMenu 工作桌面菜单信息
+type WorkDesktopMenu struct {
+	MenuTree     []*JYMenu
+	UserId       string
+	TimeOut      int
+	BigMemberOff bool
+}
+
+// JYMenu 工作桌面菜单内容
+type JYMenu struct {
+	Id             int
+	Name           string
+	OrderId        int
+	ParentId       int
+	PowerIds       string
+	CheckCode      int
+	Url            string
+	Icon           string
+	AdditionalInfo Additional
+	AppType        string
+	OpenType       string
+	Children       []*JYMenu
+}
+
+type Additional struct {
+	Title        string `json:"title"`
+	Content      string `json:"content"`
+	ConfirmUrl   string `json:"confirmUrl"`
+	ConfirmText  string `json:"confirmText"`
+	IsShowCancel bool   `json:"isShowCancel"`
+}
+
+// WorkMenuTree 菜单-格式化-tree
+func (m *WorkDesktopMenu) WorkMenuTree(parentId int) (jyMenu []*JYMenu) {
+	jyMenu = make([]*JYMenu, 0)
+	for _, mv := range m.MenuTree {
+		if mv.ParentId == parentId {
+			mv.Children = m.WorkMenuTree(mv.Id)
+			sort.SliceStable(mv.Children, func(i, j int) bool {
+				return mv.Children[i].OrderId < mv.Children[j].OrderId
+			})
+			jyMenu = append(jyMenu, mv)
+		}
+	}
+	sort.SliceStable(jyMenu, func(i, j int) bool {
+		return jyMenu[i].OrderId < jyMenu[j].OrderId
+	})
+	//bytes, _ := json.MarshalIndent(jyMenu, "", "   ")
+	//fmt.Printf("%s\n", bytes)
+	//log.Println("-------")
+	return
+}
+
+var verification = map[string]string{
+	"商机管理": "100,101,102,110,111,112",
+	"大会员":  "1",
+	"超级订阅": "200,201",
+}
+
+// WorkMenuFormat 菜单 格式化
+func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
+	logx.Info("树的长度:", len(m.MenuTree))
+	menuList := make([]*pb.MenuList, 0)
+	for _, mv := range m.MenuTree {
+		//0:默认展示;1:需验证权限,有权限展示;2:需验证权限,无权限也可展示(可用服务无权限不展示)
+		usable := m.VerifyPermissions(mv.PowerIds)
+		//checkCode==1 验证权限结果 无权限不显示
+		if !usable && mv.CheckCode == 1 {
+			continue
+		}
+		oneLevel := &pb.MenuList{
+			Name:   mv.Name,
+			Icon:   mv.Icon,
+			Url:    mv.Url,
+			Usable: MC.If(mv.PowerIds != "", usable && mv.CheckCode == 1, true).(bool),
+			Child:  []*pb.SecondLevelMenu{},
+		}
+		if len(mv.Children) > 0 {
+			for _, sv := range mv.Children {
+				//0:默认展示;1:需验证权限,有权限展示;2:需验证权限,无权限也可展示(可用服务无权限不展示)
+				usable := m.VerifyPermissions(mv.PowerIds)
+				//checkCode==1 验证权限结果 无权限不显示
+				if !usable && mv.CheckCode == 1 {
+					continue
+				}
+				secondLevel := &pb.SecondLevelMenu{
+					Name:   sv.Name,
+					Icon:   sv.Icon,
+					Url:    sv.Url,
+					Usable: MC.If(mv.PowerIds != "", usable && mv.CheckCode == 1, true).(bool),
+					Child:  []*pb.ThreeLevelMenu{},
+				}
+				if len(sv.Children) > 0 {
+					for _, tv := range sv.Children {
+						//0:默认展示;1:需验证权限,有权限展示;2:需验证权限,无权限也可展示(可用服务无权限不展示)
+						usable := m.VerifyPermissions(mv.PowerIds)
+						//checkCode==1 验证权限结果 无权限不显示
+						if !usable && mv.CheckCode == 1 {
+							continue
+						}
+						threeLevel := &pb.ThreeLevelMenu{
+							Name:     tv.Name,
+							Icon:     tv.Icon,
+							Url:      tv.Url,
+							Usable:   MC.If(mv.PowerIds != "", usable && mv.CheckCode == 1, true).(bool),
+							AppType:  tv.AppType,
+							OpenType: tv.OpenType,
+							IsCheck:  tv.CheckCode > 0, //0:默认展示;1:需验证权限,有权限展示;2:需验证权限,无权限也可展示(可用服务无权限不展示)
+							TipInfo: &pb.TipInfo{
+								Title:        tv.AdditionalInfo.Title,
+								Content:      tv.AdditionalInfo.Content,
+								ConfirmUrl:   tv.AdditionalInfo.ConfirmUrl,
+								ConfirmText:  tv.AdditionalInfo.ConfirmText,
+								IsShowCancel: tv.AdditionalInfo.IsShowCancel,
+							},
+						}
+						if len(tv.Children) > 0 {
+							for _, fv := range tv.Children {
+								if fv.Name == "" {
+									continue
+								}
+								threeLevel.Url = MC.If(fv.Url != "", fv.Url, tv.Url).(string)
+								threeLevel.Icon = MC.If(fv.Icon != "", fv.Icon, tv.Icon).(string)
+								if fv.AdditionalInfo.Title != "" {
+									threeLevel.TipInfo = &pb.TipInfo{
+										Title:        fv.AdditionalInfo.Title,
+										Content:      fv.AdditionalInfo.Content,
+										ConfirmUrl:   fv.AdditionalInfo.ConfirmUrl,
+										ConfirmText:  fv.AdditionalInfo.ConfirmText,
+										IsShowCancel: fv.AdditionalInfo.IsShowCancel,
+									}
+								}
+								//订阅是商机管理优先  其他功能是大会员优先(这样是有问题的  有些功能超级订阅用户可用 大会员用户权不可用)
+								//解决上面的问题:菜单只保留三级菜单;四级菜单信息不入库;判断三级菜单权限
+								switch {
+								case strings.Contains(tv.Name, "订阅"):
+									switch {
+									case strings.HasPrefix(fv.Name, "商机管理") && m.VerifyPermissions(verification["商机管理"]):
+										break
+									case strings.HasPrefix(fv.Name, "大会员") && m.VerifyPermissions(verification["大会员"]):
+										break
+									case strings.HasPrefix(fv.Name, "超级订阅") && m.VerifyPermissions(verification["超级订阅"]):
+										break
+									}
+								default:
+									switch {
+									case strings.HasPrefix(fv.Name, "大会员") && m.VerifyPermissions(verification["大会员"]):
+										break
+									case strings.HasPrefix(fv.Name, "商机管理") && m.VerifyPermissions(verification["商机管理"]):
+										break
+									case strings.HasPrefix(fv.Name, "超级订阅") && m.VerifyPermissions(verification["超级订阅"]):
+										break
+									}
+								}
+							}
+						}
+						if threeLevel != nil {
+							secondLevel.Child = append(secondLevel.Child, threeLevel)
+						}
+					}
+				}
+				oneLevel.Child = append(oneLevel.Child, secondLevel)
+			}
+		}
+		menuList = append(menuList, oneLevel)
+	}
+	//bytes, _ := json.MarshalIndent(menuList, "", "   ")
+	//fmt.Printf("%s\n", bytes)
+	return menuList, nil
+}
+
+// VerifyPermissions 是否有权限可用此服务
+func (m *WorkDesktopMenu) VerifyPermissions(powerIds string) (b bool) {
+	if powerIds == "" {
+		return true
+	}
+	if len(strings.Split(powerIds, ",")) > 0 {
+		PowerLock.Lock()
+		userPower := UserPowerMapMap[m.UserId]
+		PowerLock.Unlock()
+		if userPower == nil {
+			userPower = AutoUserPowerInfo(m.UserId, m.TimeOut, m.BigMemberOff)
+		}
+		func(powerIds string) {
+			UserPowerLock[m.UserId].Lock()
+			defer UserPowerLock[m.UserId].Unlock()
+			for _, pv := range strings.Split(powerIds, ",") {
+				if userPower[pv] > 0 {
+					b = true
+					break
+				}
+			}
+		}(powerIds)
+	}
+	return
+}

+ 86 - 7
go.mod

@@ -1,16 +1,95 @@
-module bp.jydev.jianyu360.cn/BaseService/userCenter
+module userCenter
 
-go 1.16
+go 1.18
 
 require (
 	app.yhyue.com/moapp/jyInfo v1.0.0
-	app.yhyue.com/moapp/jybase v0.0.0-20220421060131-a1001013ba46
+	app.yhyue.com/moapp/jybase v0.0.0-20220719064915-2fef79005dfa
 	bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4
-	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982
+	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.1
 	github.com/golang/protobuf v1.5.2
-	github.com/zeromicro/go-zero v1.3.2
-	golang.org/x/net v0.0.0-20220706163947-c90051bbdb60 // indirect
-	google.golang.org/grpc v1.45.0
+	github.com/zeromicro/go-zero v1.3.5
+	google.golang.org/grpc v1.48.0
 	google.golang.org/protobuf v1.28.0
+)
 
+require (
+	github.com/beorn7/perks v1.0.1 // indirect
+	github.com/cespare/xxhash/v2 v2.1.2 // indirect
+	github.com/coreos/go-semver v0.3.0 // indirect
+	github.com/coreos/go-systemd/v22 v22.3.2 // indirect
+	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f // indirect
+	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
+	github.com/fatih/color v1.13.0 // indirect
+	github.com/garyburd/redigo v1.6.2 // indirect
+	github.com/go-logr/logr v1.2.3 // indirect
+	github.com/go-logr/stdr v1.2.2 // indirect
+	github.com/go-redis/redis/v8 v8.11.5 // indirect
+	github.com/go-sql-driver/mysql v1.6.0 // indirect
+	github.com/go-stack/stack v1.8.0 // indirect
+	github.com/gogo/protobuf v1.3.2 // indirect
+	github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
+	github.com/golang/mock v1.6.0 // indirect
+	github.com/golang/snappy v0.0.4 // indirect
+	github.com/google/go-cmp v0.5.8 // indirect
+	github.com/google/gofuzz v1.2.0 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/googleapis/gnostic v0.5.5 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.1 // indirect
+	github.com/json-iterator/go v1.1.12 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
+	github.com/mattn/go-colorable v0.1.9 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
+	github.com/openzipkin/zipkin-go v0.4.0 // indirect
+	github.com/pelletier/go-toml/v2 v2.0.2 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/prometheus/client_golang v1.12.2 // indirect
+	github.com/prometheus/client_model v0.2.0 // indirect
+	github.com/prometheus/common v0.32.1 // indirect
+	github.com/prometheus/procfs v0.7.3 // indirect
+	github.com/spaolacci/murmur3 v1.1.0 // indirect
+	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
+	github.com/xdg-go/scram v1.0.2 // indirect
+	github.com/xdg-go/stringprep v1.0.2 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
+	go.etcd.io/etcd/api/v3 v3.5.4 // indirect
+	go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect
+	go.etcd.io/etcd/client/v3 v3.5.4 // indirect
+	go.mongodb.org/mongo-driver v1.9.1 // indirect
+	go.opentelemetry.io/otel v1.8.0 // indirect
+	go.opentelemetry.io/otel/exporters/jaeger v1.8.0 // indirect
+	go.opentelemetry.io/otel/exporters/zipkin v1.8.0 // indirect
+	go.opentelemetry.io/otel/sdk v1.8.0 // indirect
+	go.opentelemetry.io/otel/trace v1.8.0 // indirect
+	go.uber.org/atomic v1.9.0 // indirect
+	go.uber.org/automaxprocs v1.5.1 // indirect
+	go.uber.org/multierr v1.8.0 // indirect
+	go.uber.org/zap v1.21.0 // indirect
+	golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 // indirect
+	golang.org/x/net v0.0.0-20220531201128-c960675eff93 // indirect
+	golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f // indirect
+	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
+	golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
+	golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
+	golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2 // indirect
+	golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect
+	google.golang.org/appengine v1.6.7 // indirect
+	google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 // indirect
+	gopkg.in/inf.v0 v0.9.1 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	gorm.io/driver/mysql v1.0.5 // indirect
+	gorm.io/gorm v1.21.3 // indirect
+	k8s.io/api v0.22.9 // indirect
+	k8s.io/apimachinery v0.22.9 // indirect
+	k8s.io/client-go v0.22.9 // indirect
+	k8s.io/klog/v2 v2.40.1 // indirect
+	k8s.io/utils v0.0.0-20220706174534-f6158b442e7c // indirect
+	sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
+	sigs.k8s.io/yaml v1.2.0 // indirect
 )

+ 151 - 38
go.sum

@@ -5,8 +5,9 @@ app.yhyue.com/moapp/jybase v0.0.0-20220415064050-37ce64b3e2d4/go.mod h1:qNRA0sHu
 app.yhyue.com/moapp/jybase v0.0.0-20220418104200-46c3fff161c7/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 app.yhyue.com/moapp/jybase v0.0.0-20220419023055-f406279ff7e3/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 app.yhyue.com/moapp/jybase v0.0.0-20220420032112-668025915ee4/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
-app.yhyue.com/moapp/jybase v0.0.0-20220421060131-a1001013ba46 h1:ME9XyG40U8JQh70lmQnzACCPNaDyBQ5BaCVTIxPu6rk=
 app.yhyue.com/moapp/jybase v0.0.0-20220421060131-a1001013ba46/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
+app.yhyue.com/moapp/jybase v0.0.0-20220719064915-2fef79005dfa h1:fGlW3FjP2VeJCH6hZ2Oc1lwi5lI3n3U8JeLVCPKs+9c=
+app.yhyue.com/moapp/jybase v0.0.0-20220719064915-2fef79005dfa/go.mod h1:FjBF25AYoBrPhVKTXGXWcmEAbBT0ATTK6KJMOA+I80Q=
 bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698/go.mod h1:ojo/AUH9Yr1wzarEjOaNMkj1Cet/9r8IgLyba64Z52E=
 bp.jydev.jianyu360.cn/BaseService/gateway v0.0.0-20220419090715-88ddb32961be/go.mod h1:Yj4oabIGItuMoF0BXYLz2XAnF581kxgXBrvlUtIJrkI=
 bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4 h1:zl5eZrKDBENVVBUiPpzyQQ0/SBdGUmZS3thXycSEO1g=
@@ -14,8 +15,9 @@ bp.jydev.jianyu360.cn/BaseService/gateway v1.3.4/go.mod h1:BMLd/5wb3BIEGhnEgF9y1
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53/go.mod h1:E5lcDI3k4FESLxiAetCfWQTq8qfpy9cv0yN1oKoEO34=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220419023723-0b32d4a41751/go.mod h1:6KL5LMEku83uRbre0W/bj5kXG2I6pJGBFtktmtp51yM=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220419063004-233fc7ce006c/go.mod h1:6KL5LMEku83uRbre0W/bj5kXG2I6pJGBFtktmtp51yM=
-bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982 h1:+56m/dW9ZW0YEXgAakeIIxqUFefufzp5XckU4iEuIFM=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982/go.mod h1:wsHNO91h37H+xE4ZNny0yd7mtpODeDJxbVYhIRMR+qw=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.1 h1:DsPfVxVBWQ1NUWuroqRkPYuqQnRPj+LRPQjjPG+Vjyc=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.1/go.mod h1:hIemvGYYrFtL8mP7qIy1DENTEn1QQ09eUMf2DyXnigk=
 bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220418072311-2062bed1e700/go.mod h1:KjcrxTzM96tBc6G4B8tlLBn1lrVy5UJYF8+eTdP4xAE=
 bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220421015128-4a36f3eac5c5/go.mod h1:GT0QC4aaKDuXxAvaU4G02XjCc31TU1ctqBGqxQYOfC4=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
@@ -53,18 +55,23 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
 github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
 github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw=
+github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
 github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg=
 github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
+github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
 github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
 github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
 github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
 github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
+github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
 github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw=
 github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/ClickHouse/clickhouse-go v1.5.1/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
+github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
+github.com/ClickHouse/clickhouse-go/v2 v2.2.0/go.mod h1:8f2XZUi7XoeU+uPIytSi1cvx8fmJxi7vIgqpvYTF1+o=
 github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
 github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
@@ -72,6 +79,7 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
 github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
 github.com/Shopify/sarama v1.30.0/go.mod h1:zujlQQx1kzHsh4jfV1USnptCQrHAEZ2Hk8fTKCulPVs=
 github.com/Shopify/toxiproxy/v2 v2.1.6-0.20210914104332-15ea381dcdae/go.mod h1:/cvHQkZ1fst0EmZnA5dFtiQdWCNCFYzb+uE2vqVgvx0=
+github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -79,8 +87,9 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
 github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
 github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk=
 github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
-github.com/alicebob/miniredis/v2 v2.17.0 h1:EwLdrIS50uczw71Jc7iVSxZluTKj5nfSP8n7ARRnJy0=
 github.com/alicebob/miniredis/v2 v2.17.0/go.mod h1:gquAfGbzn92jvtrSC69+6zZnwSODVXVpYDRaGhWaL6I=
+github.com/alicebob/miniredis/v2 v2.22.0 h1:lIHHiSkEyS1MkKHCHzN+0mWrA4YdbGdimE5iZ2sHSzo=
+github.com/alicebob/miniredis/v2 v2.22.0/go.mod h1:XNqvJdQJv5mSuVMc0ynneafpnL/zv52acZ6kqeS0t88=
 github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
 github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
@@ -111,6 +120,7 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht
 github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
 github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
 github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@@ -143,19 +153,23 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
 github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
 github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
 github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
+github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
 github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
 github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
 github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
 github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
+github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
 github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
 github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
+github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM=
 github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
@@ -171,13 +185,17 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
 github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
 github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
 github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
+github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
 github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
 github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
 github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
@@ -185,12 +203,14 @@ github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL9
 github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
 github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg=
 github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w=
+github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
+github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
 github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
@@ -224,14 +244,15 @@ github.com/gogf/gf/v2 v2.0.6/go.mod h1:8uYzw7qNzuq8vrhVlWke1b1925FFqOJIgmyYW1sr/
 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU=
 github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
+github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs=
+github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
 github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
 github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
@@ -259,9 +280,11 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
 github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
 github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
 github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -273,8 +296,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
@@ -288,6 +312,7 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf
 github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -295,11 +320,16 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
 github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I=
 github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
+github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
+github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
+github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
+github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
 github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
 github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
 github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
+github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
 github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
@@ -311,11 +341,11 @@ github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslC
 github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=
 github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
 github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
 github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
@@ -352,6 +382,7 @@ github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0Lh
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
+github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
 github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -369,6 +400,7 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/longbridgeapp/sqlparser v0.3.1 h1:iWOZWGIFgQrJRgobLXUNJdvqGRpbVXkyKUKUA5CNJBE=
 github.com/longbridgeapp/sqlparser v0.3.1/go.mod h1:GIHaUq8zvYyHLCLMJJykx1CdM6LHtkUih/QaJXySSx4=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
@@ -392,6 +424,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/mkevac/debugcharts v0.0.0-20191222103121-ae1c48aa8615/go.mod h1:Ad7oeElCZqA1Ufj0U9/liOF4BtVepxRcTvr2ey7zTvM=
+github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -405,6 +439,7 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
 github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
 github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
 github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
@@ -417,34 +452,47 @@ github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
 github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
 github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
 github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
 github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c=
 github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
+github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
 github.com/openzipkin/zipkin-go v0.3.0/go.mod h1:4c3sLeE8xjNqehmF5RpAFLPLJxXscc0R4l6Zg0P1tTQ=
 github.com/openzipkin/zipkin-go v0.4.0 h1:CtfRrOVZtbDj8rt1WXjklw0kqqJQwICrCKmlfUuBUUw=
 github.com/openzipkin/zipkin-go v0.4.0/go.mod h1:4c3sLeE8xjNqehmF5RpAFLPLJxXscc0R4l6Zg0P1tTQ=
+github.com/paulmach/orb v0.7.1/go.mod h1:FWRlTgl88VI1RBx/MkrwWDRhQ96ctqMCh8boXhmqB/A=
+github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY=
 github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
+github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
+github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
 github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
+github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
+github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
 github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ=
 github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=
+github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -453,8 +501,9 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
 github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.30.0 h1:JEkYlQnpzrzQFxi6gnukFPdQ+ac82oRhzMcIduJu/Ug=
 github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
+github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
+github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
@@ -471,6 +520,10 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
+github.com/shirou/gopsutil v2.19.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
+github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -489,24 +542,37 @@ github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzu
 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
 github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
+github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
+github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
 github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
+github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
 github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
+github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
 github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
+github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
 github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
 github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
 github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -514,17 +580,25 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da h1:NimzV1aGyq29m5ukMK0AMWEhFaL/lrEOaephfuoiARg=
 github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
-github.com/zeromicro/go-zero v1.3.2 h1:2HcmceZDEGwZWvofCG+0GXyh+Gtz/wKCW4Fq8Mb7KIg=
+github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLCur2yWnJzwQEKRcAHXo6seXGuSwWw=
+github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA=
+github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
 github.com/zeromicro/go-zero v1.3.2/go.mod h1:DEj3Fwj1Ui1ltsgf6YqwTL9nD4+tYzIRX0c1pWtQo1E=
-go.etcd.io/etcd/api/v3 v3.5.2 h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI=
+github.com/zeromicro/go-zero v1.3.5 h1:+3T4Rx/5o/EgLuCE3Qo4X0i+3GCHRYEgkabmfKhhQ7Q=
+github.com/zeromicro/go-zero v1.3.5/go.mod h1:wh4o794b7Ul3W0k35Pw9nc3iB4O0OpaQTMQz/PJc1bc=
 go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
-go.etcd.io/etcd/client/pkg/v3 v3.5.2 h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE=
+go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc=
+go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
 go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
-go.etcd.io/etcd/client/v3 v3.5.2 h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA=
+go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg=
+go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
 go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o=
+go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4=
+go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY=
 go.mongodb.org/mongo-driver v1.5.0/go.mod h1:boiGPFqyBs5R0R5qf2ErokGRekMfwn+MqKaUyHs7wy0=
+go.mongodb.org/mongo-driver v1.9.1 h1:m078y9v7sBItkt1aaoe2YlvWEXcD263e1a4E1fBrJ1c=
+go.mongodb.org/mongo-driver v1.9.1/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
 go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -532,24 +606,32 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
 go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg=
-go.opentelemetry.io/otel v1.3.0 h1:APxLf0eiBwLl+SOXiJJCVYzA1OOJNyAoV8C5RNRyy7Y=
 go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
-go.opentelemetry.io/otel/exporters/jaeger v1.3.0 h1:HfydzioALdtcB26H5WHc4K47iTETJCdloL7VN579/L0=
+go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
+go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg=
+go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
 go.opentelemetry.io/otel/exporters/jaeger v1.3.0/go.mod h1:KoYHi1BtkUPncGSRtCe/eh1ijsnePhSkxwzz07vU0Fc=
-go.opentelemetry.io/otel/exporters/zipkin v1.3.0 h1:uOD28dZ7yIKITTcUS6MeAGNHYy3uhP7DTkhcJM6onlQ=
+go.opentelemetry.io/otel/exporters/jaeger v1.8.0 h1:TLLqD6kDhLPziEC7pgPrMvP9lAqdk3n1gf8DiFSnfW8=
+go.opentelemetry.io/otel/exporters/jaeger v1.8.0/go.mod h1:GbWg+ng88rDtx+id26C34QLqw2erqJeAjsCx9AFeHfE=
 go.opentelemetry.io/otel/exporters/zipkin v1.3.0/go.mod h1:LxGGfHIYbvsFnrJtBcazb0yG24xHdDGrT/H6RB9r3+8=
+go.opentelemetry.io/otel/exporters/zipkin v1.8.0 h1:PIAiDdROZzATAFfxr5ASYuSOG0JIJxRq3GwlpJGbSYQ=
+go.opentelemetry.io/otel/exporters/zipkin v1.8.0/go.mod h1:0uYAyCuGT67MFV9Z/Mmx93wGuugHw0FbxMc74fs3LNo=
 go.opentelemetry.io/otel/sdk v1.0.0/go.mod h1:PCrDHlSy5x1kjezSdL37PhbFUMjrsLRshJ2zCzeXwbM=
-go.opentelemetry.io/otel/sdk v1.3.0 h1:3278edCoH89MEJ0Ky8WQXVmDQv3FX4ZJ3Pp+9fJreAI=
 go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs=
+go.opentelemetry.io/otel/sdk v1.8.0 h1:xwu69/fNuwbSHWe/0PGS888RmjWY181OmcXDQKu7ZQk=
+go.opentelemetry.io/otel/sdk v1.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c=
 go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs=
-go.opentelemetry.io/otel/trace v1.3.0 h1:doy8Hzb1RJ+I3yFhtDmwNc7tIyw1tNMOIsyPzp1NOGY=
 go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk=
+go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
+go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY=
+go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/automaxprocs v1.4.0 h1:CpDZl6aOlLhReez+8S3eEotD7Jx0Os++lemPlMULQP0=
 go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q=
+go.uber.org/automaxprocs v1.5.1 h1:e1YG66Lrk73dn4qhg8WFSvhF0JuFQF0ERIp4rpuV8Qk=
+go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
 go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
 go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
 go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
@@ -572,6 +654,8 @@ golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPh
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 h1:kETrAMYZq6WVGPa8IIixL0CaEcIUNi+1WX7grUoi3y8=
 golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -647,9 +731,10 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220706163947-c90051bbdb60 h1:8NSylCMxLW4JvserAndSgFL7aPli6A68yf0bYFTcWCM=
-golang.org/x/net v0.0.0-20220706163947-c90051bbdb60/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.0.0-20220531201128-c960675eff93 h1:MYimHLfoXEpOhqd/zgoA/uoXzHB86AEky4LAx5ij9xA=
+golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -669,6 +754,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -689,11 +775,13 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191220220014-0732a990476f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -708,6 +796,7 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -716,6 +805,7 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -724,13 +814,19 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220429233432-b5fbb4746d32/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -747,8 +843,10 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 h1:GZokNIeuVkl3aZHJchRrr13WCsols02MLUcz1U9is6M=
+golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -804,7 +902,6 @@ golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
 google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
@@ -860,9 +957,11 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
 google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20220228195345-15d65a4533f7 h1:ntPPoHzFW6Xp09ueznmahONZufyoSakK/piXnr2BU3I=
 google.golang.org/genproto v0.0.0-20220228195345-15d65a4533f7/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
+google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 h1:qRu95HZ148xXw+XeZ3dvqe85PxH4X8+jIo0iRPKcEnM=
+google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -880,8 +979,11 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG
 google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
 google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k=
 google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
-google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M=
 google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
+google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w=
+google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -902,6 +1004,7 @@ gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
@@ -924,8 +1027,10 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gorm.io/driver/mysql v1.0.5 h1:WAAmvLK2rG0tCOqrf5XcLi2QUwugd4rcVJ/W3aoon9o=
 gorm.io/driver/mysql v1.0.5/go.mod h1:N1OIhHAIhx5SunkMGqWbGFVeh4yTNWKmMo1GOAsohLI=
 gorm.io/gorm v1.21.3 h1:qDFi55ZOsjZTwk5eN+uhAmHi8GysJ/qCTichM/yO7ME=
@@ -937,26 +1042,34 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
 honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.20.12 h1:LfRpmRkJLwPP8eaYehsVVmIIfg1yCBIIUHaSsdqCgHA=
 k8s.io/api v0.20.12/go.mod h1:A2brwyEkVLM3wQGNnzoAa5JsQRzHK0uoOQ+bsnv7V68=
-k8s.io/apimachinery v0.20.12 h1:2c0LIVNMvB8k2Ozstmhl2zGeCEcPazznuLYEwxFdNjM=
+k8s.io/api v0.22.9 h1:PidjRtgd0zDa6SvyooBLH/SP62uOhEBY0kx0UYRGr1o=
+k8s.io/api v0.22.9/go.mod h1:rcjO/FPOuvc3x7nQWx29UcDrFJMx82RxDob71ntNH4A=
 k8s.io/apimachinery v0.20.12/go.mod h1:uM7hCI0NyBymUwgshMgZyte475lxhr+QH6h3cvdnzEc=
-k8s.io/client-go v0.20.12 h1:U75SxTC31BHT9i7CbX/hL4v+U1Wkzy/E1vt5ClDPp3I=
+k8s.io/apimachinery v0.22.9 h1:5qjnpBk6eC9me0SAzokCUMI0KVF2PENK1PnykF8/Gjo=
+k8s.io/apimachinery v0.22.9/go.mod h1:ZvVLP5iLhwVFg2Yx9Gh5W0um0DUauExbRhe+2Z8I1EU=
 k8s.io/client-go v0.20.12/go.mod h1:NBJj6Evp73Xy/4v/O/RDRaH0+3JoxNfjRxkyRgrdbsA=
+k8s.io/client-go v0.22.9 h1:5p2R2LsoBfaE6QnXfWFmyyvxrFXtfegUGRMZSpTI+Q8=
+k8s.io/client-go v0.22.9/go.mod h1:IoH7exYnoH/zgvHOuVxh2c4yJepcCBt72FzCTisOc4k=
 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
 k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
+k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
 k8s.io/klog/v2 v2.40.1 h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4=
 k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
 k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
-k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw=
+k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
+k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
+k8s.io/utils v0.0.0-20220706174534-f6158b442e7c h1:hFZO68mv/0xe8+V0gRT9BAq3/31cKjjeVv4nScriuBk=
+k8s.io/utils v0.0.0-20220706174534-f6158b442e7c/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
 rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
-sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno=
 sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
+sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
+sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
 sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=

+ 14 - 4
rpc/etc/usercenter.yaml

@@ -2,7 +2,7 @@ Name: usercenter.rpc
 ListenOn: 127.0.0.1:8080
 Etcd:
   Hosts:
-  - 127.0.0.1:2379
+    - 127.0.0.1:2379
   Key: usercenter.rpc
 FileSystemConf:
   Etcd:
@@ -17,14 +17,14 @@ ResourceEtcdConf:
     Key: resource.rpc
 Node: 1
 Mysql:
-  dbName: jianyu  
+  dbName: jianyu
   address: 192.168.3.11:3366
   userName: root
   passWord: Topnet123
   maxOpenConns: 5
   maxIdleConns: 5
 BaseMysql:
-  dbName: base_service  
+  dbName: base_service
   address: 192.168.3.217:4000
   userName: root
   passWord: "=PDT49#80Z!RVv52_z"
@@ -38,4 +38,14 @@ Logx:
 IsRun: true
 CheckEntIsExpire: 00:00
 DoMain: https://jybx-webtest.jydev.jianyu360.com
-Timeout:  5000
+Timeout: 5000
+RedisAddrees:
+  - newother=192.168.3.206:1712
+RedisOutTime: 300
+InternalTime: 120
+Mongo:
+  Main:
+    dbName: qfw
+    size: 50
+    address: 192.168.3.206:27080
+BigMemberOff: false

+ 19 - 1
rpc/internal/config/config.go

@@ -2,11 +2,11 @@ package config
 
 import (
 	"bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
 	"github.com/zeromicro/go-zero/core/conf"
 	"github.com/zeromicro/go-zero/core/discov"
 	"github.com/zeromicro/go-zero/core/logx"
 	"github.com/zeromicro/go-zero/zrpc"
+	"userCenter/entity"
 )
 
 type Config struct {
@@ -21,6 +21,24 @@ type Config struct {
 	IsRun            bool   //定时任务是否开启
 	CheckEntIsExpire string //
 	DoMain           string
+	RedisAddrees     []string
+	RedisOutTime     int
+	InternalTime     int
+	Mongo            struct {
+		Main *MongoStruct
+	}
+	BigMemberOff bool
+}
+type MongoStruct struct {
+	Address        string `json:"address"`
+	Size           int    `json:"size"`
+	DbName         string `json:"dbName"`
+	UserName       string `json:"userName,optional"`
+	Password       string `json:"password,optional"`
+	Collection     string `json:"collection,optional"`
+	CollectionBack string `json:"collectionBack,optional"`
+	MaxOpenConns   int    `json:"maxOpenConns,optional"`
+	MaxIdleConns   int    `json:"maxIdleConns,optional"`
 }
 
 var (

+ 21 - 3
rpc/internal/db/db.go

@@ -1,11 +1,14 @@
 package db
 
 import (
+	"app.yhyue.com/moapp/jybase/mongodb"
+	"app.yhyue.com/moapp/jybase/redis"
 	"log"
+	"strings"
 
 	"app.yhyue.com/moapp/jybase/mysql"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/config"
+	"userCenter/entity"
+	"userCenter/rpc/internal/config"
 )
 
 func init() {
@@ -17,6 +20,7 @@ func init() {
 		MaxOpenConns: config.ConfigJson.Mysql.MaxOpenConns,
 		MaxIdleConns: config.ConfigJson.Mysql.MaxIdleConns,
 	}
+	log.Println("初始化  mysql")
 	entity.Mysql.Init()
 	entity.BaseMysql = &mysql.Mysql{
 		Address:      config.ConfigJson.BaseMysql.Address,
@@ -26,6 +30,20 @@ func init() {
 		MaxOpenConns: config.ConfigJson.BaseMysql.MaxOpenConns,
 		MaxIdleConns: config.ConfigJson.BaseMysql.MaxIdleConns,
 	}
+	log.Println("初始化 base mysql")
 	entity.BaseMysql.Init()
-	log.Println("初始化 mysql")
+
+	log.Println("初始化 redis")
+	redis.InitRedisBySize(strings.Join(config.ConfigJson.RedisAddrees, ","), 100, 30, 300)
+
+	//初始化 mongodb
+	if config.ConfigJson.Mongo.Main.Address != "" {
+		log.Println("初始化 mongo main")
+		entity.Mgo = mongodb.MongodbSim{
+			MongodbAddr: config.ConfigJson.Mongo.Main.Address,
+			Size:        config.ConfigJson.Mongo.Main.Size,
+			DbName:      config.ConfigJson.Mongo.Main.DbName,
+		}
+		entity.Mgo.InitPool()
+	}
 }

+ 2 - 2
rpc/internal/logic/checkentlogic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/entauthlogic.go

@@ -5,8 +5,8 @@ import (
 	"fmt"
 
 	"app.yhyue.com/moapp/jybase/encrypt"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/entexaminelogic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/entinfologic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/entlistlogic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/entservice.go

@@ -1,8 +1,8 @@
 package logic
 
 import (
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/config"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/service"
+	"userCenter/rpc/internal/config"
+	"userCenter/service"
 )
 
 var Entservice = service.EntService{

+ 2 - 2
rpc/internal/logic/entupdatelogic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/examineinfologic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/examinelistlogic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 2 - 2
rpc/internal/logic/getstatusbycodelogic.go

@@ -3,8 +3,8 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 3 - 3
rpc/internal/logic/useraddlogic.go

@@ -3,9 +3,9 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/service"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
+	"userCenter/service"
 	"github.com/zeromicro/go-zero/core/logx"
 )
 

+ 3 - 3
rpc/internal/logic/userdellogic.go

@@ -3,9 +3,9 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/service"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
+	"userCenter/service"
 	"github.com/zeromicro/go-zero/core/logx"
 )
 

+ 3 - 3
rpc/internal/logic/userupdatelogic.go

@@ -3,9 +3,9 @@ package logic
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/service"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
+	"userCenter/service"
 
 	"github.com/zeromicro/go-zero/core/logx"
 )

+ 70 - 0
rpc/internal/logic/workdesktopmenulogic.go

@@ -0,0 +1,70 @@
+package logic
+
+import (
+	"context"
+	"log"
+	"userCenter/entity"
+	"userCenter/rpc/internal/config"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
+	"userCenter/service"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type WorkDesktopMenuLogic struct {
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+	logx.Logger
+}
+
+func NewWorkDesktopMenuLogic(ctx context.Context, svcCtx *svc.ServiceContext) *WorkDesktopMenuLogic {
+	return &WorkDesktopMenuLogic{
+		ctx:    ctx,
+		svcCtx: svcCtx,
+		Logger: logx.WithContext(ctx),
+	}
+}
+
+var clearUserPowerSwitch = true
+
+// 获取菜单树
+func (l *WorkDesktopMenuLogic) WorkDesktopMenu(in *pb.WorkDesktopMenuReq) (*pb.WorkDesktopMenuResp, error) {
+	if in.UserId == "" {
+		return &pb.WorkDesktopMenuResp{
+			ErrorCode: -1,
+			ErrorMsg:  "用户信息有误",
+			Data:      nil,
+		}, nil
+	}
+	//用户权限信息
+	//go entity.AutoUserPowerInfo(in.UserId, config.ConfigJson.InternalTime, config.ConfigJson.BigMemberOff)
+	//定时启动清除用户权限内存信息
+	log.Println("clearUserPowerSwitch:", clearUserPowerSwitch)
+	if clearUserPowerSwitch {
+		clearUserPowerSwitch = false
+		go func() {
+			entity.ClearUserPower()
+		}()
+	}
+	var (
+		errorCode int64 = 0
+		errorMsg        = ""
+		menuMode        = "all"
+	)
+	//菜单树
+	menuList, err := service.GetWordDesktopMenuTree(in, config.ConfigJson.RedisOutTime, config.ConfigJson.BigMemberOff)
+	logx.Info(err, "+++++:", len(menuList))
+	if err != nil {
+		errorCode = -1
+		errorMsg = err.Error()
+	}
+	return &pb.WorkDesktopMenuResp{
+		ErrorCode: errorCode,
+		ErrorMsg:  errorMsg,
+		Data: &pb.MenuData{
+			MenuType: menuMode,
+			MenuList: menuList,
+		},
+	}, nil
+}

+ 10 - 3
rpc/internal/server/usercenterserver.go

@@ -6,13 +6,14 @@ package server
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/logic"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/logic"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 )
 
 type UserCenterServer struct {
 	svcCtx *svc.ServiceContext
+	pb.UnimplementedUserCenterServer
 }
 
 func NewUserCenterServer(svcCtx *svc.ServiceContext) *UserCenterServer {
@@ -92,3 +93,9 @@ func (s *UserCenterServer) UserDel(ctx context.Context, in *pb.UserIdReq) (*pb.E
 	l := logic.NewUserDelLogic(ctx, s.svcCtx)
 	return l.UserDel(in)
 }
+
+// 获取菜单树
+func (s *UserCenterServer) WorkDesktopMenu(ctx context.Context, in *pb.WorkDesktopMenuReq) (*pb.WorkDesktopMenuResp, error) {
+	l := logic.NewWorkDesktopMenuLogic(ctx, s.svcCtx)
+	return l.WorkDesktopMenu(in)
+}

+ 1 - 1
rpc/internal/svc/servicecontext.go

@@ -1,6 +1,6 @@
 package svc
 
-import "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/config"
+import "userCenter/rpc/internal/config"
 
 type ServiceContext struct {
 	Config config.Config

文件差異過大導致無法顯示
+ 785 - 263
rpc/pb/userCenter.pb.go


+ 563 - 0
rpc/pb/userCenter_grpc.pb.go

@@ -0,0 +1,563 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.2.0
+// - protoc             v3.15.5
+// source: userCenter.proto
+
+package pb
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// UserCenterClient is the client API for UserCenter service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type UserCenterClient interface {
+	//企业认证
+	EntAuth(ctx context.Context, in *EntAuthReq, opts ...grpc.CallOption) (*EntAuthResp, error)
+	//机构审核
+	EntExamine(ctx context.Context, in *ExamineReq, opts ...grpc.CallOption) (*ExamineResp, error)
+	//企业列表
+	EntList(ctx context.Context, in *EntListReq, opts ...grpc.CallOption) (*EntListResp, error)
+	//审核列表
+	ExamineList(ctx context.Context, in *ExamineListReq, opts ...grpc.CallOption) (*ExamineListResp, error)
+	//查看企业状态
+	CheckEnt(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*CheckEntResp, error)
+	//查看企业详情
+	EntInfo(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*EntInfoResp, error)
+	//冻结/解冻企业
+	EntUpdate(ctx context.Context, in *EntUpdateReq, opts ...grpc.CallOption) (*ExamineResp, error)
+	//查看审核详情
+	ExamineInfo(ctx context.Context, in *CheckExamineReq, opts ...grpc.CallOption) (*EntInfoResp, error)
+	//根据统一社会信用代码查询企业状态
+	GetStatusByCode(ctx context.Context, in *GetStatusByCodeReq, opts ...grpc.CallOption) (*GetStatusByCodeResp, error)
+	//新增用户
+	UserAdd(ctx context.Context, in *UserAddReq, opts ...grpc.CallOption) (*UserAddResp, error)
+	//更新用户
+	UserUpdate(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error)
+	//删除用户
+	UserDel(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error)
+	//获取菜单树
+	WorkDesktopMenu(ctx context.Context, in *WorkDesktopMenuReq, opts ...grpc.CallOption) (*WorkDesktopMenuResp, error)
+}
+
+type userCenterClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewUserCenterClient(cc grpc.ClientConnInterface) UserCenterClient {
+	return &userCenterClient{cc}
+}
+
+func (c *userCenterClient) EntAuth(ctx context.Context, in *EntAuthReq, opts ...grpc.CallOption) (*EntAuthResp, error) {
+	out := new(EntAuthResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/EntAuth", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) EntExamine(ctx context.Context, in *ExamineReq, opts ...grpc.CallOption) (*ExamineResp, error) {
+	out := new(ExamineResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/EntExamine", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) EntList(ctx context.Context, in *EntListReq, opts ...grpc.CallOption) (*EntListResp, error) {
+	out := new(EntListResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/EntList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) ExamineList(ctx context.Context, in *ExamineListReq, opts ...grpc.CallOption) (*ExamineListResp, error) {
+	out := new(ExamineListResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/ExamineList", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) CheckEnt(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*CheckEntResp, error) {
+	out := new(CheckEntResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/CheckEnt", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) EntInfo(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*EntInfoResp, error) {
+	out := new(EntInfoResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/EntInfo", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) EntUpdate(ctx context.Context, in *EntUpdateReq, opts ...grpc.CallOption) (*ExamineResp, error) {
+	out := new(ExamineResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/EntUpdate", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) ExamineInfo(ctx context.Context, in *CheckExamineReq, opts ...grpc.CallOption) (*EntInfoResp, error) {
+	out := new(EntInfoResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/ExamineInfo", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) GetStatusByCode(ctx context.Context, in *GetStatusByCodeReq, opts ...grpc.CallOption) (*GetStatusByCodeResp, error) {
+	out := new(GetStatusByCodeResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/GetStatusByCode", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) UserAdd(ctx context.Context, in *UserAddReq, opts ...grpc.CallOption) (*UserAddResp, error) {
+	out := new(UserAddResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/UserAdd", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) UserUpdate(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error) {
+	out := new(ExamineResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/UserUpdate", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) UserDel(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error) {
+	out := new(ExamineResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/UserDel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *userCenterClient) WorkDesktopMenu(ctx context.Context, in *WorkDesktopMenuReq, opts ...grpc.CallOption) (*WorkDesktopMenuResp, error) {
+	out := new(WorkDesktopMenuResp)
+	err := c.cc.Invoke(ctx, "/UserCenter/WorkDesktopMenu", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// UserCenterServer is the server API for UserCenter service.
+// All implementations must embed UnimplementedUserCenterServer
+// for forward compatibility
+type UserCenterServer interface {
+	//企业认证
+	EntAuth(context.Context, *EntAuthReq) (*EntAuthResp, error)
+	//机构审核
+	EntExamine(context.Context, *ExamineReq) (*ExamineResp, error)
+	//企业列表
+	EntList(context.Context, *EntListReq) (*EntListResp, error)
+	//审核列表
+	ExamineList(context.Context, *ExamineListReq) (*ExamineListResp, error)
+	//查看企业状态
+	CheckEnt(context.Context, *CheckEntReq) (*CheckEntResp, error)
+	//查看企业详情
+	EntInfo(context.Context, *CheckEntReq) (*EntInfoResp, error)
+	//冻结/解冻企业
+	EntUpdate(context.Context, *EntUpdateReq) (*ExamineResp, error)
+	//查看审核详情
+	ExamineInfo(context.Context, *CheckExamineReq) (*EntInfoResp, error)
+	//根据统一社会信用代码查询企业状态
+	GetStatusByCode(context.Context, *GetStatusByCodeReq) (*GetStatusByCodeResp, error)
+	//新增用户
+	UserAdd(context.Context, *UserAddReq) (*UserAddResp, error)
+	//更新用户
+	UserUpdate(context.Context, *UserIdReq) (*ExamineResp, error)
+	//删除用户
+	UserDel(context.Context, *UserIdReq) (*ExamineResp, error)
+	//获取菜单树
+	WorkDesktopMenu(context.Context, *WorkDesktopMenuReq) (*WorkDesktopMenuResp, error)
+	mustEmbedUnimplementedUserCenterServer()
+}
+
+// UnimplementedUserCenterServer must be embedded to have forward compatible implementations.
+type UnimplementedUserCenterServer struct {
+}
+
+func (UnimplementedUserCenterServer) EntAuth(context.Context, *EntAuthReq) (*EntAuthResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EntAuth not implemented")
+}
+func (UnimplementedUserCenterServer) EntExamine(context.Context, *ExamineReq) (*ExamineResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EntExamine not implemented")
+}
+func (UnimplementedUserCenterServer) EntList(context.Context, *EntListReq) (*EntListResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EntList not implemented")
+}
+func (UnimplementedUserCenterServer) ExamineList(context.Context, *ExamineListReq) (*ExamineListResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ExamineList not implemented")
+}
+func (UnimplementedUserCenterServer) CheckEnt(context.Context, *CheckEntReq) (*CheckEntResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method CheckEnt not implemented")
+}
+func (UnimplementedUserCenterServer) EntInfo(context.Context, *CheckEntReq) (*EntInfoResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EntInfo not implemented")
+}
+func (UnimplementedUserCenterServer) EntUpdate(context.Context, *EntUpdateReq) (*ExamineResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EntUpdate not implemented")
+}
+func (UnimplementedUserCenterServer) ExamineInfo(context.Context, *CheckExamineReq) (*EntInfoResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method ExamineInfo not implemented")
+}
+func (UnimplementedUserCenterServer) GetStatusByCode(context.Context, *GetStatusByCodeReq) (*GetStatusByCodeResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetStatusByCode not implemented")
+}
+func (UnimplementedUserCenterServer) UserAdd(context.Context, *UserAddReq) (*UserAddResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UserAdd not implemented")
+}
+func (UnimplementedUserCenterServer) UserUpdate(context.Context, *UserIdReq) (*ExamineResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UserUpdate not implemented")
+}
+func (UnimplementedUserCenterServer) UserDel(context.Context, *UserIdReq) (*ExamineResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UserDel not implemented")
+}
+func (UnimplementedUserCenterServer) WorkDesktopMenu(context.Context, *WorkDesktopMenuReq) (*WorkDesktopMenuResp, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method WorkDesktopMenu not implemented")
+}
+func (UnimplementedUserCenterServer) mustEmbedUnimplementedUserCenterServer() {}
+
+// UnsafeUserCenterServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to UserCenterServer will
+// result in compilation errors.
+type UnsafeUserCenterServer interface {
+	mustEmbedUnimplementedUserCenterServer()
+}
+
+func RegisterUserCenterServer(s grpc.ServiceRegistrar, srv UserCenterServer) {
+	s.RegisterService(&UserCenter_ServiceDesc, srv)
+}
+
+func _UserCenter_EntAuth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EntAuthReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).EntAuth(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/EntAuth",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).EntAuth(ctx, req.(*EntAuthReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_EntExamine_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExamineReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).EntExamine(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/EntExamine",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).EntExamine(ctx, req.(*ExamineReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_EntList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EntListReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).EntList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/EntList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).EntList(ctx, req.(*EntListReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_ExamineList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ExamineListReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).ExamineList(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/ExamineList",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).ExamineList(ctx, req.(*ExamineListReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_CheckEnt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CheckEntReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).CheckEnt(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/CheckEnt",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).CheckEnt(ctx, req.(*CheckEntReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_EntInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CheckEntReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).EntInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/EntInfo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).EntInfo(ctx, req.(*CheckEntReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_EntUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EntUpdateReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).EntUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/EntUpdate",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).EntUpdate(ctx, req.(*EntUpdateReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_ExamineInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CheckExamineReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).ExamineInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/ExamineInfo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).ExamineInfo(ctx, req.(*CheckExamineReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_GetStatusByCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetStatusByCodeReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).GetStatusByCode(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/GetStatusByCode",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).GetStatusByCode(ctx, req.(*GetStatusByCodeReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_UserAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UserAddReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).UserAdd(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/UserAdd",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).UserAdd(ctx, req.(*UserAddReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_UserUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UserIdReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).UserUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/UserUpdate",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).UserUpdate(ctx, req.(*UserIdReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_UserDel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UserIdReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).UserDel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/UserDel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).UserDel(ctx, req.(*UserIdReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _UserCenter_WorkDesktopMenu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(WorkDesktopMenuReq)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(UserCenterServer).WorkDesktopMenu(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/UserCenter/WorkDesktopMenu",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(UserCenterServer).WorkDesktopMenu(ctx, req.(*WorkDesktopMenuReq))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// UserCenter_ServiceDesc is the grpc.ServiceDesc for UserCenter service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var UserCenter_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "UserCenter",
+	HandlerType: (*UserCenterServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "EntAuth",
+			Handler:    _UserCenter_EntAuth_Handler,
+		},
+		{
+			MethodName: "EntExamine",
+			Handler:    _UserCenter_EntExamine_Handler,
+		},
+		{
+			MethodName: "EntList",
+			Handler:    _UserCenter_EntList_Handler,
+		},
+		{
+			MethodName: "ExamineList",
+			Handler:    _UserCenter_ExamineList_Handler,
+		},
+		{
+			MethodName: "CheckEnt",
+			Handler:    _UserCenter_CheckEnt_Handler,
+		},
+		{
+			MethodName: "EntInfo",
+			Handler:    _UserCenter_EntInfo_Handler,
+		},
+		{
+			MethodName: "EntUpdate",
+			Handler:    _UserCenter_EntUpdate_Handler,
+		},
+		{
+			MethodName: "ExamineInfo",
+			Handler:    _UserCenter_ExamineInfo_Handler,
+		},
+		{
+			MethodName: "GetStatusByCode",
+			Handler:    _UserCenter_GetStatusByCode_Handler,
+		},
+		{
+			MethodName: "UserAdd",
+			Handler:    _UserCenter_UserAdd_Handler,
+		},
+		{
+			MethodName: "UserUpdate",
+			Handler:    _UserCenter_UserUpdate_Handler,
+		},
+		{
+			MethodName: "UserDel",
+			Handler:    _UserCenter_UserDel_Handler,
+		},
+		{
+			MethodName: "WorkDesktopMenu",
+			Handler:    _UserCenter_WorkDesktopMenu_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "userCenter.proto",
+}

+ 2 - 2
rpc/test/ent_test.go

@@ -7,8 +7,8 @@ import (
 	"testing"
 	"time"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
-	usercenterclient "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/rpc/pb"
+	usercenterclient "userCenter/rpc/usercenter"
 
 	resourcepb "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/pb"
 	"bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource"

+ 2 - 2
rpc/test/user_test.go

@@ -6,9 +6,9 @@ import (
 	"testing"
 	"time"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
-	usercenterclient "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
 	"github.com/zeromicro/go-zero/zrpc"
+	"userCenter/rpc/pb"
+	usercenterclient "userCenter/rpc/usercenter"
 )
 
 // go test -v -run Test_UserAdd

+ 2 - 2
rpc/timetask/timetask.go

@@ -8,8 +8,8 @@ import (
 	"time"
 
 	"app.yhyue.com/moapp/jybase/common"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/config"
+	"userCenter/entity"
+	"userCenter/rpc/internal/config"
 )
 
 //已到期企业定时任务

+ 225 - 167
rpc/userCenter.proto

@@ -1,268 +1,326 @@
 syntax = "proto3";
 
-option go_package ="./pb";
+option go_package = "./pb";
 
 
 //机构认证 入参
 message EntAuthReq{
-	string name = 1;//机构/企业名称
-	string creditCode = 2; //统一社会信用代码
-	string areaNumber = 3; //省市(行政区划代码) 
-	string business = 4; //营业执照
-	string officialLetter = 5; //认证公函
-	string organizationType = 6; //机构类型  1投标企业  2招标采购单位 3厂商 4招标代理机构 5经销商  6服务提供商  7其他
-	string comPanyType = 7; //机构性质    1企业   2党政机关事业单位及其他
-	string authName = 8; //联系人姓名
-	string authPhone = 9; //联系人手机号
-	string phone = 10; //注册手机号
-	int64 entId = 11;//企业id
+  string name = 1;//机构/企业名称
+  string creditCode = 2; //统一社会信用代码
+  string areaNumber = 3; //省市(行政区划代码)
+  string business = 4; //营业执照
+  string officialLetter = 5; //认证公函
+  string organizationType = 6; //机构类型  1投标企业  2招标采购单位 3厂商 4招标代理机构 5经销商  6服务提供商  7其他
+  string comPanyType = 7; //机构性质    1企业   2党政机关事业单位及其他
+  string authName = 8; //联系人姓名
+  string authPhone = 9; //联系人手机号
+  string phone = 10; //注册手机号
+  int64 entId = 11;//企业id
 }
 
 //机构认证出参
 message EntAuthResp{
-	int64 error_code = 1;
-	string error_msg = 2;
-	EntAuthData data = 3;
+  int64 error_code = 1;
+  string error_msg = 2;
+  EntAuthData data = 3;
 }
 
 //机构认证出参
 message EntAuthData{
-	int64 status = 1;
-	string entId =2; //加密的entid
+  int64 status = 1;
+  string entId = 2; //加密的entid
 }
 
 //机构审核入参
 message ExamineReq{
-	int64 EntId = 1; //企业id
-	string AuthType = 2;//审核状态  2审核通过  3审核不通过
-	string Reason = 3;//不通过原因
-	string AuditUser = 4; //审核人
-	string ExamineId = 5; //审核id 认证记录表主键id
+  int64 EntId = 1; //企业id
+  string AuthType = 2;//审核状态  2审核通过  3审核不通过
+  string Reason = 3;//不通过原因
+  string AuditUser = 4; //审核人
+  string ExamineId = 5; //审核id 认证记录表主键id
 }
 
 //机构审核出参
 message ExamineResp{
-	int64   error_code = 1;
-	string  error_msg = 2;
-	ExamineData data =3;
+  int64   error_code = 1;
+  string  error_msg = 2;
+  ExamineData data = 3;
 }
 
 message ExamineData{
-	int64 status = 1;
+  int64 status = 1;
 }
 
 //企业列表入参
 message EntListReq{
-	string name = 1;//企业名称
-	string pageNum =2;//页码,不传默认第一页 第一页为0
-	string pageSize =3;//每页显示条数,不传默认为10
-	string creditCode =4;//统一社会信用代码
-	string createStartTime =5;//创建开始时间戳
-	string createEndTime =6;//创建结束时间戳
-	string authStatus =7;//认证状态 0未认证 1已认证
-	string validStartTime =8; //有效截至开始时间戳
-	string validEndTime =9; //有效截止时间戳
-	string frozenStatus=10; //冻结状态 1正常  0冻结
-	string regPhone=11; //注册人手机号 即管理员手机号
-	string authPhone=12;//联系人手机号
+  string name = 1;//企业名称
+  string pageNum = 2;//页码,不传默认第一页 第一页为0
+  string pageSize = 3;//每页显示条数,不传默认为10
+  string creditCode = 4;//统一社会信用代码
+  string createStartTime = 5;//创建开始时间戳
+  string createEndTime = 6;//创建结束时间戳
+  string authStatus = 7;//认证状态 0未认证 1已认证
+  string validStartTime = 8; //有效截至开始时间戳
+  string validEndTime = 9; //有效截止时间戳
+  string frozenStatus = 10; //冻结状态 1正常  0冻结
+  string regPhone = 11; //注册人手机号 即管理员手机号
+  string authPhone = 12;//联系人手机号
 }
 
 //企业列表出参
 message EntListResp{
-	int64   error_code = 1;
-	string  error_msg = 2;
-	EntData data = 3; //列表
+  int64   error_code = 1;
+  string  error_msg = 2;
+  EntData data = 3; //列表
 }
 
 message EntData{
-	int64 count =1;
-	int64 pageSize =2;
-	repeated EntList list=3; 
+  int64 count = 1;
+  int64 pageSize = 2;
+  repeated EntList list = 3;
 }
 
 message EntList {
-	int64 id =1; //机构id
-	int64 comPanyType =2;// 机构性质    1企业   2党政机关事业单位及其他
-	string name =3;//机构名称
-	string organizationType=4;//机构类型  1企业   2党政机关事业单位及其他	
-	string createtime =5;//创建时间
-	string validTime=6; //有效截至日期
-	int64 authStatus=7;//认证状态
-	int64 frozenStatus=8;//冻结状态 1冻结 0未冻结
+  int64 id = 1; //机构id
+  int64 comPanyType = 2;// 机构性质    1企业   2党政机关事业单位及其他
+  string name = 3;//机构名称
+  string organizationType = 4;//机构类型  1企业   2党政机关事业单位及其他
+  string createtime = 5;//创建时间
+  string validTime = 6; //有效截至日期
+  int64 authStatus = 7;//认证状态
+  int64 frozenStatus = 8;//冻结状态 1冻结 0未冻结
 }
 
 //审核列表入参
 message ExamineListReq{
-	string name =1; //机构名称
-	string authPhone =2; //联系人手机号
-	string regPhone =3; //注册人手机号
-	string authType =4;//审核状态 1:待审核  2:审核通过 3:审核不通过
-	string authStartTime =5;//申请开始时间
-	string authEndTime =6;//申请结束时间
-	string pageNum=7; //页码
-	string pageSize =8; //每页展示条数
+  string name = 1; //机构名称
+  string authPhone = 2; //联系人手机号
+  string regPhone = 3; //注册人手机号
+  string authType = 4;//审核状态 1:待审核  2:审核通过 3:审核不通过
+  string authStartTime = 5;//申请开始时间
+  string authEndTime = 6;//申请结束时间
+  string pageNum = 7; //页码
+  string pageSize = 8; //每页展示条数
 }
 //审核列表出参
 message ExamineListResp{
-	int64   error_code = 1;
-	string  error_msg = 2;
-	ExamineListData data = 3; //列表
+  int64   error_code = 1;
+  string  error_msg = 2;
+  ExamineListData data = 3; //列表
 }
 
 message ExamineListData{
-	int64 count =1;
-	int64 pageSize =2;
-	repeated ExamineList list=3; 
+  int64 count = 1;
+  int64 pageSize = 2;
+  repeated ExamineList list = 3;
 }
 
 message ExamineList {
-	int64 id =1; //机构id
-	int64 entId =2; //企业id
-	int64 comPanyType =3;// 机构性质    1企业   2党政机关事业单位及其他
-	string name =4;//机构名称
-	string creditCode=5;//统一社会信用代码
-	string authPhone =6;//联系人手机号
-	string applyTime=7; //申请时间戳
-	int64 authType=8;//审核状态 1:待审核  2:审核通过 3:审核不通过
-	string regPhone =9; //注册人手机号
+  int64 id = 1; //机构id
+  int64 entId = 2; //企业id
+  int64 comPanyType = 3;// 机构性质    1企业   2党政机关事业单位及其他
+  string name = 4;//机构名称
+  string creditCode = 5;//统一社会信用代码
+  string authPhone = 6;//联系人手机号
+  string applyTime = 7; //申请时间戳
+  int64 authType = 8;//审核状态 1:待审核  2:审核通过 3:审核不通过
+  string regPhone = 9; //注册人手机号
 }
 
 //查看企业状态入参
 message CheckEntReq{
-	int64 entId =1; //企业id
+  int64 entId = 1; //企业id
 }
 
 //查看企业状态出参
 message CheckEntResp{
-	int64   error_code = 1;
-	string  error_msg = 2;
-	checkData data =3;
+  int64   error_code = 1;
+  string  error_msg = 2;
+  checkData data = 3;
 }
 
 message checkData {
-	int64 authStatus =1;//企业是否认证 -1 未通过,0 未认证,1 已认证. -2 已到期 3待审核
-	int64 frozenStatus =2; //冻结  1正常  0冻结
+  int64 authStatus = 1;//企业是否认证 -1 未通过,0 未认证,1 已认证. -2 已到期 3待审核
+  int64 frozenStatus = 2; //冻结  1正常  0冻结
 }
 
 message EntInfoResp{
-	int64   error_code = 1;
-	string  error_msg = 2;
-	EntInfoData data = 3; //列表
+  int64   error_code = 1;
+  string  error_msg = 2;
+  EntInfoData data = 3; //列表
 }
 
 message EntInfoData{
-	string name =1;            //名称
-	string areaNumber =2;	  //区域代码	
-	string contactPerson =3;   //联系人
-	string contactPhone =4;    //联系电话	
-	int64 authState =5;        //0未认证 1已认证
-	string industry =6;        //行业
-	int64 companyType =7;      //1-事业单位 0-企业
-	string creditCode =8;      //统一社会信用代码
-	string legalPerson =9;     //法人姓名
-	string business =10;       //营业执照	
-	string officialLetter =11; //认证公函	
-	string organizationType =12;//机构类型  1投标企业  2招标采购单位 3厂商 4招标代理机构 5经销商  6服务提供商  7其他,  多个,隔开
-	int64 authType =13;        //1待审核 2审核通过 3审核不通过
-	int64 forzenStatus =14;    //1冻结 0未冻结
-	string auditUser =15;      //审核人
-	string auditTime =16;      //审核时间	
-	string createTime =17;     //创建时间	
-	string authStartTime =18;  //认证开始时间	
-	string authEndTime =19;    //认证截止时间	
-	string authReason =20;     //审核原因	
-	string authTime =21;       //申请时间	
-	string regPhone =22;       //注册人手机号	
+  string name = 1;            //名称
+  string areaNumber = 2;    //区域代码
+  string contactPerson = 3;   //联系人
+  string contactPhone = 4;    //联系电话
+  int64 authState = 5;        //0未认证 1已认证
+  string industry = 6;        //行业
+  int64 companyType = 7;      //1-事业单位 0-企业
+  string creditCode = 8;      //统一社会信用代码
+  string legalPerson = 9;     //法人姓名
+  string business = 10;       //营业执照
+  string officialLetter = 11; //认证公函
+  string organizationType = 12;//机构类型  1投标企业  2招标采购单位 3厂商 4招标代理机构 5经销商  6服务提供商  7其他,  多个,隔开
+  int64 authType = 13;        //1待审核 2审核通过 3审核不通过
+  int64 forzenStatus = 14;    //1冻结 0未冻结
+  string auditUser = 15;      //审核人
+  string auditTime = 16;      //审核时间
+  string createTime = 17;     //创建时间
+  string authStartTime = 18;  //认证开始时间
+  string authEndTime = 19;    //认证截止时间
+  string authReason = 20;     //审核原因
+  string authTime = 21;       //申请时间
+  string regPhone = 22;       //注册人手机号
 }
 
 message EntUpdateReq{
-	int64 entId =1;      //企业id
-	int64 updateType =2; //1-冻结  2-解冻
+  int64 entId = 1;      //企业id
+  int64 updateType = 2; //1-冻结  2-解冻
 }
 
 //审核详情入参
 message CheckExamineReq{
-	int64 examineId =1;  //审核id
+  int64 examineId = 1;  //审核id
 }
 
 
 message GetStatusByCodeReq{
-	string code =1; //统一社会信用代码
-	string phone =2;//注册手机号
+  string code = 1; //统一社会信用代码
+  string phone = 2;//注册手机号
 }
 
 message GetStatusByCodeResp{
-	int64   error_code = 1;
-	string  error_msg = 2;
-	GetStatusByCode data = 3; //详情
+  int64   error_code = 1;
+  string  error_msg = 2;
+  GetStatusByCode data = 3; //详情
 }
 
 message GetStatusByCode {
-	int64 authStatus =1;//企业是否认证 -1 未通过,0 未认证,1 已认证. -2 已到期 3待审核
-	bool isInEnt =2; //是否在该企业内
+  int64 authStatus = 1;//企业是否认证 -1 未通过,0 未认证,1 已认证. -2 已到期 3待审核
+  bool isInEnt = 2; //是否在该企业内
 }
 
 message UserAddReq {
-	string appid = 1;
-	string phone = 2;
-	string nickname = 3;
-	string headimg = 4;
-	string company = 5;
-	string position = 6;
-	string password = 7;
-	string s_openid = 8;
-	string a_openid = 9;
-	string unionid = 10;
+  string appid = 1;
+  string phone = 2;
+  string nickname = 3;
+  string headimg = 4;
+  string company = 5;
+  string position = 6;
+  string password = 7;
+  string s_openid = 8;
+  string a_openid = 9;
+  string unionid = 10;
 }
 
 message UserAddResp {
-	int64   error_code = 1;
-	string  error_msg = 2;
-	UserAdds data = 3;
+  int64   error_code = 1;
+  string  error_msg = 2;
+  UserAdds data = 3;
 }
 
 message UserAdds {
-	int64 status = 1;
-	int64 id = 2;
+  int64 status = 1;
+  int64 id = 2;
 }
 
 message UserIdReq {
-	string appid = 1;
-	int64 id = 2; 
-	string phone = 3;
-	string nickname = 4;
-	string headimg = 5;
-	string company = 6;
-	string position = 7;
-	string password = 8;
-	string s_openid = 9;
-	string a_openid = 10;
-	string unionid = 11;
+  string appid = 1;
+  int64 id = 2;
+  string phone = 3;
+  string nickname = 4;
+  string headimg = 5;
+  string company = 6;
+  string position = 7;
+  string password = 8;
+  string s_openid = 9;
+  string a_openid = 10;
+  string unionid = 11;
+}
+
+//工作桌面
+message WorkDesktopMenuReq{
+  string userId = 1;
+  string appId = 2;
+  string platform = 3;
+  string phone = 4;
+}
+
+//工作桌面-返回数据
+message WorkDesktopMenuResp{
+  int64   error_code = 1;
+  string  error_msg = 2;
+  MenuData data = 3;
+}
+
+message MenuData{
+  string menuType = 1;
+  repeated MenuList menuList = 2;
+}
+
+message MenuList{
+  string name = 1;
+  string icon = 2;
+  string url = 3;
+  bool usable = 4;
+  repeated SecondLevelMenu child = 5;
+}
+
+message  SecondLevelMenu{
+  string name = 1;
+  string icon = 2;
+  string url = 3;
+  bool usable = 4;
+  repeated ThreeLevelMenu child = 5;
+}
+
+message  ThreeLevelMenu{
+  string name = 1;
+  string icon = 2;
+  string url = 3;
+  bool usable = 4;
+  string appType = 5;
+  string openType = 6;
+  bool isCheck = 7;
+  TipInfo tipInfo = 8;
+}
+
+message TipInfo {
+  string title = 1;
+  string content = 2;
+  string confirmUrl = 3;
+  string confirmText = 4;
+  bool isShowCancel = 5;
 }
 
 service UserCenter {
-	//企业认证
-	rpc EntAuth (EntAuthReq) returns (EntAuthResp);
-	//机构审核
-	rpc EntExamine (ExamineReq) returns (ExamineResp);
-	//企业列表
-	rpc EntList (EntListReq) returns (EntListResp);
-	//审核列表
-	rpc ExamineList (ExamineListReq) returns (ExamineListResp);
-	//查看企业状态
-	rpc CheckEnt (CheckEntReq) returns (CheckEntResp);
-	//查看企业详情
-	rpc EntInfo (CheckEntReq) returns (EntInfoResp);
-	//冻结/解冻企业
-	rpc EntUpdate (EntUpdateReq) returns (ExamineResp);
-	//查看审核详情
-	rpc ExamineInfo (CheckExamineReq) returns (EntInfoResp);
-	//根据统一社会信用代码查询企业状态
-	rpc GetStatusByCode(GetStatusByCodeReq) returns (GetStatusByCodeResp);
-	//新增用户
-	rpc UserAdd (UserAddReq) returns (UserAddResp);
-	//更新用户
-	rpc UserUpdate (UserIdReq) returns (ExamineResp);
-	//删除用户
-	rpc UserDel (UserIdReq) returns (ExamineResp);
- }
+  //企业认证
+  rpc EntAuth (EntAuthReq) returns (EntAuthResp);
+  //机构审核
+  rpc EntExamine (ExamineReq) returns (ExamineResp);
+  //企业列表
+  rpc EntList (EntListReq) returns (EntListResp);
+  //审核列表
+  rpc ExamineList (ExamineListReq) returns (ExamineListResp);
+  //查看企业状态
+  rpc CheckEnt (CheckEntReq) returns (CheckEntResp);
+  //查看企业详情
+  rpc EntInfo (CheckEntReq) returns (EntInfoResp);
+  //冻结/解冻企业
+  rpc EntUpdate (EntUpdateReq) returns (ExamineResp);
+  //查看审核详情
+  rpc ExamineInfo (CheckExamineReq) returns (EntInfoResp);
+  //根据统一社会信用代码查询企业状态
+  rpc GetStatusByCode(GetStatusByCodeReq) returns (GetStatusByCodeResp);
+  //新增用户
+  rpc UserAdd (UserAddReq) returns (UserAddResp);
+  //更新用户
+  rpc UserUpdate (UserIdReq) returns (ExamineResp);
+  //删除用户
+  rpc UserDel (UserIdReq) returns (ExamineResp);
+
+  //获取菜单树
+  rpc WorkDesktopMenu (WorkDesktopMenuReq) returns (WorkDesktopMenuResp);
+}

+ 6 - 6
rpc/usercenter.go

@@ -4,13 +4,13 @@ import (
 	"flag"
 	"fmt"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/config"
-	_ "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/db"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/server"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/internal/svc"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/internal/config"
+	_ "userCenter/rpc/internal/db"
+	"userCenter/rpc/internal/server"
+	"userCenter/rpc/internal/svc"
+	"userCenter/rpc/pb"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/timetask"
+	"userCenter/rpc/timetask"
 
 	"github.com/zeromicro/go-zero/core/logx"
 	"github.com/zeromicro/go-zero/core/service"

+ 72 - 58
rpc/usercenter/usercenter.go

@@ -1,73 +1,81 @@
 // Code generated by goctl. DO NOT EDIT!
 // Source: userCenter.proto
 
-//go:generate mockgen -destination ./usercenter_mock.go -package usercenter -source $GOFILE
-
 package usercenter
 
 import (
 	"context"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"userCenter/rpc/pb"
 
 	"github.com/zeromicro/go-zero/zrpc"
+	"google.golang.org/grpc"
 )
 
 type (
-	EntUpdateReq        = pb.EntUpdateReq
-	GetStatusByCode     = pb.GetStatusByCode
-	ExamineResp         = pb.ExamineResp
-	EntData             = pb.EntData
+	CheckData           = pb.CheckData
 	CheckEntReq         = pb.CheckEntReq
-	GetStatusByCodeReq  = pb.GetStatusByCodeReq
+	CheckEntResp        = pb.CheckEntResp
+	CheckExamineReq     = pb.CheckExamineReq
+	EntAuthData         = pb.EntAuthData
+	EntAuthReq          = pb.EntAuthReq
 	EntAuthResp         = pb.EntAuthResp
-	ExamineList         = pb.ExamineList
+	EntData             = pb.EntData
 	EntInfoData         = pb.EntInfoData
-	UserAddResp         = pb.UserAddResp
-	EntListReq          = pb.EntListReq
-	ExamineListReq      = pb.ExamineListReq
-	UserAdds            = pb.UserAdds
-	EntAuthReq          = pb.EntAuthReq
-	EntAuthData         = pb.EntAuthData
 	EntInfoResp         = pb.EntInfoResp
-	GetStatusByCodeResp = pb.GetStatusByCodeResp
-	CheckData           = pb.CheckData
-	CheckExamineReq     = pb.CheckExamineReq
-	ExamineReq          = pb.ExamineReq
-	ExamineData         = pb.ExamineData
 	EntList             = pb.EntList
-	ExamineListData     = pb.ExamineListData
+	EntListReq          = pb.EntListReq
 	EntListResp         = pb.EntListResp
+	EntUpdateReq        = pb.EntUpdateReq
+	ExamineData         = pb.ExamineData
+	ExamineList         = pb.ExamineList
+	ExamineListData     = pb.ExamineListData
+	ExamineListReq      = pb.ExamineListReq
 	ExamineListResp     = pb.ExamineListResp
+	ExamineReq          = pb.ExamineReq
+	ExamineResp         = pb.ExamineResp
+	GetStatusByCode     = pb.GetStatusByCode
+	GetStatusByCodeReq  = pb.GetStatusByCodeReq
+	GetStatusByCodeResp = pb.GetStatusByCodeResp
+	MenuData            = pb.MenuData
+	MenuList            = pb.MenuList
+	SecondLevelMenu     = pb.SecondLevelMenu
+	ThreeLevelMenu      = pb.ThreeLevelMenu
+	TipInfo             = pb.TipInfo
 	UserAddReq          = pb.UserAddReq
-	CheckEntResp        = pb.CheckEntResp
+	UserAddResp         = pb.UserAddResp
+	UserAdds            = pb.UserAdds
 	UserIdReq           = pb.UserIdReq
+	WorkDesktopMenuReq  = pb.WorkDesktopMenuReq
+	WorkDesktopMenuResp = pb.WorkDesktopMenuResp
 
 	UserCenter interface {
 		// 企业认证
-		EntAuth(ctx context.Context, in *EntAuthReq) (*EntAuthResp, error)
+		EntAuth(ctx context.Context, in *EntAuthReq, opts ...grpc.CallOption) (*EntAuthResp, error)
 		// 机构审核
-		EntExamine(ctx context.Context, in *ExamineReq) (*ExamineResp, error)
+		EntExamine(ctx context.Context, in *ExamineReq, opts ...grpc.CallOption) (*ExamineResp, error)
 		// 企业列表
-		EntList(ctx context.Context, in *EntListReq) (*EntListResp, error)
+		EntList(ctx context.Context, in *EntListReq, opts ...grpc.CallOption) (*EntListResp, error)
 		// 审核列表
-		ExamineList(ctx context.Context, in *ExamineListReq) (*ExamineListResp, error)
+		ExamineList(ctx context.Context, in *ExamineListReq, opts ...grpc.CallOption) (*ExamineListResp, error)
 		// 查看企业状态
-		CheckEnt(ctx context.Context, in *CheckEntReq) (*CheckEntResp, error)
+		CheckEnt(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*CheckEntResp, error)
 		// 查看企业详情
-		EntInfo(ctx context.Context, in *CheckEntReq) (*EntInfoResp, error)
+		EntInfo(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*EntInfoResp, error)
 		// 冻结/解冻企业
-		EntUpdate(ctx context.Context, in *EntUpdateReq) (*ExamineResp, error)
+		EntUpdate(ctx context.Context, in *EntUpdateReq, opts ...grpc.CallOption) (*ExamineResp, error)
 		// 查看审核详情
-		ExamineInfo(ctx context.Context, in *CheckExamineReq) (*EntInfoResp, error)
+		ExamineInfo(ctx context.Context, in *CheckExamineReq, opts ...grpc.CallOption) (*EntInfoResp, error)
 		// 根据统一社会信用代码查询企业状态
-		GetStatusByCode(ctx context.Context, in *GetStatusByCodeReq) (*GetStatusByCodeResp, error)
+		GetStatusByCode(ctx context.Context, in *GetStatusByCodeReq, opts ...grpc.CallOption) (*GetStatusByCodeResp, error)
 		// 新增用户
-		UserAdd(ctx context.Context, in *UserAddReq) (*UserAddResp, error)
+		UserAdd(ctx context.Context, in *UserAddReq, opts ...grpc.CallOption) (*UserAddResp, error)
 		// 更新用户
-		UserUpdate(ctx context.Context, in *UserIdReq) (*ExamineResp, error)
+		UserUpdate(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error)
 		// 删除用户
-		UserDel(ctx context.Context, in *UserIdReq) (*ExamineResp, error)
+		UserDel(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error)
+		// 获取菜单树
+		WorkDesktopMenu(ctx context.Context, in *WorkDesktopMenuReq, opts ...grpc.CallOption) (*WorkDesktopMenuResp, error)
 	}
 
 	defaultUserCenter struct {
@@ -82,73 +90,79 @@ func NewUserCenter(cli zrpc.Client) UserCenter {
 }
 
 // 企业认证
-func (m *defaultUserCenter) EntAuth(ctx context.Context, in *EntAuthReq) (*EntAuthResp, error) {
+func (m *defaultUserCenter) EntAuth(ctx context.Context, in *EntAuthReq, opts ...grpc.CallOption) (*EntAuthResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.EntAuth(ctx, in)
+	return client.EntAuth(ctx, in, opts...)
 }
 
 // 机构审核
-func (m *defaultUserCenter) EntExamine(ctx context.Context, in *ExamineReq) (*ExamineResp, error) {
+func (m *defaultUserCenter) EntExamine(ctx context.Context, in *ExamineReq, opts ...grpc.CallOption) (*ExamineResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.EntExamine(ctx, in)
+	return client.EntExamine(ctx, in, opts...)
 }
 
 // 企业列表
-func (m *defaultUserCenter) EntList(ctx context.Context, in *EntListReq) (*EntListResp, error) {
+func (m *defaultUserCenter) EntList(ctx context.Context, in *EntListReq, opts ...grpc.CallOption) (*EntListResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.EntList(ctx, in)
+	return client.EntList(ctx, in, opts...)
 }
 
 // 审核列表
-func (m *defaultUserCenter) ExamineList(ctx context.Context, in *ExamineListReq) (*ExamineListResp, error) {
+func (m *defaultUserCenter) ExamineList(ctx context.Context, in *ExamineListReq, opts ...grpc.CallOption) (*ExamineListResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.ExamineList(ctx, in)
+	return client.ExamineList(ctx, in, opts...)
 }
 
 // 查看企业状态
-func (m *defaultUserCenter) CheckEnt(ctx context.Context, in *CheckEntReq) (*CheckEntResp, error) {
+func (m *defaultUserCenter) CheckEnt(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*CheckEntResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.CheckEnt(ctx, in)
+	return client.CheckEnt(ctx, in, opts...)
 }
 
 // 查看企业详情
-func (m *defaultUserCenter) EntInfo(ctx context.Context, in *CheckEntReq) (*EntInfoResp, error) {
+func (m *defaultUserCenter) EntInfo(ctx context.Context, in *CheckEntReq, opts ...grpc.CallOption) (*EntInfoResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.EntInfo(ctx, in)
+	return client.EntInfo(ctx, in, opts...)
 }
 
 // 冻结/解冻企业
-func (m *defaultUserCenter) EntUpdate(ctx context.Context, in *EntUpdateReq) (*ExamineResp, error) {
+func (m *defaultUserCenter) EntUpdate(ctx context.Context, in *EntUpdateReq, opts ...grpc.CallOption) (*ExamineResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.EntUpdate(ctx, in)
+	return client.EntUpdate(ctx, in, opts...)
 }
 
 // 查看审核详情
-func (m *defaultUserCenter) ExamineInfo(ctx context.Context, in *CheckExamineReq) (*EntInfoResp, error) {
+func (m *defaultUserCenter) ExamineInfo(ctx context.Context, in *CheckExamineReq, opts ...grpc.CallOption) (*EntInfoResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.ExamineInfo(ctx, in)
+	return client.ExamineInfo(ctx, in, opts...)
 }
 
 // 根据统一社会信用代码查询企业状态
-func (m *defaultUserCenter) GetStatusByCode(ctx context.Context, in *GetStatusByCodeReq) (*GetStatusByCodeResp, error) {
+func (m *defaultUserCenter) GetStatusByCode(ctx context.Context, in *GetStatusByCodeReq, opts ...grpc.CallOption) (*GetStatusByCodeResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.GetStatusByCode(ctx, in)
+	return client.GetStatusByCode(ctx, in, opts...)
 }
 
 // 新增用户
-func (m *defaultUserCenter) UserAdd(ctx context.Context, in *UserAddReq) (*UserAddResp, error) {
+func (m *defaultUserCenter) UserAdd(ctx context.Context, in *UserAddReq, opts ...grpc.CallOption) (*UserAddResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.UserAdd(ctx, in)
+	return client.UserAdd(ctx, in, opts...)
 }
 
 // 更新用户
-func (m *defaultUserCenter) UserUpdate(ctx context.Context, in *UserIdReq) (*ExamineResp, error) {
+func (m *defaultUserCenter) UserUpdate(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.UserUpdate(ctx, in)
+	return client.UserUpdate(ctx, in, opts...)
 }
 
 // 删除用户
-func (m *defaultUserCenter) UserDel(ctx context.Context, in *UserIdReq) (*ExamineResp, error) {
+func (m *defaultUserCenter) UserDel(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*ExamineResp, error) {
+	client := pb.NewUserCenterClient(m.cli.Conn())
+	return client.UserDel(ctx, in, opts...)
+}
+
+// 获取菜单树
+func (m *defaultUserCenter) WorkDesktopMenu(ctx context.Context, in *WorkDesktopMenuReq, opts ...grpc.CallOption) (*WorkDesktopMenuResp, error) {
 	client := pb.NewUserCenterClient(m.cli.Conn())
-	return client.UserDel(ctx, in)
+	return client.WorkDesktopMenu(ctx, in, opts...)
 }

+ 2 - 2
service/entService.go

@@ -6,8 +6,8 @@ import (
 	"time"
 
 	"app.yhyue.com/moapp/jybase/common"
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	userCenter "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/entity"
+	userCenter "userCenter/rpc/usercenter"
 )
 
 type EntService struct {

+ 2 - 2
service/user.go

@@ -4,8 +4,8 @@ import (
 	"database/sql"
 	"time"
 
-	"bp.jydev.jianyu360.cn/BaseService/userCenter/entity"
-	. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
+	"userCenter/entity"
+	. "userCenter/rpc/usercenter"
 )
 
 func UserAdd(this *UserAddReq) *UserAddResp {

+ 98 - 0
service/workDesktop.go

@@ -0,0 +1,98 @@
+package service
+
+import (
+	MC "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/redis"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"github.com/zeromicro/go-zero/core/logx"
+	"time"
+	"userCenter/entity"
+	"userCenter/rpc/pb"
+	. "userCenter/rpc/usercenter"
+)
+
+//获取工作桌面菜单当前选择模式--全部/可用
+func GetWorkDesktopMenuMode(in *WorkDesktopMenuReq) string {
+	logx.Info("_______________________")
+	menuModes := entity.BaseMysql.SelectBySql(`SELECT value FROM work_commonly WHERE appid=? AND userid=? AND field = 'navigation' LIMIT 1`, in.AppId, in.UserId)
+	logx.Info("_______________________")
+	if menuModes != nil && len(*menuModes) > 0 {
+		menuMode := (*menuModes)[0]
+		return MC.ObjToString(menuMode["value"])
+	}
+	return "all"
+}
+
+//获取工作桌面菜单树
+func GetWordDesktopMenuTree(in *WorkDesktopMenuReq, redisOutTime int, bigMemberOff bool) ([]*pb.MenuList, error) {
+	t1 := time.Now()
+	//redis缓存
+	var menuList []*pb.MenuList
+	RedisMenuKey := fmt.Sprintf(entity.RedisMenuKey, in.AppId, in.UserId)
+	menuBytes, err := redis.GetBytes(entity.RedisCode, RedisMenuKey)
+	if err == nil && len(*menuBytes) > 0 {
+		if json.Unmarshal(*menuBytes, &menuList) == nil {
+			return menuList, nil
+		}
+	}
+	//tidb数据
+	menuData := entity.BaseMysql.SelectBySql(`SELECT * FROM work_menu WHERE status=0 AND appid=? ORDER BY id ASC`, in.AppId)
+	if menuData == nil || len(*menuData) == 0 {
+		return nil, errors.New("查询数据异常")
+	}
+	wdm := &entity.WorkDesktopMenu{
+		MenuTree:     []*entity.JYMenu{},
+		UserId:       in.UserId,
+		TimeOut:      redisOutTime,
+		BigMemberOff: bigMemberOff,
+	}
+	for _, v := range *menuData {
+		menu := &entity.JYMenu{
+			Id:        MC.IntAll(v["id"]),
+			Name:      MC.ObjToString(v["name"]),
+			OrderId:   MC.IntAll(v["orderid"]),
+			ParentId:  MC.IntAll(v["parentid"]),
+			PowerIds:  MC.ObjToString(v["powerids"]),
+			CheckCode: MC.IntAll(v["checkcode"]),
+			Icon:      MC.ObjToString(v["icon"]),
+			AppType:   MC.ObjToString(v["apptype"]),
+			OpenType:  MC.ObjToString(v["opentype"]),
+		}
+		switch in.Platform {
+		case "WX":
+			menu.Url = MC.ObjToString(v["wxurl"])
+		case "APP":
+			menu.Url = MC.ObjToString(v["appurl"])
+		default:
+			menu.Url = MC.ObjToString(v["pcurl"])
+		}
+		if additionalInfo := MC.ObjToString(v["additionalinfo"]); additionalInfo != "" {
+			additional := entity.Additional{}
+			if json.Unmarshal([]byte(additionalInfo), &additional) == nil {
+				menu.AdditionalInfo = additional
+			}
+		}
+		if menu.Id > 0 {
+			wdm.MenuTree = append(wdm.MenuTree, menu)
+		}
+	}
+	logx.Info("数据长度:", len(wdm.MenuTree), "-- 查询菜单数据耗时:", time.Since(t1))
+	//jyMenu := wdm.WorkMenuTree(0)
+	wdm.MenuTree = wdm.WorkMenuTree(0)
+	logx.Info("菜单树生成耗时:", time.Since(t1))
+	menuList, err = wdm.WorkMenuFormat()
+	logx.Info("菜单格式化耗时:", time.Since(t1))
+	if err == nil && len(menuList) > 0 {
+		if menuBytes, err := json.Marshal(menuList); err == nil {
+			if redis.PutBytes(entity.RedisCode, RedisMenuKey, &menuBytes, redisOutTime) != nil {
+				logx.Info("工作桌面菜单 redis缓存异常")
+			}
+		} else {
+			logx.Info("菜单数据序列化异常")
+		}
+	}
+	logx.Info("整体耗时:", time.Since(t1))
+	return menuList, err
+}

部分文件因文件數量過多而無法顯示