Browse Source

增加签到表上传接口

luoshi 4 years ago
parent
commit
2696d86a86

+ 42 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/FileController.java

@@ -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