Cleanup 模块是一个专门用于数据清理的系统模块,提供灵活的数据清理配置和执行功能。该模块主要用于测试环境的数据清理,支持清除所有模块的运行数据,同时保留配置数据。
app/Module/Cleanup/
├── AdminControllers/ # 后台管理控制器
│ ├── CleanupConfigController.php # 清理配置管理
│ ├── CleanupTaskController.php # 清理任务管理
│ ├── CleanupLogController.php # 清理日志管理
│ └── Helper/ # 辅助类
├── Commands/ # 命令行工具
│ ├── CleanupDataCommand.php # 数据清理命令
│ └── ScanTablesCommand.php # 扫描数据表命令
├── Databases/ # 数据库相关文件
│ └── GenerateSql/ # SQL生成文件
├── Docs/ # 文档目录
├── Enums/ # 枚举定义
│ ├── CLEANUP_TYPE.php # 清理类型枚举
│ ├── DATA_CATEGORY.php # 数据分类枚举
│ └── TASK_STATUS.php # 任务状态枚举
├── Events/ # 事件类
├── Listeners/ # 事件监听器
├── Logics/ # 业务逻辑类
│ ├── CleanupConfigLogic.php # 清理配置逻辑
│ ├── CleanupExecutorLogic.php # 清理执行逻辑
│ └── TableScannerLogic.php # 表扫描逻辑
├── Models/ # 数据模型
│ ├── CleanupConfig.php # 清理配置模型
│ ├── CleanupTask.php # 清理任务模型
│ └── CleanupLog.php # 清理日志模型
├── Providers/ # 服务提供者
│ └── CleanupServiceProvider.php # 模块服务提供者
├── Repositories/ # 数据仓库
├── Services/ # 服务类
│ ├── CleanupService.php # 清理服务
│ └── ConfigService.php # 配置服务
├── Validations/ # 验证规则
└── Validators/ # 验证器
CREATE TABLE `kku_cleanup_configs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`table_name` varchar(100) NOT NULL COMMENT '表名',
`module_name` varchar(50) NOT NULL COMMENT '模块名称',
`data_category` tinyint(3) unsigned NOT NULL COMMENT '数据分类',
`cleanup_type` tinyint(3) unsigned NOT NULL COMMENT '清理类型',
`conditions` json DEFAULT NULL COMMENT '清理条件',
`is_enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`priority` int(10) unsigned NOT NULL DEFAULT '100' COMMENT '清理优先级',
`description` text COMMENT '描述',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_table_name` (`table_name`),
KEY `idx_module_category` (`module_name`, `data_category`),
KEY `idx_enabled_priority` (`is_enabled`, `priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清理配置表';
CREATE TABLE `kku_cleanup_tasks` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`task_name` varchar(100) NOT NULL COMMENT '任务名称',
`cleanup_type` tinyint(3) unsigned NOT NULL COMMENT '清理类型',
`target_modules` json DEFAULT NULL COMMENT '目标模块',
`target_categories` json DEFAULT NULL COMMENT '目标数据分类',
`conditions` json DEFAULT NULL COMMENT '清理条件',
`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '任务状态',
`progress` decimal(5,2) NOT NULL DEFAULT '0.00' COMMENT '执行进度',
`total_tables` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '总表数',
`processed_tables` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '已处理表数',
`total_records` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '总记录数',
`deleted_records` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '已删除记录数',
`started_at` timestamp NULL DEFAULT NULL COMMENT '开始时间',
`completed_at` timestamp NULL DEFAULT NULL COMMENT '完成时间',
`error_message` text COMMENT '错误信息',
`created_by` bigint(20) unsigned DEFAULT NULL COMMENT '创建者',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_created_by` (`created_by`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清理任务表';
CREATE TABLE `kku_cleanup_logs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`task_id` bigint(20) unsigned NOT NULL COMMENT '任务ID',
`table_name` varchar(100) NOT NULL COMMENT '表名',
`operation_type` varchar(20) NOT NULL COMMENT '操作类型',
`records_count` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '记录数量',
`execution_time` decimal(8,3) NOT NULL DEFAULT '0.000' COMMENT '执行时间(秒)',
`conditions_used` json DEFAULT NULL COMMENT '使用的条件',
`status` tinyint(3) unsigned NOT NULL COMMENT '执行状态',
`error_message` text COMMENT '错误信息',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_task_id` (`task_id`),
KEY `idx_table_name` (`table_name`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='清理日志表';