feat: 已发布帖子编辑后进修订审核,通过前保持展示旧内容
- Post 模型新增 PendingTitle/PendingBody 字段,分离已发布内容与待审修订 - Update: approved 帖子编辑写入 Pending 字段,不覆盖正文,不改变发布状态 - Approve: 有 PendingBody 时复制到正式字段后清空,无 PendingBody 走首次审核 - Reject: 有 PendingBody 时仅清空待审修订(保持已发布),无 PendingBody 走普通退回 - 新增 ListPendingRevisions 查询,管理后台独立展示"修订待审核"区域 - 详情页展示"修订审核中"标识,编辑页加载待审内容 - 通过修订后直接覆盖,不保留历史版本
This commit is contained in:
@ -47,6 +47,9 @@ func (ctrl *AdminPostController) PostsPage(c *gin.Context) {
|
||||
nextPage = totalPages
|
||||
}
|
||||
|
||||
// 查询待审修订(approved 帖子有 PendingBody 的)
|
||||
revisions, _, _ := ctrl.postService.ListPendingRevisions(keyword, 1, 100)
|
||||
|
||||
c.HTML(http.StatusOK, "admin/posts/index.html", common.BuildAdminPageData(c, gin.H{
|
||||
"Title": "内容管理",
|
||||
"Posts": posts,
|
||||
@ -58,6 +61,7 @@ func (ctrl *AdminPostController) PostsPage(c *gin.Context) {
|
||||
"Keyword": keyword,
|
||||
"Status": status,
|
||||
"StatusNames": common.PostStatusDisplayNames,
|
||||
"Revisions": revisions,
|
||||
"ExtraCSS": "/admin/static/css/posts.css",
|
||||
}))
|
||||
}
|
||||
|
||||
@ -33,9 +33,10 @@ type auditStatusProvider interface {
|
||||
FindByID(id uint) (*model.User, error)
|
||||
}
|
||||
|
||||
// adminPostUseCase AdminPostController 对 PostService 的最小依赖(ISP:6 个方法)
|
||||
// adminPostUseCase AdminPostController 对 PostService 的最小依赖(ISP:7 个方法)
|
||||
type adminPostUseCase interface {
|
||||
ListAdmin(keyword, status string, page, pageSize int) ([]model.Post, int64, error)
|
||||
ListPendingRevisions(keyword string, page, pageSize int) ([]model.Post, int64, error)
|
||||
Approve(postID uint) error
|
||||
Reject(postID uint, reason string) error
|
||||
Lock(postID uint) error
|
||||
|
||||
Reference in New Issue
Block a user