- Delete 权限:新增 requesterID/isAdmin 参数,Service 层鉴权(仅本人/管理员可删)
- 通知内容:改用 GetUsernameByID 显示真实用户名,非数字 UID
- SearchUsers:Repository 返回 exp,Service 调用 GetLevelByExp 计算等级
- 通知高亮:Notification 新增 CommentID 字段,消息链接支持 #comment-{id}
- 已删除提示:前端 hash 检测 + 3 秒超时 Toast "该评论已不存在"
- Admin CSS:移除不存在的 comments.css 引用
- 错误哨兵:改用 common.ErrCommentNotFound/ErrCommentEmpty/PermissionDenied
55 lines
2.1 KiB
Go
55 lines
2.1 KiB
Go
package admin
|
||
|
||
import (
|
||
"metazone.cc/metalab/internal/model"
|
||
"metazone.cc/metalab/internal/service"
|
||
"metazone.cc/metalab/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:4 个方法)
|
||
type siteSettingUseCase interface {
|
||
GetSettings() map[string]string
|
||
UpdateSetting(key, value string) error
|
||
UpdateBoolSetting(key string, value bool) error
|
||
GetAuditSettings(defaults *service.AuditDefaults) *service.AuditSettings
|
||
}
|
||
|
||
// auditStatusProvider 审核控制器所需的用户信息查询(ISP)
|
||
type auditStatusProvider interface {
|
||
FindByID(id uint) (*model.User, error)
|
||
}
|
||
|
||
// 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, reason string) error
|
||
Unlock(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
|
||
}
|