# 课程关联日历命令使用说明 ## 功能描述 这个Laravel命令 `LinkCoursesToCalendar` 用于将指定的课程列表自动关联到`calendars`日历表中。 ## 主要功能 1. **批量课程关联**: 一次性处理69个指定的课程 2. **智能匹配**: 支持精确匹配、模糊匹配和相似度匹配三种策略 3. **重复检查**: 自动检查并跳过已存在日历记录的课程 4. **事务保护**: 使用数据库事务确保数据一致性 5. **详细统计**: 提供完整的处理结果统计 ## 命令使用方法 ### 基本用法 ```bash php artisan link:courses-to-calendar ``` ## 课程列表 命令会处理以下69个课程: ### 高研班系列 - 高研班|第四期高级科创人才研修班-第七模块 - 高研班|第五期高级科创人才研修班-第五模块 - 高研班|第六期高级科创人才研修班-第三模块 - 高研班|第五期高级科创人才研修班-毕业模块 - 高研班|第四期高级科创人才研修班-第八模块 - ... (共29个高研班课程) ### 第二课堂系列 - 第二课堂|走进珂玛科技 - 第二课堂|走进世华科技 - 第二课堂|走进姑苏区 - 第二课堂|走进科沃斯 - ... (共17个第二课堂课程) ### 其他培训类 - 人才培训、初创班、攀峰班、产业加速营、专题培训等 (共23个课程) ## 匹配策略 ### 1. 精确匹配 直接匹配courses表中的name字段 ### 2. 模糊匹配 使用LIKE查询进行部分匹配 ### 3. 相似度匹配 - 使用Levenshtein算法计算字符串相似度 - 最低相似度阈值:30% - 自动选择相似度最高的课程 ## 日历记录创建 为每个匹配的课程创建以下日历记录: ```php [ '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 ``` ## 安全特性 1. **数据库事务**: 所有操作在事务中执行,出错时自动回滚 2. **重复检查**: 防止创建重复的日历记录 3. **软删除过滤**: 只处理未被软删除的课程 4. **错误处理**: 完善的异常处理机制 ## 注意事项 1. **备份数据**: 建议执行前备份`calendars`表数据 2. **权限检查**: 确保数据库连接正常,有足够的读写权限 3. **课程匹配**: 相似度匹配可能不是100%准确,建议执行后检查结果 4. **重复执行**: 命令可以安全地重复执行,已存在的记录会被跳过 ## 错误处理 命令包含完善的错误处理机制: - 数据库连接错误处理 - 事务回滚保护 - 详细的错误日志输出 - 匹配失败统计 ## 数据库表要求 ### courses表 - `id`: 主键 - `name`: 课程名称 - `start_date`: 开始日期 - `end_date`: 结束日期 - `content`: 课程内容 - `url`: 课程链接 - `deleted_at`: 软删除时间戳 ### calendars表 - `type`: 类型(1=课程,2=课堂,3=事件) - `course_id`: 关联的课程ID - `date`: 日期 - `title`: 标题 - `content`: 内容 - `start_time`: 开始时间 - `end_time`: 结束时间 - `url`: 链接