package router import ( authHandlerPkg "task-track-backend/internal/handler/auth" organizationHandlerPkg "task-track-backend/internal/handler/organization" taskHandlerPkg "task-track-backend/internal/handler/task" userHandlerPkg "task-track-backend/internal/handler/user" "task-track-backend/internal/middleware" "time" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "gorm.io/gorm" ) func Setup(db *gorm.DB) *gin.Engine { r := gin.Default() // CORS 中间件 r.Use(cors.New(cors.Config{ AllowOrigins: []string{"*"}, AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, AllowHeaders: []string{"*"}, AllowCredentials: true, })) // 初始化处理器 authHandler := authHandlerPkg.NewAuthHandler(db) userHandler := userHandlerPkg.NewUserHandler(db) organizationHandler := organizationHandlerPkg.NewOrganizationHandler(db) taskHandler := taskHandlerPkg.NewTaskHandler(db) // statisticsHandler := statisticsHandlerPkg.NewStatisticsHandler(db) // TODO: 待实现 // 公开路由 public := r.Group("/api") { public.POST("/auth/login", authHandler.Login) public.POST("/auth/register", authHandler.Register) public.POST("/auth/test-login", authHandler.TestLogin) // 测试登录端点 // 简单的测试端点 public.GET("/test", func(c *gin.Context) { c.JSON(200, gin.H{ "code": 200, "message": "API is working", "time": time.Now().Format("2006-01-02 15:04:05"), }) }) } // 需要认证的路由 private := r.Group("/api") private.Use(middleware.AuthMiddleware()) { // 认证相关 private.POST("/auth/logout", authHandler.Logout) private.POST("/auth/refresh", authHandler.Refresh) private.GET("/auth/me", authHandler.Me) // 用户管理 private.GET("/users", userHandler.GetUsers) private.GET("/users/:id", userHandler.GetUser) private.POST("/users/update/:id", userHandler.UpdateUser) private.POST("/users/delete/:id", userHandler.DeleteUser) // 机构管理 private.GET("/organizations", organizationHandler.GetOrganizations) private.POST("/organizations", organizationHandler.CreateOrganization) private.GET("/organizations/:id", organizationHandler.GetOrganization) private.POST("/organizations/update/:id", organizationHandler.UpdateOrganization) private.POST("/organizations/delete/:id", organizationHandler.DeleteOrganization) private.GET("/organizations/:id/users", organizationHandler.GetOrganizationUsers) // 任务管理 private.GET("/tasks", taskHandler.GetTasks) private.POST("/tasks", taskHandler.CreateTask) private.GET("/tasks/:id", taskHandler.GetTask) private.POST("/tasks/update/:id", taskHandler.UpdateTask) private.POST("/tasks/delete/:id", taskHandler.DeleteTask) private.POST("/tasks/status/:id", taskHandler.UpdateTaskStatus) // 任务评论 private.GET("/tasks/:id/comments", taskHandler.GetTaskComments) private.POST("/tasks/:id/comments", taskHandler.AddTaskComment) private.DELETE("/tasks/:id/comments/:commentId", taskHandler.DeleteTaskComment) // 文件上传 private.POST("/upload", taskHandler.UploadFile) // 任务附件 private.GET("/tasks/:id/attachments", taskHandler.GetTaskAttachments) private.POST("/tasks/:id/attachments", taskHandler.AddTaskAttachment) private.DELETE("/attachments/:attachmentId", taskHandler.DeleteTaskAttachment) // 统计相关 (TODO: 待实现) // private.GET("/statistics/overview", statisticsHandler.GetOverview) // private.GET("/statistics/tasks", statisticsHandler.GetTaskStatistics) // private.GET("/statistics/users", statisticsHandler.GetUserStatistics) } return r }