侠客网校 Web 系统 — 基础地址: http://127.0.0.1:3000
POST /api/upload
上传文件到七牛云,并写入 oa_new.mdl_sum_attachment 附件表。
请求方式: multipart/form-data
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要上传的文件 |
cURL 示例:
curl -X POST http://127.0.0.1:3000/api/upload \ -F "file=@/path/to/image.jpg"
响应成功:
{
"success": true,
"url": "https://qiniu.htknow.com/115788_xxx.jpg",
"id": 12345,
"error": null
}
响应失败:
{
"success": false,
"url": null,
"id": null,
"error": "上传失败,无法获取远程URL"
}
POST /api/upload_to_table
上传文件到七牛云 + 写附件表 + 根据文件名自动更新业务表的 picture 字段。
文件名规则: {表名}-{id}.{后缀}
| 文件名示例 | 解析结果 | 执行操作 |
|---|---|---|
edu_video_course-16.png | 表: edu_video_course, id: 16 | UPDATE edu_video_course SET picture='新URL' WHERE id=16 |
edu_video_course-88.jpg | 表: edu_video_course, id: 88 | UPDATE edu_video_course SET picture='新URL' WHERE id=88 |
random_photo.jpg | 不匹配规则 | 仅上传,不更新业务表 |
安全校验:
SHOW TABLES 校验表名存在SHOW COLUMNS 校验 picture 字段存在UPDATE ... SET picture = ... WHERE id = ...,不动其他字段cURL 示例:
curl -X POST http://127.0.0.1:3000/api/upload_to_table \ -F "file=@/path/to/edu_video_course-16.png"
响应成功 (匹配规则):
{
"success": true,
"url": "https://qiniu.htknow.com/115788_xxx.png",
"id": 12345,
"table_updated": true,
"msg": "已更新 edu_video_course 表 id=16 的 picture 字段"
}
响应成功 (不匹配规则):
{
"success": true,
"url": "https://qiniu.htknow.com/115788_xxx.jpg",
"id": 12346,
"table_updated": false,
"msg": "文件名不符合tablename-id.ext格式,未更新业务表"
}
picture 字段,不影响其他字段。数据库: zhixue_bt。POST /api/upload_url
输入网络图片/文件地址,下载后上传到七牛云。
请求体 (JSON):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 网络文件地址 |
cURL 示例:
curl -X POST http://127.0.0.1:3000/api/upload_url \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/image.png"}'
响应: 同文件上传接口。
GET /api/upload/history
获取上传历史记录(分页)。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| page | int | 1 | 页码 |
| page_size | int | 20 | 每页条数 |
| keyword | string | 无 | 按文件名搜索 |
cURL 示例:
curl "http://127.0.0.1:3000/api/upload/history?page=1&page_size=10&keyword=edu"
响应:
{
"total": 100,
"list": [
{
"id": 1,
"name": "edu_video_course-16.png",
"url": "https://qiniu.htknow.com/...",
"size": 123456,
"create_time_str": "2026-07-23 16:02:30"
}
]
}
GET /api/course_list/json
获取所有课程列表。
POST /api/course_list/update
更新单个课程的课时数。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 课程ID |
| count | int | 新的课时数 |
POST /api/course_list/batch_update
批量更新课程课时数。
{
"updates": [
{"id": "1", "count": 10},
{"id": "2", "count": 20}
]
}
POST /api/course_list/create
创建新课程。
{
"name": "课程名称",
"srcid": "源课程ID",
"id": "目标ID",
"count": 0
}
POST /api/course_list/delete
删除课程。
{"id": "课程ID"}
GET /api/course/<course_id>/sections
获取指定课程的课时列表。
POST /api/section/status
更新课时状态。
{"id": 课时ID, "status": 新状态}
GET /api/pan_26_xiake/tasks
获取网盘任务列表。
POST /api/pan_26_xiake/run
执行网盘同步任务(异步)。
{
"task_ids": ["task1", "task2"] // 可选,不传则执行全部
}
返回 {"task_id": "xxx"},用 task_id 查询状态。
GET /api/pan_26_xiake/status/<task_id>
查询任务执行状态。
GET /api/pan_26_xiake/logs/<task_id>
获取任务实时日志 (text/plain)。
POST /api/copy_free_course/run
将源课程复制到目标课程(异步)。
{
"course_ids": ["课程ID1", "课程ID2"] // 可选
}
GET /api/copy_free_course/status/<task_id>
查询复制任务状态。
POST /api/wxwork_tag/sync
同步企业微信标签到数据库(异步)。
GET /api/wxwork_tag/status/<task_id>
查询同步任务状态。
| URL | 说明 |
|---|---|
| / | 首页 — 功能导航 |
| /upload.html | 图床上传页面 |
| /course_list.html | 课程列表管理 |
| /pan_26_xiake.html | 侠客网盘任务 |
| /copy_free_course.html | 复制免费课程 |
| /api_docs.html | 本页面 — 接口文档 |