Appearance
普通课程任务预览
GET /api/manage/course/{courseId}/task/{taskId}/preview权限 ADMIN_COURSE_MANAGE
预览课程任务,返回任务信息、活动信息、课程信息及上下任务导航。
路径参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| courseId | number | 是 | 课程 ID |
| taskId | number | 是 | 任务 ID |
权限说明
以下条件满足其一即可预览:
- 用户是该课程的讲师(CourseMember.role 包含 "teacher")
- 用户在课程的管理范围内(ResourceAccessScopeService)
响应
| 字段 | 类型 | 说明 |
|---|---|---|
| task | object | 任务信息 |
| activity | object | 活动信息 |
| prevTask | object/null | 上一任务(可为 null) |
| nextTask | object/null | 下一任务(可为 null) |
| course | object | 课程信息 |
task 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 任务 ID |
| courseId | number | 课程 ID |
| courseSetId | number | 课程集 ID |
| title | string | 任务标题 |
| seq | number | 任务序号 |
| status | string | 任务状态:PUBLISHED / UNPUBLISHED / CREATE |
| type | string | 任务类型:video / audio / doc / ppt / download / exam / ... |
| length | number | 任务时长 |
| rewardPoint | number/null | 完成任务奖励积分 |
| isOptional | boolean | 是否选修 |
| isLocked | boolean | 是否被锁定(LOCK_MODE 下必修任务未完成) |
| finishCondition | object | 完成条件 |
finishCondition 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| finishType | string | 完成类型:time(学习时长)/download(下载)/end(学习到最后一页)/join_discuss(参与讨论) |
| finishDetail | number/null | 完成详情:time类型为需要学习的时长(分钟),end/download/join_discuss类型为null |
activity 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 活动 ID |
| type | string | 活动类型 |
| media | object | 媒体信息(视频/音频/文档等) |
| content | object | 正文内容(考试/作业等) |
media 字段(视频类型)
| 字段 | 类型 | 说明 |
|---|---|---|
| url | string | 视频地址 |
| resNo | string | 资源编号 |
| token | string | 访问 token |
| mediaSource | string | 视频源:self/net/livereplay/segment |
| fileStorage | string | 文件存储类型 |
| fileConvertStatus | string | 文件转换状态 |
| mediaType | string | 媒体类型 |
| mediaLength | number | 文件时长/秒 |
| startAt | number | 智萃分段视频:起始时间毫秒 |
| endAt | number | 智萃分段视频:结束时间毫秒 |
| segmentId | number | 智萃分段视频:分段 ID |
| watermark | string | 图片水印地址 |
| fingerprint | string | 视频指纹 |
| playerWatermarkTxt | string[] | 播放器水印文本列表 |
| enablePlaybackRates | boolean | 是否开启倍速播放 |
| controlBarDisableVolumeButton | boolean | 控制栏:禁用音量按钮 |
| controlBarDisablePlaybackButton | boolean | 控制栏:禁用播放按钮 |
| controlBarDisableResolutionSwitcher | boolean | 控制栏:禁用分辨率切换器 |
| videoH5 | boolean | 是否启用 H5 视频 |
| cloudSdkBaseUri | string | 云 SDK 基础地址 |
| cloudPlayServer | string | 云播放服务器地址 |
| disableSeek | string | 是否禁用拖动播放 |
| encryptionPlus | boolean | 防盗增强 |
| disableFullscreen | boolean | 是否禁用全屏 |
| autoplay | boolean | 是否自动播放 |
| headerLength | number | 片头时长/秒 |
| markers | array | 弹题驻点列表 |
markers 数组项
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 弹题 ID |
| second | number | 触发秒数 |
| questionCount | number | 题目总数 |
| questionTimeLimit | number | 单题限时(秒) |
prevTask / nextTask 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 任务 ID |
| title | string | 任务标题 |
| seq | number | 任务序号 |
| status | string | 任务状态 |
| type | string | 任务类型 |
course 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 课程 ID |
| title | string | 课程标题 |
| categoryId | number | 课程分类 ID |
| serializeMode | string | 连载方式 |
| credit | number | 完成课程奖励的学分数量 |
| rewardPoint | number/null | 课程奖励积分 |
请求示例
http
GET /api/manage/course/1001/task/2001/preview
Authorization: Bearer <token>响应示例
json
{
"task": {
"id": 2001,
"courseId": 1001,
"courseSetId": 1000,
"title": "第一章 课程介绍",
"seq": 1,
"status": "PUBLISHED",
"type": "video",
"length": 3600,
"rewardPoint": 10,
"isOptional": false,
"isLocked": false,
"finishCondition": {
"finishType": "time",
"finishDetail": 600
}
},
"activity": {
"id": 3001,
"type": "video",
"media": {
"url": "https://cdn.example.com/video.mp4",
"mediaLength": 3600,
"autoplay": false,
"markers": [
{
"id": 1,
"second": 60,
"questionCount": 3,
"questionTimeLimit": 30
}
]
},
"content": null
},
"prevTask": null,
"nextTask": {
"id": 2002,
"title": "第二章 基础知识",
"seq": 2,
"status": "PUBLISHED",
"type": "video"
},
"course": {
"id": 1001,
"title": "课程标题",
"categoryId": 1,
"serializeMode": "none",
"credit": 1,
"rewardPoint": 100
}
}异常
| 错误码 | HTTP | 说明 | 触发条件 |
|---|---|---|---|
COURSE_NOT_FOUND | 404 | 课程不存在 | 课程 ID 无效或课程已删除 |
COURSE_TASK_NOT_FOUND | 404 | 课程任务不存在 | 任务 ID 无效或任务不属于该课程 |
COURSE_ACTIVITY_NOT_FOUND | 404 | 课程活动不存在 | 任务未关联活动或活动已删除 |
COURSE_PREVIEW_FORBIDDEN | 403 | 无权预览该课程 | 用户既不是讲师也不在管理范围内 |
MENU_PERMISSION_DENIED | 403 | 权限不足 | 无课程管理权限(ADMIN_COURSE_MANAGE) |
预览模式说明
此接口为预览模式,与学员端学习接口行为不同:
| 行为 | 说明 |
|---|---|
| 学习时长不记录 | 只读接口,不触发 trigger pipeline |
| 任务完成不触发 | 音视频播放等不触发任务完成 |
| 不检查解锁状态 | 未解锁任务也可预览 |
| 不检查发布状态 | 未发布任务也可预览 |
| 不触发多开/挂机检测 | 预览模式下不进行相关检测 |
| 播放记忆不生效 | 不存储/读取播放位置 |