2025-04-14 15:28:51 +08:00

127 lines
4.5 KiB
Go

package handler
import (
"net/http"
"management/internal/erpserver/handler/common"
"management/internal/erpserver/handler/system"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
func (ctx *AppContext) Router() *chi.Mux {
r := chi.NewRouter()
r.Use(middleware.RequestID)
r.Use(middleware.RealIP)
// r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
staticServer := http.FileServer(http.Dir("./web/statics/"))
r.Handle("/statics/*", http.StripPrefix("/statics", staticServer))
uploadServer := http.FileServer(http.Dir("./upload/"))
r.Handle("/upload/*", http.StripPrefix("/upload", uploadServer))
r.Group(func(r chi.Router) {
r.Use(ctx.Middleware.NoSurf) // CSRF
r.Use(ctx.Middleware.LoadSession) // Session
captchaHandler := common.NewCaptchaHandler(&ctx.Config.Captcha, ctx.Render, ctx.CaptchaService)
r.Get("/captcha", captchaHandler.Captcha)
uploadHandler := common.NewUploadHandler(ctx.Render)
r.With(ctx.Middleware.Authorize, ctx.Middleware.Audit).Post("/upload/img", uploadHandler.Img)
r.With(ctx.Middleware.Authorize, ctx.Middleware.Audit).Post("/upload/file", uploadHandler.File)
r.With(ctx.Middleware.Authorize, ctx.Middleware.Audit).Post("/upload/mutilfile", uploadHandler.MutilFiles)
userHandler := system.NewUserHandler(ctx.Render, ctx.Middleware, ctx.CaptchaService, ctx.UserService, ctx.RoleService, ctx.DepartmentService)
r.Get("/", userHandler.Login)
r.Post("/login", userHandler.Login)
r.Get("/logout", userHandler.Logout)
homeHandler := system.NewHomeHandler(ctx.Render, ctx.Middleware, ctx.UserService, ctx.LoginLogService)
r.With(ctx.Middleware.Authorize).Get("/home.html", homeHandler.Home)
r.With(ctx.Middleware.Authorize).Get("/dashboard", homeHandler.Dashboard)
configHandler := system.NewConfigHandler(ctx.Render, ctx.Redis, ctx.ConfigService)
r.With(ctx.Middleware.Authorize).Get("/pear.json", configHandler.Pear)
r.Route("/system", func(r chi.Router) {
r.Use(ctx.Middleware.Authorize)
menuHandler := system.NewMenuHandler(ctx.Render, ctx.Middleware, ctx.MenuService)
r.Get("/menus", menuHandler.Menus)
r.Route("/menu", func(r chi.Router) {
r.Use(ctx.Middleware.Audit)
r.Get("/list", menuHandler.List)
r.Post("/list", menuHandler.List)
r.Get("/add", menuHandler.Add)
r.Get("/add_children", menuHandler.AddChildren)
r.Get("/edit", menuHandler.Edit)
r.Post("/save", menuHandler.Save)
r.Post("/data", menuHandler.Data)
r.Post("/refresh_cache", menuHandler.RefreshCache)
})
r.Route("/department", func(r chi.Router) {
r.Use(ctx.Middleware.Audit)
departHandler := system.NewDepartmentHandler(ctx.Render, ctx.DepartmentService)
r.Get("/list", departHandler.List)
r.Post("/list", departHandler.List)
r.Get("/add", departHandler.Add)
r.Get("/add_children", departHandler.AddChildren)
r.Get("/edit", departHandler.Edit)
r.Post("/save", departHandler.Save)
r.Post("/data", departHandler.Data)
r.Post("/refresh_cache", departHandler.RefreshCache)
r.Post("/rebuild_parent_path", departHandler.RebuildParentPath)
})
r.Route("/role", func(r chi.Router) {
r.Use(ctx.Middleware.Audit)
roleHandler := system.NewRoleHandler(ctx.Render, ctx.RoleService, ctx.MenuService)
r.Get("/list", roleHandler.List)
r.Post("/list", roleHandler.List)
r.Get("/add", roleHandler.Add)
r.Get("/add_children", roleHandler.AddChildren)
r.Get("/edit", roleHandler.Edit)
r.Post("/save", roleHandler.Save)
r.Post("/data", roleHandler.Data)
r.Post("/refresh_cache", roleHandler.RefreshCache)
r.Post("/rebuild_parent_path", roleHandler.RebuildParentPath)
r.Post("/refresh_role_menus", roleHandler.RefreshRoleMenus)
r.Get("/set_menu", roleHandler.SetMenu)
r.Post("/set_menu", roleHandler.SetMenu)
})
r.Route("/user", func(r chi.Router) {
r.Get("/list", userHandler.List)
r.Post("/list", userHandler.List)
r.Get("/add", userHandler.Add)
r.Get("/edit", userHandler.Edit)
r.Post("/save", userHandler.Save)
r.Get("/profile", userHandler.Profile)
r.Post("/data", userHandler.Data)
})
loginLogHandler := system.NewLoginLogHandler(ctx.Render, ctx.LoginLogService)
r.Route("/login_log", func(r chi.Router) {
r.Get("/list", loginLogHandler.List)
r.Post("/list", loginLogHandler.List)
})
auditHandler := system.NewAuditHandler(ctx.Render, ctx.AuditLogService)
r.Route("/audit_log", func(r chi.Router) {
r.Get("/list", auditHandler.List)
r.Post("/list", auditHandler.List)
})
})
})
return r
}