package router import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) // setupAdminRoutes 配置后台管理路由 // 登录入口(需配置路径): // - GET /my-secret-admin-123/login 登录页面 // - POST /my-secret-admin-123/login 登录验证 // - GET /my-secret-admin-123/captcha 验证码 // // 后台管理路由(登录后访问): // - GET /dashboard 后台首页(仪表盘) // - GET /dashboard/home 后台首页 // - GET /dashboard/users 人员列表页 // - GET /dashboard/user/:id/resume 用户简历管理页 // - GET /dashboard/user/:id/portfolio 用户作品集管理页 // - GET /dashboard/user/:id/quiz 用户面试题库页 // - GET /dashboard/menus 菜单管理页 // - GET /dashboard/settings 系统设置页 // - GET /dashboard/logout 退出登录 func (r *Router) setupAdminRoutes(engine *gin.Engine) { adminPath := r.cfg.Auth.AdminPath if adminPath == "" { adminPath = "/admin" } fmt.Printf("Setting up admin login routes at: %s\n", adminPath) loginGroup := engine.Group(adminPath) { loginGroup.GET("/login", r.adminHandler.LoginPage) loginGroup.POST("/login", r.adminHandler.Login) loginGroup.GET("/captcha", r.adminHandler.Captcha) } dashboard := engine.Group("/dashboard") dashboard.Use(r.adminHandler.AuthMiddleware()) { dashboard.GET("/", r.adminHandler.HomePage) dashboard.GET("/home", r.adminHandler.HomePage) dashboard.GET("/users", r.adminHandler.UsersPage) dashboard.GET("/user", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, "/dashboard/users") }) dashboard.GET("/resumes", r.adminHandler.ResumesPage) dashboard.GET("/resume/add", r.adminHandler.ResumeAddPage) dashboard.GET("/resume/:id/edit", r.adminHandler.ResumeEditPageWithoutUser) dashboard.GET("/user/:id/resume", r.adminHandler.UserResumePage) dashboard.GET("/user/:id/resume/:resume_id/edit", r.adminHandler.ResumeEditPage) dashboard.GET("/portfolios", r.adminHandler.PortfoliosPage) dashboard.GET("/user/:id/portfolio", r.adminHandler.UserPortfolioPage) dashboard.GET("/portfolio/add", r.adminHandler.PortfolioAddPage) dashboard.GET("/portfolio/:id/edit", r.adminHandler.PortfolioEditPage) dashboard.GET("/quiz", r.adminHandler.QuizPage) dashboard.GET("/user/:id/quiz", r.adminHandler.UserQuizPage) dashboard.GET("/user/:id/quiz/generate", r.adminHandler.QuizGeneratePage) dashboard.GET("/user/:id/quiz/record/:record_id", r.adminHandler.QuizRecordDetailPage) dashboard.POST("/api/quiz/favorite/:id/toggle", r.adminHandler.ToggleFavoriteAPI) dashboard.DELETE("/api/quiz/favorite/:id", r.resumeHandler.DeleteFavoriteQuestionAPI) dashboard.GET("/settings", r.adminHandler.SettingsPage) dashboard.GET("/logout", r.adminHandler.Logout) dashboard.GET("/api/user/:id", r.resumeHandler.GetUserAPI) dashboard.POST("/api/user", r.resumeHandler.CreateUserAPI) dashboard.PUT("/api/user/:id", r.resumeHandler.UpdateUserAPI) dashboard.DELETE("/api/user/:id", r.resumeHandler.DeleteUserAPI) dashboard.GET("/api/users", r.resumeHandler.GetAllUsersAPI) dashboard.GET("/api/settings", r.adminHandler.GetSettingsAPI) dashboard.POST("/api/settings", r.adminHandler.UpdateSettingsAPI) dashboard.POST("/api/settings/logo", r.adminHandler.UploadLogoAPI) dashboard.GET("/api/settings/system-info", r.adminHandler.SystemInfoAPI) dashboard.GET("/api/settings/login-history", r.adminHandler.LoginHistoryAPI) dashboard.POST("/api/portfolio", r.resumeHandler.CreatePortfolioItemAPI) dashboard.GET("/api/portfolio/:id", r.resumeHandler.GetPortfolioItemAPI) dashboard.PUT("/api/portfolio/:id", r.resumeHandler.UpdatePortfolioItemAPI) dashboard.DELETE("/api/portfolio/:id", r.resumeHandler.DeletePortfolioItemAPI) dashboard.POST("/api/resume/create", r.resumeHandler.AdminCreateResumeAPI) dashboard.POST("/api/resume/generate-from-document", r.resumeHandler.GenerateResumeFromDocumentAPI) dashboard.GET("/api/resume/:id", r.resumeHandler.GetResumeByIDAPI) dashboard.PUT("/api/resume/:id", r.resumeHandler.UpdateResumeByIDAPI) dashboard.PUT("/api/resume/:id/show_in_home", r.resumeHandler.UpdateResumeShowInHomeAPI) dashboard.PUT("/api/resume/:id/password", r.resumeHandler.UpdateResumePasswordAPI) dashboard.PUT("/api/resume/:id/user", r.resumeHandler.UpdateResumeUserIDAPI) dashboard.DELETE("/api/resume/:id", r.resumeHandler.DeleteResumeAPI) dashboard.GET("/api/search", r.adminHandler.SearchAPI) dashboard.GET("/api/notifications", r.adminHandler.GetNotificationsAPI) dashboard.POST("/api/notifications/:id/read", r.adminHandler.MarkNotificationAsReadAPI) dashboard.POST("/api/notifications/read-all", r.adminHandler.MarkAllNotificationsAsReadAPI) dashboard.DELETE("/api/notifications", r.adminHandler.DeleteAllNotificationsAPI) dashboard.GET("/api/notifications/unread-count", r.adminHandler.GetUnreadNotificationCountAPI) } }