|
@@ -52,10 +52,9 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "验证考试口令接口")
|
|
@ApiOperation(value = "验证考试口令接口")
|
|
@RequestMapping(value = "/short_code", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/short_code", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "考试信息", response = TEExam.class)})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "考试信息", response = TEExam.class) })
|
|
public Result shortCode(@ApiJsonObject(name = "shortCode", value = {
|
|
public Result shortCode(@ApiJsonObject(name = "shortCode", value = {
|
|
- @ApiJsonProperty(key = "shortCode", description = "考试口令")
|
|
|
|
- }) @ApiParam(value = "考试口令", required = true) @RequestBody Map<String, Object> mapParameter) {
|
|
|
|
|
|
+ @ApiJsonProperty(key = "shortCode", description = "考试口令") }) @ApiParam(value = "考试口令", required = true) @RequestBody Map<String, Object> mapParameter) {
|
|
if (Objects.isNull(mapParameter.get("shortCode")) || Objects.equals(mapParameter.get("shortCode"), "")) {
|
|
if (Objects.isNull(mapParameter.get("shortCode")) || Objects.equals(mapParameter.get("shortCode"), "")) {
|
|
throw new BusinessException(ExceptionResultEnum.SHORT_CODE_IS_NULL);
|
|
throw new BusinessException(ExceptionResultEnum.SHORT_CODE_IS_NULL);
|
|
}
|
|
}
|
|
@@ -74,19 +73,20 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "获取待考列表接口")
|
|
@ApiOperation(value = "获取待考列表接口")
|
|
@RequestMapping(value = "/waiting", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/waiting", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "考试列表", response = TEExamDto.class)})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "考试列表", response = TEExamDto.class) })
|
|
public Result waiting(@ApiJsonObject(name = "examWaiting", value = {
|
|
public Result waiting(@ApiJsonObject(name = "examWaiting", value = {
|
|
- @ApiJsonProperty(key = "examId", type = "long", example = "1", description = "批次id")
|
|
|
|
- }) @ApiParam(value = "考试口令", required = true) @RequestBody Map<String, Object> mapParameter) {
|
|
|
|
- Long examId = Objects.nonNull(mapParameter.get("examId")) ? Long.parseLong(String.valueOf(mapParameter.get("examId"))) : null;
|
|
|
|
|
|
+ @ApiJsonProperty(key = "examId", type = "long", example = "1", description = "批次id") }) @ApiParam(value = "考试口令", required = true) @RequestBody Map<String, Object> mapParameter) {
|
|
|
|
+ Long examId = Objects.nonNull(mapParameter.get("examId")) ?
|
|
|
|
+ Long.parseLong(String.valueOf(mapParameter.get("examId"))) :
|
|
|
|
+ null;
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
- List<TEExamDto> list = teExamService.getWaitingExam(teStudent.getId(), examId, teStudent.getOrgId());
|
|
|
|
|
|
+ List<TEExamDto> list = teExamService.getWaitingExam(teStudent.getId(), examId);
|
|
return ResultUtil.ok(Collections.singletonMap("waiting", list));
|
|
return ResultUtil.ok(Collections.singletonMap("waiting", list));
|
|
}
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "开始候考")
|
|
@ApiOperation(value = "开始候考")
|
|
@RequestMapping(value = "/prepare", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/prepare", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result prepare(@RequestBody PrepareParamBean param) {
|
|
public Result prepare(@RequestBody PrepareParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
@@ -106,10 +106,9 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "候考/答题状态退出")
|
|
@ApiOperation(value = "候考/答题状态退出")
|
|
@RequestMapping(value = "/exit", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/exit", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class) })
|
|
public Result exit(@ApiJsonObject(name = "saveInvigilateUser", value = {
|
|
public Result exit(@ApiJsonObject(name = "saveInvigilateUser", value = {
|
|
- @ApiJsonProperty(key = "recordId", type = "long", example = "1", description = "考试记录id", required = true)
|
|
|
|
- }) @ApiParam(value = "考试记录id", required = true) @RequestBody Map<String, Object> mapParameter) {
|
|
|
|
|
|
+ @ApiJsonProperty(key = "recordId", type = "long", example = "1", description = "考试记录id", required = true) }) @ApiParam(value = "考试记录id", required = true) @RequestBody Map<String, Object> mapParameter) {
|
|
if (Objects.isNull(mapParameter.get("recordId")) || Objects.equals(mapParameter.get("recordId"), "")) {
|
|
if (Objects.isNull(mapParameter.get("recordId")) || Objects.equals(mapParameter.get("recordId"), "")) {
|
|
throw new BusinessException(ExceptionResultEnum.RECORD_ID_IS_NULL);
|
|
throw new BusinessException(ExceptionResultEnum.RECORD_ID_IS_NULL);
|
|
}
|
|
}
|
|
@@ -135,7 +134,7 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "开始考试")
|
|
@ApiOperation(value = "开始考试")
|
|
@RequestMapping(value = "/start", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/start", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result start(@RequestBody ExamStartParamBean param) {
|
|
public Result start(@RequestBody ExamStartParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
@@ -152,19 +151,25 @@ public class TEExamController {
|
|
Long breakId = ExamRecordCacheUtil.getLastBreakId(param.getRecordId());
|
|
Long breakId = ExamRecordCacheUtil.getLastBreakId(param.getRecordId());
|
|
if (Objects.nonNull(breakId)) {
|
|
if (Objects.nonNull(breakId)) {
|
|
JSONObject jsonObject = JSONObject.parseObject(param.getReason());
|
|
JSONObject jsonObject = JSONObject.parseObject(param.getReason());
|
|
- ExceptionEnum exceptionEnum = ExceptionEnum.valueOf(ExceptionEnum.convertToName(String.valueOf(jsonObject.get("type"))));
|
|
|
|
|
|
+ ExceptionEnum exceptionEnum = ExceptionEnum
|
|
|
|
+ .valueOf(ExceptionEnum.convertToName(String.valueOf(jsonObject.get("type"))));
|
|
String reason = String.valueOf(jsonObject.get("reason"));
|
|
String reason = String.valueOf(jsonObject.get("reason"));
|
|
ExamBreakCacheUtil.setBreakReason(breakId, exceptionEnum);
|
|
ExamBreakCacheUtil.setBreakReason(breakId, exceptionEnum);
|
|
ExamBreakCacheUtil.setResumeReason(breakId, reason);
|
|
ExamBreakCacheUtil.setResumeReason(breakId, reason);
|
|
//考试断点异常原因 发送mq start
|
|
//考试断点异常原因 发送mq start
|
|
- MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXCEPTION_LOG.name(), JacksonUtil.parseJson(param), MqTagEnum.EXCEPTION_LOG, String.valueOf(param.getRecordId()), param.getReason());
|
|
|
|
|
|
+ MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.EXCEPTION_LOG.name(),
|
|
|
|
+ JacksonUtil.parseJson(param), MqTagEnum.EXCEPTION_LOG, String.valueOf(param.getRecordId()),
|
|
|
|
+ param.getReason());
|
|
mqDtoService.assembleSendOneWayMsg(mqDto);
|
|
mqDtoService.assembleSendOneWayMsg(mqDto);
|
|
//考试断点异常原因 发送mq end
|
|
//考试断点异常原因 发送mq end
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
//mq发送消息start
|
|
//mq发送消息start
|
|
- MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.ANSWERING, MqTagEnum.STUDENT, String.valueOf(teStudent.getId()), teStudent.getIdentity());
|
|
|
|
- teExamService.sendOeLogMessage(SystemOperationEnum.ANSWERING, ExamRecordCacheUtil.getExamStudentId(param.getRecordId()), param.getRecordId(), mqDto);
|
|
|
|
|
|
+ MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(),
|
|
|
|
+ SystemOperationEnum.ANSWERING, MqTagEnum.STUDENT, String.valueOf(teStudent.getId()),
|
|
|
|
+ teStudent.getIdentity());
|
|
|
|
+ teExamService.sendOeLogMessage(SystemOperationEnum.ANSWERING,
|
|
|
|
+ ExamRecordCacheUtil.getExamStudentId(param.getRecordId()), param.getRecordId(), mqDto);
|
|
//mq发送消息end
|
|
//mq发送消息end
|
|
}
|
|
}
|
|
ExamConstant.sendExamStartMsg(param.getRecordId());
|
|
ExamConstant.sendExamStartMsg(param.getRecordId());
|
|
@@ -176,7 +181,7 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "上传个人试卷结构")
|
|
@ApiOperation(value = "上传个人试卷结构")
|
|
@RequestMapping(value = "/student_paper_struct/upload", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/student_paper_struct/upload", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result studentPaperStruct(@RequestBody StudentPaperStructParamBean param) {
|
|
public Result studentPaperStruct(@RequestBody StudentPaperStructParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
if (param.getRecordId() == null) {
|
|
if (param.getRecordId() == null) {
|
|
@@ -191,7 +196,7 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "提交作答结果")
|
|
@ApiOperation(value = "提交作答结果")
|
|
@RequestMapping(value = "/answer/submit", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/answer/submit", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result answerSubmit(@RequestBody AnswerSubmitParamBean param) {
|
|
public Result answerSubmit(@RequestBody AnswerSubmitParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
if (param.getRecordId() == null) {
|
|
if (param.getRecordId() == null) {
|
|
@@ -209,15 +214,15 @@ public class TEExamController {
|
|
if (param.getVersion() == null) {
|
|
if (param.getVersion() == null) {
|
|
throw new BusinessException("时间戳不能为空");
|
|
throw new BusinessException("时间戳不能为空");
|
|
}
|
|
}
|
|
- AnswerSubmitBean ret = teExamService.answerSubmit(teStudent.getId(), param.getRecordId(), param.getMainNumber(),
|
|
|
|
- param.getSubNumber(), param.getSubIndex(), param.getAnswer(), param.getVersion(),
|
|
|
|
- param.getDurationSeconds());
|
|
|
|
|
|
+ AnswerSubmitBean ret = teExamService
|
|
|
|
+ .answerSubmit(teStudent.getId(), param.getRecordId(), param.getMainNumber(), param.getSubNumber(),
|
|
|
|
+ param.getSubIndex(), param.getAnswer(), param.getVersion(), param.getDurationSeconds());
|
|
return ResultUtil.ok(ret);
|
|
return ResultUtil.ok(ret);
|
|
}
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "更新音频剩余播放次数")
|
|
@ApiOperation(value = "更新音频剩余播放次数")
|
|
@RequestMapping(value = "/audio_left_play_count/submit", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/audio_left_play_count/submit", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result audioLeftPlayCountSubmit(@RequestBody AudioLeftPlayCountSubmitParamBean param) {
|
|
public Result audioLeftPlayCountSubmit(@RequestBody AudioLeftPlayCountSubmitParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
if (param.getRecordId() == null) {
|
|
if (param.getRecordId() == null) {
|
|
@@ -229,23 +234,24 @@ public class TEExamController {
|
|
if (param.getCount() == null) {
|
|
if (param.getCount() == null) {
|
|
throw new BusinessException("剩余播放次数不能为空");
|
|
throw new BusinessException("剩余播放次数不能为空");
|
|
}
|
|
}
|
|
- return ResultUtil.ok(teExamService.audioLeftPlayCountSubmit(teStudent.getId(), param.getRecordId(), param.getKey(), param.getCount()));
|
|
|
|
|
|
+ return ResultUtil.ok(teExamService
|
|
|
|
+ .audioLeftPlayCountSubmit(teStudent.getId(), param.getRecordId(), param.getKey(), param.getCount()));
|
|
}
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "文件上传")
|
|
@ApiOperation(value = "文件上传")
|
|
@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result fileUpload(@ApiParam(value = "考试记录ID", required = true) @RequestParam Long recordId,
|
|
public Result fileUpload(@ApiParam(value = "考试记录ID", required = true) @RequestParam Long recordId,
|
|
- @ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
|
|
|
|
- @ApiParam(value = "后缀名", required = true) @RequestParam String suffix,
|
|
|
|
- @ApiParam(value = "md5", required = true) @RequestParam String md5) {
|
|
|
|
|
|
+ @ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
|
|
|
|
+ @ApiParam(value = "后缀名", required = true) @RequestParam String suffix,
|
|
|
|
+ @ApiParam(value = "md5", required = true) @RequestParam String md5) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
return ResultUtil.ok(teExamService.fileUpload(teStudent.getId(), recordId, file, suffix, md5));
|
|
return ResultUtil.ok(teExamService.fileUpload(teStudent.getId(), recordId, file, suffix, md5));
|
|
}
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "断点恢复")
|
|
@ApiOperation(value = "断点恢复")
|
|
@RequestMapping(value = "/resume", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/resume", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result resume(@RequestBody ResumeParamBean param) {
|
|
public Result resume(@RequestBody ResumeParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
@@ -265,7 +271,7 @@ public class TEExamController {
|
|
|
|
|
|
@ApiOperation(value = "结束考试")
|
|
@ApiOperation(value = "结束考试")
|
|
@RequestMapping(value = "/finish", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/finish", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result finish(@RequestBody FinishParamBean param) {
|
|
public Result finish(@RequestBody FinishParamBean param) {
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
String lockKey = SystemConstant.REDIS_LOCK_STUDENT_PREFIX + teStudent.getId();
|
|
@@ -283,7 +289,8 @@ public class TEExamController {
|
|
if (param.getDurationSeconds() == null) {
|
|
if (param.getDurationSeconds() == null) {
|
|
throw new BusinessException("总用时秒数不能为空");
|
|
throw new BusinessException("总用时秒数不能为空");
|
|
}
|
|
}
|
|
- Result re = ResultUtil.ok(teExamService.finish(teStudent.getId(), param.getRecordId(), param.getType(), param.getDurationSeconds()));
|
|
|
|
|
|
+ Result re = ResultUtil.ok(teExamService
|
|
|
|
+ .finish(teStudent.getId(), param.getRecordId(), param.getType(), param.getDurationSeconds()));
|
|
ExamConstant.sendExamStopMsg(param.getRecordId(), false);
|
|
ExamConstant.sendExamStopMsg(param.getRecordId(), false);
|
|
return re;
|
|
return re;
|
|
} finally {
|
|
} finally {
|
|
@@ -291,10 +298,9 @@ public class TEExamController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
@ApiOperation(value = "查询交卷结果")
|
|
@ApiOperation(value = "查询交卷结果")
|
|
@RequestMapping(value = "/result", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/result", method = RequestMethod.POST)
|
|
- @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
|
|
|
|
|
|
+ @ApiResponses({ @ApiResponse(code = 200, message = "试卷信息") })
|
|
public Result result(@RequestBody ResultParamBean param) {
|
|
public Result result(@RequestBody ResultParamBean param) {
|
|
if (param.getRecordId() == null) {
|
|
if (param.getRecordId() == null) {
|
|
throw new BusinessException("考试记录id不能为空");
|
|
throw new BusinessException("考试记录id不能为空");
|