Files
tyapi-server/internal/domains/admin/repositories/admin_repository_interface.go
2025-07-13 16:36:20 +08:00

80 lines
2.9 KiB
Go

package repositories
import (
"context"
"tyapi-server/internal/domains/admin/entities"
"tyapi-server/internal/domains/admin/repositories/queries"
"tyapi-server/internal/shared/interfaces"
)
// AdminStats 管理员统计
type AdminStats struct {
TotalAdmins int64
ActiveAdmins int64
TodayLogins int64
TotalOperations int64
}
// AdminRepository 管理员仓储接口
type AdminRepository interface {
interfaces.Repository[entities.Admin]
// 管理员认证
FindByUsername(ctx context.Context, username string) (*entities.Admin, error)
FindByEmail(ctx context.Context, email string) (*entities.Admin, error)
// 管理员管理
ListAdmins(ctx context.Context, query *queries.ListAdminsQuery) ([]*entities.Admin, int64, error)
GetStats(ctx context.Context, query *queries.GetAdminInfoQuery) (*AdminStats, error)
// 权限管理
GetPermissionsByRole(ctx context.Context, role entities.AdminRole) ([]entities.AdminPermission, error)
UpdatePermissions(ctx context.Context, adminID string, permissions []string) error
// 统计信息
UpdateLoginStats(ctx context.Context, adminID string) error
UpdateReviewStats(ctx context.Context, adminID string, approved bool) error
}
// AdminLoginLogRepository 管理员登录日志仓储接口
type AdminLoginLogRepository interface {
interfaces.Repository[entities.AdminLoginLog]
// 日志查询
ListLogs(ctx context.Context, query *queries.ListAdminLoginLogQuery) ([]*entities.AdminLoginLog, int64, error)
// 统计查询
GetTodayLoginCount(ctx context.Context) (int64, error)
GetLoginCountByAdmin(ctx context.Context, adminID string, days int) (int64, error)
}
// AdminOperationLogRepository 管理员操作日志仓储接口
type AdminOperationLogRepository interface {
interfaces.Repository[entities.AdminOperationLog]
// 日志查询
ListLogs(ctx context.Context, query *queries.ListAdminOperationLogQuery) ([]*entities.AdminOperationLog, int64, error)
// 统计查询
GetTotalOperations(ctx context.Context) (int64, error)
GetOperationsByAdmin(ctx context.Context, adminID string, days int) (int64, error)
// 批量操作
BatchCreate(ctx context.Context, logs []entities.AdminOperationLog) error
}
// AdminPermissionRepository 管理员权限仓储接口
type AdminPermissionRepository interface {
interfaces.Repository[entities.AdminPermission]
// 权限查询
FindByCode(ctx context.Context, code string) (*entities.AdminPermission, error)
FindByModule(ctx context.Context, module string) ([]entities.AdminPermission, error)
ListActive(ctx context.Context) ([]entities.AdminPermission, error)
// 角色权限管理
GetPermissionsByRole(ctx context.Context, role entities.AdminRole) ([]entities.AdminPermission, error)
AssignPermissionsToRole(ctx context.Context, role entities.AdminRole, permissionIDs []string) error
RemovePermissionsFromRole(ctx context.Context, role entities.AdminRole, permissionIDs []string) error
}