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 }