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/course_url_update_readme.md

105 lines
3.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 课程URL更新命令使用说明
## 功能描述
这个Laravel命令 `UpdateCourseUrls` 用于从Excel文件读取课程信息并自动更新数据库中课程的URL字段。
## 主要功能
1. **Excel文件解析**: 读取Excel文件中的课程数据和跳转链接信息
2. **数据匹配**: 从`phome_ecms_news`表中根据跳转链接匹配title字段获取对应的titleurl
3. **智能匹配**: 支持精确匹配、模糊匹配和相似度匹配三种方式
4. **批量更新**: 将获取到的titleurl批量更新到`courses`表的url字段
## 命令使用方法
### 基本用法
```bash
php artisan update:course-urls
```
### 指定Excel文件
```bash
php artisan update:course-urls "your_excel_file.xlsx"
```
## Excel文件格式要求
Excel文件需要包含以下列
- **课程**: 包含课程名称的列
- **跳转链接**: 包含需要匹配的标题的列
文件可以包含多个工作表,命令会自动处理所有工作表。
## 匹配逻辑
### 1. 新闻标题匹配从phome_ecms_news表
- **精确匹配**: 直接匹配title字段
- **模糊匹配**: 使用LIKE进行部分匹配
- **相似度匹配**: 使用Levenshtein算法计算字符串相似度自动选择相似度最高的记录
### 2. 课程名称匹配更新courses表
- **精确匹配**: 直接匹配name字段
- **模糊匹配**: 使用LIKE进行部分匹配
- **相似度匹配**: 使用Levenshtein算法计算字符串相似度自动选择相似度最高的记录
## 特殊处理
1. **软删除过滤**: 只处理未被软删除的课程记录
2. **空值检查**: 自动跳过空的课程名称或跳转链接
3. **重复更新**: 如果课程已有URL会被新的URL覆盖
4. **详细日志**: 提供详细的处理日志,包括匹配方式和相似度信息
5. **失败统计**: 自动显示匹配失败的课程名称列表
## 相似度算法说明
相似度计算使用多种策略:
- **Levenshtein距离**: 计算字符编辑距离
- **包含检查**: 如果一个字符串包含另一个,会提高相似度
- **预处理**: 移除空格并转换为小写进行比较
## 示例输出
```
开始处理文件: 课程台账.xlsx
Excel文件包含 2 个工作表
正在处理工作表: Sheet1
工作表 Sheet1 有 10 行,最高列为 C
表头: 序号, 课程, 跳转链接
找到课程列: 2跳转链接列: 3
处理行 2: 课程='Python基础课程', 跳转链接='Python编程入门教程'
通过相似度匹配找到 (相似度: 85.7%): 'Python编程入门教程完整版' -> '/news/python-tutorial-2024'
✓ 成功更新课程 'Python基础课程' 的URL为: /news/python-tutorial-2024
工作表 Sheet1 中匹配失败的课程:
- 高级数据分析课程
- 机器学习实战
处理完成,总共更新了 6 条记录
```
## 注意事项
1. 确保Excel文件位于项目根目录或提供正确的文件路径
2. 确保数据库连接正常,特别是`phome_ecms_news`表的访问权限
3. 建议在执行前备份`courses`表的数据
4. 相似度匹配会自动选择最高相似度的记录,无需设置阈值
5. 命令会显示所有匹配失败的课程名称,便于后续手动处理
## 错误处理
命令包含完善的错误处理机制:
- 文件不存在检查
- 数据库连接错误处理
- Excel格式错误处理
- 详细的错误日志输出
## 数据库表结构要求
### phome_ecms_news表
- `title`: 新闻标题字段
- `titleurl`: 新闻URL字段
### courses表
- `name`: 课程名称字段
- `url`: 课程URL字段会被更新
- `deleted_at`: 软删除时间戳字段