feat: 分类系统 + 标签系统 — Phase 4 完成

分类:Model/Repo/Service/Controller + 管理后台树形页面 + 首页导航栏
标签:Model/Repo/Service/Controller + /tags/{slug} 落地页 + 写文章页输入
Post 加 CategoryID,Create/Update 支持分类和标签
SQL 迁移含 categories/tags/post_tags 表及预设未分类
This commit is contained in:
2026-06-22 00:30:29 +08:00
parent 977c52513a
commit 0b8f6f890d
30 changed files with 988 additions and 13 deletions

View File

@ -33,6 +33,7 @@ func setupAdminRoutes(r *gin.Engine, cfg *config.Config, d *dependencies) {
adminPages.GET("/energy/fund-logs", d.adminEnergyCtrl.FundLogPage)
adminPages.GET("/comments", d.adminCommentCtrl.CommentsPage)
adminPages.GET("/announcements", d.announcementCtrl.Page)
adminPages.GET("/categories", d.categoryCtrl.Page)
}
// --- 管理后台 API ---
@ -115,4 +116,17 @@ func setupAdminRoutes(r *gin.Engine, cfg *config.Config, d *dependencies) {
announcementAPI.PUT("/:id", d.announcementCtrl.Update)
announcementAPI.DELETE("/:id", d.announcementCtrl.Delete)
}
// --- 分类管理 APImoderator+ ---
categoryAPI := r.Group("/api/admin/categories")
categoryAPI.Use(d.authMdw.Required())
categoryAPI.Use(middleware.RequireMinRole(model.RoleModerator))
categoryAPI.Use(d.authMdw.BannedWriteGuard())
categoryAPI.Use(middleware.CSRF(cfg))
{
categoryAPI.GET("", d.categoryCtrl.List)
categoryAPI.POST("", d.categoryCtrl.Create)
categoryAPI.PUT("/:id", d.categoryCtrl.Update)
categoryAPI.DELETE("/:id", d.categoryCtrl.Delete)
}
}