ExamController.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package cn.com.qmth.scancentral.controller.admin;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import javax.annotation.Resource;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.core.task.AsyncTaskExecutor;
  7. import org.springframework.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import com.qmth.boot.api.annotation.Aac;
  13. import com.qmth.boot.api.constant.ApiConstant;
  14. import com.qmth.boot.core.collection.PageResult;
  15. import com.qmth.boot.core.concurrent.service.ConcurrentService;
  16. import cn.com.qmth.scancentral.bean.ExamConfigDomain;
  17. import cn.com.qmth.scancentral.bean.SubjectConfigDomain;
  18. import cn.com.qmth.scancentral.bean.User;
  19. import cn.com.qmth.scancentral.controller.BaseController;
  20. import cn.com.qmth.scancentral.entity.ExamEntity;
  21. import cn.com.qmth.scancentral.exception.ParameterExceptions;
  22. import cn.com.qmth.scancentral.service.ExamService;
  23. import cn.com.qmth.scancentral.service.StudentService;
  24. import cn.com.qmth.scancentral.service.SubjectService;
  25. import cn.com.qmth.scancentral.vo.ExamConfigVo;
  26. import cn.com.qmth.scancentral.vo.ExamUploadVo;
  27. import cn.com.qmth.scancentral.vo.ExamVo;
  28. import cn.com.qmth.scancentral.vo.SubjectConfigVo;
  29. import cn.com.qmth.scancentral.vo.examinfo.ExamInfoVo;
  30. import cn.com.qmth.scancentral.vo.examinfo.ExamQuery;
  31. import io.swagger.annotations.Api;
  32. import io.swagger.annotations.ApiOperation;
  33. import net.sf.json.JSONObject;
  34. @RestController
  35. @Api(tags = "考试接口")
  36. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/exam")
  37. @Aac(strict = false, auth = true)
  38. public class ExamController extends BaseController {
  39. @Autowired
  40. private ExamService examService;
  41. @Autowired
  42. private StudentService studentService;
  43. @Autowired
  44. private SubjectService subjectService;
  45. @ApiOperation(value = "获取考试详情")
  46. @RequestMapping(value = "/info", method = RequestMethod.POST)
  47. public ExamInfoVo info(@RequestParam Long id) {
  48. User user = getAccessUser();
  49. return examService.getExamInfoVo(id, user);
  50. }
  51. @ApiOperation(value = "获取考试列表")
  52. @RequestMapping(value = "/list", method = RequestMethod.POST)
  53. public PageResult<ExamVo> list(ExamQuery query) {
  54. User user = getAccessUser();
  55. return examService.pageQuery(query, user);
  56. }
  57. @ApiOperation(value = "启用/关闭考试")
  58. @RequestMapping(value = "/toggle", method = RequestMethod.POST)
  59. public JSONObject enable(@RequestParam Long id, @RequestParam Boolean enable) {
  60. User user = getAccessUser();
  61. JSONObject result = new JSONObject();
  62. ExamEntity exam = examService.getById(id);
  63. if (exam == null) {
  64. throw ParameterExceptions.EXAM_NOT_FOUND;
  65. }
  66. exam.setEnable(enable);
  67. exam.setUpdaterId(user.getId());
  68. exam.setUpdateTime(System.currentTimeMillis());
  69. examService.saveOrUpdate(exam);
  70. result.accumulate("enable", enable);
  71. result.accumulate("updateTime", exam.getUpdateTime());
  72. return result;
  73. }
  74. @ApiOperation(value = "修改考试参数")
  75. @RequestMapping(value = "/config", method = RequestMethod.POST)
  76. public ExamConfigVo config(@Validated ExamConfigDomain domain) {
  77. User user = getAccessUser();
  78. return examService.config(user, domain);
  79. }
  80. @ApiOperation(value = "修改考试上传状态")
  81. @RequestMapping(value = "/upload", method = RequestMethod.POST)
  82. public ExamUploadVo upload(@RequestParam Long id, @RequestParam Boolean enable) {
  83. User user = getAccessUser();
  84. ExamUploadVo vo = new ExamUploadVo();
  85. ExamEntity exam = examService.getById(id);
  86. if (exam == null) {
  87. throw ParameterExceptions.EXAM_NOT_FOUND;
  88. }
  89. exam.setEnableUpload(enable);
  90. examService.saveOrUpdate(exam);
  91. vo.setEnable(exam.getEnableUpload());
  92. vo.setUpdateTime(exam.getUpdateTime());
  93. vo.setProgress(studentService.getUploadProgress(id));
  94. return vo;
  95. }
  96. @ApiOperation(value = "修改考试科目参数")
  97. @RequestMapping(value = "/subject/config", method = RequestMethod.POST)
  98. public SubjectConfigVo subjectConfig(@Validated SubjectConfigDomain domain) {
  99. User user = getAccessUser();
  100. return subjectService.config(user, domain);
  101. }
  102. @ApiOperation(value = "修改考试实时审核状态")
  103. @RequestMapping(value = "/syncVerify", method = RequestMethod.POST)
  104. public Map<String, Object> syncVerify(@RequestParam Long examId, @RequestParam Boolean enable) {
  105. User user = getAccessUser();
  106. ExamEntity exam = examService.updateEnableSyncVerify(user,examId, enable);
  107. Map<String, Object> result = new HashMap<String, Object>();
  108. result.put("enable", enable);
  109. result.put("updateTime", exam.getUpdateTime());
  110. return result;
  111. }
  112. }