考试相关
本章节专注于描述考试和练习相关的API,专为管理员和子管理员设计,用于维护和管理考试及练习内容。
题库
题库列表:questionBank/listpage
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 否 |
| name | String (16) | 名称 | 否 |
| curPage | Integer | 当前第几页 | 否 |
| pageSize | Integer | 每页多少条 | 否 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.total | Integer | 总行数 |
| data.list[] | Object[] | 分页列表 |
| data.list[].id | Integer | 主键 |
| data.list[].name | String | 名称 |
| data.list[].createUserName | String | 创建用户 |
| data.list[].objectiveNum | String | 客观题数量 |
| data.list[].subjectiveNum | Integer | 主观题数量 |
| data.list[].singleNum | Integer | 单选题数量 |
| data.list[].multipleNum | Integer | 多选题数量 |
| data.list[].fillBlankSubNum | Integer | 主观填空题数量 |
| data.list[].fillBlankObjNum | Integer | 客观填空题数量 |
| data.list[].judgeNum | Integer | 判断题数量 |
| data.list[].qaSubNum | Integer | 主观问答题数量 |
| data.list[].qaObjNum | Integer | 客观问答题数量 |
| data.list[].questionNum | Integer | 试题数量 |
| data.list[].updateTime | Date | 更新时间 |
题库添加:questionBank/add
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| name | String (16) | 名称 | 是 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data | Integer | 题库ID |
题库修改:questionBank/edit
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| name | String (16) | 名称 | 是 |
题库删除:questionBank/del
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
题库详情:questionBank/get
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.id | Integer | 题库id |
| data.name | String | 题库名称 |
题库清空:questionBank/clear
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
试题
试题列表:question/listpage
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| questionBankId | Integer | 题库id | 否 |
| questionBankName | String | 题库名称 | 否 |
| id | Integer | 编号(主键) | 否 |
| title | String | 题干 | 否 |
| type | Integer | 类型(1:单选;2:多选;3:填空;4:判断;5:问答) | 否 |
| score | Double | 分值 | 否 |
| markType | Integer | 阅卷类型(1:客观题;2:主观题) | 否 |
| exIds | String | 排除的试题IDS(英文逗号分割) | 否 |
| state | Integer | 状态(0:删除;1:发布;);默认查询1;参数为0则查询最近7天已删除的试题 | 否 |
| rand | String | 随机查询 (任意字符串) | 否 |
| curPage | Integer | 当前第几页 | 否 |
| pageSize | Integer | 每页多少条 | 否 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.total | Integer | 总行数 |
| data.list[] | Object[] | 分页列表 |
| data.list[].id | Integer | 主键 |
| data.list[].type | Integer | 类型(1:单选;2:多选;3:填空;4:判断;5:问答) |
| data.list[].title | String | 题干 |
| data.list[].imgFileIds | Integer[] | 图片附件IDS(V5.2.0新增) |
| data.list[].videoFileId | Integer | 视频附件ID(V5.5.5新增) |
| data.list[].markType | Integer | 阅卷类型(1:客观题;2:主观题) |
| data.list[].state | Integer | 状态(0:删除;1:发布;) |
| data.list[].analysis | String | 解析 |
| data.list[].questionBankId | Integer | 题库ID |
| data.list[].questionBankName | Integer | 题库名称 |
| data.list[].score | Double | 分值 |
| data.list[].markOptions | Integer[] | 分值选项 |
| data.list[].options[] | Object[] | 单多选选项(type=1,2时有效) |
| data.list[].answers[] | String[] | 答案(如果是填空或智能问答,会有多个答案) |
| data.list[].scores[] | Double[] | 答案分值(如果是填空或智能问答,表示每空分值;如果是多选,表示漏选分值) |
| data.list[].updateUserName | String | 更新用户名称 |
试题添加:question/add
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| type | Integer | 类型(1:单选;2:多选;3:填空;4:判断;5:问答) | 是 |
| title | Text | 题干 | 是 |
| imgFileIds | Integer[] | 图片附件ID(V5.2.0新增) | 否 |
| videoFileId | Integer | 视频附件ID(V5.5.0新增) | |
| markType | Integer | 阅卷类型(1:客观题;2:主观题) | 是 |
| analysis | Text | 解析 | 是 |
| questionBankId | Integer | 题库ID | 是 |
| score | Double | 分数 | 是 |
| markOptions[] | Integer[] | 分数选项(1:漏选得分;2:答案无顺序;3:大小写不敏感;) | 否 |
| options[] | String[] | 选项,type为1,2时有效,len <= 7 | 否 |
| answers[] | String[] | 答案(如果是填空或智能问答,会有多个答案) | 是 |
| scores[] | Double[] | 答案分值(如果是填空或智能问答,表示每空分值;如果是多选,表示漏选分值) | 否 |
试题修改:question/edit
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| type | Integer | 类型(修改无效) | 否 |
| 其他字段同question/add |
试题删除:question/del
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| ids | Integer[] | 试题IDS | 是 |
试题移动:question/move(V5.3.0新增)
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer[] | 主键 | 是 |
| questionBankId | Integer | 题库ID | 是 |
试题获取:question/get
提示消息
已实现缓存处理,可不限次数请求,默认空闲两小时失效。
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.id | Integer | 主键 |
| data.type | Integer | 类型(1:单选;2:多选;3:填空;4:判断;5:问答 |
| data.title | Text | 题干 |
| data.imgFileIds | Integer[] | 图片IDS(V5.2.0新增) |
| data.videoFileId | Integer | 视频附件ID(V5.5.0新增) |
| data.options[] | String[] | 选项,type为1,2时有效,len <= 7 |
| data.markType | Integer | 阅卷类型(1:客观题;2:主观题) |
| data.analysis | Text | 解析 |
| data.questionBankId | Integer | 题库ID |
| data.score | Double | 分数 |
| data.markOptions[] | Integer[] | 分数选项(1:漏选得分;2:答案无顺序;3:大小写不敏感;) |
| data.answers[] | String[] | 答案(如果是填空或智能问答,会有多个答案) |
| data.scores[] | Double[] | 答案分值(如果是填空或智能问答,表示每空分值;如果是多选,表示漏选分值) |
| data.state | Integer | 状态(0:删除;1:发布;) |
试题复制:question/copy
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
考试
考试列表:exam/listpage
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| name | String (16) | 名称 | 否 |
| genType | Integer | 组卷方式(1:人工组卷;2:随机组卷) | 否 |
| loginType | Integer | 登录方式(1:正常登录;2:临时登录;) | 否 |
| markState | Integer | 阅卷状态(1:未阅卷;2:阅卷中;3:已阅卷;) | 否 |
| markType | Integer | 阅卷方式(1:客观题;2:主观题;) | 否 |
| isLimit | Integer | 是否限时考试(0:不限时;1:限时) | 否 |
| state | Integer | 考试状态(1:发布;2:暂停) | |
| curPage | Integer | 当前第几页 | 否 |
| pageSize | Integer | 每页多少条 | 否 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.total | Integer | 总行数 |
| data.list[] | Object[] | 分页列表 |
| data.list[].id | Integer | 主键 |
| data.list[].name | String | 名称 |
| data.list[].startTime | Date | 开始时间 |
| data.list[].endTime | Date | 结束时间 |
| data.list[].markStartTime | Date | 阅卷开始时间 |
| data.list[].markEndTime | Date | 阅卷结束时间 |
| data.list[].passScore | Double | 及格分数 |
| data.list[].totalScore | Double | 总分数 |
| data.list[].state | Integer | 考试状态 |
| data.list[].markState | Integer | 阅卷方式(1:客观题;2:主观题;) |
| data.list[].scoreState | Integer | 成绩查询状态(1:考试结束后;2:不公布;3:交卷后) |
| data.list[].rankState | Integer | 排名状态(1:公布;2:不公布) |
| data.list[].genType | Integer | 组卷方式(1:人工组卷;2:随机组卷) |
| data.list[].markType | Integer | 阅卷方式(1:客观题;2:主观题;) |
| data.list[].sxes | Integer[] | 防作弊(1:试题乱序;2:选项乱序;) |
| data.list[].anonState | Integer[] | 匿名阅卷(1:是;2:否) |
| data.list[].limitMinute | Integer | 限制时长(分钟) |
| data.list[].userNum | Integer | 用户数量 |
| data.list[].markUserNum | Integer | 阅卷用户数量 |
考试发布:exam/publish
- 请求数据格式为json,请设置HTTP请求头:{ Content-Type: application/json }
json
{
"id": null, // 考试ID(修改时用)
"name": "考试-2023-04-01",// 考试名称
"loginType": 1,// 登录方式(1:正常登录;2:临时登录;)
"paperName": "试卷-2023-04-01",// 试卷试卷名称
"genType": 1, // 组卷方式(1:人工组卷;2:随机组卷)
"passScore": 14,// 及格分数
"sxes": [2, 1],// genType == 1有效
"scoreState": 3,// 成绩查询状态(1:考试结束后;2:不公布;3:交卷后)
"rankState": 1,// 排名状态(1:公布;2:不公布)
"examQuestions": [{// genType == 1有效(固定组卷)
"type": 1,// 类型 (1:章节;2:试题)
"chapterName": "单选题",// 章节名称
"chapterTxt": ""// 章节描述(非必填)
}, {
"type": 2,// 类型 (1:章节;2:试题) 试题数据格式参考question/add接口
"questionType": 1,// 试题类型(1:单选;2:多选;3:填空;4:判断;5:问答)
"markType": 1,// 阅卷类型(1:客观题;2:主观题)
"title": "这是一道单选题的题干,简单写法",// 题干
"imgFileIds": [21994],// 图片附件IDS(V5.2.0新增)
"videoFileId": 21995,// 视频附件ID(V5.2.0新增)
"score": 1,// 分数
"answers": ["B"],// 答案
"scores": [],// 分数(非必填,默认为1分)
"options": ["单选题的A选项", "单选题的B选项", "单选题的C选项", "单选题的D选项"],// 选项
},],
"examRules": [{// genType == 1有效(随机组卷)
"type": 1,// 类型 (1:章节;2:试题)
"chapterName": "单选题",// 章节名称
"chapterTxt": ""// 章节描述
}, {
"type": 2,// 类型 (1:章节;2:试题)
"questionBankId": 5,// 题库ID
"questionType": 1,// 试题类型(1:单选;2:多选;3:填空;4:判断;5:问答)
"markType": 1,// 阅卷类型(1:客观题;2:主观题),1有效
"markOptions": [],// 阅卷选项(2:答案无顺序;3:不分大小写;) questionType == 3,23有效;questionType == 5,3有效
"num": 10,// 题数
"score": 1,// 分数
"scores": []// questionType == 2有效,漏选分数
}],
"userIds": [1229, 1228, 1193, 1201, 1209],// 用户IDS
"orgIds": [3, 69],// 机构IDS
"makrUser": [3, 69],// 阅卷用户IDS
"totalScore": 24,// 总分
"markType": 2,// 阅卷类型(1:客观题;2:主观题)
"startTime": "2023-04-01 08:00:00",// 考试开始时间
"endTime": "2023-04-01 10:00:00",// 考试结束时间
"markStartTime": "2023-04-01 14:00:00",// 阅卷开始时间
"markEndTime": "2023-04-01 18:00:00",// 阅卷结束时间
"limitMinute": 60, // 限制分钟(考试开始时间由用户第一次打开试卷时计时))
"retakeNum": 0, // 重考次数(V5.5.0新增)
}| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data | String | 进度条ID。建议每隔1秒请求一次,获取进度参考:progressBar/get |
考试试卷:exam/paper
| 请求参数 | 类型 | 描述 |
|---|---|---|
| id | Integer | 主键 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.id | Integer | 主键 |
| data.name | String | 考试名称 |
| data.paperName | String | 试卷名称 |
| data.markType | Integer | 阅卷类型 |
| data.startTime | Date | 考试开始时间 |
| data.endTime | Date | 考试结束时间 |
| data.markStartTime | Date | 阅卷开始时间 |
| data.markEndTime | Date | 阅卷结束时间 |
| data.genType | Integer | 组卷方式(1:人工组卷;2:随机组卷) |
| data.showType | Integer | 展示方式(1:整卷展示;3:单题展示;)暂无用 |
| data.loginType | Integer | 登录方式(1:正常登录;2:临时登录;) |
| data.passScore | Integer | 及格分数 |
| data.anonState | Integer | 匿名阅卷状态(1:是;2:否) |
| data.scoreState | Integer | 成绩查询状态(1:考试结束后;2:不公布;3:交卷后) |
| data.rankState | Integer | 排名状态(1:公布;2:不公布) |
| data.sxes | Integer[] | 防作弊(1:试题乱序;2:选项乱序;) |
| data.examQuestions | Object[] | 参考 exam/publish 接口 |
| data.examRules | Object[] | 参考 exam/publish 接口 |
| data.examUserIds | Integer[] | 考试用户IDS |
| data.limitMinute | Integer | 限制分钟(考试开始时间由用户第一次打开试卷时计时,如果为0表示考试时间内不限时) |
考试用户:exam/user(V5.3.0新增)
| 请求参数 | 类型 | 描述 |
|---|---|---|
| id | Integer | 主键 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data[].userId | Integer | 考试用户ID |
| data[].answerState | Integer | 及格状态 |
考试删除:exam/del
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
考试获取:exam/get
| 请求参数 | 类型 | 描述 |
|---|---|---|
| id | Integer | 主键 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.id | Integer | 主键 |
| data.name | String | 考试名称 |
| data.paperName | String | 试卷名称 |
| data.startTime | Date | 考试开始时间 |
| data.endTime | Date | 考试结束时间 |
| data.markStartTime | Date | 阅卷开始时间 |
| data.markEndTime | Date | 阅卷结束时间 |
| data.markState | Integer | 阅卷状态(1:未阅卷;2:阅卷中;3:已阅卷;) |
| data.scoreState | Integer | 成绩查询状态(1:考试结束后;2:不公布;3:交卷后) |
| data.rankState | Integer | 排名状态(1:公布;2:不公布) |
| data.anonState | Integer | 匿名阅卷状态(1:是;2:否) |
| data.passScore | Double | 及格分数 |
| data.totalScore | Double | 总分数 |
| data.markType | Integer | 阅卷方式(1:客观题;2:主观题;) |
| data.loginType | Integer | 登录方式(1:正常登录;2:临时登录;) |
| data.genType | Integer | 组卷方式(1:人工组卷;2:随机组卷) |
| data.sxes | Integer[] | 防作弊(1:试题乱序;2:选项乱序;) |
| data.state | Integer | 状态(0:删除;1:发布;) |
| data.userNum | Integer | 考试人数 |
| data.limitMinute | Integer | 限制时长(分钟) |
| data.retakeNum | Integer | 重考次数(V5.5.0新增) |
考试获取:exam/examGet(V5.2.0新增)
| 请求参数 | 类型 | 描述 |
|---|---|---|
| name | String | 用于临时登录考试 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.id | Integer | 主键 |
| data.name | String | 考试名称 |
| data.loginType | Integer | 登录方式(1:正常登录;2:临时登录;) |
| data.startTime | Date | 开始时间 |
| data.endTime | Date | 结束时间 |
考试变更时间:exam/time
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| timeType | Integer | 状态 【1:考试开始时间;2:考试结束时间;3:阅卷开始时间;4:阅卷结束时间】 | 是 |
| minute | Integer | 分钟数(提前用负数、延后用整数) | 是 |
考试暂停:exam/pause
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键,如果正常则变更为冻结;如果冻结则变更为正常 | 是 |
考试用户添加:exam/userAdd(V5.2.0新增)
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| orgIds | Integer[] | 机构IDS | 否 |
| userIds | Integer[] | 用户IDS | 否 |
考试成绩状态:exam/score
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键,如果正常则变更为冻结;如果冻结则变更为正常 | 是 |
| scoreState | Integer | 成绩状态(1:考试结束后;2:不公布;3:交卷后) | 是 |
考试排名状态:exam/rank
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键,如果正常则变更为冻结;如果冻结则变更为正常 | 是 |
| rankState | Integer | 排名状态(1:公布;2:不公布) | 是 |
考试阅卷协助:exam/assist
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| markUserIds | Integer[] | 阅卷用户IDS,角色为阅卷用户 |
考试阅卷用户列表:exam/markUserList
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data[] | Object[] | 任意数组 |
| data[].id | Integer | 考试名称 |
| data[].name | String | 试卷名称 |
练习(V5.4.0重新实现)
练习列表:exer/listpage
提示消息
管理员看所有练习;子管理员看自己创建的练习;考试用户看管理员或子管理员分配的练习;
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键(V5.6.0新增) | 否 |
| name | String (16) | 名称 | 否 |
| state | Integer | 状态(1:发布;2:暂停) | 否 |
| curPage | Integer | 当前第几页 | 否 |
| pageSize | Integer | 每页多少条 | 否 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.total | Integer | 总行数 |
| data.list[] | Object[] | 分页列表 |
| data.list[].id | Integer | 主键 |
| data.list[].name | String | 名称 |
| data.list[].questionBankIds | Integer[] | 题库IDS(管理员和子管理员有效,V5.6.0更新为多个题库) |
| data.list[].orgIds | Integer[] | 机构IDS(管理员和子管理员有效) |
| data.list[].userIds | Integer[] | 用户IDS(管理员和子管理员有效) |
| data.list[].state | Integer | 状态(1:发布;2:暂停) |
| data.list[].createUserName | String | 创建用户名称 |
| data.list[].updateTime | Date | 更新时间 |
| data.list[].objectiveNum | Integer | 客观题数量(V5.6.0新增) |
| data.list[].subjectiveNum | Integer | 主观题数量(V5.6.0新增) |
| data.list[].singleNum | Integer | 单选题数量(V5.6.0新增) |
| data.list[].multipleNum | Integer | 多选题数量(V5.6.0新增) |
| data.list[].fillBlankObjNum | Integer | 客观填空题数量(V5.6.0新增) |
| data.list[].fillBlankSubNum | Integer | 主观填空题数量(V5.6.0新增) |
| data.list[].judgeNum | Integer | 判断题数量(V5.6.0新增) |
| data.list[].qaObjNum | Integer | 客观问答题数量(V5.6.0新增) |
| data.list[].qaSubNum | Integer | 主观问答题数量(V5.6.0新增) |
练习添加:exer/add
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| name | String | 练习名称 | 是 |
| questionBankIds | Integer[] | 题库IDS(V5.6.0更新为多选) | 是 |
| orgIds | Integer[] | 练习机构IDS | 否 |
| userIds | Integer[] | 练习用户IDS | 否 |
练习添加:exer/edit
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 练习ID | 是 |
| name | String | 练习名称 | 是 |
| orgIds | Integer[] | 练习机构IDS | 否 |
| userIds | Integer[] | 练习用户IDS | 否 |
练习获取:exer/get
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 主键 | 是 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
| data.id | Integer | 总行数 |
| data.name | Object[] | 分页列表 |
| data.questionBanks[] | Object[] | 题库数组(V5.6.0更新为多选) |
| data.questionBanks[].id | Integer | 题库ID |
| data.questionBanks[].name | String | 题库名称 |
| data.orgs[] | Object[] | 机构数组 |
| data.orgs[].id | Integer | 机构ID |
| data.orgs[].name | String | 机构名称 |
| data.users[] | Object[] | 用户数组 |
| data.users[].id | Integer | 用户ID |
| data.users[].name | String | 用户名称 |
| data.state | Integer | 状态(1:发布;2:暂停) |
练习发布:exer/state
| 请求参数 | 类型 | 描述 | 必填 |
|---|---|---|---|
| id | Integer | 练习主键,如果发布则变为暂停,如果暂停则变为发布。 | 是 |
| 响应参数 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应码 |
| msg | String | 响应消息 |
