package router import ( "mini-chat/internal/alert" "mini-chat/internal/api/admin" "mini-chat/internal/api/app" "mini-chat/internal/cron" "mini-chat/internal/dblogger" "mini-chat/internal/pkg/core" "mini-chat/internal/pkg/logger" "mini-chat/internal/pkg/startup" "mini-chat/internal/repository/mysql" "mini-chat/internal/router/interceptor" "github.com/pkg/errors" ) func NewHTTPMux(logger logger.CustomLogger, db mysql.Repo, cron cron.Server) (core.Mux, error) { if logger == nil { return nil, errors.New("logger required") } if db == nil { return nil, errors.New("db required") } mux, err := core.New(logger, core.WithEnableCors(), core.WithEnableSwagger(), core.WithEnablePProf(), core.WithAlertNotify(alert.NotifyHandler()), core.WithRequestLogger(dblogger.LoggerHandler(db)), ) if err != nil { panic(err) } // 实例化拦截器 interceptorHandler := interceptor.New(logger, db) adminHandler := admin.New(logger, db) appHandler := app.New(logger, db) // 管理端非认证接口路由组 adminNonAuthApiRouter := mux.Group("/admin") { adminNonAuthApiRouter.GET("/license/status", func(ctx core.Context) { ctx.Payload(startup.Info()) }) adminNonAuthApiRouter.POST("/login", adminHandler.Login()) // 登录 } // 管理端认证接口路由组 adminAuthApiRouter := mux.Group("/admin", core.WrapAuthHandler(interceptorHandler.AdminTokenAuthVerify)) { adminAuthApiRouter.POST("/app/create", appHandler.CreateApp()) // 关联小程序 adminAuthApiRouter.POST("/app/delete", appHandler.DeleteApp()) // 删除小程序 adminAuthApiRouter.PUT("/app/:id", appHandler.ModifyApp()) // 修改小程序 adminAuthApiRouter.GET("/app", appHandler.PageList()) // 小程序列表 } return mux, nil }