You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.5 KiB
102 lines
3.5 KiB
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
|
|
}
|
|
|