/* * ************************************************* * Copyright (c) 2018 QMTH. All Rights Reserved. * Created by Deason on 2018-07-16 17:53:55. * ************************************************* */ package cn.com.qmth.examcloud.app.controller; import cn.com.qmth.examcloud.app.model.Result; import cn.com.qmth.examcloud.app.service.CoreExamWorkService; import cn.com.qmth.examcloud.app.service.CoreOeService; import cn.com.qmth.examcloud.app.service.CoreQuestionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import static cn.com.qmth.examcloud.app.model.Constants.PARAM_APP_KEY; import static cn.com.qmth.examcloud.app.model.Constants.PARAM_APP_TOKEN; /** * 在线练习相关接口 * * @version v1.0 * @author: QMTH * @since: 2018/7/16 */ @RestController @RequestMapping("${$rmp}/v2") @Api(tags = "在线练习相关接口") public class PracticeExamRestController { @Autowired private CoreExamWorkService examWorkService; @Autowired private CoreOeService oeService; @Autowired private CoreQuestionService questionService; @ApiOperation(value = "获取某考生的“考试批次”列表接口") @RequestMapping(value = "/exam/practice/list", method = {RequestMethod.POST}) public Result getPracticeExamList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String studentId) throws Exception { return examWorkService.getPracticeExamList(key, token, studentId); } @ApiOperation(value = "获取某考试批次下的课程列表接口") @RequestMapping(value = "/exam/practice/course/list", method = {RequestMethod.POST}) public Result getPracticeExamCourseList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examId) throws Exception { return oeService.getPracticeExamCourseList(key, token, examId); } @ApiOperation(value = "获取当前练习的剩余作答时间接口") @RequestMapping(value = "/exam/record/heartbeat", method = {RequestMethod.POST}) public Result getExamRecordHeartbeat(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token) throws Exception { return oeService.getExamRecordHeartbeat(key, token); } @ApiOperation(value = "考生“开始练习”接口") @RequestMapping(value = "/exam/record/start", method = {RequestMethod.POST}) public Result startPracticeExamRecord(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examStudentId) throws Exception { return oeService.startPracticeExamRecord(key, token, examStudentId); } @ApiOperation(value = "记录切屏次数接口") @PostMapping(value = "/exam/record/switch/screen") public Result switchScreen(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examRecordDataId) throws Exception { return oeService.switchScreen(key, token, examRecordDataId); } @ApiOperation(value = "获取结束练习的试卷大题结构信息接口") @RequestMapping(value = "/exam/admin/record/paper/struct/list", method = {RequestMethod.POST}) public Result getExamAdminRecordPaperStructList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examRecordId, @RequestParam(required = false) String fromCache) throws Exception { return oeService.getAdminExamPaperStructList(key, token, examRecordId, fromCache); } @ApiOperation(value = "获取当前练习的试卷大题结构信息接口") @RequestMapping(value = "/exam/student/record/paper/struct/list", method = {RequestMethod.POST}) public Result getExamStudentRecordPaperStructList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examRecordId) throws Exception { return oeService.getStudentExamPaperStructList(key, token, examRecordId); } @ApiOperation(value = "获取当前练习的考试基本信息接口") @RequestMapping(value = "/exam/info/{examId}", method = {RequestMethod.POST}) public Result getExamInfo(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @PathVariable Long examId) throws Exception { return examWorkService.getExamInfo(key, token, examId); } @ApiOperation(value = "获取当前练习的试卷试题列表接口") @RequestMapping(value = "/exam/record/paper/question/list", method = {RequestMethod.POST}) public Result getExamRecordPaperQuestionList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token) throws Exception { return oeService.getExamRecordPaperQuestionList(key, token); } @ApiOperation(value = "获取考生作答的某个试题的详细信息接口") @RequestMapping(value = "/exam/record/paper/question/detail/{questionId}/{examRecordId}", method = {RequestMethod.POST}) public Result questionDetail(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @PathVariable String questionId, @PathVariable String examRecordId) throws Exception { return oeService.getExamRecordPaperQuestionDetail(key, token, questionId, examRecordId); } @ApiOperation(value = "保存或更新考生作答的某个试题答案接口") @RequestMapping(value = "/exam/record/paper/question/answer/update", method = {RequestMethod.POST}) public Result updateExamRecordPaperQuestionAnswer(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam Integer order, @RequestParam String studentAnswer, @RequestParam(required = false) String audioPlayTimes) throws Exception { return oeService.updateExamRecordPaperQuestionAnswer(key, token, order, studentAnswer, audioPlayTimes); } @ApiOperation(value = "当前练习的交卷接口") @RequestMapping(value = "/exam/record/submit", method = {RequestMethod.POST}) public Result submitPracticeExamRecord(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token) throws Exception { return oeService.submitPracticeExamRecord(key, token); } @ApiOperation(value = "检查考生当前是否有正在进行的练习记录接口") @RequestMapping(value = "/exam/record/online/check", method = {RequestMethod.POST}) public Result checkOnlineExamRecord(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token) throws Exception { return oeService.checkOnlineExamRecord(key, token); } @ApiOperation(value = "获取当前考生的当前课程的历史练习记录接口") @RequestMapping(value = "/exam/record/practice/course/history/list", method = {RequestMethod.POST}) public Result getExamRecordPracticeHistoryList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examStudentId) throws Exception { return oeService.getExamRecordPracticeHistoryList(key, token, examStudentId); } @ApiOperation(value = "获取成绩报告的答题情况统计接口") @RequestMapping(value = "/exam/record/total", method = {RequestMethod.POST}) public Result getExamRecordTotalInfo(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examRecordId, @RequestParam(required = false) String fromCache) throws Exception { return oeService.getExamRecordTotalInfo(key, token, examRecordId, fromCache); } @ApiOperation(value = "获取作答的题列表接口") @RequestMapping(value = "/exam/record/paper/question/detail/list", method = {RequestMethod.POST}) public Result getExamRecordQuestionDetailList(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String examRecordId) throws Exception { return oeService.getExamRecordQuestionDetailList(key, token, examRecordId); } @ApiOperation(value = "获取当前试题的音频已播放次数接口") @RequestMapping(value = "/exam/record/paper/question/get/playtimes", method = {RequestMethod.POST}) public Result getExamRecordQuestionAudioPlayTimes(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String questionId) throws Exception { return oeService.getExamRecordQuestionAudioPlayTimes(key, token, questionId); } @ApiOperation(value = "更新当前试题的音频已播放次数接口") @RequestMapping(value = "/exam/record/paper/question/update/playtimes", method = {RequestMethod.POST}) public Result updateExamRecordQuestionAudioPlayTimes(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String questionId, @RequestParam String mediaName) throws Exception { return oeService.updateExamRecordQuestionAudioPlayTimes(key, token, questionId, mediaName); } @ApiOperation(value = "开考前查询“考试说明”") @RequestMapping(value = "/exam/practice/before/{examId}/{type}", method = {RequestMethod.POST}) public Result getBeforeExamRemark(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @PathVariable Long examId, @PathVariable String type) throws Exception { return examWorkService.getBeforeExamRemark(key, token, examId, type); } @ApiOperation(value = "查询练习记录配置信息") @RequestMapping(value = "/exam/practice/end/findExamRecordDataEntity/{examRecordDataId}", method = {RequestMethod.POST}) public Result findExamRecordDataEntity(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @PathVariable Long examRecordDataId, @RequestParam(required = false) String fromCache) throws Exception { return oeService.findExamRecordDataEntity(key, token, examRecordDataId, fromCache); } @ApiOperation(value = "查询练习记录试题列表") @RequestMapping(value = "/exam/practice/end/getExamRecordQuestions/{examRecordDataId}", method = {RequestMethod.POST}) public Result getExamRecordQuestions(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @PathVariable Long examRecordDataId, @RequestParam(required = false) String fromCache) throws Exception { return oeService.getExamRecordQuestions(key, token, examRecordDataId, fromCache); } @ApiOperation(value = "查询某个试题内容") @RequestMapping(value = "/exam/practice/end/question", method = {RequestMethod.POST}) public Result getQuestion(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam String courseCode, @RequestParam Long examId, @RequestParam String groupCode, @RequestParam String questionId) throws Exception { return questionService.getQuestion(key, token, courseCode, examId, groupCode, questionId); } @ApiOperation(value = "获取冻结时间") @RequestMapping(value = "/exam/practice/getFreezeTime", method = {RequestMethod.POST}) public Result getFreezeTime(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @RequestParam Long examId) throws Exception { return examWorkService.getFreezeTime(key, token, examId); } @ApiOperation(value = "获取文件上传类型") @RequestMapping(value = "/exam/practice/getUpLoadType/{examId}", method = {RequestMethod.POST}) public Result getUpLoadType(@RequestHeader(name = PARAM_APP_KEY) String key, @RequestHeader(name = PARAM_APP_TOKEN) String token, @PathVariable Long examId) throws Exception { return examWorkService.getUpLoadType(key, token, examId); } }