feat: 实现评论系统(后端 + 前端)
- 新增 Comment/CommentMention 模型,Post 新增 CommentsCount 冗余计数器 - 新增 CommentRepo(CRUD + @搜索 LV3+ + 回复统计 + 文章作者查询) - 新增 CommentService(发表/回复/删除/@解析/通知 NotifyComment/NotifyCommentReply) - 新增 CommentController(6 个 API 端点),commentUseCase ISP 接口 - 新增评论路由(公开读取 + 需登录写入),依赖注入,错误哨兵,数据库迁移 - 前端评论区 HTML/CSS/JS:分页加载、回复折叠展开、内联回复表单、@提及自动补全
This commit is contained in:
@ -98,4 +98,23 @@ func setupAPIRoutes(r *gin.Engine, cfg *config.Config, d *dependencies) {
|
||||
energyAPI.GET("/info", d.energyCtrl.GetEnergyInfo)
|
||||
energyAPI.GET("/logs", d.energyCtrl.GetEnergyLogs)
|
||||
}
|
||||
|
||||
// --- 评论 API(部分需登录) ---
|
||||
// 公开读取
|
||||
commentsPublic := r.Group("/api/posts/:id/comments")
|
||||
{
|
||||
commentsPublic.GET("", d.commentCtrl.ListRootComments)
|
||||
commentsPublic.GET("/:root_id/replies", d.commentCtrl.ListReplies)
|
||||
}
|
||||
// 需要登录的操作
|
||||
commentsAPI := r.Group("/api")
|
||||
commentsAPI.Use(d.authMdw.Required())
|
||||
commentsAPI.Use(d.authMdw.BannedWriteGuard())
|
||||
commentsAPI.Use(middleware.CSRF(cfg))
|
||||
{
|
||||
commentsAPI.POST("/posts/:id/comments", d.commentCtrl.CreateRoot)
|
||||
commentsAPI.POST("/comments/:id/reply", d.commentCtrl.CreateReply)
|
||||
commentsAPI.DELETE("/comments/:id", d.commentCtrl.Delete)
|
||||
commentsAPI.GET("/users/search", d.commentCtrl.SearchUsers)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user