package router import ( "net/http" "management/internal/middleware/manage/audit" "management/internal/middleware/manage/auth" "management/internal/middleware/manage/nosurf" budgethandler "management/internal/router/manage/budget" cachehandler "management/internal/router/manage/cache" categoryhandler "management/internal/router/manage/category" commonhandler "management/internal/router/manage/common" customerhandler "management/internal/router/manage/customer" expensehandler "management/internal/router/manage/expense" incomehandler "management/internal/router/manage/income" oauthhandler "management/internal/router/manage/oauth" projecthandler "management/internal/router/manage/project" systemhandler "management/internal/router/manage/system" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) func NewRouter() *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(nosurf.NoSurf) // CSRF // r.Use(session.LoadSession) // Session r.Get("/captcha", commonhandler.Captcha) r.Get("/", oauthhandler.Login) r.Post("/login", oauthhandler.PostLogin) r.Get("/logout", oauthhandler.Logout) r.With(auth.Authorize, audit.Audit).Post("/upload/img", commonhandler.UploadImg) r.With(auth.Authorize, audit.Audit).Post("/upload/file", commonhandler.UploadFile) r.With(auth.Authorize, audit.Audit).Post("/upload/mutilfile", commonhandler.UploadMutilFiles) r.With(auth.Authorize, audit.Audit).Get("/home.html", Home) configHandler := systemhandler.NewSysConfigHandler() r.With(auth.Authorize).Get("/pear.json", configHandler.Pear) r.Route("/system", func(r chi.Router) { r.Use(auth.Authorize) r.Route("/config", func(r chi.Router) { r.Use(audit.Audit) r.Get("/list", configHandler.List) r.Post("/list", configHandler.PostList) r.Get("/add", configHandler.Add) r.Get("/edit", configHandler.Edit) r.Post("/save", configHandler.Save) r.Post("/reset_pear", configHandler.ResetPear) r.Post("/refresh", configHandler.Refresh) }) r.Route("/department", func(r chi.Router) { r.Use(audit.Audit) departHandler := systemhandler.NewSysDepartmentHandler() r.Get("/list", departHandler.List) r.Post("/list", departHandler.PostList) r.Get("/add", departHandler.Add) r.Get("/add_children", departHandler.AddChildren) r.Get("/edit", departHandler.Edit) r.Post("/save", departHandler.Save) r.Post("/dtree", departHandler.DTree) r.Post("/refresh", departHandler.Refresh) r.Post("/rebuild_parent_path", departHandler.RebuildParentPath) }) r.Route("/user", func(r chi.Router) { r.Use(audit.Audit) userHandler := systemhandler.NewSysUserHandler() r.Get("/list", userHandler.List) r.Post("/list", userHandler.PostList) r.Get("/add", userHandler.Add) r.Get("/edit", userHandler.Edit) r.Post("/save", userHandler.Save) r.Get("/profile", userHandler.Profile) r.Post("/xmselect", userHandler.XmSelect) }) r.Route("/login_log", func(r chi.Router) { // r.Use(audit.Audit) userLoginLogHandler := systemhandler.NewSysUserLoginLogHandler() r.Get("/list", userLoginLogHandler.List) r.Post("/list", userLoginLogHandler.PostList) }) r.Route("/audit_log", func(r chi.Router) { // r.Use(audit.Audit) userAuditLogHandler := systemhandler.NewSysAuditLogHandler() r.Get("/list", userAuditLogHandler.List) r.Post("/list", userAuditLogHandler.PostList) }) r.Route("/role", func(r chi.Router) { r.Use(audit.Audit) roleHandler := systemhandler.NewSysRoleHandler() r.Get("/list", roleHandler.List) r.Post("/list", roleHandler.PostList) r.Get("/add", roleHandler.Add) r.Get("/edit", roleHandler.Edit) r.Post("/save", roleHandler.Save) r.Post("/dtree", roleHandler.DTree) r.Post("/refresh", roleHandler.Refresh) r.Post("/rebuild_parent_path", roleHandler.RebuildParentPath) r.Post("/refresh_role_menus", roleHandler.RefreshRoleMenus) r.Post("/xm_select", roleHandler.XmSelect) r.Get("/set_menu", roleHandler.SetMenu) r.Post("/set_menu", roleHandler.PostSetMenu) }) menuHandler := systemhandler.NewSysMenuHandler() r.Get("/menus", menuHandler.UserMenus) r.Route("/menu", func(r chi.Router) { r.Use(audit.Audit) r.Get("/tree", menuHandler.Tree) r.Get("/list", menuHandler.List) r.Post("/list", menuHandler.PostList) r.Get("/add", menuHandler.Add) r.Get("/add_children", menuHandler.AddChildren) r.Get("/edit", menuHandler.Edit) r.Post("/save", menuHandler.Save) r.Post("/xm_select_tree", menuHandler.XmSelectTree) r.Post("/refresh_cache", menuHandler.Refresh) }) // 类别 r.Route("/category", func(r chi.Router) { r.Use(audit.Audit) categoryHandler := categoryhandler.NewCategoryHandler() r.Get("/list", categoryHandler.List) r.Post("/list", categoryHandler.PostList) r.Get("/add", categoryHandler.Add) r.Get("/add_children", categoryHandler.AddChildren) r.Get("/edit", categoryHandler.Edit) r.Post("/save", categoryHandler.Save) r.Post("/dtree", categoryHandler.DTree) r.Post("/xmselect", categoryHandler.XmSelect) r.Post("/refresh", categoryHandler.Refresh) r.Post("/rebuild_parent_path", categoryHandler.RebuildParentPath) }) }) // 客户 r.Route("/customer", func(r chi.Router) { r.Use(auth.Authorize) r.Get("/list", customerhandler.List) r.Post("/list", customerhandler.PostList) r.Get("/add", customerhandler.Add) r.Get("/edit", customerhandler.Edit) r.Post("/save", customerhandler.Save) r.Post("/xmselect", customerhandler.XmSelect) }) // 项目 r.Route("/project", func(r chi.Router) { r.Use(auth.Authorize) r.Get("/list", projecthandler.List) r.Post("/list", projecthandler.PostList) r.Get("/add", projecthandler.Add) r.Get("/edit", projecthandler.Edit) r.Post("/save", projecthandler.Save) r.Post("/xmselect", projecthandler.XmSelect) r.Get("/dashboard", projecthandler.Dashboard) r.Post("/dashboard", projecthandler.PostDashboard) }) // 项目预算 r.Route("/budget", func(r chi.Router) { r.Use(auth.Authorize) r.Get("/list", budgethandler.List) r.Post("/list", budgethandler.PostList) r.Get("/add", budgethandler.Add) r.Get("/edit", budgethandler.Edit) r.Post("/save", budgethandler.Save) r.Post("/xmselect", budgethandler.XmSelect) }) // 回款单 r.Route("/income", func(r chi.Router) { r.Use(auth.Authorize) r.Get("/list", incomehandler.List) r.Post("/list", incomehandler.PostList) r.Get("/add", incomehandler.Add) r.Get("/edit", incomehandler.Edit) r.Post("/save", incomehandler.Save) }) // 费用报销单 r.Route("/expense", func(r chi.Router) { r.Use(auth.Authorize) r.Get("/list", expensehandler.List) r.Post("/list", expensehandler.PostList) r.Get("/add", expensehandler.Add) r.Get("/edit", expensehandler.Edit) r.Post("/save", expensehandler.Save) }) // 缓存 r.Route("/cache", func(r chi.Router) { r.Use(auth.Authorize) r.Get("/list", cachehandler.List) r.Post("/list", cachehandler.PostList) r.Post("/refresh", cachehandler.Refresh) }) }) return r }