|
|
|
@ -1,9 +1,6 @@
|
|
|
|
|
/***********************************************************
|
|
|
|
|
* @Description : 考试服务
|
|
|
|
|
* @author : 梁山广(Laing Shan Guang)
|
|
|
|
|
* @date : 2019-05-28 08:04
|
|
|
|
|
* @email : liangshanguang2@gmail.com
|
|
|
|
|
***********************************************************/
|
|
|
|
|
/**
|
|
|
|
|
* @Description : 这是一个REST控制器,处理与考试、问题和考试记录相关的HTTP请求,它包括创建、更新和检索考试和问题的方法,以及处理用户提交和评分。
|
|
|
|
|
*/
|
|
|
|
|
package lsgwr.exam.controller;
|
|
|
|
|
|
|
|
|
|
import lsgwr.exam.entity.Exam;
|
|
|
|
@ -22,11 +19,16 @@ import java.util.List;
|
|
|
|
|
|
|
|
|
|
@RestController
|
|
|
|
|
@Api(tags = "Exam APIs")
|
|
|
|
|
//将此控制器中的所有端点映射到/api/exam URL路径
|
|
|
|
|
@RequestMapping("/api/exam")
|
|
|
|
|
public class ExamController {
|
|
|
|
|
@Autowired
|
|
|
|
|
@Autowired //注入一个ExamService实例,用于处理与考试和问题相关的业务逻辑
|
|
|
|
|
private ExamService examService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.getQuestionAll()获取数据,并将其包装在ResultVO对象中,用于获取所有考试列表
|
|
|
|
|
* @ApiOperation注解用于描述API操作,它将显示在SwaggerUI中
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/question/all")
|
|
|
|
|
@ApiOperation("获取所有问题的列表")
|
|
|
|
|
ResultVO<List<QuestionVo>> getQuestionAll() {
|
|
|
|
@ -41,6 +43,10 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 从请求体中获取一个QuestionVo对象,并使用examService.updateQuestion()更新问题
|
|
|
|
|
* @param questionVo 从请求体中获取的QuestionVo对象
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/question/update")
|
|
|
|
|
@ApiOperation("更新问题")
|
|
|
|
|
ResultVO<QuestionVo> questionUpdate(@RequestBody QuestionVo questionVo) {
|
|
|
|
@ -55,6 +61,13 @@ public class ExamController {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建问题
|
|
|
|
|
* @Description: 从请求体中获取一个QuestionCreateSimplifyVo对象,将其属性复制到QuestionCreateVo,设置创建者的ID,并使用examService.questionCreate()创建问题。
|
|
|
|
|
* @param questionCreateSimplifyVo 从请求体中获取的QuestionCreateSimplifyVo对象
|
|
|
|
|
* @param request HttpServletRequest对象,用于获取当前用户的ID
|
|
|
|
|
* @return ResultVO<String> 对象,包含操作结果信息
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/question/create")
|
|
|
|
|
@ApiOperation("创建问题")
|
|
|
|
|
ResultVO<String> questionCreate(@RequestBody QuestionCreateSimplifyVo questionCreateSimplifyVo, HttpServletRequest request) {
|
|
|
|
@ -74,6 +87,10 @@ public class ExamController {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 获取全部问题列表,使用examService.getSelections()获取数据,并将其包装在ResultVO对象中
|
|
|
|
|
* @return ResultVO<QuestionAllVo> 对象,包含问题列表
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/question/selection")
|
|
|
|
|
@ApiOperation("获取问题分类的相关选项")
|
|
|
|
|
ResultVO<QuestionSelectionVo> getSelections() {
|
|
|
|
@ -85,6 +102,11 @@ public class ExamController {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.getQuestionDetail(id)获取数据,并将其包装在ResultVO对象中,用于获取全部问题列表
|
|
|
|
|
* @param id 问题id
|
|
|
|
|
* @return ResultVO<QuestionDetailVo> 对象,包含问题详情
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/question/detail/{id}")
|
|
|
|
|
@ApiOperation("根据问题的id获取问题的详细信息")
|
|
|
|
|
ResultVO<QuestionDetailVo> getQuestionDetail(@PathVariable String id) {
|
|
|
|
@ -101,6 +123,10 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.getExamAll()获取数据,并将其包装在ResultVO对象中,用于获取全部考试列表
|
|
|
|
|
* @return ResultVO<QuestionDetailVo> 对象,包含考试列表详情
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/all")
|
|
|
|
|
@ApiOperation("获取全部考试的列表")
|
|
|
|
|
ResultVO<List<ExamVo>> getExamAll() {
|
|
|
|
@ -116,6 +142,10 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.getExamQuestionTypeList()获取数据,并将其包装在ResultVO对象中,用于获取问题列表
|
|
|
|
|
* @return ResultVO<ExamQuestionTypeVo> 对象,包含问题列表
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/question/type/list")
|
|
|
|
|
@ApiOperation("获取问题列表,按照单选、多选和判断题分类返回")
|
|
|
|
|
ResultVO<ExamQuestionTypeVo> getExamQuestionTypeList() {
|
|
|
|
@ -131,6 +161,12 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.createExam()获取数据,并将其包装在ResultVO对象中,用于获取问题列表
|
|
|
|
|
* @param examCreateVo 前端传过来的参数
|
|
|
|
|
* @param request 获取用户id
|
|
|
|
|
* @return ResultVO<Exam> 对象,包含考试信息
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/create")
|
|
|
|
|
@ApiOperation("创建考试")
|
|
|
|
|
ResultVO<Exam> createExam(@RequestBody ExamCreateVo examCreateVo, HttpServletRequest request) {
|
|
|
|
@ -147,6 +183,12 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.updateExam()获取数据,并将其包装在ResultVO对象中,用于更新考试
|
|
|
|
|
* @param examVo 前端传过来的参数
|
|
|
|
|
* @param request 获取用户id
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/update")
|
|
|
|
|
@ApiOperation("更新考试")
|
|
|
|
|
ResultVO<Exam> updateExam(@RequestBody ExamVo examVo, HttpServletRequest request) {
|
|
|
|
@ -163,6 +205,10 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 获取考试列表,适配前端卡片列表
|
|
|
|
|
* @return ResultVO<List<ExamCardVo>> 对象,包含考试列表卡片信息
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/card/list")
|
|
|
|
|
@ApiOperation("获取考试列表,适配前端卡片列表")
|
|
|
|
|
ResultVO<List<ExamCardVo>> getExamCardList() {
|
|
|
|
@ -178,6 +224,11 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 根据考试的id,获取考试详情
|
|
|
|
|
* @param id 考试id
|
|
|
|
|
* @return ResultVO<ExamDetailVo> 对象,包含考试详情信息
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/detail/{id}")
|
|
|
|
|
@ApiOperation("根据考试的id,获取考试详情")
|
|
|
|
|
ResultVO<ExamDetailVo> getExamDetail(@PathVariable String id) {
|
|
|
|
@ -192,6 +243,13 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.finishExam获取数据,并将其包装在ResultVO对象中,用于考试判分
|
|
|
|
|
* @param examId 考试id
|
|
|
|
|
* @param answersMap 用户提交的答案
|
|
|
|
|
* @param request 获取用户id
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping("/finish/{examId}")
|
|
|
|
|
@ApiOperation("根据用户提交的答案对指定id的考试判分")
|
|
|
|
|
ResultVO<ExamRecord> finishExam(@PathVariable String examId, @RequestBody HashMap<String, List<String>> answersMap, HttpServletRequest request) {
|
|
|
|
@ -209,6 +267,11 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.getExamRecordList获取数据,并将其包装在ResultVO对象中,用于获取当前用户的考试记录
|
|
|
|
|
* @param request 获取用户id
|
|
|
|
|
* @return ResultVO<List<ExamRecordVo>> 返回一个包含考试记录列表的ResultVO对象,如果发生异常,则返回一个包含错误信息的ResultVO对象。
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/record/list")
|
|
|
|
|
@ApiOperation("获取当前用户的考试记录")
|
|
|
|
|
ResultVO<List<ExamRecordVo>> getExamRecordList(HttpServletRequest request) {
|
|
|
|
@ -226,6 +289,11 @@ public class ExamController {
|
|
|
|
|
return resultVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description: 使用examService.getExamRecordDetail获取数据,并将其包装在ResultVO对象中,用于获取指定id的考试记录详情
|
|
|
|
|
* @param recordId 考试记录id
|
|
|
|
|
* @return ResultVO<RecordDetailVo> 返回一个包含考试记录详情的ResultVO对象,如果发生异常,则返回一个包含错误信息的ResultVO对象。
|
|
|
|
|
*/
|
|
|
|
|
@GetMapping("/record/detail/{recordId}")
|
|
|
|
|
@ApiOperation("根据考试记录id获取考试记录详情")
|
|
|
|
|
ResultVO<RecordDetailVo> getExamRecordDetail(@PathVariable String recordId) {
|
|
|
|
|