Some checks failed
CI / Lint + Build (push) Has been cancelled
新增功能:
- 主题发现模块:扫描 templates/ 目录下含 theme.json 的目录
- 站点设置新增 site.theme 键,DB 持久化 + 内存缓存
- 运行时切换主题:保存后即时重载 Gin 模板 + 静态资源哈希
- 管理后台 '外观主题' 页面:列表展示、选择、一键切换
- 动态静态资源服务:根据当前主题目录提供 CSS/JS
修复:
- account.html 残留孤儿 {{end}} 模板语法错误
- 动态静态资源 handler 误判 Gin *filepath 路径前缀为绝对路径
变更文件(12 modified + 3 new):
- cmd/server/main.go: 动态主题加载 + 运行时重载 + 动态静态服务
- internal/theme/discovery.go: 新增主题扫描
- internal/config/site_settings.go: ThemeName()
- internal/service/site_setting_service.go: ThemeReloader + UpdateTheme
- internal/controller/admin/: ISP 扩展 + GetThemes/UpdateTheme/ThemePage
- internal/controller/auth_controller.go: 准则路径动态化
- internal/router/: InjectThemeReloader + 新路由
- templates/: 外观主题页面 + JS + CSS + 子导航
66 lines
2.7 KiB
Go
66 lines
2.7 KiB
Go
package admin
|
||
|
||
import (
|
||
"metazone.cc/mce/internal/model"
|
||
"metazone.cc/mce/internal/service"
|
||
"metazone.cc/mce/internal/session"
|
||
)
|
||
|
||
// adminUseCase AdminController 对 AdminService 的最小依赖(ISP:6 个方法)
|
||
type adminUseCase interface {
|
||
ListUsers(params service.ListUsersParams) (*service.ListUsersResult, error)
|
||
UpdateUserStatus(operatorUID, targetUID uint, newStatus string) error
|
||
ResetUserToken(operatorUID, targetUID uint) error
|
||
CountUsers() (int64, error)
|
||
GetPostStats() (*service.PostStats, error)
|
||
GetStoreMetrics() session.StoreMetrics
|
||
}
|
||
|
||
// auditUseCase AuditController 对 AuditService 的最小依赖(ISP:3 个方法)
|
||
type auditUseCase interface {
|
||
List(auditType, status string, page, pageSize int) (*service.AuditListResult, error)
|
||
Approve(reviewerID uint, submissionID uint) error
|
||
Reject(reviewerID uint, submissionID uint, reason string) error
|
||
}
|
||
|
||
// siteSettingUseCase SiteSettingController 对 SiteSettingService 的最小依赖(ISP:5 个方法)
|
||
type siteSettingUseCase interface {
|
||
GetSettings() map[string]string
|
||
UpdateSetting(key, value string) error
|
||
UpdateBoolSetting(key string, value bool) error
|
||
GetAuditSettings(defaults *service.AuditDefaults) *service.AuditSettings
|
||
UpdateTheme(themeName string, reload service.ThemeReloader) error
|
||
}
|
||
|
||
// auditStatusProvider 审核控制器所需的用户信息查询(ISP)
|
||
type auditStatusProvider interface {
|
||
FindByID(id uint) (*model.User, error)
|
||
}
|
||
|
||
// adminPostUseCase AdminPostController 对 PostService 的最小依赖(ISP:9 个方法)
|
||
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, reason string) error
|
||
Unlock(postID uint) error
|
||
Pin(postID uint, pinType string) error
|
||
Unpin(postID uint) error
|
||
Restore(postID uint) error
|
||
}
|
||
|
||
// adminCommentUseCase AdminCommentController 对 CommentService 的最小依赖(ISP:2 个方法)
|
||
type adminCommentUseCase interface {
|
||
ListAllComments(keyword string, showDeleted bool, page, pageSize int) ([]model.AdminCommentRow, int64, error)
|
||
Delete(commentID uint, requesterID uint, isAdmin bool) error
|
||
}
|
||
|
||
// adminEnergyUseCase AdminEnergyController 对 EnergyService 的最小依赖(ISP:4 个方法)
|
||
type adminEnergyUseCase interface {
|
||
AdminAdjust(operatorUID uint, userIDs []uint, amount int, description string, mode string) error
|
||
GetAdminEnergyLogs(energyType string, page, pageSize int) ([]model.EnergyLog, int64, error)
|
||
GetFundBalance() (int, error)
|
||
GetFundLogs(logType string, page, pageSize int) ([]model.FundLog, int64, error)
|
||
}
|