package com.ruoyi.sim.controller; import java.util.List; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.sim.domain.RealExamCollection; import com.ruoyi.sim.domain.vo.RealExamVo; import com.ruoyi.sim.service.impl.RealExamService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.sim.domain.RealExam; import com.ruoyi.common.core.page.TableDataInfo; /** * 考试Controller * * @author tom * @date 2024-12-15 */ @RestController @RequestMapping("/sim/real-exam") @Api("考试Controller") public class RealExamController extends BaseController { private static final Logger l = LoggerFactory.getLogger(RealExamController.class); @Autowired private RealExamService realExamService; /** * 查询考试列表 */ // @GetMapping("/teacher/list") // @ApiOperation("[老师]查询学生考试列表") public TableDataInfo list(RealExam realExam) { startPage(); List list = realExamService.selectRealExamList(realExam); return getDataTable(list); } @GetMapping("/student/exam/listByUserId/") @ApiOperation("[学生]查询userId学生考试列表") public TableDataInfo listByUserId() { // todo: RealExam q = new RealExam(); q.setUserId(SecurityUtils.getUserId()); startPage(); List list = realExamService.list(q); // todo: return getDataTable(list); } @GetMapping("/student/exam/enter/{examId}") @ApiOperation("[学生]进入考试") public AjaxResult studentEnterRealExam(@PathVariable("examId") Long examId) { return realExamService.studentEnterRealExam(examId); } @GetMapping("/student/exam/prepare/{examId}") @ApiOperation("[轮询][学生]准备考试界面") public AjaxResult studentLoopPrepareRealExam(@PathVariable("examId") Long examId) { return realExamService.studentLoopPrepareRealExam(examId); } @GetMapping("/student/exam/start/{examId}") @ApiOperation("[学生][正式使用]开始考试") public AjaxResult studentStartRealExam(@PathVariable("examId") Long examId, @RequestParam final String ip) { l.info("[学生][正式使用]开始考试;examId = {};ip = {}", examId, ip); return realExamService.studentStartRealExam(examId, ip, RealExamCollection.Type.EXAM); } @GetMapping("/student/exercise/start/{examId}") @ApiOperation("[学生][正式使用]开始训练") public AjaxResult studentStartRealExercise(@PathVariable("examId") Long examId, @RequestParam final String ip) { l.info("[学生][正式使用]开始训练;examId = {};ip = {}", examId, ip); return realExamService.studentStartRealExam(examId, ip, RealExamCollection.Type.EXERCISE); } @GetMapping("/student/self-exercise/start/{examId}") @ApiOperation("[学生][正式使用]开始练习") public AjaxResult studentStartRealSelfExercise(@PathVariable("examId") Long examId, @RequestParam final String ip) { l.info("[学生][正式使用]开始练习;examId = {};ip = {}", examId, ip); return realExamService.studentStartRealExam(examId, ip, RealExamCollection.Type.SELF_EXERCISE); } @GetMapping("/student/refresh-sim-state") @ApiOperation("刷新模拟器状态") public AjaxResult studentRefreshSimState(@RequestParam final String ip) { l.info("刷新模拟器状态;ip = {}", ip); return realExamService.studentRefreshSimState(ip); } @GetMapping("/student/exam/answering/{examId}") @ApiOperation("[轮询][学生]正在考试界面") public AjaxResult studentLoopAnsweringRealExam(@PathVariable("examId") Long examId) { return realExamService.studentLoopAnsweringRealExam(examId); } @GetMapping("/student/exam/submit/{examId}") @ApiOperation("[学生][正式使用]交卷考试") public AjaxResult studentSubmitRealExam(@PathVariable("examId") Long examId, @RequestParam final String ip) { l.info("[学生][正式使用]交卷考试;examId = {};ip = {}", examId, ip); return realExamService.studentSubmitRealExam(examId, ip, RealExamCollection.Type.EXAM); } @GetMapping("/student/exercise/submit/{examId}") @ApiOperation("[学生][正式使用]交卷训练") public AjaxResult studentSubmitRealExercise(@PathVariable("examId") Long examId, @RequestParam final String ip) { l.info("[学生][正式使用]交卷训练;examId = {};ip = {}", examId, ip); return realExamService.studentSubmitRealExam(examId, ip, RealExamCollection.Type.EXERCISE); } @GetMapping("/student/self-exercise/submit/{examId}") @ApiOperation("[学生][正式使用]交卷练习") public AjaxResult studentSubmitRealSelfExercise(@PathVariable("examId") Long examId, @RequestParam final String ip) { l.info("[学生][正式使用]交卷练习;examId = {};ip = {}", examId, ip); return realExamService.studentSubmitRealExam(examId, ip, RealExamCollection.Type.SELF_EXERCISE); } @GetMapping("/student/exam/report/{examId}") @ApiOperation("[轮询][学生]结束考试界面") public AjaxResult studentLoopPostRealExam(@PathVariable("examId") Long examId) { return realExamService.studentLoopPostRealExam(examId); } @GetMapping("/student/exam/login-success") @ApiOperation("[学员]登录成功后调用") public AjaxResult studentLoginSuccess(@RequestParam final Long userId, @RequestParam final String ip) { return realExamService.studentLoginSuccess(userId, ip); } // @GetMapping(value = "/student/{examId}") // @ApiOperation("[学生][轮询]获取考试详细信息") public AjaxResult getInfoStudent(@PathVariable("examId") Long examId) { return success(realExamService.selectRealExamByExamId(examId)); } // @PreAuthorize("@ss.hasPermi('sim:real-exam:query')") // @GetMapping(value = "/teacher/{examId}") // @ApiOperation("[老师]获取考试详细信息") public AjaxResult getInfoTeacher(@PathVariable("examId") Long examId) { return success(realExamService.selectRealExamByExamId(examId)); } /** * 新增考试 */ // @PreAuthorize("@ss.hasPermi('sim:real-exam:add')") @Log(title = "考试", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody RealExam realExam) { return toAjax(realExamService.insertRealExam(realExam)); } /** * 修改考试 */ // @PreAuthorize("@ss.hasPermi('sim:real-exam:edit')") @Log(title = "考试", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody RealExam realExam) { return toAjax(realExamService.updateRealExam(realExam)); } /** * 删除考试 */ // @PreAuthorize("@ss.hasPermi('sim:real-exam:remove')") @Log(title = "考试", businessType = BusinessType.DELETE) // @DeleteMapping("/{examIds}") public AjaxResult remove(@PathVariable Long[] examIds) { return toAjax(realExamService.deleteRealExamByExamIds(examIds)); } }