package routes import ( "tyapi-server/internal/infrastructure/http/handlers" sharedhttp "tyapi-server/internal/shared/http" "tyapi-server/internal/shared/middleware" "go.uber.org/zap" ) // ArticleRoutes 文章路由 type ArticleRoutes struct { handler *handlers.ArticleHandler auth *middleware.JWTAuthMiddleware admin *middleware.AdminAuthMiddleware logger *zap.Logger } // NewArticleRoutes 创建文章路由 func NewArticleRoutes( handler *handlers.ArticleHandler, auth *middleware.JWTAuthMiddleware, admin *middleware.AdminAuthMiddleware, logger *zap.Logger, ) *ArticleRoutes { return &ArticleRoutes{ handler: handler, auth: auth, admin: admin, logger: logger, } } // Register 注册路由 func (r *ArticleRoutes) Register(router *sharedhttp.GinRouter) { engine := router.GetEngine() // ==================== 用户端路由 ==================== // 文章相关路由 - 用户端 articleGroup := engine.Group("/api/v1/articles") { // 公开路由 - 不需要认证 articleGroup.GET("/:id", r.handler.GetArticleByID) // 获取文章详情 articleGroup.GET("", r.handler.ListArticles) // 获取文章列表(支持筛选:标题、分类、摘要、标签、推荐状态) } // 分类相关路由 - 用户端 categoryGroup := engine.Group("/api/v1/article-categories") { // 公开路由 - 不需要认证 categoryGroup.GET("", r.handler.ListCategories) // 获取分类列表 categoryGroup.GET("/:id", r.handler.GetCategoryByID) // 获取分类详情 } // 标签相关路由 - 用户端 tagGroup := engine.Group("/api/v1/article-tags") { // 公开路由 - 不需要认证 tagGroup.GET("", r.handler.ListTags) // 获取标签列表 tagGroup.GET("/:id", r.handler.GetTagByID) // 获取标签详情 } // ==================== 管理员端路由 ==================== // 管理员文章管理路由 adminArticleGroup := engine.Group("/api/v1/admin/articles") adminArticleGroup.Use(r.admin.Handle()) { // 统计信息 adminArticleGroup.GET("/stats", r.handler.GetArticleStats) // 获取文章统计 // 文章管理 adminArticleGroup.POST("", r.handler.CreateArticle) // 创建文章 adminArticleGroup.PUT("/:id", r.handler.UpdateArticle) // 更新文章 adminArticleGroup.DELETE("/:id", r.handler.DeleteArticle) // 删除文章 // 文章状态管理 adminArticleGroup.POST("/:id/publish", r.handler.PublishArticle) // 发布文章 adminArticleGroup.POST("/:id/schedule-publish", r.handler.SchedulePublishArticle) // 定时发布文章 adminArticleGroup.POST("/:id/archive", r.handler.ArchiveArticle) // 归档文章 adminArticleGroup.PUT("/:id/featured", r.handler.SetFeatured) // 设置推荐状态 } // 管理员分类管理路由 adminCategoryGroup := engine.Group("/api/v1/admin/article-categories") adminCategoryGroup.Use(r.admin.Handle()) { // 分类管理 adminCategoryGroup.POST("", r.handler.CreateCategory) // 创建分类 adminCategoryGroup.PUT("/:id", r.handler.UpdateCategory) // 更新分类 adminCategoryGroup.DELETE("/:id", r.handler.DeleteCategory) // 删除分类 } // 管理员标签管理路由 adminTagGroup := engine.Group("/api/v1/admin/article-tags") adminTagGroup.Use(r.admin.Handle()) { // 标签管理 adminTagGroup.POST("", r.handler.CreateTag) // 创建标签 adminTagGroup.PUT("/:id", r.handler.UpdateTag) // 更新标签 adminTagGroup.DELETE("/:id", r.handler.DeleteTag) // 删除标签 } r.logger.Info("文章路由注册完成") }