2025-05-07 14:12:53 +08:00

141 lines
4.3 KiB
Go

package erpserver
import (
"net/http"
"management/internal/erpserver/handler/common"
"management/internal/erpserver/handler/system"
mi "management/internal/pkg/middleware"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
func NewHTTPServer(
mi mi.Middleware,
captchaHandler *common.CaptchaHandler,
uploadHandler *common.UploadHandler,
configHandler *system.ConfigHandler,
homeHandler *system.HomeHandler,
userHandler *system.UserHandler,
loginLogHandler *system.LoginLogHandler,
auditHandler *system.AuditHandler,
menuHandler *system.MenuHandler,
roleHandler *system.RoleHandler,
departmentHandler *system.DepartmentHandler,
) *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(mi.NoSurf) // CSRF
r.Use(mi.LoadSession) // Session
r.Get("/captcha", captchaHandler.Captcha)
r.With(mi.Authorize, mi.Audit).Post("/upload/img", uploadHandler.Img)
r.With(mi.Authorize, mi.Audit).Post("/upload/file", uploadHandler.File)
r.With(mi.Authorize, mi.Audit).Post("/upload/multi_files", uploadHandler.MultiFiles)
r.Get("/", userHandler.Login)
r.Post("/login", userHandler.Login)
r.Get("/logout", userHandler.Logout)
r.With(mi.Authorize).Get("/home.html", homeHandler.Home)
r.With(mi.Authorize).Get("/dashboard", homeHandler.Dashboard)
r.With(mi.Authorize).Get("/pear.json", configHandler.Pear)
r.Route("/system", func(r chi.Router) {
r.Use(mi.Authorize)
r.Route("/config", func(r chi.Router) {
r.Use(mi.Audit)
r.Get("/list", configHandler.List)
r.Post("/list", configHandler.List)
r.Get("/add", configHandler.Add)
r.Get("/edit", configHandler.Edit)
r.Post("/save", configHandler.Save)
r.Post("/refresh_cache", configHandler.RefreshCache)
r.Post("/reset_pear", configHandler.ResetPear)
})
r.Get("/menus", menuHandler.Menus)
r.Route("/menu", func(r chi.Router) {
r.Use(mi.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(mi.Audit)
r.Get("/list", departmentHandler.List)
r.Post("/list", departmentHandler.List)
r.Get("/add", departmentHandler.Add)
r.Get("/add_children", departmentHandler.AddChildren)
r.Get("/edit", departmentHandler.Edit)
r.Post("/save", departmentHandler.Save)
r.Post("/data", departmentHandler.Data)
r.Post("/refresh_cache", departmentHandler.RefreshCache)
r.Post("/rebuild_parent_path", departmentHandler.RebuildParentPath)
})
r.Route("/role", func(r chi.Router) {
r.Use(mi.Audit)
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)
})
r.Route("/login_log", func(r chi.Router) {
r.Get("/list", loginLogHandler.List)
r.Post("/list", loginLogHandler.List)
})
r.Route("/audit_log", func(r chi.Router) {
r.Get("/list", auditHandler.List)
r.Post("/list", auditHandler.List)
})
})
})
return r
}