feat(admin): 完善站点设置、内容回收站与后台菜单分组

新增站点设置与内容管理(含已删除恢复/清除),用户页改用独有运营指标,并按概览/内容/成员与经济/站点重组侧栏。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-16 05:56:27 +08:00
parent be47b38370
commit dd7bd010b8
25 changed files with 2193 additions and 323 deletions

View File

@@ -2,6 +2,7 @@ package service
import (
"errors"
"fmt"
"strings"
"time"
@@ -17,13 +18,20 @@ var (
// PostService 帖子服务
type PostService struct {
db *gorm.DB
db *gorm.DB
setting *SettingService
}
func NewPostService(db *gorm.DB) *PostService {
return &PostService{db: db}
}
// WithSetting 注入站点设置(发帖冷静期可读配置);可链式调用
func (s *PostService) WithSetting(setting *SettingService) *PostService {
s.setting = setting
return s
}
// PostListQuery 帖子列表查询参数
type PostListQuery struct {
BoardID uint
@@ -925,14 +933,23 @@ func (s *PostService) EnsurePostVisible(postID, viewerID uint, loadActor func()
return nil
}
// checkNewUserCooldown 新用户发帖 24h 冷静期
// checkNewUserCooldown 新用户发帖冷静期(小时数取自站点设置,0=关闭)
func (s *PostService) checkNewUserCooldown(userID uint) error {
hours := DefaultCooldownHours
if s.setting != nil {
if h, err := s.setting.PostCooldownHours(); err == nil {
hours = h
}
}
if hours <= 0 {
return nil
}
var user model.User
if err := s.db.First(&user, userID).Error; err != nil {
return err
}
if time.Since(user.CreatedAt) < 24*time.Hour {
return errors.New("新用户注册 24 小时后才能发帖")
if time.Since(user.CreatedAt) < time.Duration(hours)*time.Hour {
return fmt.Errorf("新用户注册 %d 小时后才能发帖", hours)
}
return nil
}