Cleanup 模块提供以下几类接口:
/**
* 扫描系统中的所有数据表
*
* @param bool $forceRefresh 是否强制刷新
* @return array 扫描结果
*/
public static function scanTables(bool $forceRefresh = false): array
/**
* 创建清理计划
*
* @param array $planData 计划数据
* @return array 创建结果
*/
public static function createCleanupPlan(array $planData): array
输入参数:
[
'plan_name' => '自定义数据清理',
'plan_type' => 4, // 自定义清理
'target_selection' => [
'selection_type' => 'custom',
'tables' => [
'kku_farm_users',
'kku_item_users',
'kku_pet_users',
'kku_farm_logs'
]
],
'global_conditions' => [
'exclude_config_tables' => true,
'time_limit' => '30_days_ago'
],
'backup_config' => [
'backup_type' => 'sql',
'compression' => 'gzip'
],
'description' => '清理指定表的测试数据'
]
其他选择方式示例:
// 按模块选择
'target_selection' => [
'selection_type' => 'module',
'modules' => ['Farm', 'GameItems'],
'exclude_tables' => ['kku_farm_configs']
]
// 按分类选择
'target_selection' => [
'selection_type' => 'category',
'categories' => [1, 2], // 用户数据和日志数据
'exclude_tables' => ['kku_user_configs']
]
// 混合选择
'target_selection' => [
'selection_type' => 'mixed',
'modules' => ['Farm'],
'categories' => [2],
'tables' => ['kku_pet_users'],
'exclude_tables' => ['kku_farm_configs']
]
/**
* 为计划生成内容配置
*
* @param int $planId 计划ID
* @param bool $autoGenerate 是否自动生成
* @return array 生成结果
*/
public static function generatePlanContents(int $planId, bool $autoGenerate = true): array
返回数据结构:
[
'total_tables' => 188,
'scanned_tables' => 185,
'new_tables' => 3,
'tables' => [
[
'table_name' => 'kku_farm_users',
'module_name' => 'Farm',
'data_category' => 1, // 用户数据
'record_count' => 1250,
'table_size_mb' => 2.5,
'has_time_field' => true,
'time_fields' => ['created_at', 'updated_at'],
'has_user_field' => true,
'user_fields' => ['user_id']
]
]
]
/**
* 基于计划创建清理任务
*
* @param int $planId 计划ID
* @param array $taskOptions 任务选项
* @return array 创建结果
*/
public static function createCleanupTask(int $planId, array $taskOptions = []): array
输入参数:
[
'task_name' => '农场模块清理_20241216_001', // 可选,默认自动生成
'execute_immediately' => false,
'backup_before_cleanup' => true,
'override_conditions' => [], // 可选,覆盖计划的条件
]
/**
* 预览计划的清理结果
*
* @param int $planId 计划ID
* @return array 预览结果
*/
public static function previewPlanCleanup(int $planId): array
返回数据结构:
[
'total_tables' => 45,
'total_records' => 125000,
'estimated_size_mb' => 250.5,
'estimated_time_seconds' => 120,
'tables_preview' => [
[
'table_name' => 'kku_farm_users',
'current_records' => 1250,
'records_to_delete' => 1200,
'size_to_free_mb' => 2.4,
'cleanup_type' => 'DELETE',
'conditions' => 'WHERE created_at < "2024-01-01"'
]
]
]
/**
* 执行清理任务
*
* @param int $taskId 任务ID
* @param bool $dryRun 是否为预演模式
* @return array 执行结果
*/
public static function executeCleanupTask(int $taskId, bool $dryRun = false): array
/**
* 为计划创建数据备份
*
* @param int $planId 计划ID
* @param array $backupOptions 备份选项
* @return array 备份结果
*/
public static function createPlanBackup(int $planId, array $backupOptions = []): array
输入参数:
[
'backup_type' => 'sql', // sql, json, csv
'compression' => 'gzip', // gzip, zip, none
'include_structure' => true, // 是否包含表结构
'batch_size' => 1000 // 分批处理大小
]
返回数据结构:
[
'backup_id' => 123,
'backup_name' => 'cleanup_backup_20241216_143022',
'backup_path' => '/storage/app/cleanup/backups/2024/12/16/backup_143022_abc123.sql.gz',
'backup_size' => 2048576, // 字节
'tables_count' => 15,
'records_count' => 125000,
'status' => 'completed'
]
/**
* 恢复数据备份
*
* @param int $backupId 备份ID
* @param array $restoreOptions 恢复选项
* @return array 恢复结果
*/
public static function restoreBackup(int $backupId, array $restoreOptions = []): array
/**
* 获取清理计划列表
*
* @param array $filters 筛选条件
* @return array 计划列表
*/
public static function getCleanupPlans(array $filters = []): array
/**
* 获取计划详情包含内容
*
* @param int $planId 计划ID
* @return array 计划详情
*/
public static function getPlanWithContents(int $planId): array
/**
* 更新计划的内容配置
*
* @param int $planId 计划ID
* @param array $contents 内容配置
* @return bool 更新结果
*/
public static function updatePlanContents(int $planId, array $contents): bool
内容配置示例:
[
[
'table_name' => 'kku_farm_users',
'cleanup_type' => 3, // 按时间删除
'conditions' => [
'time_field' => 'created_at',
'before' => '90_days_ago'
],
'priority' => 100,
'backup_enabled' => true,
'notes' => '保留90天内的农场用户数据'
],
[
'table_name' => 'kku_item_users',
'cleanup_type' => 4, // 按用户删除
'conditions' => [
'user_field' => 'user_id',
'user_condition' => 'in',
'user_values' => [1001, 1002, 1003]
],
'priority' => 150,
'backup_enabled' => true,
'notes' => '清理指定测试用户的物品数据'
],
[
'table_name' => 'kku_cache',
'cleanup_type' => 1, // 清空表
'conditions' => null,
'priority' => 400,
'backup_enabled' => false,
'notes' => '缓存表直接清空'
]
]
/**
* 配置单个表的清理方式
*
* @param int $planId 计划ID
* @param string $tableName 表名
* @param array $config 表配置
* @return bool 配置结果
*/
public static function configureTable(int $planId, string $tableName, array $config): bool
/**
* 批量配置多个表的清理方式
*
* @param int $planId 计划ID
* @param array $configTemplate 配置模板
* @param array $tableNames 表名列表
* @return array 配置结果
*/
public static function batchConfigureTables(int $planId, array $configTemplate, array $tableNames): array
/**
* 获取表的清理配置
*
* @param string|null $tableName 表名,为空则获取所有
* @return array 配置列表
*/
public static function getCleanupConfigs(?string $tableName = null): array
/**
* 更新清理配置
*
* @param string $tableName 表名
* @param array $configData 配置数据
* @return bool 更新结果
*/
public static function updateCleanupConfig(string $tableName, array $configData): bool
/**
* 批量更新清理配置
*
* @param array $configs 配置数组
* @return array 更新结果
*/
public static function batchUpdateConfigs(array $configs): array
/**
* 获取备份列表
*
* @param array $filters 筛选条件
* @return array 备份列表
*/
public static function getBackupList(array $filters = []): array
/**
* 验证备份文件完整性
*
* @param int $backupId 备份ID
* @return bool 验证结果
*/
public static function verifyBackupIntegrity(int $backupId): bool
/**
* 清理过期备份文件
*
* @param int $retentionDays 保留天数
* @return int 清理的备份数量
*/
public static function cleanExpiredBackups(int $retentionDays = 30): int
/**
* GET /admin/cleanup/plans
* 显示清理计划列表
*/
public function index(Content $content): Content
/**
* GET /admin/cleanup/plans/create
* 显示计划创建表单
*/
public function create(Content $content): Content
/**
* GET /admin/cleanup/plans/{id}
* 显示计划详情和内容
*/
public function show($id, Content $content): Content
/**
* GET /admin/cleanup/plans/{id}/edit
* 显示计划编辑表单
*/
public function edit($id, Content $content): Content
/**
* GET /admin/cleanup/plans/{id}/contents
* 显示计划内容配置页面
*/
public function contents($id, Content $content): Content
/**
* PUT /admin/cleanup/plans/{id}/contents
* 更新计划内容配置
*/
public function updateContents($id, Request $request): JsonResponse
/**
* POST /admin/cleanup/plans/{id}/preview
* 预览计划的清理结果
*/
public function preview($id): JsonResponse
/**
* GET /admin/cleanup/plans/{id}/tables/{table}/config
* 获取表的配置
*/
public function getTableConfig($id, $table): JsonResponse
/**
* PUT /admin/cleanup/plans/{id}/tables/{table}/config
* 更新表的配置
*/
public function updateTableConfig($id, $table, Request $request): JsonResponse
/**
* POST /admin/cleanup/plans/{id}/tables/batch-config
* 批量配置表
*/
public function batchConfigTables($id, Request $request): JsonResponse
/**
* POST /admin/cleanup/plans/{id}/backup
* 为计划创建备份
*/
public function createBackup($id, Request $request): JsonResponse
/**
* GET /admin/cleanup/configs
* 显示清理配置列表
*/
public function index(Content $content): Content
/**
* GET /admin/cleanup/configs/{id}/edit
* 显示配置编辑表单
*/
public function edit($id, Content $content): Content
/**
* POST /admin/cleanup/configs/batch
* 批量更新配置
*/
public function batch(Request $request): JsonResponse
/**
* POST /admin/cleanup/configs/scan
* 扫描数据表并生成配置
*/
public function scanTables(Request $request): JsonResponse
/**
* GET /admin/cleanup/tasks
* 显示清理任务列表
*/
public function index(Content $content): Content
/**
* POST /admin/cleanup/plans/{planId}/tasks
* 基于计划创建清理任务
*/
public function createFromPlan($planId, Request $request): JsonResponse
/**
* GET /admin/cleanup/tasks/{id}
* 显示任务详情
*/
public function show($id, Content $content): Content
/**
* POST /admin/cleanup/tasks/{id}/execute
* 执行清理任务
*/
public function execute($id, Request $request): JsonResponse
/**
* GET /admin/cleanup/tasks/{id}/progress
* 获取任务执行进度
*/
public function progress($id): JsonResponse
/**
* POST /admin/cleanup/tasks/{id}/stop
* 停止任务执行
*/
public function stop($id): JsonResponse
/**
* GET /admin/cleanup/logs
* 显示清理日志列表
*/
public function index(Content $content): Content
/**
* GET /admin/cleanup/logs/{id}
* 显示日志详情
*/
public function show($id, Content $content): Content
/**
* GET /admin/cleanup/reports
* 显示统计报告
*/
public function reports(Content $content): Content
/**
* GET /admin/cleanup/backups
* 显示备份列表
*/
public function index(Content $content): Content
/**
* GET /admin/cleanup/backups/{id}
* 显示备份详情
*/
public function show($id, Content $content): Content
/**
* POST /admin/cleanup/backups
* 创建数据备份
*/
public function store(Request $request): JsonResponse
/**
* GET /admin/cleanup/backups/{id}/download
* 下载备份文件
*/
public function download($id): Response
/**
* POST /admin/cleanup/backups/{id}/restore
* 恢复备份数据
*/
public function restore($id, Request $request): JsonResponse
/**
* POST /admin/cleanup/backups/{id}/verify
* 验证备份完整性
*/
public function verify($id): JsonResponse
/**
* DELETE /admin/cleanup/backups/{id}
* 删除备份文件
*/
public function destroy($id): JsonResponse
# 扫描数据表
php artisan cleanup:scan-tables [--force]
# 创建清理计划
php artisan cleanup:create-plan [plan_name] [--type=] [--modules=] [--categories=] [--tables=]
# 查看计划详情
php artisan cleanup:show-plan [plan_id]
# 为计划生成内容
php artisan cleanup:generate-contents [plan_id] [--auto]
# 配置表的清理方式
php artisan cleanup:config-table [plan_id] [table_name] [--type=] [--conditions=] [--priority=] [--backup]
# 批量配置表
php artisan cleanup:batch-config [plan_id] [--template=] [--tables=]
# 基于计划创建任务
php artisan cleanup:create-task [plan_id] [--name=] [--execute]
# 执行清理任务
php artisan cleanup:execute [task_id] [--dry-run] [--force]
# 查看任务状态
php artisan cleanup:task-status [task_id]
# 为计划创建备份
php artisan cleanup:backup-plan [plan_id] [--type=sql] [--compression=gzip]
# 恢复数据备份
php artisan cleanup:restore-backup [backup_id] [--force]
# 验证备份完整性
php artisan cleanup:verify-backup [backup_id]
# 清理过期备份
php artisan cleanup:clean-backups [--days=30]
# 清理历史日志
php artisan cleanup:clean-logs [--days=30]
--force: 强制重新扫描所有表--type: 清理类型 (1:全量, 2:模块, 3:分类, 4:自定义)--modules: 目标模块列表 (逗号分隔)--categories: 目标分类列表 (逗号分隔)--tables: 目标表列表 (逗号分隔)--exclude-tables: 排除表列表 (逗号分隔)--exclude-modules: 排除模块列表 (逗号分隔)plan_id: 计划IDtable_name: 表名--type: 清理类型 (1:清空表, 2:删除所有, 3:按时间, 4:按用户, 5:按条件)--time-field: 时间字段名(type=3时使用)--before: 时间条件(type=3时使用)--user-field: 用户字段名(type=4时使用)--users: 用户ID列表(type=4时使用,逗号分隔)--conditions: JSON格式的自定义条件(type=5时使用)--priority: 优先级(数字)--backup: 启用备份--no-backup: 禁用备份plan_id: 计划ID--template: 配置模板JSON文件路径--tables: 表名列表(逗号分隔)--type: 批量设置的清理类型--backup: 批量启用备份plan_id: 计划ID--name: 任务名称(可选,默认自动生成)--execute: 创建后立即执行task_id: 任务ID--dry-run: 预演模式,不实际执行--force: 强制执行,跳过确认class CleanupPlanDto extends BaseDto
{
public int $id;
public string $planName;
public int $planType;
public ?array $targetSelection;
public ?array $globalConditions;
public ?array $backupConfig;
public bool $isTemplate;
public bool $isEnabled;
public ?string $description;
public ?int $createdBy;
public string $createdAt;
public string $updatedAt;
}
class CleanupPlanContentDto extends BaseDto
{
public int $id;
public int $planId;
public string $tableName;
public int $cleanupType;
public ?array $conditions;
public int $priority;
public int $batchSize;
public bool $isEnabled;
public bool $backupEnabled;
public ?string $notes;
public string $createdAt;
public string $updatedAt;
}
class CleanupTaskDto extends BaseDto
{
public int $id;
public string $taskName;
public int $planId;
public ?int $backupId;
public int $status;
public float $progress;
public ?string $currentStep;
public int $totalTables;
public int $processedTables;
public int $totalRecords;
public int $deletedRecords;
public int $backupSize;
public float $executionTime;
public float $backupTime;
public ?string $startedAt;
public ?string $backupCompletedAt;
public ?string $completedAt;
public ?string $errorMessage;
public ?int $createdBy;
public string $createdAt;
public string $updatedAt;
}
class CleanupConfigDto extends BaseDto
{
public int $id;
public string $tableName;
public string $moduleName;
public int $dataCategory;
public int $defaultCleanupType;
public ?array $defaultConditions;
public bool $isEnabled;
public int $priority;
public int $batchSize;
public ?string $description;
public ?string $lastCleanupAt;
public string $createdAt;
public string $updatedAt;
}
class CleanupLogDto extends BaseDto
{
public int $id;
public int $taskId;
public string $tableName;
public string $operationType;
public int $recordsBefore;
public int $recordsAfter;
public int $recordsAffected;
public float $executionTime;
public ?array $conditionsUsed;
public ?string $sqlStatement;
public int $status;
public ?string $errorMessage;
public string $createdAt;
}
class CleanupBackupDto extends BaseDto
{
public int $id;
public int $planId;
public ?int $taskId;
public string $backupName;
public int $backupType;
public int $compressionType;
public string $backupPath;
public int $backupSize;
public int $originalSize;
public int $tablesCount;
public int $recordsCount;
public int $backupStatus;
public ?string $backupHash;
public ?array $backupConfig;
public ?string $startedAt;
public ?string $completedAt;
public ?string $expiresAt;
public ?string $errorMessage;
public ?int $createdBy;
public string $createdAt;
public string $updatedAt;
}
class CleanupBackupFileDto extends BaseDto
{
public int $id;
public int $backupId;
public string $tableName;
public string $filePath;
public int $fileSize;
public int $recordsCount;
public ?string $fileHash;
public ?array $backupConditions;
public string $createdAt;
}
CLEANUP_CONFIG_NOT_FOUND (10001): 清理配置不存在CLEANUP_CONFIG_INVALID (10002): 清理配置无效CLEANUP_TABLE_NOT_EXISTS (10003): 数据表不存在CLEANUP_PLAN_NOT_FOUND (11001): 清理计划不存在CLEANUP_PLAN_NAME_EXISTS (11002): 计划名称已存在CLEANUP_PLAN_INVALID (11003): 计划配置无效CLEANUP_PLAN_CONTENT_EMPTY (11004): 计划内容为空CLEANUP_PLAN_DISABLED (11005): 计划已禁用CLEANUP_TASK_NOT_FOUND (20001): 清理任务不存在CLEANUP_TASK_RUNNING (20002): 任务正在执行中CLEANUP_TASK_FAILED (20003): 任务执行失败CLEANUP_TASK_PLAN_MISMATCH (20004): 任务与计划不匹配CLEANUP_PERMISSION_DENIED (30001): 没有清理权限CLEANUP_DANGEROUS_OPERATION (30002): 危险操作需要确认CLEANUP_EXECUTION_FAILED (40001): 清理执行失败CLEANUP_SQL_ERROR (40002): SQL执行错误CLEANUP_TIMEOUT (40003): 清理超时CLEANUP_BACKUP_REQUIRED (40004): 需要先创建备份BACKUP_CREATE_FAILED (50001): 备份创建失败BACKUP_NOT_FOUND (50002): 备份文件不存在BACKUP_CORRUPTED (50003): 备份文件损坏BACKUP_RESTORE_FAILED (50004): 备份恢复失败BACKUP_STORAGE_FULL (50005): 备份存储空间不足BACKUP_PERMISSION_DENIED (50006): 备份文件权限不足BACKUP_PLAN_MISMATCH (50007): 备份与计划不匹配