|
@@ -2,8 +2,10 @@ package cn.com.qmth.stmms.api.controller;
|
|
|
|
|
|
import cn.com.qmth.stmms.api.exception.ApiException;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Exam;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
@@ -53,6 +55,9 @@ public class FileController extends BaseApiController {
|
|
|
@Autowired
|
|
|
private ExamStudentService studentService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ExamPackageService packageService;
|
|
|
+
|
|
|
private Exam validateExam(ApiUser au, Integer examId, ExamType... types) {
|
|
|
Exam exam = examService.findById(examId);
|
|
|
if (exam == null || !exam.getSchoolId().equals(au.getSchoolId()) || exam.getStatus() != ExamStatus.START) {
|
|
@@ -64,6 +69,14 @@ public class FileController extends BaseApiController {
|
|
|
return exam;
|
|
|
}
|
|
|
|
|
|
+ private ExamPackage validateExamPackage(Integer examId, String packageCode) {
|
|
|
+ ExamPackage ep = packageService.find(examId, packageCode);
|
|
|
+ if (ep == null) {
|
|
|
+ throw ApiException.QUERY_PARAM_ERROR.appendMessage(": packageCode error");
|
|
|
+ }
|
|
|
+ return ep;
|
|
|
+ }
|
|
|
+
|
|
|
private ExamStudent validateExamStudent(Integer examId, String examNumber) {
|
|
|
ExamStudent student = studentService.findByExamIdAndExamNumber(examId, examNumber);
|
|
|
if (student == null) {
|
|
@@ -86,6 +99,12 @@ public class FileController extends BaseApiController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void validateIndex(Integer index) {
|
|
|
+ if (index == null || index <= 0) {
|
|
|
+ throw ApiException.QUERY_PARAM_ERROR.appendMessage(": index error");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@RequestMapping(value = "/sheet/upload", method = RequestMethod.POST)
|
|
|
@RoleRequire({ Role.SCHOOL_ADMIN, Role.SCHOOL_DEV, Role.SCANNER })
|
|
|
@ResponseBody
|
|
@@ -95,6 +114,7 @@ public class FileController extends BaseApiController {
|
|
|
ApiUser au = RequestUtils.getApiUser(request);
|
|
|
validateExam(au, examId, ExamType.SCAN_IMAGE);
|
|
|
validateExamStudent(examId, examNumber);
|
|
|
+ validateIndex(index);
|
|
|
try {
|
|
|
fileService.uploadSheet(file.getInputStream(), md5, examId, examNumber, index);
|
|
|
} catch (Exception e) {
|
|
@@ -113,7 +133,9 @@ public class FileController extends BaseApiController {
|
|
|
ApiUser au = RequestUtils.getApiUser(request);
|
|
|
validateExam(au, examId, ExamType.SCAN_IMAGE);
|
|
|
validateExamStudent(examId, examNumber);
|
|
|
+ validateIndex(index);
|
|
|
try {
|
|
|
+ // TODO - examNumber -> secretNumber
|
|
|
fileService.uploadSlice(file.getInputStream(), md5, examId, examNumber, index);
|
|
|
} catch (Exception e) {
|
|
|
log.error("slice upload error", e);
|
|
@@ -131,6 +153,7 @@ public class FileController extends BaseApiController {
|
|
|
validateExam(au, examId, ExamType.MULTI_MEDIA);
|
|
|
validateExamStudent(examId, examNumber);
|
|
|
try {
|
|
|
+ // TODO - examNumber -> secretNumber
|
|
|
fileService.uploadJson(file.getInputStream(), md5, examId, examNumber);
|
|
|
} catch (Exception e) {
|
|
|
log.error("json upload error", e);
|
|
@@ -139,6 +162,25 @@ public class FileController extends BaseApiController {
|
|
|
return result(true);
|
|
|
}
|
|
|
|
|
|
+ @RequestMapping(value = "/package/upload", method = RequestMethod.POST)
|
|
|
+ @RoleRequire({ Role.SCHOOL_ADMIN, Role.SCHOOL_DEV, Role.SCANNER })
|
|
|
+ @ResponseBody
|
|
|
+ public JSONObject uploadPackage(HttpServletRequest request, @RequestParam Integer examId,
|
|
|
+ @RequestParam String packageCode, @RequestParam Integer index, @RequestParam String md5,
|
|
|
+ @RequestParam MultipartFile file) {
|
|
|
+ ApiUser au = RequestUtils.getApiUser(request);
|
|
|
+ validateExam(au, examId, ExamType.SCAN_IMAGE);
|
|
|
+ validateExamPackage(examId, packageCode);
|
|
|
+ validateIndex(index);
|
|
|
+ try {
|
|
|
+ fileService.uploadPackage(file.getInputStream(), md5, examId, packageCode, index);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("package upload error", e);
|
|
|
+ throw ApiException.FILE_UPLOAD_ERROR.replaceMessage("package upload error: " + e.getMessage());
|
|
|
+ }
|
|
|
+ return result(true);
|
|
|
+ }
|
|
|
+
|
|
|
@RequestMapping(value = "/paper/upload", method = RequestMethod.POST)
|
|
|
@RoleRequire({ Role.SCHOOL_ADMIN, Role.SCHOOL_DEV, Role.SCANNER })
|
|
|
@ResponseBody
|