Files
likedream/docs/course_api.md
T
sugarBecomer 92363c8185 ✨ 学习通
2025-11-26 12:34:43 +08:00

8.0 KiB
Raw Blame History

刷课接口文档

接口列表

1. 获取刷课列表

接口地址: GET /course

请求参数:

参数名 类型 必填 说明
type string 否 类型,可选值:xxt(学习通)
username string 否 账号(模糊搜索)
status string 否 状态,可选值:not_start(未开始)、waiting(等待中)、doing(进行中)、done(已完成)、fail(失败)、pause(暂停)
page int 否 页码,默认 1
size int 否 每页数量,默认 10

返回示例:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "user_id": 1,
      "username": "学习通账号",
      "password": "",
      "type": "xxt",
      "course_name": "大学英语",
      "course_id": "123456",
      "need": "task",
      "status": "waiting",
      "task_count": 10,
      "success_count": 5,
      "exam_state": "not_start",
      "violence": "no",
      "desc": "备注信息",
      "create_time": "2024-01-01T00:00:00Z",
      "update_time": "2024-01-01T00:00:00Z"
    }
  ],
  "total": 100
}

字段说明:

  • type: 类型 - xxt(学习通)
  • need: 需要刷的内容 - task(任务点)、exam(考试)、all(全部)
  • status: 状态 - not_start(未开始)、waiting(等待中)、doing(进行中)、done(已完成)、fail(失败)、pause(暂停)
  • exam_state: 考试状态 - not_start(未开始)、waiting(等待中)、doing(进行中)、done(已完成)、fail(失败)
  • violence: 是否暴力刷课 - no(否)、yes(是)

2. 查询课程列表

接口地址: POST /course/query

说明: 通过学习通账号密码查询当前可选的课程列表,用于在添加刷课前选择课程。

请求参数:

参数名 类型 必填 说明
username string 是 学习通账号
password string 是 学习通密码

请求示例:

{
  "username": "学习通账号",
  "password": "学习通密码"
}

返回示例:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "cpi": 123456,
      "key": "234567",
      "courseId": "345678",
      "chatId": "456789",
      "courseTeacher": "张老师",
      "courseName": "大学英语",
      "courseImage": "https://example.com/image.jpg",
      "courseImageBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA...",
      "courseDataId": 567890,
      "ContentID": 678901,
      "isstart": true,
      "state": 0
    }
  ]
}

字段说明:

  • cpi: 用户唯一标识
  • key: 课程班级ID(classId)
  • courseId: 课程ID(添加刷课时需要使用)
  • chatId: 聊天ID
  • courseTeacher: 授课教师
  • courseName: 课程名称(添加刷课时需要使用)
  • courseImage: 课程封面图片URL
  • courseImageBase64: 课程封面图片Base64编码(包含Data URL前缀,可直接用于img标签的src属性)
  • courseDataId: 课程数据ID
  • ContentID: 内容ID
  • isstart: 是否已开课(true:已开课,false:未开课)
  • state: 课程状态(0:正常,1:已结束)

注意事项:

  • courseImageBase64 字段已经包含了 Data URL 前缀(如 data:image/jpeg;base64,),可以直接设置到 <img> 标签的 src 属性
  • 如果图片下载失败,courseImageBase64 字段将为空字符串,此时可以使用 courseImage URL 作为备用

错误示例:

{
  "code": 400,
  "message": "登录失败,请检查账号密码",
  "data": null
}

3. 添加刷课

接口地址: POST /course

请求参数:

参数名 类型 必填 说明
username string 是 学习通账号
password string 是 学习通密码
type string 是 类型,目前只支持 xxt(学习通)
course_name string 是 课程名称
course_id string 是 课程ID
need string 是 需要刷的内容,可选值:task(任务点)、exam(考试)、all(全部)
violence string 否 是否暴力刷课,可选值:no(否,默认)、yes(是)
desc string 否 备注信息

请求示例:

{
  "username": "学习通账号",
  "password": "学习通密码",
  "type": "xxt",
  "course_name": "大学英语",
  "course_id": "123456",
  "need": "task",
  "violence": "no",
  "desc": "备注信息"
}

返回示例:

{
  "code": 200,
  "message": "添加成功",
  "data": null
}

错误示例:

{
  "code": 400,
  "message": "该课程已存在刷课任务",
  "data": null
}

4. 修改刷课密码

接口地址: PUT /course/password/{id}

路径参数:

参数名 类型 必填 说明
id int64 是 刷课任务ID

请求参数:

参数名 类型 必填 说明
password string 是 新密码

请求示例:

{
  "password": "新密码"
}

返回示例:

{
  "code": 200,
  "message": "密码修改成功",
  "data": null
}

错误示例:

{
  "code": 400,
  "message": "课程不存在或无权限操作",
  "data": null
}

5. 重刷课程

接口地址: POST /course/restart/{id}

路径参数:

参数名 类型 必填 说明
id int64 是 刷课任务ID

说明: 只有状态为 done(已完成)的课程才能重刷,重刷后会重置课程状态、任务数量、成功数量和考试状态。

返回示例:

{
  "code": 200,
  "message": "重刷成功",
  "data": null
}

错误示例:

{
  "code": 400,
  "message": "只有已完成的课程才能重刷",
  "data": null
}

6. 暂停/恢复刷课

接口地址: POST /course/pause/{id}

路径参数:

参数名 类型 必填 说明
id int64 是 刷课任务ID

说明: 该接口会在暂停和恢复之间切换:

  • 如果当前状态是 pause(暂停),则恢复为 waiting(等待中)
  • 如果当前状态不是暂停,则设置为 pause(暂停)

返回示例(暂停):

{
  "code": 200,
  "message": "已暂停刷课",
  "data": null
}

返回示例(恢复):

{
  "code": 200,
  "message": "已恢复刷课",
  "data": null
}

7. 删除刷课

接口地址: DELETE /course/{id}

路径参数:

参数名 类型 必填 说明
id int64 是 刷课任务ID

返回示例:

{
  "code": 200,
  "message": "删除成功",
  "data": null
}

错误示例:

{
  "code": 400,
  "message": "课程不存在或无权限操作",
  "data": null
}

枚举值说明

类型 (type)

值 说明
xxt 学习通

需要刷的内容 (need)

值 说明
task 任务点
exam 考试
all 全部

状态 (status)

值 说明
not_start 未开始
waiting 等待中
doing 进行中
done 已完成
fail 失败
pause 暂停

考试状态 (exam_state)

值 说明
not_start 未开始
waiting 等待中
doing 进行中
done 已完成
fail 失败

是否暴力刷课 (violence)

值 说明
no 否
yes 是

通用说明

认证

所有接口都需要用户认证,需要在请求头中携带认证信息(具体认证方式根据项目配置)。

权限

用户只能操作自己创建的刷课任务,无法访问或修改其他用户的数据。

错误码

错误码 说明
200 成功
400 业务错误(如参数错误、权限不足等)
401 未认证
500 服务器错误