feat: 就地通过评审,并为已过审用户提供默认可关的免审发布

帖/评管理入口可直接通过;站点默认信任已有 published 内容的用户后续直发。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-16 05:37:57 +08:00
parent b0170a99fd
commit f3145b24ff
14 changed files with 330 additions and 40 deletions

View File

@@ -280,6 +280,26 @@ func (s *ModerationService) RejectComment(actor *Actor, id uint) error {
})
}
// UserHasApprovedContent 用户是否已有至少一篇已发布帖子或一条已发布评论(即曾通过审核或免审直发)
func (s *ModerationService) UserHasApprovedContent(userID uint) (bool, error) {
var n int64
if err := s.db.Model(&model.Post{}).
Where("user_id = ? AND status = ?", userID, model.ContentStatusPublished).
Limit(1).Count(&n).Error; err != nil {
return false, err
}
if n > 0 {
return true, nil
}
n = 0
if err := s.db.Model(&model.Comment{}).
Where("user_id = ? AND status = ?", userID, model.ContentStatusPublished).
Limit(1).Count(&n).Error; err != nil {
return false, err
}
return n > 0, nil
}
func keys(m map[uint]bool) []uint {
out := make([]uint, 0, len(m))
for k := range m {