From e40047a88e8fd25e151577393020e4acb1ebd157 Mon Sep 17 00:00:00 2001 From: linwenxiang <991154416@qq.com> Date: Tue, 20 Apr 2021 11:08:46 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:sparkles:=20=E5=8E=BB=E9=99=A4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=86=99log=E5=AF=B9queue=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E7=9A=84=E4=BE=9D=E8=B5=96=EF=BC=8C=E8=B0=83=E6=95=B4cache?= =?UTF-8?q?=EF=BC=8C=E5=88=86=E7=A6=BB=E5=87=BAqueue=E5=92=8Clocker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/models/system/sys_login_log.go | 4 ++-- app/admin/models/system/sys_opera_log.go | 4 ++-- app/admin/router/sys_router.go | 6 +++--- cmd/api/server.go | 20 ++++++++++++++++++-- common/dto/generate.go | 6 +++--- common/middleware/handler/auth.go | 2 +- common/middleware/logger.go | 6 +++++- go.mod | 2 +- 8 files changed, 35 insertions(+), 15 deletions(-) diff --git a/app/admin/models/system/sys_login_log.go b/app/admin/models/system/sys_login_log.go index e534d5cb..626428aa 100644 --- a/app/admin/models/system/sys_login_log.go +++ b/app/admin/models/system/sys_login_log.go @@ -5,9 +5,9 @@ import ( "errors" "time" - "github.com/go-admin-team/go-admin-core/cache" log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk" + "github.com/go-admin-team/go-admin-core/storage" "go-admin/common/models" ) @@ -43,7 +43,7 @@ func (e *SysLoginLog) GetId() interface{} { } // SaveLoginLog 从队列中获取登录日志 -func SaveLoginLog(message cache.Message) (err error) { +func SaveLoginLog(message storage.Messager) (err error) { //准备db db := sdk.Runtime.GetDbByKey(message.GetPrefix()) if db == nil { diff --git a/app/admin/models/system/sys_opera_log.go b/app/admin/models/system/sys_opera_log.go index e4bed1eb..b8a83ebe 100644 --- a/app/admin/models/system/sys_opera_log.go +++ b/app/admin/models/system/sys_opera_log.go @@ -5,9 +5,9 @@ import ( "errors" "time" - "github.com/go-admin-team/go-admin-core/cache" log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk" + "github.com/go-admin-team/go-admin-core/storage" "go-admin/common/models" ) @@ -51,7 +51,7 @@ func (e *SysOperaLog) GetId() interface{} { } // SaveOperaLog 从队列中获取操作日志 -func SaveOperaLog(message cache.Message) (err error) { +func SaveOperaLog(message storage.Messager) (err error) { //准备db db := sdk.Runtime.GetDbByKey(message.GetPrefix()) if db == nil { diff --git a/app/admin/router/sys_router.go b/app/admin/router/sys_router.go index 97c9613f..4ad6a14b 100644 --- a/app/admin/router/sys_router.go +++ b/app/admin/router/sys_router.go @@ -103,13 +103,13 @@ func registerSysTableRouter(v1 *gin.RouterGroup) { } func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - r.POST("/login", authMiddleware.LoginHandler) - // Refresh time can be longer than token timeout - r.GET("/refresh_token", authMiddleware.RefreshHandler) r.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/ws/:id/:channel", ws.WebsocketManager.WsClient) r.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/wslogout/:id/:channel", ws.WebsocketManager.UnWsClient) v1 := r.Group("/api/v1") + v1.POST("/login", authMiddleware.LoginHandler) + // Refresh time can be longer than token timeout + v1.GET("/refresh_token", authMiddleware.RefreshHandler) //registerPageRouter(v1, authMiddleware) registerBaseRouter(v1, authMiddleware) registerDictRouter(v1, authMiddleware) diff --git a/cmd/api/server.go b/cmd/api/server.go index 7d315633..0592919d 100644 --- a/cmd/api/server.go +++ b/cmd/api/server.go @@ -75,11 +75,27 @@ func setup() { //5. 设置验证码store captcha.SetStore(captcha.NewCacheStore(cacheAdapter, 600)) + //6. 设置队列 + queueAdapter, err := config.QueueConfig.Setup() + if err != nil { + log.Fatalf("queue setup error, %s\n", err.Error()) + } + sdk.Runtime.SetQueueAdapter(queueAdapter) + + //7. 设置分布式锁 + lockerAdapter, err := config.LockerConfig.Setup() + if err != nil { + log.Fatalf("locker setup error, %s\n", err.Error()) + } + sdk.Runtime.SetLockerAdapter(lockerAdapter) + usageStr := `starting api server...` log.Println(usageStr) //注册监听函数 - sdk.Runtime.GetCacheAdapter().Register(global.LoginLog, system.SaveLoginLog) - sdk.Runtime.GetCacheAdapter().Register(global.OperateLog, system.SaveOperaLog) + queue := sdk.Runtime.GetMemoryQueue("") + queue.Register(global.LoginLog, system.SaveLoginLog) + queue.Register(global.OperateLog, system.SaveOperaLog) + go queue.Run() } func run() error { diff --git a/common/dto/generate.go b/common/dto/generate.go index 799f4e5b..74c976b5 100644 --- a/common/dto/generate.go +++ b/common/dto/generate.go @@ -9,8 +9,8 @@ import ( ) type ObjectById struct { - Id int `uri:"id" vd:"($>0||len(Ids)$==0)"` - Ids []int `json:"ids" vd:"($==0||len(Ids)$>0)'"` + Id int `uri:"id"` + Ids []int `json:"ids"` } func (s *ObjectById) Bind(ctx *gin.Context) error { @@ -50,4 +50,4 @@ func (s *ObjectById) GetId() interface{} { return s.Ids } return s.Id -} \ No newline at end of file +} diff --git a/common/middleware/handler/auth.go b/common/middleware/handler/auth.go index 550b0725..a6373da9 100644 --- a/common/middleware/handler/auth.go +++ b/common/middleware/handler/auth.go @@ -125,7 +125,7 @@ func LoginLogToDB(c *gin.Context, status string, msg string, username string) { l["username"] = username l["msg"] = msg - q := sdk.Runtime.GetCachePrefix(c.Request.Host) + q := sdk.Runtime.GetMemoryQueue(c.Request.Host) message, err := sdk.Runtime.GetStreamMessage("", global.LoginLog, l) if err != nil { log.Errorf("GetStreamMessage error, %s", err.Error()) diff --git a/common/middleware/logger.go b/common/middleware/logger.go index acc5952b..21acf890 100644 --- a/common/middleware/logger.go +++ b/common/middleware/logger.go @@ -24,6 +24,10 @@ func LoggerToFile() gin.HandlerFunc { // 处理请求 c.Next() + if strings.Index(c.Request.RequestURI, "/api/v1/logout") > -1 || + strings.Index(c.Request.RequestURI, "/login") > -1 { + return + } // 结束时间 endTime := time.Now() if c.Request.Method == http.MethodOptions { @@ -118,7 +122,7 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string } else { l["status"] = "1" } - q := sdk.Runtime.GetCachePrefix(c.Request.Host) + q := sdk.Runtime.GetMemoryQueue(c.Request.Host) message, err := sdk.Runtime.GetStreamMessage("", global.OperateLog, l) if err != nil { log.Errorf("GetStreamMessage error, %s", err.Error()) diff --git a/go.mod b/go.mod index 5748561a..08e1bf16 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/bytedance/go-tagexpr/v2 v2.7.10 github.com/casbin/casbin/v2 v2.25.1 github.com/gin-gonic/gin v1.6.3 - github.com/go-admin-team/go-admin-core v1.3.4 + github.com/go-admin-team/go-admin-core v1.3.5-0.20210420025759-96ee06e747d1 github.com/google/uuid v1.2.0 github.com/mssola/user_agent v0.5.2 github.com/opentracing/opentracing-go v1.1.0