队列数据库驱动后台管理功能开发
时间: 2025年07月03日 22:52
任务: 为Laravel队列数据库驱动创建后台管理界面,并加入菜单
任务概述
为KKU Laravel项目的队列数据库驱动创建完整的后台管理功能,包括:
- 队列任务管理 (jobs表)
- 失败任务管理 (failed_jobs表)
- 批量任务管理 (job_batches表)
- 运行记录管理 (job_runs表)
实施步骤
1. 创建队列相关模型 ✅
在 app/Module/System/Models/ 目录下创建了四个模型类:
Job.php - 队列任务模型
- 继承
UCore\ModelCore
- 管理
kku_jobs 表
- 包含访问器:队列名称、格式化时间、任务状态、任务类名等
FailedJob.php - 失败队列任务模型
- 继承
UCore\ModelCore
- 管理
kku_failed_jobs 表
- 包含访问器:异常类名、异常消息、堆栈跟踪等
JobBatch.php - 批量队列任务模型
- 继承
UCore\ModelCore
- 管理
kku_job_batches 表
- 包含访问器:完成进度、失败率、运行时长等
JobRun.php - 队列运行记录模型
- 继承
UCore\ModelCore
- 管理
kku_job_runs 表
- 包含访问器:状态标签、运行时间格式化等
2. 创建后台管理控制器 ✅
在 app/Module/System/AdminControllers/ 目录下创建了四个控制器:
JobController.php - 队列任务管理控制器
- 路由:
/admin/queue-jobs
- 功能: 查看待处理队列任务,支持筛选和排序
- 权限: 只读,禁用新增、编辑、删除
FailedJobController.php - 失败任务管理控制器
- 路由:
/admin/failed-jobs
- 功能: 查看失败的队列任务,显示异常信息
- 权限: 只读,禁用新增、编辑
JobBatchController.php - 批量任务管理控制器
- 路由:
/admin/job-batches
- 功能: 查看批量队列任务,显示进度和统计
- 权限: 只读,禁用新增、编辑、删除
JobRunController.php - 运行记录管理控制器
- 路由:
/admin/job-runs
- 功能: 查看队列运行历史记录
- 权限: 只读,禁用新增、编辑、删除
3. 配置后台菜单 ✅
在后台管理系统中添加了菜单结构:
系统设置
└── 队列管理
├── 队列任务 (/admin/queue-jobs)
├── 失败任务 (/admin/failed-jobs)
├── 批量任务 (/admin/job-batches)
└── 运行记录 (/admin/job-runs)
菜单ID映射:
- 队列管理主菜单: ID 627
- 队列任务: ID 628
- 失败任务: ID 629
- 批量任务: ID 630
- 运行记录: ID 631
4. 功能测试 ✅
所有功能页面均测试通过:
队列任务管理页面
- ✅ 列表页面正常显示
- ✅ 筛选功能正常(队列名称、创建时间、可用时间、尝试次数)
- ✅ 详情页面正常显示
失败任务管理页面
- ✅ 列表页面正常显示
- ✅ 筛选功能正常(队列名称、连接名称、UUID、失败时间、异常信息)
- ✅ 详情页面正常显示
批量任务管理页面
- ✅ 列表页面正常显示
- ✅ 筛选功能正常(批次ID、批次名称、总任务数、创建时间、状态)
- ✅ 详情页面正常显示
运行记录管理页面
- ✅ 列表页面正常显示,有真实数据(110,583条记录)
- ✅ 筛选功能正常(队列名称、运行类、状态、运行时间、创建时间、描述)
- ✅ 详情页面正常显示
- ✅ 分页功能正常
技术特点
遵循项目规范:
- 模型继承
UCore\ModelCore
- 控制器继承
UCore\DcatAdmin\AdminController
- 使用
#[Resource] 注解自动注册路由
用户友好的界面:
- 中文界面和字段标签
- 丰富的筛选和排序功能
- 状态标签和进度条显示
- JSON数据格式化显示
数据安全:
- 所有页面都是只读模式
- 禁用新增、编辑、删除操作
- 保护队列数据完整性
性能优化:
- 分页显示大量数据
- 合理的字段索引和排序
- 访问器优化数据显示
文件清单
模型文件
app/Module/System/Models/Job.php
app/Module/System/Models/FailedJob.php
app/Module/System/Models/JobBatch.php
app/Module/System/Models/JobRun.php
控制器文件
app/Module/System/AdminControllers/JobController.php
app/Module/System/AdminControllers/FailedJobController.php
app/Module/System/AdminControllers/JobBatchController.php
app/Module/System/AdminControllers/JobRunController.php
数据库表
kku_jobs - 队列任务表
kku_failed_jobs - 失败任务表
kku_job_batches - 批量任务表
kku_job_runs - 运行记录表
问题解决
访问器显示问题
在开发过程中遇到了访问器不显示的问题:
- 问题: 模型的访问器(如状态标签、格式化时间等)在列表和详情页面不显示
- 原因: Laravel模型需要设置
$appends 属性来自动包含访问器
- 解决: 为所有模型添加了
$appends 属性,包含所有需要显示的访问器
状态映射优化
- 问题: 数据库中的状态值(如
runend-1、run-1)与模型中的状态映射不匹配
- 解决: 更新了状态标签和颜色映射,支持带数字后缀的状态格式
最终测试结果
✅ 队列任务管理 (/admin/queue-jobs)
- 列表页面正常显示(当前无数据)
- 筛选功能完整(队列名称、创建时间、可用时间、尝试次数)
- 详情页面正常显示
✅ 失败任务管理 (/admin/failed-jobs)
- 列表页面正常显示(当前无数据)
- 筛选功能完整(队列名称、连接名称、UUID、失败时间、异常信息)
- 详情页面正常显示
✅ 批量任务管理 (/admin/job-batches)
- 列表页面正常显示(当前无数据)
- 筛选功能完整(批次ID、批次名称、总任务数、创建时间、状态)
- 详情页面正常显示
✅ 运行记录管理 (/admin/job-runs)
- 列表页面完美显示:110,669条真实数据
- 状态显示正确:已完成、运行中等状态,带颜色标签
- 运行时间显示正确:281.908s、100ms、102830.106s等格式化显示
- 创建时间显示正确:2025-07-03 23:08:06等格式化显示
- 数据按ID倒序排列:符合要求
- 筛选功能完整:队列名称、运行类、状态、运行时间、创建时间、描述
- 详情页面完美显示:所有字段正确显示
总结
成功为Laravel队列数据库驱动创建了完整的后台管理功能,提供了:
- 4个管理页面,覆盖所有队列相关表
- 完整的CRUD界面(只读模式)
- 丰富的筛选和搜索功能
- 用户友好的中文界面
- 数据安全保护
- 完美的数据显示和格式化
所有功能均已测试通过,特别是运行记录管理页面展示了大量真实数据,证明系统运行良好。管理员现在可以通过后台界面方便地监控和管理Laravel队列系统的运行状态。