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.
wx.sstbc.com/link_courses_to_calendar_re...

4.2 KiB

课程关联日历命令使用说明

功能描述

这个Laravel命令 LinkCoursesToCalendar 用于将指定的课程列表自动关联到calendars日历表中。

主要功能

  1. 批量课程关联: 一次性处理69个指定的课程
  2. 智能匹配: 支持精确匹配、模糊匹配和相似度匹配三种策略
  3. 重复检查: 自动检查并跳过已存在日历记录的课程
  4. 事务保护: 使用数据库事务确保数据一致性
  5. 详细统计: 提供完整的处理结果统计

命令使用方法

基本用法

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

安全特性

  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: 链接