You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.2 KiB
4.2 KiB
课程关联日历命令使用说明
功能描述
这个Laravel命令 LinkCoursesToCalendar 用于将指定的课程列表自动关联到calendars日历表中。
主要功能
- 批量课程关联: 一次性处理69个指定的课程
- 智能匹配: 支持精确匹配、模糊匹配和相似度匹配三种策略
- 重复检查: 自动检查并跳过已存在日历记录的课程
- 事务保护: 使用数据库事务确保数据一致性
- 详细统计: 提供完整的处理结果统计
命令使用方法
基本用法
php artisan link:courses-to-calendar
课程列表
命令会处理以下69个课程:
高研班系列
- 高研班|第四期高级科创人才研修班-第七模块
- 高研班|第五期高级科创人才研修班-第五模块
- 高研班|第六期高级科创人才研修班-第三模块
- 高研班|第五期高级科创人才研修班-毕业模块
- 高研班|第四期高级科创人才研修班-第八模块
- ... (共29个高研班课程)
第二课堂系列
- 第二课堂|走进珂玛科技
- 第二课堂|走进世华科技
- 第二课堂|走进姑苏区
- 第二课堂|走进科沃斯
- ... (共17个第二课堂课程)
其他培训类
- 人才培训、初创班、攀峰班、产业加速营、专题培训等 (共23个课程)
匹配策略
1. 精确匹配
直接匹配courses表中的name字段
2. 模糊匹配
使用LIKE查询进行部分匹配
3. 相似度匹配
- 使用Levenshtein算法计算字符串相似度
- 最低相似度阈值:30%
- 自动选择相似度最高的课程
日历记录创建
为每个匹配的课程创建以下日历记录:
[
'type' => 1, // 类型1为课程
'course_id' => $course->id, // 关联的课程ID
'date' => $course->start_date, // 课程开始日期
'title' => $course->name, // 课程标题
'content' => $course->content, // 课程内容
'start_time' => '09:00:00', // 默认开始时间
'end_time' => '17:00:00', // 默认结束时间
'url' => $course->url, // 课程链接
]
输出示例
开始将课程关联到calendars日历表...
总共需要处理 69 个课程
正在处理课程: 第三期:张平院士— 6G通信与AI融合
✓ 找到匹配课程: 第三期:张平院士— 6G通信与AI融合 (ID: 123)
✓ 成功创建日历记录 (ID: 456) 关联课程: 第三期:张平院士— 6G通信与AI融合
正在处理课程: 高研班|第四期高级科创人才研修班-第七模块
通过模糊匹配找到课程: '第四期高级科创人才研修班-第七模块'
✓ 成功创建日历记录 (ID: 457) 关联课程: 第四期高级科创人才研修班-第七模块
============================================================
处理完成!
成功关联课程数量: 65
已存在日历记录: 2
未找到匹配课程: 2
未找到匹配的课程列表:
- 某个未找到的课程1
- 某个未找到的课程2
已存在日历记录的课程列表:
- 某个已存在的课程1
- 某个已存在的课程2
安全特性
- 数据库事务: 所有操作在事务中执行,出错时自动回滚
- 重复检查: 防止创建重复的日历记录
- 软删除过滤: 只处理未被软删除的课程
- 错误处理: 完善的异常处理机制
注意事项
- 备份数据: 建议执行前备份
calendars表数据 - 权限检查: 确保数据库连接正常,有足够的读写权限
- 课程匹配: 相似度匹配可能不是100%准确,建议执行后检查结果
- 重复执行: 命令可以安全地重复执行,已存在的记录会被跳过
错误处理
命令包含完善的错误处理机制:
- 数据库连接错误处理
- 事务回滚保护
- 详细的错误日志输出
- 匹配失败统计
数据库表要求
courses表
id: 主键name: 课程名称start_date: 开始日期end_date: 结束日期content: 课程内容url: 课程链接deleted_at: 软删除时间戳
calendars表
type: 类型(1=课程,2=课堂,3=事件)course_id: 关联的课程IDdate: 日期title: 标题content: 内容start_time: 开始时间end_time: 结束时间url: 链接