Browse Source

美术阅卷10月新增需求-图片加密配置更新

wangliang 5 years ago
parent
commit
7393094351

+ 18 - 16
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -153,7 +153,7 @@ public class CollectApi {
      * @param response
      * @throws IOException
      */
-    @RequestMapping(value = "file/image/uploadsheet/{workId}/{subjectId}/{fileName}", method = {RequestMethod.GET})
+    @RequestMapping(value = "file/image/uploadsheet/{workId}/{subjectId}/{fileName}", method = {RequestMethod.POST})
     public void imageUploadSheet(@PathVariable Long workId, @PathVariable Integer subjectId,
                                  @PathVariable String fileName,
                                  HttpServletRequest request, HttpServletResponse response) throws IOException {
@@ -183,12 +183,12 @@ public class CollectApi {
             long end = System.currentTimeMillis();
             LOGGER.info("生成原图耗时:{}", (end - start) / 1000 + "s");
 
-            String md5 = request.getHeader("md5");
-            FileInputStream in = new FileInputStream(sheetFile);
-            String sheetMD5 = DigestUtils.md5Hex(in);
-            if (!md5.equalsIgnoreCase(sheetMD5)) {
-                throw new Exception("图片md5值不一致");
-            }
+//            String md5 = request.getHeader("md5");
+//            FileInputStream in = new FileInputStream(sheetFile);
+//            String sheetMD5 = DigestUtils.md5Hex(in);
+//            if (!md5.equalsIgnoreCase(sheetMD5)) {
+//                throw new Exception("图片md5值不一致");
+//            }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
@@ -212,7 +212,7 @@ public class CollectApi {
      * @param response
      * @throws IOException
      */
-    @RequestMapping(value = "file/image/upload/{workId}/{subjectId}/{fileName}", method = {RequestMethod.GET})
+    @RequestMapping(value = "file/image/upload/{workId}/{subjectId}/{fileName}", method = {RequestMethod.POST})
     public void imageUpload(@PathVariable Long workId, @PathVariable Integer subjectId,
                             @PathVariable String fileName,
                             HttpServletRequest request, HttpServletResponse response) throws IOException {
@@ -273,7 +273,7 @@ public class CollectApi {
             inputStream = new ByteArrayInputStream(os.toByteArray());
 
             //原图删除
-            imageFileTemp.delete();
+//            imageFileTemp.delete();
 //            inputStream = new FileInputStream(thumbFileTemp);
             //缩略图删除
 //            thumbFileTemp.delete();
@@ -281,12 +281,14 @@ public class CollectApi {
             long end = System.currentTimeMillis();
             LOGGER.info("生成原图和缩略图耗时:{}", (end - start) / 1000 + "s");
 
-            String md5 = request.getHeader("md5");
-            FileInputStream in = new FileInputStream(imageFile);
-            String sliceMD5 = DigestUtils.md5Hex(in);
-            if (!md5.equalsIgnoreCase(sliceMD5)) {
-                throw new Exception("图片md5值不一致");
-            }
+//            String md5 = request.getHeader("md5");
+//            FileInputStream in = new FileInputStream(imageFileTemp);
+//            String sliceMD5 = DigestUtils.md5Hex(in);
+//            //原图删除
+            imageFileTemp.delete();
+//            if (!md5.equalsIgnoreCase(sliceMD5)) {
+//                throw new Exception("图片md5值不一致");
+//            }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
@@ -326,7 +328,7 @@ public class CollectApi {
         try {
             response.setContentType("image/jpg");
             Student student = studentRepo.findOne(studentId);
-            Subject subject = Subject.values()[subjectId - 1];
+            Subject subject = Subject.values()[subjectId];
             String path = null;
             switch (imageType) {
                 case 1:

+ 35 - 13
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/config/SystemConfig.java

@@ -1,11 +1,11 @@
 package cn.com.qmth.stmms.ms.commons.config;
 
-import java.util.UUID;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
+import java.util.UUID;
+
 /**
  * 系统配置
  * Created by zhengmin on 2016/11/18.
@@ -26,7 +26,7 @@ public class SystemConfig {
      * 缩略图目录
      */
     private String thumbDir;
-    
+
     /**
      * 原图目录
      */
@@ -37,6 +37,8 @@ public class SystemConfig {
      */
     private String watermark;
 
+    private String path = "/api/file/image/download/";
+
     public String getWatermark() {
         return watermark;
     }
@@ -61,32 +63,52 @@ public class SystemConfig {
         this.thumbDir = thumbDir;
     }
 
-    public String getThumbUrl(Long workId, String subject, String areaCode, String examNumber){
+    public String getThumbUrl(Long workId, String subject, String areaCode, String examNumber) {
         return imageServerConfig.getImageServer() + "/thumbs/" + String.valueOf(workId) + "/"
                 + subject + "/" + areaCode + "/" + examNumber + ".jpg?random=" + UUID.randomUUID().toString();
     }
 
-    public String getImageUrl(Long workId,String subject,String areaCode,String examNumber){
+    public String getImageUrl(Long workId, String subject, String areaCode, String examNumber) {
         return imageServerConfig.getImageServer() + "/images/" + String.valueOf(workId) + "/"
                 + subject + "/" + areaCode + "/" + examNumber + ".jpg?random=" + UUID.randomUUID().toString();
     }
 
-    public String getSheetUrl(Long workId,String subject,String areaCode,String examNumber){
+    public String getSheetUrl(Long workId, String subject, String areaCode, String examNumber) {
         return imageServerConfig.getImageServer() + "/sheet/" + String.valueOf(workId) + "/"
                 + subject + "/" + areaCode + "/" + examNumber + ".jpg?random=" + UUID.randomUUID().toString();
     }
 
-    public String getWaterMarkUrl(Long workId,String subject,String areaCode,String examNumber){
+    public String getWaterMarkUrl(Long workId, String subject, String areaCode, String examNumber) {
         return imageServerConfig.getImageServer() + "/watermark/" + String.valueOf(workId) + "/"
                 + subject + "/" + areaCode + "/" + examNumber + ".jpg?random=" + UUID.randomUUID().toString();
     }
 
-	public String getSheetDir() {
-		return sheetDir;
-	}
+    public String getThumbUrl(Long workId, Integer subjectId, Long studentId, Integer imageType) {
+        return imageServerConfig.getImageServer() + path + workId + "/"
+                + subjectId + "/" + studentId + "/" + imageType;
+    }
+
+    public String getImageUrl(Long workId, Integer subjectId, Long studentId, Integer imageType) {
+        return imageServerConfig.getImageServer() + path + workId + "/"
+                + subjectId + "/" + studentId + "/" + imageType;
+    }
+
+    public String getSheetUrl(Long workId, Integer subjectId, Long studentId, Integer imageType) {
+        return imageServerConfig.getImageServer() + path + workId + "/"
+                + subjectId + "/" + studentId + "/" + imageType;
+    }
+
+    public String getWaterMarkUrl(Long workId, Integer subjectId, Long studentId, Integer imageType) {
+        return imageServerConfig.getImageServer() + path + workId + "/"
+                + subjectId + "/" + studentId + "/" + imageType;
+    }
+
+    public String getSheetDir() {
+        return sheetDir;
+    }
 
-	public void setSheetDir(String sheetDir) {
-		this.sheetDir = sheetDir;
-	}
+    public void setSheetDir(String sheetDir) {
+        this.sheetDir = sheetDir;
+    }
 
 }

+ 5 - 1
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/constant/SystemConstant.java

@@ -16,7 +16,11 @@ public class SystemConstant {
             AES = "AES",
             AES_MODE = "AES/CBC/PKCS5Padding";//用这个模式,规则必须为16位
     //    public static final String AES_RULE = "0102030405060708";
-    public static final int SECRET_KEY = 0x99;//加密解密秘钥
+    public static final int SECRET_KEY = 0x99,//加密解密秘钥
+            IMAGE = 1,//裁切原图
+            THUMB = 2,//缩略图
+            SHEET = 3,//原图
+            WATER_MARK = 4;//分数水印图
 
     /**
      * 流写入

+ 38 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -1,8 +1,12 @@
 package cn.com.qmth.stmms.ms.marking.assembler;
 
+import cn.com.qmth.stmms.ms.commons.config.ImageConfig;
 import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
+import cn.com.qmth.stmms.ms.commons.constant.SystemConstant;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
+import cn.com.qmth.stmms.ms.core.domain.Student;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
+import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -22,7 +26,23 @@ public class PaperAssembler {
     @Autowired
     private SystemConfig systemConfig;
 
+    @Autowired
+    ImageConfig imageConfig;
+
+    @Autowired
+    StudentRepo studentRepo;
+
     public PaperDTO toDTO(Paper paper) {
+        String imgSrc = null;
+        String thumbSrc = null;
+        if (imageConfig.isImageEnc()) {
+            Student student = studentRepo.findByWorkIdAndExamNumber(paper.getWorkId(), paper.getExamNumber());
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
+        } else {
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+        }
         PaperDTO paperDTO = null;
         if (paper != null) {
             paperDTO = new PaperDTO();
@@ -40,8 +60,8 @@ public class PaperAssembler {
             paperDTO.setMarkedLogic(paper.isMarkedLogic());
             paperDTO.setRedoLevel(paper.getRedoLevel());
             paperDTO.setUpdatedOn(paper.getUpdatedOn());
-            String imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-            String thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+//            String imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+//            String thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
             paperDTO.setImgSrc(imgSrc);
             paperDTO.setThumbSrc(thumbSrc);
             paperDTO.setAreaCode(paper.getAreaCode());
@@ -58,6 +78,19 @@ public class PaperAssembler {
     }
 
     public PaperDTO toDTOForSheet(Paper paper) {
+        String imgSrc = null;
+        String thumbSrc = null;
+        String sheetSrc = null;
+        if (imageConfig.isImageEnc()) {
+            Student student = studentRepo.findByWorkIdAndExamNumber(paper.getWorkId(), paper.getExamNumber());
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.IMAGE);
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.THUMB);
+            sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().ordinal(), student.getId(), SystemConstant.SHEET);
+        } else {
+            imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+            thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+            sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+        }
         PaperDTO paperDTO = null;
         if (paper != null) {
             paperDTO = new PaperDTO();
@@ -75,9 +108,9 @@ public class PaperAssembler {
             paperDTO.setMarkedLogic(paper.isMarkedLogic());
             paperDTO.setRedoLevel(paper.getRedoLevel());
             paperDTO.setUpdatedOn(paper.getUpdatedOn());
-            String imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-            String thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
-            String sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+//            String imgSrc = systemConfig.getImageUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+//            String thumbSrc = systemConfig.getThumbUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
+//            String sheetSrc = systemConfig.getSheetUrl(paper.getWorkId(), paper.getSubject().toString(), paper.getAreaCode(), paper.getExamNumber());
             paperDTO.setImgSrc(imgSrc);
             paperDTO.setThumbSrc(thumbSrc);
             paperDTO.setSheetSrc(sheetSrc);