package router import ( "ego/internal/conf" "ego/internal/middleware" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) var ( apiRouterFns []func(r *gin.RouterGroup) ) // NewRouter 路由配置 func NewRouter() *gin.Engine { // gin 实例 engine := gin.Default() // 跨域处理 engine.Use(middleware.Cors()) // zap 日志 engine.Use(middleware.GinZapLogger()) // 统一错误处理 engine.Use(middleware.UnifiedErrorResponse()) // 登录日志中间件 engine.Use(middleware.LoginLogMiddleware(conf.Db)) // swagger if gin.Mode() != gin.ReleaseMode { engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) } // register routers, middleware support registerRouters(engine, "/api/v1", apiRouterFns) return engine } // registerRouters 注册路由 func registerRouters(r *gin.Engine, groupPath string, routerFns []func(*gin.RouterGroup), handlers ...gin.HandlerFunc) { rg := r.Group(groupPath, handlers...) for _, fn := range routerFns { fn(rg) } }