Jelajahi Sumber

3.4.4 update-20250124修改bug

xiaofei 5 bulan lalu
induk
melakukan
f8bb0bbaca

+ 2 - 17
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/DownloadLogicServiceImpl.java

@@ -250,10 +250,7 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
     @Override
     public Map<String, Object> executeExportPaperAndCardLogic(Map<String, Object> map) {
         String zipLocalRootPath = null;
-        File zipFile = null;
-        List<File> sourceFileList = null;
         try {
-            sourceFileList = new ArrayList<>();
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
 
             Long time = System.currentTimeMillis();
@@ -267,8 +264,7 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
             stringJoiner.add("卷库查询批量下载试卷包").add(SystemConstant.ZIP_PREFIX);
 
             String zipDirName = FileUtil.replaceSplit(stringJoiner.toString());
-            zipFile = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
-            zipLocalRootPath = zipFile.getParent() + File.separator + time;
+            zipLocalRootPath = FileUtil.getFileTempDirPath(true);
 
             List<ExamTaskDetailDto> examTasks = (List<ExamTaskDetailDto>) map.get("examTasks");
             for (ExamTaskDetailDto examTask : examTasks) {
@@ -303,7 +299,6 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
                                 if (Objects.nonNull(attachment)) {
                                     String fileName = dirPath + "卷" + examTaskDetail.getSerialNumber() + SystemConstant.HYPHEN + "试卷" + SystemConstant.HYPHEN + name + attachment.getType();
                                     File paperFile = fileUploadService.downloadFile(attachment, fileName);
-                                    sourceFileList.add(paperFile);
                                 }
                             }
                             // 题卡
@@ -322,7 +317,6 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
                                     localFile.createNewFile();
                                 }
                                 FileCopyUtils.copy(htmlContent.getBytes(StandardCharsets.UTF_8), localFile);
-                                sourceFileList.add(localFile);
 
                                 // PDF文件
                                 String pdfFilePathName = dirPath + "卷" + examTaskDetail.getSerialNumber() + SystemConstant.HYPHEN + "题卡" + SystemConstant.HYPHEN + name + SystemConstant.PDF_PREFIX;
@@ -334,7 +328,6 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
                                         pdfFile.createNewFile();
                                     }
                                     HtmlToPdfUtil.convert(htmlFilePathName, pdfFilePathName, "8K".equals(examCard.getPageSize()) ? PageSizeEnum.K8 : PageSizeEnum.valueOf(examCard.getPageSize()));
-                                    sourceFileList.add(pdfFile);
                                 }
                             }
                         }
@@ -342,7 +335,7 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
                 }
             }
             SysUser sysUser = sysUserService.getById(tbTask.getCreateId());
-            JSONObject jsonObject = SystemConstant.createZip(zipFile, zipLocalRootPath, zipDirName, new String(Base64Util.decode(sysUser.getPassword())));
+            JSONObject jsonObject = FileUtil.uploadEncryptZip(zipLocalRootPath, zipDirName, new String(Base64Util.decode(sysUser.getPassword())));
             tbTask.setResultFilePath(jsonObject.toJSONString());
             map.put(SystemConstant.DATA_COUNT, examTasks.size());
         } catch (Exception e) {
@@ -353,17 +346,9 @@ public class DownloadLogicServiceImpl implements DownloadLogicService {
                 ResultUtil.error(e.getMessage());
             }
         } finally {
-            if (Objects.nonNull(zipFile)) {
-                zipFile.delete();
-            }
             if (Objects.nonNull(zipLocalRootPath)) {
                 FileUtil.deleteDirectory(zipLocalRootPath);
             }
-            if (!CollectionUtils.isEmpty(sourceFileList)) {
-                for (File file : sourceFileList) {
-                    file.delete();
-                }
-            }
         }
         return map;
     }

+ 45 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileUtil.java

@@ -1,7 +1,12 @@
 package com.qmth.teachcloud.common.util;
 
+import com.alibaba.fastjson.JSONObject;
+import com.qmth.teachcloud.common.config.DictionaryConfig;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.LocalCatalogEnum;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -635,4 +640,44 @@ public class FileUtil {
         }
     }
 
+    /**
+     *
+     * @param zipLocalRootPath
+     * @param zipDirName
+     * @param password
+     * @return
+     * @throws Exception
+     */
+    public static JSONObject uploadEncryptZip(String zipLocalRootPath, String zipDirName, String password) throws Exception {
+        if (StringUtils.isBlank(password)) {
+            password = SystemConstant.ZIP_ENCRYPT_PWD;
+        }
+
+        File zipFile = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
+
+        try {
+            FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
+            DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
+            Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipLocalRootPath, password);
+
+            boolean oss = dictionaryConfig.sysDomain().isOss();
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put(SystemConstant.PATH, zipDirName);
+            String zipFileMd5 = DigestUtils.md5Hex(new FileInputStream(zipFile));
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith(SystemConstant.START_PARENT))) {//上传至oss
+                fileStoreUtil.ossUpload(zipDirName, zipFile, zipFileMd5, fileStoreUtil.getUploadEnumByPath(zipDirName).getFssType());
+                jsonObject.put(SystemConstant.TYPE, oss ? SystemConstant.OSS : SystemConstant.LOCAL);
+            } else {
+                fileStoreUtil.localUpload(zipDirName, new FileInputStream(zipFile), zipFileMd5, LocalCatalogEnum.LOCAL_FILE);
+                jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
+            }
+            jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
+            return jsonObject;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            FileUtil.deleteFile(zipFile);
+        }
+    }
+
 }