Explorar o código

Merge branch 'dev_v3.2.2' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v3.2.2

 Conflicts:
	distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
	teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
	teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicSchoolServiceImpl.java
xiaof %!s(int64=2) %!d(string=hai) anos
pai
achega
ac54eb86fc
Modificáronse 36 ficheiros con 640 adicións e 983 borrados
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/SysRolePrivilegeParams.java
  2. 9 30
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  3. 33 23
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java
  4. 78 77
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  5. 79 130
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  6. 28 78
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncExamStudentScoreServiceImpl.java
  7. 1 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java
  8. 209 260
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  9. 5 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/HtmlToJpgUtil.java
  10. 5 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java
  11. 1 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java
  12. 2 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java
  13. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/DataPermissionInfo.java
  14. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/DataPermissionRule.java
  15. 4 13
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/config/DictionaryConfig.java
  16. 56 50
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  17. 0 28
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssLocalFileDomain.java
  18. 0 28
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssLocalPdfDomain.java
  19. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicRoleDataPermission.java
  20. 1 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/DataPermissionTypeEnum.java
  21. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/LocalCatalogEnum.java
  22. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicRoleDataPermissionMapper.java
  23. 4 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicRoleDataPermissionService.java
  24. 37 29
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AttachmentCommonServiceImpl.java
  25. 5 5
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AuthInfoServiceImpl.java
  26. 9 18
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicAttachmentServiceImpl.java
  27. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java
  28. 7 11
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java
  29. 25 89
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java
  30. 12 24
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/TeachCloudReportTaskUtils.java
  31. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileStoreUtil.java
  32. 1 1
      teachcloud-common/src/main/resources/mapper/BasicRoleDataPermissionMapper.xml
  33. 9 20
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/CallPrintOpenApiServiceImpl.java
  34. 4 9
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java
  35. 1 4
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CalculateTaskTemplate.java
  36. 1 2
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysController.java

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/SysRolePrivilegeParams.java

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.bean.params;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionInfo;
 import com.qmth.teachcloud.common.annotation.EditKey;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Length;

+ 9 - 30
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -16,7 +16,6 @@ import com.qmth.teachcloud.common.bean.dto.stmms.PicConfig;
 import com.qmth.teachcloud.common.bean.dto.stmms.QuestionBaseDTO;
 import com.qmth.teachcloud.common.bean.dto.stmms.QuestionDTO;
 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.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicCollege;
@@ -535,8 +534,9 @@ public class DataSyncServiceImpl implements DataSyncService {
             File file = null;
             try {
                 // 文件临时目录
-                String filePath = getTempDir(SyncFileTypeEnum.CARD);
-                file = createJsonFile(filePath, cardDetail.getContent());
+                String dirName = "upload-temp" + File.separator + SyncFileTypeEnum.CARD.name().toLowerCase() + File.separator + System.currentTimeMillis();
+                file = SystemConstant.getFileTempDirVar(dirName, SystemConstant.getNanoId() + ".json");
+                file = createJsonFile(file.getPath(), cardDetail.getContent());
                 if (file.exists()) {
                     String uploadCardUrl = cloudMarkingTaskUtils.syncFile(schoolId, String.valueOf(thirdRelateId), examTask.getCourseCode() + s + examTask.getSequence(), SyncFileTypeEnum.CARD, file);
                     if (StringUtils.isNotBlank(uploadCardUrl)) {
@@ -548,27 +548,10 @@ public class DataSyncServiceImpl implements DataSyncService {
             } catch (Exception e) {
                 throw ExceptionResultEnum.ERROR.exception(e.getMessage());
             } finally {
-                if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss()) {
-                    if (file != null && file.exists()) {
-                        file.delete();
-                    }
+                if (file != null && file.exists()) {
+                    file.delete();
                 }
             }
-
-        }
-    }
-
-    /**
-     * 上传文件临时目录
-     *
-     * @param type 同步类型
-     */
-    private String getTempDir(SyncFileTypeEnum type) {
-        DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            return dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + "upload-temp" + File.separator + type.name().toLowerCase() + File.separator + System.currentTimeMillis();
-        } else {
-            return dictionaryConfig.fssPublicDomain().getConfig() + File.separator + "upload-temp" + File.separator + type.name().toLowerCase() + File.separator + System.currentTimeMillis();
         }
     }
 
@@ -595,15 +578,9 @@ public class DataSyncServiceImpl implements DataSyncService {
      * @param content 要生成的文件内容
      */
     public static File createJsonFile(String url, String content) {
-
-        File file = new File(url);
-        if (!file.exists()) {
-            file.mkdirs();
-        }
         BufferedWriter out = null;
-        file = new File(file, UUID.randomUUID().toString() + ".json");
+        File file = new File(url);
         try {
-            file.createNewFile();
             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
             out.write(content);
         } catch (Exception e) {
@@ -631,7 +608,9 @@ public class DataSyncServiceImpl implements DataSyncService {
                     throw ExceptionResultEnum.ERROR.exception("附件数据异常");
                 }
                 String fileName = attachment.getName() + SystemConstant.HYPHEN + name + attachment.getType();
-                return teachcloudCommonService.copyFile(getTempDir(type), fileName, attachment);
+                String dirName = "upload-temp" + File.separator + type.name().toLowerCase() + File.separator + System.currentTimeMillis();
+                File file = SystemConstant.getFileTempDirVar(dirName, SystemConstant.getNanoId() + ".json");
+                return teachcloudCommonService.copyFile(file.getPath(), fileName, attachment);
             }
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception(e.getMessage());

+ 33 - 23
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -30,6 +30,7 @@ import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -285,32 +286,41 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     @Override
     public void downloadFiles(HttpServletResponse response, ArraysParams arraysParams) throws Exception {
         // 路径规则:download-temp/{time}/{schoolId}/{courseCode}-{couseName}/{paperNumber}/{fileName}
-        long time = System.nanoTime();
+        File fileTemp = null;
         String rootPath = null;
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            rootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + time;
-        } else {
-            rootPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + time;
-        }
-        Long[] cardIds = arraysParams.getIds();
-        // 根据题卡取命题任务
-        for (Long cardId : cardIds) {
-            List<ExamTask> examTasks = examTaskService.listExamTaskByCardId(cardId);
-            if (examTasks.isEmpty() || examTasks.size() > 1) {
-                throw ExceptionResultEnum.ERROR.exception("题卡数据异常");
+        try {
+            long time = System.nanoTime();
+            fileTemp = SystemConstant.getFileTempDirVar(String.valueOf(time) + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
+            rootPath = fileTemp.getParent();
+            Long[] cardIds = arraysParams.getIds();
+            // 根据题卡取命题任务
+            for (Long cardId : cardIds) {
+                List<ExamTask> examTasks = examTaskService.listExamTaskByCardId(cardId);
+                if (examTasks.isEmpty() || examTasks.size() > 1) {
+                    throw ExceptionResultEnum.ERROR.exception("题卡数据异常");
+                }
+                ExamTask examTask = examTasks.get(0);
+                StringJoiner sj = new StringJoiner(File.separator);
+                sj.add(rootPath).add(examTask.getSchoolId().toString()).add(examTask.getCourseCode() + SystemConstant.HYPHEN + examTask.getCourseName()).add(examTask.getPaperNumber());
+
+                // 附件ID
+                ExamCardDetail examCardDetail = examCardDetailService.getByCardId(cardId);
+                BasicAttachment attachment = basicAttachmentService.getById(examCardDetail.getCustAttachmentId());
+                String fileName = attachment.getName() + attachment.getType();
+                teachcloudCommonService.copyFile(sj.toString(), fileName, attachment);
+            }
+            // 压缩
+            teachcloudCommonService.downloadFileAndZip(response, rootPath, time);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+        } finally {
+            if (Objects.nonNull(fileTemp)) {
+                fileTemp.delete();
+            }
+            if (Objects.nonNull(rootPath)) {
+                ConvertUtil.delFolder(rootPath);
             }
-            ExamTask examTask = examTasks.get(0);
-            StringJoiner sj = new StringJoiner(File.separator);
-            sj.add(rootPath).add(examTask.getSchoolId().toString()).add(examTask.getCourseCode() + SystemConstant.HYPHEN + examTask.getCourseName()).add(examTask.getPaperNumber());
-
-            // 附件ID
-            ExamCardDetail examCardDetail = examCardDetailService.getByCardId(cardId);
-            BasicAttachment attachment = basicAttachmentService.getById(examCardDetail.getCustAttachmentId());
-            String fileName = attachment.getName() + attachment.getType();
-            teachcloudCommonService.copyFile(sj.toString(), fileName, attachment);
         }
-        // 压缩
-        teachcloudCommonService.downloadFileAndZip(response, rootPath, time);
     }
 
     @Override

+ 78 - 77
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -992,92 +992,93 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
         String paperAttachmentIds = examTaskDetailPdfDownloadDto.getPaperAttachmentIds();
         List<JSONObject> jsonObjectList = JSONObject.parseArray(paperAttachmentIds, JSONObject.class);
-        // 本地保存目录
-        Long time = System.currentTimeMillis();
+        File tempFile = null;
         String rootPath = null;
-        StringJoiner dirPath = new StringJoiner("");
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            rootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + time;
-            dirPath = dirPath.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-        } else {
-            rootPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + time;
-            dirPath = dirPath.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
-        }
-        dirPath = dirPath.add(String.valueOf(time)).add(File.separator)
-                .add(examTaskDetailPdfDownloadDto.getSemesterName()).add(File.separator)
-                .add(examTaskDetailPdfDownloadDto.getExamName()).add(File.separator)
-                .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(File.separator)
-                .add(examTaskDetailPdfDownloadDto.getPaperNumber()).add(File.separator)
-                .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(SystemConstant.HYPHEN)
-                .add(examTaskDetailPdfDownloadDto.getPaperNumber()).add(SystemConstant.HYPHEN);
-        List<File> fileList = new ArrayList<>();
-        // 试卷
-        for (JSONObject jsonObject : jsonObjectList) {
-            String id = jsonObject.get("attachmentId").toString();
-            String name = jsonObject.get("name").toString();
-            if (StringUtils.isNotBlank(id)) {
-                BasicAttachment attachment = basicAttachmentService.getById(id);
-                if (attachment == null) {
-                    throw ExceptionResultEnum.ERROR.exception("附件数据异常");
-                }
-                StringJoiner paperPath = new StringJoiner("");
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    paperPath = paperPath.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                } else {
-                    paperPath = paperPath.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
-                }
-                paperPath = paperPath.add(String.valueOf(time)).add(File.separator)
-                        .add(examTaskDetailPdfDownloadDto.getSemesterName()).add(File.separator)
-                        .add(examTaskDetailPdfDownloadDto.getExamName()).add(File.separator)
-                        .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(File.separator)
-                        .add(examTaskDetailPdfDownloadDto.getPaperNumber()).add(File.separator);
-                String fileName = examTaskDetailPdfDownloadDto.getCourseNameCode() + SystemConstant.HYPHEN + examTaskDetailPdfDownloadDto.getPaperNumber() + SystemConstant.HYPHEN + "试卷" + SystemConstant.HYPHEN + name + attachment.getType();
-                File file = teachcloudCommonService.copyFile(paperPath.toString(), fileName, attachment);
-                if (Objects.nonNull(file)) {
-                    fileList.add(file);
+        try {
+            // 本地保存目录
+            Long time = System.currentTimeMillis();
+            tempFile = SystemConstant.getFileTempDirVar(String.valueOf(time) + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
+            rootPath = tempFile.getParent();
+            StringJoiner dirPath = new StringJoiner("");
+            dirPath = dirPath.add(String.valueOf(time)).add(File.separator)
+                    .add(examTaskDetailPdfDownloadDto.getSemesterName()).add(File.separator)
+                    .add(examTaskDetailPdfDownloadDto.getExamName()).add(File.separator)
+                    .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(File.separator)
+                    .add(examTaskDetailPdfDownloadDto.getPaperNumber()).add(File.separator)
+                    .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(SystemConstant.HYPHEN)
+                    .add(examTaskDetailPdfDownloadDto.getPaperNumber()).add(SystemConstant.HYPHEN);
+            List<File> fileList = new ArrayList<>();
+            // 试卷
+            for (JSONObject jsonObject : jsonObjectList) {
+                String id = jsonObject.get("attachmentId").toString();
+                String name = jsonObject.get("name").toString();
+                if (StringUtils.isNotBlank(id)) {
+                    BasicAttachment attachment = basicAttachmentService.getById(id);
+                    if (attachment == null) {
+                        throw ExceptionResultEnum.ERROR.exception("附件数据异常");
+                    }
+                    StringJoiner paperPath = new StringJoiner("");
+                    paperPath = paperPath.add(String.valueOf(time)).add(File.separator)
+                            .add(examTaskDetailPdfDownloadDto.getSemesterName()).add(File.separator)
+                            .add(examTaskDetailPdfDownloadDto.getExamName()).add(File.separator)
+                            .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(File.separator)
+                            .add(examTaskDetailPdfDownloadDto.getPaperNumber()).add(File.separator);
+                    String fileName = examTaskDetailPdfDownloadDto.getCourseNameCode() + SystemConstant.HYPHEN + examTaskDetailPdfDownloadDto.getPaperNumber() + SystemConstant.HYPHEN + "试卷" + SystemConstant.HYPHEN + name + attachment.getType();
+                    File file = teachcloudCommonService.copyFile(paperPath.toString(), fileName, attachment);
+                    if (Objects.nonNull(file)) {
+                        fileList.add(file);
+                    }
                 }
-            }
 
-            // 题卡
-            Long cardId = Long.parseLong(jsonObject.getString("cardId"));
-            if (cardId != null) {
-                ExamCard examCard = examCardService.getById(cardId);
+                // 题卡
+                Long cardId = Long.parseLong(jsonObject.getString("cardId"));
+                if (cardId != null) {
+                    ExamCard examCard = examCardService.getById(cardId);
 
-                String cardHtmlPath = dirPath.toString() + "题卡" + SystemConstant.HYPHEN + name + SystemConstant.HTML_PREFIX;
-                String cardPdfPath = dirPath.toString() + "题卡" + SystemConstant.HYPHEN + name + SystemConstant.PDF_PREFIX;
+                    String cardHtmlPath = dirPath.toString() + "题卡" + SystemConstant.HYPHEN + name + SystemConstant.HTML_PREFIX;
+                    String cardPdfPath = dirPath.toString() + "题卡" + SystemConstant.HYPHEN + name + SystemConstant.PDF_PREFIX;
 
-                ExamCardDetail examCardDetail = examCardDetailService.getByCardId(examCard.getId());
-                String htmlContent;
-                // 通用模板
-                if (MakeMethodEnum.SELECT.equals(examCard.getMakeMethod())) {
-                    htmlContent = createPdfUtil.resetHtmlTemplateBar(examCardDetail.getHtmlContent());
-                } else {
-                    BasicCardRule basicCardRule = basicCardRuleService.getById(examTask.getCardRuleId());
-                    htmlContent = createPdfUtil.replaceHtmlCard(examCardDetail, basicCardRule);
-                }
+                    ExamCardDetail examCardDetail = examCardDetailService.getByCardId(examCard.getId());
+                    String htmlContent;
+                    // 通用模板
+                    if (MakeMethodEnum.SELECT.equals(examCard.getMakeMethod())) {
+                        htmlContent = createPdfUtil.resetHtmlTemplateBar(examCardDetail.getHtmlContent());
+                    } else {
+                        BasicCardRule basicCardRule = basicCardRuleService.getById(examTask.getCardRuleId());
+                        htmlContent = createPdfUtil.replaceHtmlCard(examCardDetail, basicCardRule);
+                    }
 
-                // html
-                File htmlFile = new File(cardHtmlPath);
-                if (!htmlFile.getParentFile().exists()) {
-                    htmlFile.getParentFile().mkdirs();
-                }
-                // 生成html文件
-                FileCopyUtils.copy(htmlContent.getBytes(), htmlFile);
-                fileList.add(htmlFile);
-                // 转pdf文件
-                File pdfFile = new File(cardPdfPath);
-                if (!pdfFile.exists()) {
-                    pdfFile.createNewFile();
+                    // html
+                    File htmlFile = new File(cardHtmlPath);
+                    if (!htmlFile.getParentFile().exists()) {
+                        htmlFile.getParentFile().mkdirs();
+                    }
+                    // 生成html文件
+                    FileCopyUtils.copy(htmlContent.getBytes(), htmlFile);
+                    fileList.add(htmlFile);
+                    // 转pdf文件
+                    File pdfFile = new File(cardPdfPath);
+                    if (!pdfFile.exists()) {
+                        pdfFile.createNewFile();
+                    }
+                    HtmlToPdfUtil.convert(cardHtmlPath, cardPdfPath, PageSizeEnum.A3);
+                    fileList.add(pdfFile);
                 }
-                HtmlToPdfUtil.convert(cardHtmlPath, cardPdfPath, PageSizeEnum.A3);
-                fileList.add(pdfFile);
+            }
+            if (fileList.size() == 0) {
+                throw ExceptionResultEnum.ERROR.exception("没有可导出文件");
+            }
+            teachcloudCommonService.downloadFileAndZip(response, rootPath, rootPath);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (Objects.nonNull(tempFile)) {
+                tempFile.delete();
+            }
+            if (Objects.nonNull(rootPath)) {
+                ConvertUtil.delFolder(rootPath);
             }
         }
-        if (fileList.size() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("没有可导出文件");
-        }
-
-        teachcloudCommonService.downloadFileAndZip(response, rootPath, rootPath);
     }
 
     @Override

+ 79 - 130
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.aliyun.oss.common.utils.BinaryUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,7 +11,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.pdf.PdfReader;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.boot.tools.models.ByteArray;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
@@ -180,20 +178,21 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             if (Objects.nonNull(type) && Objects.equals(type, SystemConstant.HTML_PREFIX)) {
                 filePath = (String) jsonObject.get(SystemConstant.PATH);
                 UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-                if (oss) {
+                if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                     ossStr = SystemConstant.OSS;
                     File htmlFileTemp = SystemConstant.getFileTempVar(SystemConstant.HTML_PREFIX);
                     fileTempList.add(htmlFileTemp);
                     htmlFile = fileStoreUtil.ossDownload(filePath, htmlFileTemp, uploadType.getFssType());
                 } else {
                     ossStr = SystemConstant.LOCAL;
-                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig()) && filePath.contains(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    if (Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig()) && filePath.contains(dictionaryConfig.fssPublicDomain().getConfig())) {
                         htmlFile = new File(filePath);
                     } else {
-                        htmlFile = new File(dictionaryConfig.fssPublicDomain().getConfig(), filePath);
+                        File htmlFileTemp = SystemConstant.getFileTempVar(SystemConstant.HTML_PREFIX);
+                        htmlFile = fileStoreUtil.ossDownload(filePath, htmlFileTemp, uploadType.getFssType());
                     }
-                    if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                        pdfStringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+                    if (Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                        pdfStringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
                     }
                 }
             }
@@ -208,14 +207,10 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 //            File pdfFile = asposePdfUtil.documentToPdf(htmlFile.getPath(), destUrl, PaperSize.A4);
             String htmlFileMd5 = DigestUtils.md5Hex(new FileInputStream(htmlFile));
             String pdfFileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFileTemp));
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
             } else {
-                if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                    fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
-                } else {
-                    fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
             }
 
             PdfDto pdfDto = PdfUtil.addPdfPage(pdfFileTemp);
@@ -267,8 +262,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner pdfStringJoiner = new StringJoiner("");
             String ossStr = null;
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                pdfStringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                pdfStringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
             }
             pdfStringJoiner = SystemConstant.getDirName(pdfStringJoiner, UploadFileEnum.PDF, true);
             pdfStringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
@@ -280,16 +275,12 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             String pdfDirName = pdfStringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
             //pdf生成和上传
             String pdfFileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFileTemp));
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 ossStr = SystemConstant.OSS;
                 fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
             } else {
                 ossStr = SystemConstant.LOCAL;
-                if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                    fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
-                } else {
-                    fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
             }
             PdfDto pdfDto = PdfUtil.addPdfPage(pdfFileTemp);
 
@@ -347,11 +338,11 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
             StringJoiner pdfStringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                pdfStringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                pdfStringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.HTML, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.HTML_PREFIX);
@@ -365,15 +356,11 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
             //html生成和上传
             String htmlFileMd5 = DigestUtils.md5Hex(new FileInputStream(htmlFileTemp));
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 fileStoreUtil.ossUpload(htmlDirName, htmlFileTemp, htmlFileMd5, fileStoreUtil.getUploadEnumByPath(htmlDirName).getFssType());
             } else {
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    fileStoreUtil.localUpload(htmlDirName, new FileInputStream(htmlFileTemp), htmlFileMd5, LocalCatalogEnum.LOCAL_FILE);
-                } else {
-                    fileStoreUtil.ossUpload(htmlDirName, htmlFileTemp, htmlFileMd5, fileStoreUtil.getUploadEnumByPath(htmlDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(htmlDirName, new FileInputStream(htmlFileTemp), htmlFileMd5, LocalCatalogEnum.LOCAL_FILE);
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             }
             jsonObject.put(SystemConstant.HTML_PATH, htmlDirName);
@@ -382,14 +369,10 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
             //pdf生成和上传
             String pdfFileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFileTemp));
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
             } else {
-                if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                    fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
-                } else {
-                    fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
             }
 
             pdfDto = PdfUtil.addPdfPage(pdfFileTemp);
@@ -428,86 +411,56 @@ public class PrintCommonServiceImpl implements PrintCommonService {
     @Override
     public BasicAttachment saveAttachmentHtmlAndPdf(String fileName, String htmlContent, Long userId) {
         BasicAttachment basicAttachment = null;
+        File htmlFile = null, pdfFile = null;
         try {
             byte[] bytes = htmlContent.getBytes();
             int size = bytes.length;
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            StringJoiner pdfStringJoiner = new StringJoiner("");
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
+            }
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.HTML, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.HTML_PREFIX);
 
+            pdfStringJoiner = SystemConstant.getDirName(pdfStringJoiner, UploadFileEnum.PDF, true);
+            pdfStringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
+
+            String htmlDirName = stringJoiner.toString();
+            String pdfDirName = pdfStringJoiner.toString();
+
             JSONObject jsonObject = new JSONObject();
-            String fileMd5 = null;
-            if (oss) {//上传至oss
-                String dirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-                fileStoreUtil.ossUpload(dirName, htmlContent, fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                jsonObject.put(SystemConstant.PATH, dirName);
-                String url = null;
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    url = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + dirName;
-                } else {
-                    url = dirName;
-                }
-                File localHtmlFile = fileStoreUtil.ossDownload(dirName, url, fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
-                StringJoiner pdfStringJoiner = SystemConstant.getDirName(UploadFileEnum.PDF, true);
-                pdfStringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
-                String pdfDirName = pdfStringJoiner.toString();
-
-                String destUrl = null;
-                if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                    destUrl = dictionaryConfig.fssLocalPdfDomain().getConfig() + File.separator + pdfDirName;
-                } else {
-                    destUrl = pdfDirName;
-                }
-//                destUrl = destUrl.replaceAll("\\\\",SystemConstant.ORG_SPLIT);
+            jsonObject.put(SystemConstant.PATH, htmlDirName);
+            jsonObject.put(SystemConstant.PDF_PATH, pdfDirName);
+
+            htmlFile = SystemConstant.getFileTempVar(SystemConstant.HTML_PREFIX);
+            pdfFile = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
+
+            FileCopyUtils.copy(htmlContent.getBytes(), htmlFile);
+
+            String htmlFileMd5 = DigestUtils.md5Hex(new FileInputStream(htmlFile));
+            String pdfFileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFile));
 
-                HtmlToPdfUtil.convert(localHtmlFile.getPath(), destUrl, PageSizeEnum.A4);
+            jsonObject.put("htmlMd5", htmlFileMd5);
+            jsonObject.put("pdfMd5", pdfFileMd5);
+            HtmlToPdfUtil.convert(htmlFile.getPath(), pdfFile.getPath(), PageSizeEnum.A4);
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss
+                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
+                fileStoreUtil.ossUpload(htmlDirName, htmlContent, fileStoreUtil.getUploadEnumByPath(htmlDirName).getFssType());
 //                File pdfFile = asposePdfUtil.documentToPdf(localHtmlFile.getPath(), destUrl, PaperSize.A3);
-                File pdfFile = new File(destUrl);
-                if (!pdfFile.exists()) {
-                    pdfFile.getParentFile().mkdirs();
-                    pdfFile.createNewFile();
-                }
-                fileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFile));
-//                ossUtil.ossUpload(pdfDirName, pdfFile, BinaryUtil.toBase64String(HexUtils.decodeHex(fileMd5)));
-                pdfDirName = pdfDirName.replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-                fileStoreUtil.ossUpload(pdfDirName, pdfFile, BinaryUtil.toBase64String(HexUtils.decodeHex(fileMd5)), fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-//                localHtmlFile.delete();
-                jsonObject.put(SystemConstant.PDF_PATH, pdfDirName);
-                // htmlMd5
-                jsonObject.put("htmlMd5", DigestUtils.md5Hex(new FileInputStream(localHtmlFile)));
-                jsonObject.put("pdfMd5", fileMd5);
+                fileStoreUtil.ossUpload(pdfDirName, pdfFile, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
             } else {//上传至服务器
-                File finalFile = new File(stringJoiner.toString());
-                if (!finalFile.exists()) {
-                    finalFile.getParentFile().mkdirs();
-                    finalFile.createNewFile();
-                }
-                FileCopyUtils.copy(bytes, new File(stringJoiner.toString()));
-                fileMd5 = DigestUtils.md5Hex(new FileInputStream(stringJoiner.toString()));
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
-                String destUrl = finalFile.getPath().replaceAll(UploadFileEnum.HTML.name().toLowerCase(), UploadFileEnum.PDF.name().toLowerCase());
-                HtmlToPdfUtil.convert(finalFile.getPath(), destUrl, PageSizeEnum.A3);
-                File pdfFile = new File(destUrl);
-                if (!pdfFile.exists()) {
-                    pdfFile.getParentFile().mkdirs();
-                    pdfFile.createNewFile();
-                }
-                fileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFile));
-
-                jsonObject.put(SystemConstant.PDF_PATH, destUrl);
-                jsonObject.put("htmlMd5", DigestUtils.md5Hex(new FileInputStream(finalFile)));
-                jsonObject.put("pdfMd5", fileMd5);
+                fileStoreUtil.localUpload(htmlDirName, new FileInputStream(htmlFile), htmlFileMd5, LocalCatalogEnum.LOCAL_PDF);
             }
             jsonObject.put(SystemConstant.UPLOAD_TYPE, new UploadFileEnum[]{
                     UploadFileEnum.HTML, UploadFileEnum.PDF
             });
-            basicAttachment = new BasicAttachment(jsonObject.toJSONString(), fileName, SystemConstant.HTML_PREFIX, new BigDecimal(size), fileMd5, userId);
+            basicAttachment = new BasicAttachment(jsonObject.toJSONString(), fileName, SystemConstant.HTML_PREFIX, new BigDecimal(size), htmlFileMd5, userId);
             basicAttachmentService.save(basicAttachment);
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
@@ -517,6 +470,13 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             } else {
                 ResultUtil.error(e.getMessage());
             }
+        } finally {
+            if (Objects.nonNull(htmlFile)) {
+                htmlFile.delete();
+            }
+            if (Objects.nonNull(pdfFile)) {
+                pdfFile.delete();
+            }
         }
         return basicAttachment;
     }
@@ -580,26 +540,20 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             }
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                }
+            if (!oss && (Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig()))) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, type, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(format);
 
             JSONObject jsonObject = new JSONObject();
             String dirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-            if (oss) {//上传至oss
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss
                 fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5, type.getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    fileStoreUtil.localUpload(dirName, file.getInputStream(), md5, LocalCatalogEnum.LOCAL_FILE);
-                } else {
-                    fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5, type.getFssType());
-                }
+                fileStoreUtil.localUpload(dirName, file.getInputStream(), md5, LocalCatalogEnum.LOCAL_FILE);
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 jsonObject.put(SystemConstant.PATH, dirName);
             }
@@ -1239,23 +1193,19 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         try {
             inputStream = new ByteArrayInputStream(fos.toByteArray());
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(".").add(SystemConstant.XLSX);
 
             jsonObject = new JSONObject();
             String dirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-            if (oss) {//上传至oss
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss
                 fileStoreUtil.ossUpload(dirName, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), UploadFileEnum.FILE.getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
             } else {
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
-                } else {
-                    fileStoreUtil.ossUpload(dirName, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), UploadFileEnum.FILE.getFssType());
-                }
+                fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             }
             jsonObject.put(SystemConstant.PATH, dirName);
@@ -1323,8 +1273,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner pdfStringJoiner = new StringJoiner("");
             String ossStr = null;
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                pdfStringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                pdfStringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
             }
             pdfStringJoiner = SystemConstant.getDirName(pdfStringJoiner, UploadFileEnum.PDF, true);
             pdfStringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
@@ -1335,16 +1285,12 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             createPrintPdfUtil.createPackagePdf(pdfPackageDto, pdfFileTemp.getPath());
             //pdf生成和上传
             String pdfFileMd5 = DigestUtils.md5Hex(new FileInputStream(pdfFileTemp));
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 ossStr = SystemConstant.OSS;
                 fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
             } else {
                 ossStr = SystemConstant.LOCAL;
-                if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                    fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
-                } else {
-                    fileStoreUtil.ossUpload(pdfDirName, pdfFileTemp, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFileTemp), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
             }
 
             PdfDto pdfDto = PdfUtil.addPdfPage(pdfFileTemp);
@@ -1387,17 +1333,20 @@ public class PrintCommonServiceImpl implements PrintCommonService {
     @Override
     public JSONObject uploadPdfFile(File pdfFile, ClassifyEnum classifyEnum) {
         try {
-            StringJoiner pdfStringJoiner = SystemConstant.getDirName(UploadFileEnum.PDF, true);
+            boolean oss = dictionaryConfig.sysDomain().isOss();
+            StringJoiner pdfStringJoiner = new StringJoiner("");
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                pdfStringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
+            }
+            pdfStringJoiner = SystemConstant.getDirName(pdfStringJoiner, UploadFileEnum.PDF, true);
             pdfStringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
+
             String pdfDirName = pdfStringJoiner.toString();
             pdfDirName = SystemConstant.getPdfFilePath(pdfDirName, pdfFile);
-            boolean oss = dictionaryConfig.sysDomain().isOss();
 
-            byte[] data = ByteArray.fromFile(pdfFile).value();
-            String md5 = ByteArray.md5(data).toHexString();
             JSONObject object = new JSONObject();
             object.put("printType", classifyEnum);
-            object.put("pdfMd5", md5);
+            object.put("pdfMd5", DigestUtils.md5Hex(new FileInputStream(pdfFile)));
             object.put(SystemConstant.PATH, pdfDirName);
             if (!oss) {
                 object.put(SystemConstant.TYPE, SystemConstant.LOCAL);

+ 28 - 78
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncExamStudentScoreServiceImpl.java

@@ -14,6 +14,7 @@ import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.LocalCatalogEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.*;
@@ -123,17 +124,14 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
             Optional.ofNullable(tSyncExamStudentScore.getSheetUrls()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未获取到考生原卷地址"));
             Optional.ofNullable(tSyncExamStudentScore.getSyncData()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未获取到考生作答数据"));
             StringJoiner stringJoiner = new StringJoiner("");
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-            } else {
-                stringJoiner.add(dictionaryConfig.fssPublicDomain().getServer()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
-            List<String> trailUrlsList = tSyncExamStudentScore.getTrailUrls();
+            stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
+            stringJoiner.add(SystemConstant.getNanoId()).add(File.separator);
 
-            String hostUrl = null;
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                hostUrl = SystemConstant.getLocalFileHostByUserId(dictionaryConfig.fssLocalFileDomain().getServer(), userId);
-            }
+            String dirName = stringJoiner.toString();
+            List<String> trailUrlsList = tSyncExamStudentScore.getTrailUrls();
 
             if (needSync || Objects.isNull(tSyncExamStudentScore.getLocalSheetUrls()) || Objects.isNull(tSyncExamStudentScore.getTrajectoryUrls())) {
                 JSONArray jsonArray = JSONArray.parseArray(tSyncExamStudentScore.getSheetUrls());
@@ -154,32 +152,23 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                     for (int i = 0; i < jsonArray.size(); i++) {
                         String url = (String) jsonArray.get(i);
                         String sheetName = url.substring(url.lastIndexOf(SystemConstant.ORG_SPLIT) + 1);
-                        StringJoiner dirJpgName = SystemConstant.getDirName(UploadFileEnum.FILE, true);
-                        dirJpgName.add(tSyncExamStudentScore.getExamNumber()).add(File.separator).add("sheet").add(File.separator).add(sheetName);
-                        File fileSource = new File(stringJoiner.toString() + dirJpgName.toString());
-                        if (!fileSource.exists()) {
-                            fileSource.getParentFile().mkdirs();
-                            fileSource.createNewFile();
-                        }
+                        StringJoiner dirJpgName = new StringJoiner("");
+                        dirJpgName.add(dirName).add(tSyncExamStudentScore.getExamNumber()).add(File.separator).add("sheet").add(File.separator).add(sheetName);
+
+                        File fileSource = SystemConstant.getFileTempDirVar(dirJpgName.toString(), null);
                         fileSource = HttpUtil.httpDownload(url, fileSource.getPath());
                         fileSourceList.add(fileSource);
                         JSONObject sheetObject = new JSONObject();
-                        if (oss) {
-                            String dirName = dirJpgName.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-                            fileStoreUtil.ossUpload(dirName, fileSource, DigestUtils.md5Hex(new FileInputStream(fileSource)), UploadFileEnum.FILE.getFssType());
-                            if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
-                                fileStoreUtil.getPrivateUrl(dirName, UploadFileEnum.FILE.getFssType());
-                            }
+                        sheetObject.put(SystemConstant.PATH, dirJpgName);
+                        String jpgFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileSource));
+                        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
+                            fileStoreUtil.ossUpload(dirJpgName.toString(), fileSource, DigestUtils.md5Hex(new FileInputStream(fileSource)), UploadFileEnum.FILE.getFssType());
                             sheetObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                            sheetObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
-                            sheetObject.put(SystemConstant.PATH, dirName);
                         } else {
-                            if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
-                                fileSource.getPath();
-                            }
+                            fileStoreUtil.localUpload(dirJpgName.toString(), new FileInputStream(fileSource), jpgFileMd5, LocalCatalogEnum.LOCAL_FILE);
                             sheetObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                            sheetObject.put(SystemConstant.PATH, (stringJoiner.toString() + dirJpgName.toString()).replaceAll("\\\\", SystemConstant.ORG_SPLIT));
                         }
+                        sheetObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
                         jsonImageSourcePathArray.add(sheetObject);
 
                         // 轨迹
@@ -188,40 +177,21 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                         }
                         JSONArray markTagJsonArray = (JSONArray) markTagsJson.get(i + 1);
 
-                        StringJoiner dirTargetJpgName = SystemConstant.getDirName(UploadFileEnum.FILE, true);
-                        dirTargetJpgName.add(tSyncExamStudentScore.getExamNumber()).add(File.separator).add("trail").add(File.separator).add(sheetName);
-                        File fileTarget = new File(stringJoiner.toString() + dirTargetJpgName.toString());
-                        if (!fileTarget.exists()) {
-                            fileTarget.getParentFile().mkdirs();
-                            fileTarget.createNewFile();
-                        }
+                        StringJoiner dirTargetJpgName = new StringJoiner("");
+                        dirTargetJpgName.add(dirName).add(tSyncExamStudentScore.getExamNumber()).add(File.separator).add("trail").add(File.separator).add(sheetName);
+                        File fileTarget = SystemConstant.getFileTempDirVar(dirTargetJpgName.toString(), null);
 
                         ImageTrajectoryUtil.createImage(fileSource, fileTarget, markTagJsonArray);
                         fileTargetList.add(fileTarget);
                         String dirTargetName = dirTargetJpgName.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-                        if (oss) {
+                        String jpgTargetFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileTarget));
+                        jsonImageTrajectoryPathArray.add(dirTargetName);
+                        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                             fileStoreUtil.ossUpload(dirTargetName, fileTarget, DigestUtils.md5Hex(new FileInputStream(fileTarget)), UploadFileEnum.FILE.getFssType());
-                            if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
-                                trailUrlsList.add(fileStoreUtil.getPrivateUrl(dirTargetName, UploadFileEnum.FILE.getFssType()));
-                            }
-                            jsonImageTrajectoryPathArray.add(dirTargetName);
                         } else {
-                            if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
-                                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                                    String filePath = fileTarget.getPath();
-                                    String trailUrl;
-                                    if (filePath.startsWith(SystemConstant.ORG_SPLIT)) {
-                                        trailUrl = hostUrl + filePath;
-                                    } else {
-                                        trailUrl = hostUrl + File.separator + filePath;
-                                    }
-                                    trailUrlsList.add(trailUrl);
-                                } else {
-                                    trailUrlsList.add(fileStoreUtil.getPrivateUrl(dirTargetName, UploadFileEnum.FILE.getFssType()));
-                                }
-                            }
-                            jsonImageTrajectoryPathArray.add((stringJoiner.toString() + dirTargetJpgName.toString()).replaceAll("\\\\", SystemConstant.ORG_SPLIT));
+                            fileStoreUtil.localUpload(dirTargetName, new FileInputStream(fileTarget), jpgTargetFileMd5, LocalCatalogEnum.LOCAL_FILE);
                         }
+                        trailUrlsList.add(dirTargetName);
                     }
                     if (!jsonImageSourcePathArray.isEmpty()) {
                         tSyncExamStudentScore.setLocalSheetUrls(jsonImageSourcePathArray.toJSONString());
@@ -251,17 +221,7 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                         if (imageTrajectoryEnum == ImageTrajectoryEnum.DOWNLOAD) {
                             fileTargetList.add(new File(url));
                         } else {
-                            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                                String trailUrl = null;
-                                if (url.startsWith(SystemConstant.ORG_SPLIT)) {
-                                    trailUrl = hostUrl + url;
-                                } else {
-                                    trailUrl = hostUrl + File.separator + url;
-                                }
-                                trailUrlsList.add(trailUrl);
-                            } else {
-                                trailUrlsList.add(fileStoreUtil.getPrivateUrl(url, UploadFileEnum.FILE.getFssType()));
-                            }
+                            trailUrlsList.add(fileStoreUtil.getPrivateUrl(url, UploadFileEnum.FILE.getFssType()));
                         }
                     }
                 }
@@ -300,19 +260,9 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
         OutputStream outputStream = null;
         try {
             if (Objects.nonNull(tSyncExamStudentScore.getTrajectoryFileList())) {
-                StringJoiner stringJoiner = new StringJoiner("");
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                } else {
-                    stringJoiner.add(dictionaryConfig.fssPublicDomain().getServer()).add(File.separator);
-                }
                 StringJoiner dirZipName = SystemConstant.getDirName(UploadFileEnum.FILE, true);
                 dirZipName.add(SystemConstant.getNanoId()).add(SystemConstant.ZIP_PREFIX);
-                zipFile = new File(stringJoiner.toString() + dirZipName.toString());
-                if (!zipFile.exists()) {
-                    zipFile.getParentFile().mkdirs();
-                    zipFile.createNewFile();
-                }
+                zipFile = SystemConstant.getFileTempDirVar(dirZipName.toString(), null);
 
                 List<File> fileList = tSyncExamStudentScore.getTrajectoryFileList();
                 if (fileList.isEmpty()) {
@@ -344,7 +294,7 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                 outputStream.close();
             }
             if (Objects.nonNull(zipFile)) {
-                System.out.println(zipFile.delete());
+                zipFile.delete();
             }
         }
     }

+ 1 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java

@@ -3,7 +3,6 @@ package com.qmth.distributed.print.business.templete.importData;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.boot.api.exception.ApiException;
-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.entity.TBTask;
@@ -15,7 +14,6 @@ import com.qmth.teachcloud.common.service.TBTaskService;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.scheduling.annotation.Async;
@@ -73,12 +71,7 @@ public abstract class AsyncImportTaskTemplete {
         if (Objects.equals(type, SystemConstant.OSS)) {
             inputStream = fileStoreUtil.ossDownloadIs(path, uploadType.getFssType());
         } else {
-            DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                inputStream = new FileInputStream(new File(path));
-            } else {
-                inputStream = fileStoreUtil.ossDownloadIs(path, uploadType.getFssType());
-            }
+            inputStream = new FileInputStream(new File(path));
         }
         return inputStream;
     }

+ 209 - 260
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -1,9 +1,7 @@
 package com.qmth.distributed.print.business.templete.service.impl;
 
-import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.aliyun.oss.common.utils.BinaryUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.common.collect.Lists;
@@ -37,7 +35,6 @@ import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
@@ -682,17 +679,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         JSONObject jsonObject = new JSONObject();
         String dirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
         boolean oss = dictionaryConfig.sysDomain().isOss();
-        if (oss) {//上传至oss
+        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss
             fileStoreUtil.ossUpload(dirName, in, DigestUtils.md5Hex(new ByteArrayInputStream(outputStream.toByteArray())), fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
             jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
             jsonObject.put(SystemConstant.PATH, dirName);
         } else {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                dirName = (dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + dirName).replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-                fileStoreUtil.copyInputStreamToFile(in, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(outputStream.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
-            } else {
-                fileStoreUtil.ossUpload(dirName, in, DigestUtils.md5Hex(new ByteArrayInputStream(outputStream.toByteArray())), UploadFileEnum.FILE.getFssType());
-            }
+            dirName = (dictionaryConfig.fssPublicDomain().getConfig() + File.separator + dirName).replaceAll("\\\\", SystemConstant.ORG_SPLIT);
+            fileStoreUtil.copyInputStreamToFile(in, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(outputStream.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
             jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             jsonObject.put(SystemConstant.PATH, dirName);
         }
@@ -930,8 +923,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 Long time = System.currentTimeMillis();
                 boolean oss = dictionaryConfig.sysDomain().isOss();
                 StringJoiner stringJoiner = new StringJoiner("");
-                if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                    stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
                 }
                 stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
                 stringJoiner.add("印刷任务管理_批量下载PDF_" + time).add(SystemConstant.ZIP_PREFIX);
@@ -1007,7 +1000,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             if (Objects.nonNull(zipFile)) {
                 zipFile.delete();
             }
-            ConvertUtil.delFolder(zipLocalRootPath);
+            if (Objects.nonNull(zipLocalRootPath)) {
+                ConvertUtil.delFolder(zipLocalRootPath);
+            }
             if (!CollectionUtils.isEmpty(sourceFileList)) {
                 for (File file : sourceFileList) {
                     file.delete();
@@ -1063,172 +1058,170 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Override
     @Transactional
     public Map<String, Object> executeExportSampleLogic(Map<String, Object> map) throws Exception {
-        int count = 0;
-        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-        String zipJoiner = null, zipLocalRootPath = null;
-        long time = System.currentTimeMillis();
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            zipJoiner = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator;
-            zipLocalRootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + time;
-        } else {
-            zipJoiner = dictionaryConfig.fssPublicDomain().getConfig() + File.separator;
-            zipLocalRootPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + time;
-        }
-        StringJoiner stringJoine = SystemConstant.getDirName(UploadFileEnum.FILE, true);
-        stringJoine.add(SystemConstant.getNanoId()).add(SystemConstant.ZIP_PREFIX);
-        String dirNameTmp = stringJoine.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-        File zipFile = new File(zipJoiner + dirNameTmp);
-        if (!zipFile.getParentFile().exists()) {
-            zipFile.getParentFile().mkdirs();
-//            zipFile.createNewFile();
-        }
-
-        boolean oss = dictionaryConfig.sysDomain().isOss();
-
-        // 跟文件路径
-        Long[] ids = (Long[]) map.get("ids");
-        for (Long id : ids) {
-            ExamTask examTask = examTaskService.getById(id);
-            if (Objects.isNull(examTask)) {
-                throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
-            }
-            String examTaskSign = examTask.getCourseName() + SystemConstant.HYPHEN + examTask.getPaperNumber();
-            String firstPath = zipLocalRootPath + File.separator + examTaskSign;
-            ReviewSampleDto reviewSampleDto = examTaskService.findReviewSampleInfoByExamTaskId(id);
-
-            // 收集处理试卷和题卡
-            List<ExamPaperInfoDto> paperInfoDtoList = JSONObject.parseArray(reviewSampleDto.getPaperAttachmentIds(), ExamPaperInfoDto.class);
-            if (Objects.isNull(paperInfoDtoList)) {
-                throw ExceptionResultEnum.ERROR.exception("试卷信息不存在");
+        File zipFile = null;
+        String zipLocalRootPath = null;
+        try {
+            int count = 0;
+            TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+            Long time = System.currentTimeMillis();
+            boolean oss = dictionaryConfig.sysDomain().isOss();
+            StringJoiner stringJoiner = new StringJoiner("");
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
-            Set<Long> attPaperIds = new HashSet<>();
-            List<ExamCardDto> examCardDtoList = new ArrayList<>();
-            for (ExamPaperInfoDto paperInfo : paperInfoDtoList) {
-                Long attachmentId = paperInfo.getAttachmentId();
-                Long cardId = paperInfo.getCardId();
-                String paperType = paperInfo.getName();
-                if (SystemConstant.longNotNull(attachmentId)) {
-                    attPaperIds.add(attachmentId);
+            stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
+            stringJoiner.add("导出审核样本_" + time).add(SystemConstant.ZIP_PREFIX);
+
+            String zipDirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
+            zipFile = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
+            zipLocalRootPath = zipFile.getParent() + File.separator + time;
+
+            // 跟文件路径
+            Long[] ids = (Long[]) map.get("ids");
+            for (Long id : ids) {
+                ExamTask examTask = examTaskService.getById(id);
+                if (Objects.isNull(examTask)) {
+                    throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
                 }
-                if (SystemConstant.longNotNull(cardId)) {
-                    ExamCardDto examCardDto = new ExamCardDto();
-                    examCardDto.setCardId(cardId);
-                    examCardDto.setPaperType(paperType);
-                    examCardDtoList.add(examCardDto);
+                String examTaskSign = examTask.getCourseName() + SystemConstant.HYPHEN + examTask.getPaperNumber();
+                String firstPath = zipLocalRootPath + File.separator + examTaskSign;
+                ReviewSampleDto reviewSampleDto = examTaskService.findReviewSampleInfoByExamTaskId(id);
+
+                // 收集处理试卷和题卡
+                List<ExamPaperInfoDto> paperInfoDtoList = JSONObject.parseArray(reviewSampleDto.getPaperAttachmentIds(), ExamPaperInfoDto.class);
+                if (Objects.isNull(paperInfoDtoList)) {
+                    throw ExceptionResultEnum.ERROR.exception("试卷信息不存在");
                 }
-            }
-            if (attPaperIds.size() > 0) {
-                List<BasicAttachment> paperAttachmentList = basicAttachmentService.listByIds(attPaperIds);
-                for (BasicAttachment paperAttachment : paperAttachmentList) {
-                    JSONObject jsonObject = JSONObject.parseObject(paperAttachment.getPath());
-                    UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-                    String paperPath = firstPath + File.separator + "试卷" + File.separator + paperAttachment.getName() + paperAttachment.getType();
-                    if (oss) {
-                        fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), paperPath, uploadFileEnum.getFssType());
-                    } else {
-                        FileUtil.copyFile(jsonObject.getString(SystemConstant.PATH), paperPath);
+                Set<Long> attPaperIds = new HashSet<>();
+                List<ExamCardDto> examCardDtoList = new ArrayList<>();
+                for (ExamPaperInfoDto paperInfo : paperInfoDtoList) {
+                    Long attachmentId = paperInfo.getAttachmentId();
+                    Long cardId = paperInfo.getCardId();
+                    String paperType = paperInfo.getName();
+                    if (SystemConstant.longNotNull(attachmentId)) {
+                        attPaperIds.add(attachmentId);
+                    }
+                    if (SystemConstant.longNotNull(cardId)) {
+                        ExamCardDto examCardDto = new ExamCardDto();
+                        examCardDto.setCardId(cardId);
+                        examCardDto.setPaperType(paperType);
+                        examCardDtoList.add(examCardDto);
                     }
-                    count++;
-                }
-            }
-
-            // 处理审核样品
-            List<Map> confirmInfo = JSONObject.parseArray(reviewSampleDto.getPaperConfirmAttachmentIds(), Map.class);
-            Set<Long> attConfirmIds = new HashSet<>();
-            for (Map confirmMap : confirmInfo) {
-                if (Objects.isNull(confirmMap.get("attachmentId"))) {
-                    throw ExceptionResultEnum.ERROR.exception("未找到附件id");
                 }
-                Long attachmentId = Long.valueOf(String.valueOf(confirmMap.get("attachmentId")));
-                attConfirmIds.add(attachmentId);
-            }
-            if (attConfirmIds.size() > 0) {
-                List<BasicAttachment> confirmAttachmentList = basicAttachmentService.listByIds(attConfirmIds);
-                for (BasicAttachment confirmAttachment : confirmAttachmentList) {
-                    JSONObject jsonObject = JSONObject.parseObject(confirmAttachment.getPath());
-                    UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-                    String confirmPath = firstPath + File.separator + "审核样本" + File.separator + confirmAttachment.getName() + confirmAttachment.getType();
-                    if (oss) {
-                        fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), confirmPath, uploadFileEnum.getFssType());
-                    } else {
-                        FileUtil.copyFile(jsonObject.getString(SystemConstant.PATH), confirmPath);
+                if (attPaperIds.size() > 0) {
+                    List<BasicAttachment> paperAttachmentList = basicAttachmentService.listByIds(attPaperIds);
+                    for (BasicAttachment paperAttachment : paperAttachmentList) {
+                        JSONObject jsonObject = JSONObject.parseObject(paperAttachment.getPath());
+                        UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+                        String paperPath = firstPath + File.separator + "试卷" + File.separator + paperAttachment.getName() + paperAttachment.getType();
+                        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
+                            fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), paperPath, uploadFileEnum.getFssType());
+                        } else {
+                            FileUtil.copyFile(jsonObject.getString(SystemConstant.PATH), paperPath);
+                        }
+                        count++;
                     }
-                    count++;
                 }
-            }
 
-            // 处理题卡
-            for (ExamCardDto examCardDto : examCardDtoList) {
-                Long cardId = examCardDto.getCardId();
-                String paperType = examCardDto.getPaperType();
-                ExamCard examCard = examCardService.getById(cardId);
-                if (Objects.isNull(examCard)) {
-                    throw ExceptionResultEnum.ERROR.exception("找不到答题卡");
-                }
-                MakeMethodEnum makeMethodEnum = examCard.getMakeMethod();
-                if (MakeMethodEnum.SELECT.equals(makeMethodEnum) && CardCreateMethodEnum.UPLOAD.equals(examCard.getCreateMethod())) {
-                    Long attachmentId = examCard.getAttachmentId();
-                    if (attachmentId == null || attachmentId == 0) {
-                        throw ExceptionResultEnum.ERROR.exception("找不到模板对应的附件");
+                // 处理审核样品
+                List<Map> confirmInfo = JSONObject.parseArray(reviewSampleDto.getPaperConfirmAttachmentIds(), Map.class);
+                Set<Long> attConfirmIds = new HashSet<>();
+                for (Map confirmMap : confirmInfo) {
+                    if (Objects.isNull(confirmMap.get("attachmentId"))) {
+                        throw ExceptionResultEnum.ERROR.exception("未找到附件id");
                     }
-                    BasicAttachment cardAttachment = basicAttachmentService.getById(attachmentId);
-                    if (Objects.isNull(cardAttachment)) {
-                        throw ExceptionResultEnum.ERROR.exception("找不到附件");
+                    Long attachmentId = Long.valueOf(String.valueOf(confirmMap.get("attachmentId")));
+                    attConfirmIds.add(attachmentId);
+                }
+                if (attConfirmIds.size() > 0) {
+                    List<BasicAttachment> confirmAttachmentList = basicAttachmentService.listByIds(attConfirmIds);
+                    for (BasicAttachment confirmAttachment : confirmAttachmentList) {
+                        JSONObject jsonObject = JSONObject.parseObject(confirmAttachment.getPath());
+                        UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+                        String confirmPath = firstPath + File.separator + "审核样本" + File.separator + confirmAttachment.getName() + confirmAttachment.getType();
+                        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
+                            fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), confirmPath, uploadFileEnum.getFssType());
+                        } else {
+                            FileUtil.copyFile(jsonObject.getString(SystemConstant.PATH), confirmPath);
+                        }
+                        count++;
                     }
-                    JSONObject jsonObject = JSONObject.parseObject(cardAttachment.getPath());
-                    // 题卡路径
-                    String cardPath = firstPath + File.separator + "题卡" + File.separator + cardAttachment.getName() + cardAttachment.getType();
-                    if (SystemConstant.strNotNull(paperType)) {
-                        cardPath = cardPath + "(" + paperType + ")";
+                }
+
+                // 处理题卡
+                for (ExamCardDto examCardDto : examCardDtoList) {
+                    Long cardId = examCardDto.getCardId();
+                    String paperType = examCardDto.getPaperType();
+                    ExamCard examCard = examCardService.getById(cardId);
+                    if (Objects.isNull(examCard)) {
+                        throw ExceptionResultEnum.ERROR.exception("找不到答题卡");
                     }
-                    UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+                    MakeMethodEnum makeMethodEnum = examCard.getMakeMethod();
+                    if (MakeMethodEnum.SELECT.equals(makeMethodEnum) && CardCreateMethodEnum.UPLOAD.equals(examCard.getCreateMethod())) {
+                        Long attachmentId = examCard.getAttachmentId();
+                        if (attachmentId == null || attachmentId == 0) {
+                            throw ExceptionResultEnum.ERROR.exception("找不到模板对应的附件");
+                        }
+                        BasicAttachment cardAttachment = basicAttachmentService.getById(attachmentId);
+                        if (Objects.isNull(cardAttachment)) {
+                            throw ExceptionResultEnum.ERROR.exception("找不到附件");
+                        }
+                        JSONObject jsonObject = JSONObject.parseObject(cardAttachment.getPath());
+                        // 题卡路径
+                        String cardPath = firstPath + File.separator + "题卡" + File.separator + cardAttachment.getName() + cardAttachment.getType();
+                        if (SystemConstant.strNotNull(paperType)) {
+                            cardPath = cardPath + "(" + paperType + ")";
+                        }
+                        UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
 
-                    if (oss) {
-                        fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), cardPath, uploadFileEnum.getFssType());
+                        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
+                            fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), cardPath, uploadFileEnum.getFssType());
+                        } else {
+                            FileUtil.copyFile(jsonObject.getString(SystemConstant.PATH), cardPath);
+                        }
                     } else {
-                        FileUtil.copyFile(jsonObject.getString(SystemConstant.PATH), cardPath);
-                    }
-                } else {
-                    List<ExamCardDetail> examCardDetailList = examCardDetailService.list(new QueryWrapper<ExamCardDetail>().lambda().eq(ExamCardDetail::getCardId, cardId));
-                    if (examCardDetailList.size() != 1) {
-                        throw ExceptionResultEnum.ERROR.exception("题卡明细信息异常");
-                    }
-                    ExamCardDetail examCardDetail = examCardDetailService.getByCardId(cardId);
-                    String htmlContent = examCardDetail.getHtmlContent();
-                    byte[] bytes = htmlContent.getBytes();
-
-                    // 题卡路径
-                    String cardPath = firstPath + File.separator + "题卡" + File.separator + examCard.getTitle();
-                    if (SystemConstant.strNotNull(paperType)) {
-                        cardPath = cardPath + "(" + paperType + ")";
-                    }
-                    cardPath = cardPath + SystemConstant.HTML_PREFIX;
+                        List<ExamCardDetail> examCardDetailList = examCardDetailService.list(new QueryWrapper<ExamCardDetail>().lambda().eq(ExamCardDetail::getCardId, cardId));
+                        if (examCardDetailList.size() != 1) {
+                            throw ExceptionResultEnum.ERROR.exception("题卡明细信息异常");
+                        }
+                        ExamCardDetail examCardDetail = examCardDetailService.getByCardId(cardId);
+                        String htmlContent = examCardDetail.getHtmlContent();
+                        byte[] bytes = htmlContent.getBytes();
+
+                        // 题卡路径
+                        String cardPath = firstPath + File.separator + "题卡" + File.separator + examCard.getTitle();
+                        if (SystemConstant.strNotNull(paperType)) {
+                            cardPath = cardPath + "(" + paperType + ")";
+                        }
+                        cardPath = cardPath + SystemConstant.HTML_PREFIX;
 
-                    File localFile = new File(cardPath);
-                    if (!localFile.getParentFile().exists()) {
-                        localFile.getParentFile().mkdirs();
+                        File localFile = new File(cardPath);
+                        if (!localFile.getParentFile().exists()) {
+                            localFile.getParentFile().mkdirs();
+                        }
+                        FileCopyUtils.copy(bytes, localFile);
                     }
-                    FileCopyUtils.copy(bytes, localFile);
                 }
+                count++;
+            }
+            JSONObject jsonObject = SystemConstant.createZip(zipFile, zipLocalRootPath, zipDirName);
+            tbTask.setResultFilePath(jsonObject.toJSONString());
+            map.put("count", count);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            if (Objects.nonNull(zipFile)) {
+                zipFile.delete();
+            }
+            if (Objects.nonNull(zipLocalRootPath)) {
+                ConvertUtil.delFolder(zipLocalRootPath);
             }
-            count++;
-        }
-        zipLocalRootPath = zipLocalRootPath.replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-        Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipLocalRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
-        JSONObject jsonObject = new JSONObject();
-        if (oss) {//上传至oss
-            fileStoreUtil.ossUpload(dirNameTmp, zipFile, BinaryUtil.toBase64String(HexUtils.decodeHex(DigestUtils.md5Hex(new FileInputStream(zipFile)))), fileStoreUtil.getUploadEnumByPath(dirNameTmp).getFssType());
-            jsonObject.put(SystemConstant.PATH, dirNameTmp);
-            jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-            ConvertUtil.delFolder(zipLocalRootPath);
-            zipFile.delete();
-        } else {
-            jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-            jsonObject.put(SystemConstant.PATH, (zipJoiner + dirNameTmp).replaceAll("\\\\", SystemConstant.ORG_SPLIT));
         }
-        jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
-        tbTask.setResultFilePath(jsonObject.toJSONString());
-        map.put("count", count);
         return map;
     }
 
@@ -1236,36 +1229,29 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     public Map<String, Object> executeExportPaperAndCardLogic(Map<String, Object> map) throws Exception {
         String zipLocalRootPath = null;
         File zipFile = null;
+        List<File> sourceFileList = null;
         try {
+            sourceFileList = new ArrayList<>();
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-            String yyyyMMddHH24mmss = DateUtil.format(new Date(), SystemConstant.BACK_UP_DATE_PATTERN);
-            BasicSchool basicSchool = commonCacheService.schoolCache(tbTask.getSchoolId());
-            StringJoiner zipJoiner = new StringJoiner("");
+
             Long time = System.currentTimeMillis();
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipJoiner = zipJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                zipLocalRootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + time;
-            } else {
-                zipJoiner = zipJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
-                zipLocalRootPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + time;
+            boolean oss = dictionaryConfig.sysDomain().isOss();
+            StringJoiner stringJoiner = new StringJoiner("");
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
-            StringJoiner dirName = SystemConstant.getDirName(UploadFileEnum.FILE, true);
-            dirName.add(yyyyMMddHH24mmss).add("_").add(basicSchool.getName()).add("_").add("试卷导出文件").add(SystemConstant.ZIP_PREFIX);
-            String dirNameTmp = dirName.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
+            stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
+            stringJoiner.add("命题任务审核样本导出_" + time).add(SystemConstant.ZIP_PREFIX);
 
-            // 根文件路径
-            boolean oss = dictionaryConfig.sysDomain().isOss();
+            String zipDirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
+            zipFile = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
+            zipLocalRootPath = zipFile.getParent() + File.separator + time;
 
             List<ExamTaskDetailDto> examTasks = (List<ExamTaskDetailDto>) map.get("examTasks");
             for (ExamTaskDetailDto examTask : examTasks) {
                 ExamTaskDetailPdfDownloadDto examTaskDetailPdfDownloadDto = examTaskDetailService.findPdfDownload(Long.valueOf(examTask.getId()));
 
                 StringJoiner dirPath = new StringJoiner("");
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    dirPath = dirPath.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                } else {
-                    dirPath = dirPath.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
-                }
                 dirPath = dirPath.add(String.valueOf(time)).add(File.separator)
                         .add(examTaskDetailPdfDownloadDto.getSemesterName()).add(File.separator)
                         .add(examTaskDetailPdfDownloadDto.getExamName()).add(File.separator)
@@ -1286,26 +1272,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                             Long attachmentId = Long.valueOf(String.valueOf(paperMap.get("attachmentId")));
                             BasicAttachment attachment = basicAttachmentService.getById(attachmentId);
                             if (Objects.nonNull(attachment)) {
-                                JSONObject jsonObject = JSONObject.parseObject(attachment.getPath());
-                                String paperPath = dirPath.toString() + "试卷" + SystemConstant.HYPHEN + name + attachment.getType();
-                                UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-                                File file = null;
-                                file = new File(paperPath);
-                                if (!file.exists()) {
-                                    file.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
-//                                        file.createNewFile();
-                                }
-                                if (oss) {
-                                    file = fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), paperPath.toString(), uploadFileEnum.getFssType());
-                                } else {
-                                    IOUtils.copy(new FileInputStream((String) jsonObject.get(SystemConstant.PATH)), new FileOutputStream(file));
-                                }
+                                File paperFile = getAttachmentFile(attachment, dirPath.toString() + "试卷" + SystemConstant.HYPHEN + name + attachment.getType());
+                                sourceFileList.add(paperFile);
                             }
                         }
                         ExamCard examCard = examCardService.getById(Long.parseLong((String) paperMap.get("cardId")));
-                        if (Objects.isNull(examCard)) {
-                            throw ExceptionResultEnum.ERROR.exception("找不到答题卡");
-                        }
+                        Optional.ofNullable(examCard).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("找不到答题卡"));
+
                         MakeMethodEnum makeMethodEnum = examCard.getMakeMethod();
 
                         String cardHtmlPath = dirPath.toString() + "题卡" + SystemConstant.HYPHEN + paperMap.get("name") + SystemConstant.HTML_PREFIX;
@@ -1320,37 +1293,18 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                             htmlContent = createPdfUtil.replaceHtmlCard(examCardDetail, basicCardRule);
                         }
                         // html
-                        File localFile = new File(cardHtmlPath);
-                        if (!localFile.getParentFile().exists()) {
-                            localFile.getParentFile().mkdirs();
-                        }
+                        File localFile = SystemConstant.getFileTempDirVar(cardHtmlPath, null);
                         // 生成html文件
                         FileCopyUtils.copy(htmlContent.getBytes(), localFile);
+                        sourceFileList.add(localFile);
                         // 转pdf文件
-                        File file = new File(cardPdfPath);
-                        if (!file.exists()) {
-                            file.createNewFile();
-                        }
+                        File file = SystemConstant.getFileTempDirVar(cardPdfPath, null);
                         HtmlToPdfUtil.convert(cardHtmlPath, cardPdfPath, PageSizeEnum.A3);
+                        sourceFileList.add(file);
                     }
                 }
             }
-
-            zipFile = new File(zipJoiner.toString() + dirNameTmp);
-            if (!zipFile.getParentFile().exists()) {
-                zipFile.getParentFile().mkdirs();
-            }
-            Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipLocalRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
-            JSONObject jsonObject = new JSONObject();
-            if (oss) {//上传至oss
-                fileStoreUtil.ossUpload(dirNameTmp, zipFile, BinaryUtil.toBase64String(HexUtils.decodeHex(DigestUtils.md5Hex(new FileInputStream(zipFile)))), fileStoreUtil.getUploadEnumByPath(dirNameTmp).getFssType());
-                jsonObject.put(SystemConstant.PATH, dirNameTmp);
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-            } else {
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                jsonObject.put(SystemConstant.PATH, zipFile.getPath());
-            }
-            jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
+            JSONObject jsonObject = SystemConstant.createZip(zipFile, zipLocalRootPath, zipDirName);
             tbTask.setResultFilePath(jsonObject.toJSONString());
             map.put(SystemConstant.DATA_COUNT, examTasks.size());
         } catch (Exception e) {
@@ -1361,11 +1315,16 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 ResultUtil.error(e.getMessage());
             }
         } finally {
+            if (Objects.nonNull(zipFile)) {
+                zipFile.delete();
+            }
             if (Objects.nonNull(zipLocalRootPath)) {
                 ConvertUtil.delFolder(zipLocalRootPath);
             }
-            if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss() && Objects.nonNull(zipFile)) {
-                zipFile.delete();
+            if (!CollectionUtils.isEmpty(sourceFileList)) {
+                for (File file : sourceFileList) {
+                    file.delete();
+                }
             }
         }
         return map;
@@ -1783,15 +1742,18 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             if (Objects.nonNull(tSyncExamStudentScoreResultList) && tSyncExamStudentScoreResultList.size() > 0) {
                 List<TSyncExamStudentScore> tSyncExamStudentScoreList = new Gson().fromJson(JacksonUtil.parseJson(tSyncExamStudentScoreResultList), new TypeToken<List<TSyncExamStudentScore>>() {
                 }.getType());
+                Long time = System.currentTimeMillis();
+                boolean oss = dictionaryConfig.sysDomain().isOss();
                 StringJoiner stringJoiner = new StringJoiner("");
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                } else {
+                if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
                     stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
                 }
-                StringJoiner dirZipName = SystemConstant.getDirName(UploadFileEnum.FILE, true);
-                dirZipName.add(SystemConstant.getNanoId()).add(SystemConstant.ZIP_PREFIX);
-                zipFile = new File(stringJoiner.toString() + dirZipName.toString());
+                stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
+                stringJoiner.add("成绩轨迹下载_" + time).add(SystemConstant.ZIP_PREFIX);
+
+                String zipDirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
+                zipFile = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
+
                 sourceFiles = new LinkedList<>();
                 List<TSyncExamStudentScore> updateTSyncExamStudentScoreList = new ArrayList<>();
                 errorTSyncExamStudentScoreList = new ArrayList<>();
@@ -1821,18 +1783,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 }
                 tSyncExamStudentScoreService.saveOrUpdateBatch(updateTSyncExamStudentScoreList);
                 if (!sourceFiles.isEmpty()) {
-                    Zip4jUtil.zipEncryptFile(zipFile.getPath(), sourceFiles, SystemConstant.ZIP_ENCRYPT_PWD);
-                    boolean oss = (boolean) map.get(SystemConstant.OSS);
-                    JSONObject jsonObject = new JSONObject();
-                    if (oss) {//上传至oss
-                        fileStoreUtil.ossUpload(dirZipName.toString(), zipFile, DigestUtils.md5Hex(new FileInputStream(zipFile)), UploadFileEnum.FILE.getFssType());
-                        jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                        jsonObject.put(SystemConstant.PATH, dirZipName.toString());
-                    } else {
-                        jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                        jsonObject.put(SystemConstant.PATH, stringJoiner.toString() + dirZipName.toString());
-                    }
-                    jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
+                    JSONObject jsonObject = SystemConstant.createZip(zipFile, sourceFiles, zipDirName);
                     TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
                     tbTask.setResultFilePath(jsonObject.toJSONString());
                 } else {
@@ -1852,11 +1803,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
-            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
         } finally {
-//            if (Objects.nonNull(zipFile)) {
-//                zipFile.delete();
-//            }
+            if (Objects.nonNull(zipFile)) {
+                zipFile.delete();
+            }
         }
         return map;
     }
@@ -1903,8 +1858,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         try {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
             stringJoiner.add("下载管理_批量下载_" + System.currentTimeMillis()).add(SystemConstant.ZIP_PREFIX);
@@ -2040,14 +1995,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                                 paperName = paperName + SystemConstant.HYPHEN + examTaskPaperFileDto.getPaperType();
                                 String paperLocalPath = filePath + paperName + examTaskPaperFileDto.getPaperSuffix();
                                 String paperPath = examTaskPaperFileDto.getPaperPath();
-                                if (oss) {
+                                if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                                     fileStoreUtil.ossDownload(paperPath, paperLocalPath, fileStoreUtil.getUploadEnumByPath(paperPath).getFssType());
                                 } else {
-                                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                                        FileUtil.copyFile(paperPath, paperLocalPath);
-                                    } else {
-                                        fileStoreUtil.ossDownload(paperPath, paperLocalPath, fileStoreUtil.getUploadEnumByPath(paperPath).getFssType());
-                                    }
+                                    FileUtil.copyFile(paperPath, paperLocalPath);
                                 }
                                 courseCount = 1;
                             }
@@ -2108,14 +2059,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                                 String paperLocalPath = filePath + paperName + examTaskPaperFileDto.getPaperSuffix();
                                 String paperPath = examTaskPaperFileDto.getPaperPath();
 
-                                if (oss) {
+                                if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                                     fileStoreUtil.ossDownload(paperPath, paperLocalPath, fileStoreUtil.getUploadEnumByPath(paperPath).getFssType());
                                 } else {
-                                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                                        FileUtil.copyFile(paperPath, paperLocalPath);
-                                    } else {
-                                        fileStoreUtil.ossDownload(paperPath, paperLocalPath, fileStoreUtil.getUploadEnumByPath(paperPath).getFssType());
-                                    }
+                                    FileUtil.copyFile(paperPath, paperLocalPath);
                                 }
                                 courseCount = 1;
                             }
@@ -2136,7 +2083,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             if (Objects.nonNull(zipFile)) {
                 zipFile.delete();
             }
-            ConvertUtil.delFolder(zipLocalRootPath);
+            if (Objects.nonNull(zipLocalRootPath)) {
+                ConvertUtil.delFolder(zipLocalRootPath);
+            }
         }
         return map;
     }

+ 5 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/HtmlToJpgUtil.java

@@ -10,7 +10,6 @@ import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.util.ConvertUtil;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.http.entity.ContentType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,12 +55,8 @@ public class HtmlToJpgUtil {
      */
     public List<BasicAttachment> convertHtmlToJpg(String cardTitle, String htmlContent, PageSizeEnum pageSizeEnum) throws Exception {
         // 本地存储目录
-        String rootPath = null;
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            rootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + System.currentTimeMillis();
-        } else {
-            rootPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + System.currentTimeMillis();
-        }
+        File file = SystemConstant.getFileTempVar(SystemConstant.TEMP_PREFIX);
+        String rootPath = file.getParent();
         // html临时路径
         String htmlPath = rootPath + File.separator + "html" + File.separator + cardTitle + SystemConstant.HTML_PREFIX;
         // pdf临时路径
@@ -72,16 +67,10 @@ public class HtmlToJpgUtil {
         // html
         try {
             File htmlFile = new File(htmlPath);
-            if (!htmlFile.getParentFile().exists()) {
-                htmlFile.getParentFile().mkdirs();
-            }
             // 生成html文件
             FileCopyUtils.copy(htmlContent.getBytes(), htmlFile);
             // 转pdf文件
             File pdfFile = new File(pdfPath);
-            if (!pdfFile.getParentFile().exists()) {
-                pdfFile.getParentFile().mkdirs();
-            }
             HtmlToPdfUtil.convert(htmlPath, pdfPath, pageSizeEnum);
             // pdf文件转jpg
             List<File> jpgFileList = ConvertUtil.pdfToImageFile(pdfPath, jpgPath);
@@ -96,6 +85,9 @@ public class HtmlToJpgUtil {
         } catch (Exception e) {
             log.error(e.getMessage());
         } finally {
+            if (Objects.nonNull(file)) {
+                file.delete();
+            }
             ConvertUtil.delFolder(rootPath);
         }
         return basicAttachmentList;

+ 5 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java

@@ -17,7 +17,6 @@ import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -297,13 +296,10 @@ public class PdfUtil {
 
         DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
         StringJoiner stringJoiner = new StringJoiner("");
-        if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-            stringJoiner = stringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
-        } else {
-            stringJoiner = stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
-        }
         stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.PAPER, true);
         stringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
+
+        File zipFile = SystemConstant.getFileTempDirVar(stringJoiner.toString(), null);
         String outputPath = stringJoiner.toString();
         PdfReader reader = null;
         PdfStamper stamper = null;
@@ -378,6 +374,9 @@ public class PdfUtil {
             if (outputFile.exists()) {
 //                outputFile.delete();
             }
+            if (Objects.nonNull(zipFile)) {
+                zipFile.delete();
+            }
         }
         return null;
     }

+ 1 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java

@@ -1,9 +1,8 @@
 package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
 import com.qmth.distributed.print.business.bean.params.SysRolePrivilegeParams;
-import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
@@ -16,13 +15,10 @@ import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.List;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 /**
  * <p>

+ 2 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java

@@ -1,9 +1,9 @@
 package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionInfo;
 import com.qmth.distributed.print.business.bean.params.SysRolePrivilegeParams;
-import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysRole;
@@ -23,7 +23,6 @@ import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/DataPermissionInfo.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/DataPermissionInfo.java

@@ -1,8 +1,8 @@
-package com.qmth.distributed.print.business.bean.dto;
+package com.qmth.teachcloud.common.bean.dto;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.DataPermissionTypeEnum;
+import com.qmth.teachcloud.common.enums.DataPermissionTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/DataPermissionRule.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/DataPermissionRule.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.dto;
+package com.qmth.teachcloud.common.bean.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 

+ 4 - 13
teachcloud-common/src/main/java/com/qmth/teachcloud/common/config/DictionaryConfig.java

@@ -1,6 +1,9 @@
 package com.qmth.teachcloud.common.config;
 
-import com.qmth.teachcloud.common.domain.*;
+import com.qmth.teachcloud.common.domain.FssPrivateDomain;
+import com.qmth.teachcloud.common.domain.FssPublicDomain;
+import com.qmth.teachcloud.common.domain.SmsDomain;
+import com.qmth.teachcloud.common.domain.SysDomain;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -48,16 +51,4 @@ public class DictionaryConfig {
     public FssPrivateDomain fssPrivateDomain() {
         return new FssPrivateDomain();
     }
-
-    @Bean
-    @ConfigurationProperties(prefix = "com.qmth.fss.localpdf", ignoreUnknownFields = false)
-    public FssLocalPdfDomain fssLocalPdfDomain() {
-        return new FssLocalPdfDomain();
-    }
-
-    @Bean
-    @ConfigurationProperties(prefix = "com.qmth.fss.localfile", ignoreUnknownFields = false)
-    public FssLocalFileDomain fssLocalFileDomain() {
-        return new FssLocalFileDomain();
-    }
 }

+ 56 - 50
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -19,7 +19,6 @@ import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.Zip4jUtil;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -217,6 +216,7 @@ public class SystemConstant {
     public static final String ZIP_PREFIX = ".zip";
     public static final String TXT_PREFIX = ".txt";
     public static final String JPG_PREFIX = ".jpg";
+    public static final String TEMP_PREFIX = ".temp";
     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
     public static final String DATE_PATTERN = "yyyy-MM-dd";
     public static final String TIME_PATTERN = "HH:mm";
@@ -730,27 +730,21 @@ public class SystemConstant {
      */
     public static String getLocalFileHost(String hostUrl) {
         CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            BasicSchool basicSchool = commonCacheService.schoolCache(sysUser.getSchoolId());
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
-        return hostUrl;
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        BasicSchool basicSchool = commonCacheService.schoolCache(sysUser.getSchoolId());
+        return SystemConstant.getHost(hostUrl, basicSchool.getCode());
     }
 
     /**
-     * 获取本地文件host
+     * 获取host
      *
      * @param hostUrl
-     * @param userId
+     * @param schoolCode
      * @return
      */
-    public static String getLocalFileHostByUserId(String hostUrl, Long userId) {
-        CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
+    public static String getHost(String hostUrl, String schoolCode) {
         if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            SysUser sysUser = commonCacheService.userCache(userId);
-            BasicSchool basicSchool = commonCacheService.schoolCache(sysUser.getSchoolId());
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
+            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, schoolCode);
         }
         return hostUrl;
     }
@@ -761,13 +755,16 @@ public class SystemConstant {
      * @param filePath
      * @return
      */
-    public static String getLocalFilePath(String hostUrl, String filePath) {
-        Optional.ofNullable(hostUrl).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置hostUrl"));
-        String[] hostArray = hostUrl.split(":");
-        if (hostArray.length == 2 && filePath.contains(SystemConstant.FILE_TEMP)) {
-            filePath = filePath.substring(filePath.indexOf(SystemConstant.FILE_TEMP), filePath.length());
-        } else if (hostArray.length == 2 && filePath.contains(SystemConstant.PDF_TEMP)) {
-            filePath = filePath.substring(filePath.indexOf(SystemConstant.PDF_TEMP), filePath.length());
+    public static String getLocalFilePath(String filePath) {
+        DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
+        FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
+        boolean oss = dictionaryConfig.sysDomain().isOss();
+        if (!oss && filePath.contains(dictionaryConfig.fssPublicDomain().getServer())) {
+            filePath = filePath.substring(filePath.indexOf(dictionaryConfig.fssPublicDomain().getServer()), filePath.length());
+        } else if (!oss && filePath.contains(dictionaryConfig.fssPrivateDomain().getServer())) {
+            filePath = filePath.substring(filePath.indexOf(dictionaryConfig.fssPrivateDomain().getServer()), filePath.length());
+        } else if (oss) {
+            filePath = fileStoreUtil.getPrivateUrl(filePath, fileStoreUtil.getUploadEnumByPath(filePath).getFssType());
         }
         return filePath;
     }
@@ -880,24 +877,12 @@ public class SystemConstant {
         DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
         FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
         boolean oss = dictionaryConfig.sysDomain().isOss();
-        if (oss) {
+        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
             fileStoreUtil.ossUpload(pdfDirName, file, DigestUtils.md5Hex(new FileInputStream(file)), fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-            return pdfDirName;
         } else {
-            if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                String destUrl = dictionaryConfig.fssLocalPdfDomain().getConfig() + File.separator + pdfDirName;
-                File newFile = new File(destUrl);
-                if (!newFile.exists()) {
-                    newFile.getParentFile().mkdirs();
-                    newFile.createNewFile();
-                }
-                FileUtils.copyFile(file, newFile);
-                return destUrl;
-            } else {
-                fileStoreUtil.ossUpload(pdfDirName, file, DigestUtils.md5Hex(new FileInputStream(file)), fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                return pdfDirName;
-            }
+            fileStoreUtil.localUpload(pdfDirName, new FileInputStream(file), DigestUtils.md5Hex(new FileInputStream(file)), LocalCatalogEnum.LOCAL_FILE);
         }
+        return pdfDirName;
     }
 
     /**
@@ -950,8 +935,8 @@ public class SystemConstant {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             String ossStr = null;
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.TXT_PREFIX);
@@ -966,16 +951,12 @@ public class SystemConstant {
             }
 
             String txtFileMd5 = DigestUtils.md5Hex(new FileInputStream(txtFileTemp));
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 ossStr = SystemConstant.OSS;
                 fileStoreUtil.ossUpload(txtDirName, txtFileTemp, txtFileMd5, fileStoreUtil.getUploadEnumByPath(txtDirName).getFssType());
             } else {
                 ossStr = SystemConstant.LOCAL;
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    fileStoreUtil.localUpload(txtDirName, new FileInputStream(txtFileTemp), txtFileMd5, LocalCatalogEnum.LOCAL_FILE);
-                } else {
-                    fileStoreUtil.ossUpload(txtDirName, txtFileTemp, txtFileMd5, fileStoreUtil.getUploadEnumByPath(txtDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(txtDirName, new FileInputStream(txtFileTemp), txtFileMd5, LocalCatalogEnum.LOCAL_FILE);
             }
             JSONObject json = new JSONObject();
             json.put(SystemConstant.PATH, stringJoiner.toString());
@@ -1007,15 +988,40 @@ public class SystemConstant {
         JSONObject jsonObject = new JSONObject();
         jsonObject.put(SystemConstant.PATH, zipDirName);
         String zipFileMd5 = DigestUtils.md5Hex(new FileInputStream(zipFile));
-        if (oss) {//上传至oss
+        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss
             fileStoreUtil.ossUpload(zipDirName, zipFile, zipFileMd5, fileStoreUtil.getUploadEnumByPath(zipDirName).getFssType());
             jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
         } else {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                fileStoreUtil.localUpload(zipDirName, new FileInputStream(zipFile), zipFileMd5, LocalCatalogEnum.LOCAL_FILE);
-            } else {
-                fileStoreUtil.ossUpload(zipDirName, zipFile, zipFileMd5, fileStoreUtil.getUploadEnumByPath(zipDirName).getFssType());
-            }
+            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;
+    }
+
+    /**
+     * 创建加密的zip
+     *
+     * @param zipFile
+     * @param sourceFileList
+     * @param zipDirName
+     * @return
+     * @throws Exception
+     */
+    public static JSONObject createZip(File zipFile, List<File> sourceFileList, String zipDirName) throws Exception {
+        FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
+        DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
+        Zip4jUtil.zipEncryptFile(zipFile.getPath(), sourceFileList, SystemConstant.ZIP_ENCRYPT_PWD);
+
+        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("../"))) {//上传至oss
+            fileStoreUtil.ossUpload(zipDirName, zipFile, zipFileMd5, fileStoreUtil.getUploadEnumByPath(zipDirName).getFssType());
+            jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
+        } else {
+            fileStoreUtil.localUpload(zipDirName, new FileInputStream(zipFile), zipFileMd5, LocalCatalogEnum.LOCAL_FILE);
             jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
         }
         jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);

+ 0 - 28
teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssLocalFileDomain.java

@@ -1,28 +0,0 @@
-package com.qmth.teachcloud.common.domain;
-
-/**
- * @Description:
- * @Author: CaoZixuan
- * @Date:
- */
-public class FssLocalFileDomain {
-    private String config;
-
-    private String server;
-
-    public String getConfig() {
-        return config;
-    }
-
-    public void setConfig(String config) {
-        this.config = config;
-    }
-
-    public String getServer() {
-        return server;
-    }
-
-    public void setServer(String server) {
-        this.server = server;
-    }
-}

+ 0 - 28
teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssLocalPdfDomain.java

@@ -1,28 +0,0 @@
-package com.qmth.teachcloud.common.domain;
-
-/**
- * @Description:
- * @Author: CaoZixuan
- * @Date:
- */
-public class FssLocalPdfDomain {
-    private String config;
-
-    private String server;
-
-    public String getConfig() {
-        return config;
-    }
-
-    public void setConfig(String config) {
-        this.config = config;
-    }
-
-    public String getServer() {
-        return server;
-    }
-
-    public void setServer(String server) {
-        this.server = server;
-    }
-}

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicRoleDataPermission.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicRoleDataPermission.java

@@ -1,8 +1,8 @@
-package com.qmth.distributed.print.business.entity;
+package com.qmth.teachcloud.common.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.qmth.distributed.print.business.enums.DataPermissionTypeEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.enums.DataPermissionTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;

+ 1 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DataPermissionTypeEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/DataPermissionTypeEnum.java

@@ -1,7 +1,5 @@
-package com.qmth.distributed.print.business.enums;
+package com.qmth.teachcloud.common.enums;
 
-import com.qmth.teachcloud.common.enums.EnumResult;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.ArrayList;

+ 2 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/LocalCatalogEnum.java

@@ -6,8 +6,8 @@ package com.qmth.teachcloud.common.enums;
  * @Date: 2022-08-11
  */
 public enum LocalCatalogEnum {
-    LOCAL_FILE("localfile", "本地文件"),
-    LOCAL_PDF("localpdf", "本地pdf");
+    LOCAL_FILE("public", "本地文件"),
+    LOCAL_PDF("private", "本地pdf");
 
     private final String type;
     private final String desc;

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicRoleDataPermissionMapper.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicRoleDataPermissionMapper.java

@@ -1,7 +1,7 @@
-package com.qmth.distributed.print.business.mapper;
+package com.qmth.teachcloud.common.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
+import com.qmth.teachcloud.common.entity.BasicRoleDataPermission;
 
 /**
  * @Description: 角色数据权限mapper

+ 4 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicRoleDataPermissionService.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicRoleDataPermissionService.java

@@ -1,9 +1,9 @@
-package com.qmth.distributed.print.business.service;
+package com.qmth.teachcloud.common.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionRule;
-import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionInfo;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.entity.BasicRoleDataPermission;
 
 import java.util.List;
 

+ 37 - 29
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AttachmentCommonServiceImpl.java

@@ -8,6 +8,7 @@ import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.AttachmentCommonService;
+import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.Zip4jUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -45,43 +46,50 @@ public class AttachmentCommonServiceImpl implements AttachmentCommonService {
         String type = object.getString(SystemConstant.TYPE);
         UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) object.get(SystemConstant.UPLOAD_TYPE));
 
-        // 存储路径为空,使用默认值
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            rootPath = StringUtils.isNotBlank(rootPath) ? rootPath : dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + System.currentTimeMillis();
-        } else {
-            rootPath = StringUtils.isNotBlank(rootPath) ? rootPath : dictionaryConfig.fssPublicDomain().getConfig() + File.separator + System.currentTimeMillis();
-        }
-        // 存储文件名为空,使用默认值
-        fileName = StringUtils.isNotBlank(fileName) ? fileName : SystemConstant.getNanoId() + basicAttachment.getType();
-        // 存储文件类型与附件类型不一样,默认改用附件类型
-        if (!fileName.endsWith(basicAttachment.getType())) {
-            fileName = SystemConstant.getNanoId() + basicAttachment.getType();
-        }
+        File fileTemp = null;
+        try {
+            fileTemp = SystemConstant.getFileTempDirVar(String.valueOf(System.currentTimeMillis() + File.separator + SystemConstant.getNanoId()), SystemConstant.TEMP_PREFIX);
+            // 存储路径为空,使用默认值
+            rootPath = StringUtils.isNotBlank(rootPath) ? rootPath : fileTemp.getParent();
+            // 存储文件名为空,使用默认值
+            fileName = StringUtils.isNotBlank(fileName) ? fileName : SystemConstant.getNanoId() + basicAttachment.getType();
+            // 存储文件类型与附件类型不一样,默认改用附件类型
+            if (!fileName.endsWith(basicAttachment.getType())) {
+                fileName = SystemConstant.getNanoId() + basicAttachment.getType();
+            }
 
-        // oss存储
-        if (type.equals(SystemConstant.OSS)) {
-            File localPath = new File(rootPath, fileName);
-            try {
-                return fileStoreUtil.ossDownload(filePath, localPath.getPath(), uploadType.getFssType());
-            } catch (IOException e) {
-                throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
+            // oss存储
+            if (type.equals(SystemConstant.OSS)) {
+                File localPath = new File(rootPath, fileName);
+                try {
+                    return fileStoreUtil.ossDownload(filePath, localPath.getPath(), uploadType.getFssType());
+                } catch (IOException e) {
+                    throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
+                }
+            } else {
+                File file = new File(filePath);
+                if (!file.exists()) {
+                    throw ExceptionResultEnum.ERROR.exception("本地文件不存在");
+                }
+                return file;
             }
-        } else {
-            File file = new File(filePath);
-            if (!file.exists()) {
-                throw ExceptionResultEnum.ERROR.exception("本地文件不存在");
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+        } finally {
+            if (Objects.nonNull(fileTemp.getParent())) {
+                ConvertUtil.delFolder(fileTemp.getParent());
+            }
+            if (Objects.nonNull(fileTemp)) {
+                fileTemp.delete();
             }
-            return file;
         }
+        return null;
     }
 
     @Override
     public void zipFiles(HttpServletResponse response, String filePath, String zipName, List<File> files) {
-        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            filePath = StringUtils.isNotBlank(filePath) ? filePath : dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + System.currentTimeMillis();
-        } else {
-            filePath = StringUtils.isNotBlank(filePath) ? filePath : dictionaryConfig.fssPublicDomain().getConfig() + File.separator + System.currentTimeMillis();
-        }
+        File fileTemp = SystemConstant.getFileTempDirVar(String.valueOf(System.currentTimeMillis()) + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
+        filePath = StringUtils.isNotBlank(filePath) ? filePath : fileTemp.getPath();
         File rootFile = new File(filePath);
         // 创建保存目录
         if (!rootFile.exists()) {

+ 5 - 5
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AuthInfoServiceImpl.java

@@ -172,8 +172,8 @@ public class AuthInfoServiceImpl implements AuthInfoService {
 
         boolean oss = dictionaryConfig.sysDomain().isOss();
         StringJoiner stringJoiner = new StringJoiner("");
-        if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-            stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+        if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+            stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
         }
         stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
         for (OrgInfo o : orgInfoList) {
@@ -203,10 +203,10 @@ public class AuthInfoServiceImpl implements AuthInfoService {
 
                         dirName = stringJoiner.toString() + SystemConstant.getNanoId() + "." + FilenameUtils.getExtension(fileTemp.getPath());
                         String jpgFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileTemp));
-                        if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                            fileStoreUtil.localUpload(dirName, new FileInputStream(fileTemp), jpgFileMd5, LocalCatalogEnum.LOCAL_FILE);
-                        } else {
+                        if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                             fileStoreUtil.ossUpload(dirName, fileTemp, jpgFileMd5, UploadFileEnum.FILE.getFssType());
+                        } else {
+                            fileStoreUtil.localUpload(dirName, new FileInputStream(fileTemp), jpgFileMd5, LocalCatalogEnum.LOCAL_FILE);
                         }
                         basicSchool.setLogo(dirName);
                     } catch (Exception e) {

+ 9 - 18
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicAttachmentServiceImpl.java

@@ -71,8 +71,8 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             File pdfFile = new File(dirName);
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner pdfStringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                pdfStringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPrivateDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPrivateDomain().getConfig())) {
+                pdfStringJoiner.add(dictionaryConfig.fssPrivateDomain().getConfig()).add(File.separator);
             }
             pdfStringJoiner = SystemConstant.getDirName(pdfStringJoiner, UploadFileEnum.PDF, true);
             String pdfName = SystemConstant.getNanoId() + SystemConstant.PDF_PREFIX;
@@ -83,15 +83,11 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
 
             JSONObject jsonPdf = new JSONObject();
             jsonPdf.put(SystemConstant.PATH, pdfDirName);
-            if (oss) {
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {
                 jsonPdf.put(SystemConstant.TYPE, SystemConstant.OSS);
                 fileStoreUtil.ossUpload(pdfDirName, pdfFile, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
             } else {
-                if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                    fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFile), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
-                } else {
-                    fileStoreUtil.ossUpload(pdfDirName, pdfFile, pdfFileMd5, fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                }
+                fileStoreUtil.localUpload(pdfDirName, new FileInputStream(pdfFile), pdfFileMd5, LocalCatalogEnum.LOCAL_PDF);
                 jsonPdf.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             }
             jsonPdf.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.PDF);
@@ -185,26 +181,21 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             }
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, type, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(format);
 
             JSONObject jsonObject = new JSONObject();
             String dirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-            if (oss) {//上传至oss
+            jsonObject.put(SystemConstant.PATH, dirName);
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss
                 fileStoreUtil.ossUpload(dirName, file.getInputStream(), DigestUtils.md5Hex(file.getInputStream()), type.getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), DigestUtils.md5Hex(file.getInputStream()), LocalCatalogEnum.LOCAL_FILE);
-                } else {
-                    fileStoreUtil.ossUpload(dirName, file.getInputStream(), DigestUtils.md5Hex(file.getInputStream()), type.getFssType());
-                }
+                fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), DigestUtils.md5Hex(file.getInputStream()), LocalCatalogEnum.LOCAL_FILE);
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
             }
             jsonObject.put(SystemConstant.UPLOAD_TYPE, type);
 

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java

@@ -48,10 +48,12 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
     @Resource
     private BasicMajorService basicMajorService;
 
+
     @Override
     public IPage<BasicClazzResult> basicClazzPage(String queryParams, int pageNumber, int pageSize) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         queryParams = SystemConstant.translateSpecificSign(queryParams);
+
         return basicClazzMapper.findBasicClazzPage(new Page<>(pageNumber, pageSize), queryParams, schoolId, null);
     }
 

+ 7 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicRoleDataPermissionServiceImpl.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java

@@ -1,22 +1,18 @@
-package com.qmth.distributed.print.business.service.impl;
+package com.qmth.teachcloud.common.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionInfo;
-import com.qmth.distributed.print.business.bean.dto.DataPermissionRule;
-import com.qmth.distributed.print.business.entity.BasicRoleDataPermission;
-import com.qmth.distributed.print.business.enums.DataPermissionTypeEnum;
-import com.qmth.distributed.print.business.mapper.BasicRoleDataPermissionMapper;
-import com.qmth.distributed.print.business.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionInfo;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicRoleDataPermission;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.DataPermissionTypeEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.PrivilegeEnum;
-import com.qmth.teachcloud.common.service.SysOrgService;
-import com.qmth.teachcloud.common.service.SysPrivilegeService;
-import com.qmth.teachcloud.common.service.SysRoleService;
-import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.mapper.BasicRoleDataPermissionMapper;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 25 - 89
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -446,14 +446,10 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
         String filePath = (String) jsonObject.get(SystemConstant.PATH);
         if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
-                filePath = SystemConstant.getLocalFilePath(hostUrl, filePath);
-                if (filePath.startsWith(SystemConstant.ORG_SPLIT)) {
-                    url = hostUrl + filePath;
-                } else {
-                    url = hostUrl + File.separator + filePath;
-                }
+            if (filePath.contains(dictionaryConfig.fssPrivateDomain().getServer())) {
+                url = filePath.substring(filePath.indexOf(dictionaryConfig.fssPrivateDomain().getServer()), filePath.length());
+            } else if (filePath.contains(dictionaryConfig.fssPublicDomain().getServer())) {
+                url = filePath.substring(filePath.indexOf(dictionaryConfig.fssPublicDomain().getServer()), filePath.length());
             } else {
                 UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
                 url = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
@@ -481,23 +477,15 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         String pathUrl;
         if (Objects.equals(type, SystemConstant.LOCAL)) {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
-                path = SystemConstant.getLocalFilePath(hostUrl, path);
-                if (path.startsWith(SystemConstant.ORG_SPLIT)) {
-                    pathUrl = hostUrl + path;
-                } else {
-                    pathUrl = hostUrl + File.separator + path;
-                }
+            if (path.contains(dictionaryConfig.fssPrivateDomain().getServer())) {
+                pathUrl = path.substring(path.indexOf(dictionaryConfig.fssPrivateDomain().getServer()), path.length());
+            } else if (path.contains(dictionaryConfig.fssPublicDomain().getServer())) {
+                pathUrl = path.substring(path.indexOf(dictionaryConfig.fssPublicDomain().getServer()), path.length());
             } else {
                 pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
             }
         } else {
-            if (isExpire) {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
-            } else {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
-            }
+            pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
         }
         return pathUrl;
     }
@@ -525,14 +513,10 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         UploadFileEnum uploadFileEnum = jsonObject.get(SystemConstant.UPLOAD_TYPE).toString().contains(UploadFileEnum.HTML.name()) ? UploadFileEnum.HTML : UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
 
         if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
-                filePath = SystemConstant.getLocalFilePath(hostUrl, filePath);
-                if (filePath.startsWith(SystemConstant.ORG_SPLIT)) {
-                    pathUrl = hostUrl + filePath;
-                } else {
-                    pathUrl = hostUrl + File.separator + filePath;
-                }
+            if (filePath.contains(dictionaryConfig.fssPrivateDomain().getServer())) {
+                pathUrl = filePath.substring(filePath.indexOf(dictionaryConfig.fssPrivateDomain().getServer()), filePath.length());
+            } else if (filePath.contains(dictionaryConfig.fssPublicDomain().getServer())) {
+                pathUrl = filePath.substring(filePath.indexOf(dictionaryConfig.fssPublicDomain().getServer()), filePath.length());
             } else {
                 pathUrl = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
             }
@@ -560,19 +544,15 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         if (filePath.endsWith(SystemConstant.HTML_PREFIX) || filePath.endsWith(SystemConstant.FTL_PREFIX)) {
             StringBuffer sb = new StringBuffer();
             try {
-                InputStream fis;
+                InputStream fis = null;
                 if (type.equals(SystemConstant.OSS)) {
                     fis = fileStoreUtil.ossDownloadIs(filePath, uploadType.getFssType());
                 } else {
-                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                        File file = new File(filePath);
-                        if (!file.exists()) {
-                            throw ExceptionResultEnum.ERROR.exception("附件文件不存在");
-                        }
-                        fis = new FileInputStream(file);
-                    } else {
-                        fis = fileStoreUtil.ossDownloadIs(filePath, uploadType.getFssType());
+                    File file = new File(filePath);
+                    if (!file.exists()) {
+                        throw ExceptionResultEnum.ERROR.exception("附件文件不存在");
                     }
+                    fis = new FileInputStream(file);
                 }
                 ByteArrayOutputStream ou = new ByteArrayOutputStream();
                 IOUtils.copy(fis, ou);
@@ -605,21 +585,13 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         Optional.ofNullable(filePath).orElseThrow(() -> ExceptionResultEnum.ATTACHMENT_IS_NULL.exception("附件路径不存在"));
 
         UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-        StringJoiner localPath = new StringJoiner("");
         if (Objects.equals(attachmentType, SystemConstant.OSS)) {
             String suffix = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
             File fileTemp = SystemConstant.getFileTempVar(suffix);
             fileTempList.add(fileTemp);
             file = fileStoreUtil.ossDownload(filePath, fileTemp, uploadType.getFssType());
         } else {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                file = new File(filePath);
-            } else {
-                String suffix = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
-                File fileTemp = SystemConstant.getFileTempVar(suffix);
-                fileTempList.add(fileTemp);
-                file = fileStoreUtil.ossDownload(filePath, fileTemp, uploadType.getFssType());
-            }
+            file = new File(filePath);
         }
         return file;
     }
@@ -634,13 +606,13 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         File localPath = new File(rootPath, fileName);
         if (type.equals(SystemConstant.OSS)) {
             try {
-//                File file = ossUtil.ossDownload(filePath, localPath.getPath());
                 File file = fileStoreUtil.ossDownload(filePath, localPath.getPath(), uploadType.getFssType());
                 return file;
             } catch (IOException e) {
                 throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
             }
         } else {
+            filePath = SystemConstant.getLocalFilePath(filePath);
             File file = new File(filePath);
             if (!file.exists()) {
                 throw ExceptionResultEnum.ERROR.exception("本地文件不存在");
@@ -656,22 +628,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
     @Override
     public void downloadFileAndZip(HttpServletResponse response, String rootPath, List<File> files) {
-        String schoolId = ServletUtil.getRequestHeaderSchoolId().toString();
-        long time = System.nanoTime();
-        File rootFile = new File(rootPath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
+        long time = System.currentTimeMillis();
+        File zipFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + SystemConstant.ZIP_PREFIX, null);
         try {
-            String zipPath = null;
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + schoolId;
-            } else {
-                zipPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + schoolId;
-            }
-            zipFile = FileUtil.file(zipPath, time + SystemConstant.ZIP_PREFIX);
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), files, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {
@@ -692,22 +651,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
      */
     @Override
     public void downloadFileAndZip(HttpServletResponse response, String rootPath, String zipRootPath) {
-        String schoolId = ServletUtil.getRequestHeaderSchoolId().toString();
-        long time = System.nanoTime();
-        File rootFile = new File(rootPath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
+        long time = System.currentTimeMillis();
+        File zipFile = SystemConstant.getFileTempDirVar(time + SystemConstant.ZIP_PREFIX, null);
         try {
-            String zipPath = null;
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + schoolId;
-            } else {
-                zipPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + schoolId;
-            }
-            zipFile = FileUtil.file(zipPath, time + SystemConstant.ZIP_PREFIX);
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {
@@ -722,18 +668,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
     @Override
     public void downloadFileAndZip(HttpServletResponse response, String rootPath, long time) {
-        File rootFile = new File(rootPath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
+        File zipFile = SystemConstant.getFileTempDirVar(time + SystemConstant.ZIP_PREFIX, null);
         try {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipFile = FileUtil.file(dictionaryConfig.fssLocalFileDomain().getConfig(), time + SystemConstant.ZIP_PREFIX);
-            } else {
-                zipFile = FileUtil.file(dictionaryConfig.fssPublicDomain().getConfig(), time + SystemConstant.ZIP_PREFIX);
-            }
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), rootPath, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {

+ 12 - 24
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/TeachCloudReportTaskUtils.java

@@ -49,11 +49,9 @@ public class TeachCloudReportTaskUtils {
     public Long syncSemester(Long schoolId, Long thirdSemesterId, String semesterName, Long startTime, Long endTime, Boolean enable) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String saveUrl = SystemConstant.TEACHCLOUD_REPORT_OPEN_SEMESTER_EDIT_API;
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
@@ -98,11 +96,9 @@ public class TeachCloudReportTaskUtils {
     public Long syncExam(Long schoolId, Long id, String examName, Long examTime, String semesterId, Boolean enable) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String saveUrl = SystemConstant.TEACHCLOUD_REPORT_OPEN_EXAM_EDIT_API;
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
@@ -144,11 +140,9 @@ public class TeachCloudReportTaskUtils {
     public Boolean syncDeleteExam(Long schoolId, Long id) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String saveUrl = SystemConstant.TEACHCLOUD_REPORT_OPEN_EXAM_DELETE_API;
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
@@ -189,11 +183,9 @@ public class TeachCloudReportTaskUtils {
                               String paperType, String teachCollegeName, Boolean enable) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String saveUrl = SystemConstant.TEACHCLOUD_REPORT_OPEN_COURSE_EDIT_API;
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
@@ -235,11 +227,9 @@ public class TeachCloudReportTaskUtils {
     public boolean startCalc(Long schoolId, Long examId, List<String> courseCodes) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String saveUrl = SystemConstant.TEACHCLOUD_REPORT_OPEN_CALCULATE_API;
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
@@ -281,11 +271,9 @@ public class TeachCloudReportTaskUtils {
     public boolean publish(Long schoolId, Long thirdExamId, String gradeCourseCode, boolean publishStatus) {
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_REPORT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置教研分析地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String saveUrl = SystemConstant.TEACHCLOUD_REPORT_OPEN_PUBLISH_API;
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);

+ 2 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileStoreUtil.java

@@ -56,10 +56,10 @@ public class FileStoreUtil {
         String configPath = "";
         switch (catalogType) {
             case LOCAL_FILE:
-                configPath = dictionaryConfig.fssLocalFileDomain().getConfig();
+                configPath = dictionaryConfig.fssPublicDomain().getConfig();
                 break;
             case LOCAL_PDF:
-                configPath = dictionaryConfig.fssLocalPdfDomain().getConfig();
+                configPath = dictionaryConfig.fssPrivateDomain().getConfig();
                 break;
             default:
                 break;

+ 1 - 1
distributed-print-business/src/main/resources/mapper/BasicRoleDataPermissionMapper.xml → teachcloud-common/src/main/resources/mapper/BasicRoleDataPermissionMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.qmth.distributed.print.business.mapper.BasicRoleDataPermissionMapper">
+<mapper namespace="com.qmth.teachcloud.common.mapper.BasicRoleDataPermissionMapper">
 
 </mapper>

+ 9 - 20
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/CallPrintOpenApiServiceImpl.java

@@ -51,10 +51,8 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
 
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置分布式印刷地址"));
-        String hostUrl = sysConfig.getConfigValue();
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String callResult = HttpUtil.postJson(hostUrl + SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_CONFIG_API, JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
         PaperConfig paperConfig = new PaperConfig();
         if (Objects.nonNull(callResult)) {
@@ -78,10 +76,8 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
         String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_DIMENSION_API, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置分布式印刷地址"));
-        String hostUrl = sysConfig.getConfigValue();
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String callResult = HttpUtil.postJson(hostUrl + SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_DIMENSION_API, JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
         List<PaperDimension> paperDimensionList = new ArrayList<>();
         if (Objects.nonNull(callResult)) {
@@ -105,10 +101,8 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
         String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_STRUCTURE_API, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置分布式印刷地址"));
-        String hostUrl = sysConfig.getConfigValue();
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String callResult = HttpUtil.postJson(hostUrl + SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_STRUCTURE_API, JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
         List<PaperStructure> paperStructureList = new ArrayList<>();
         if (Objects.nonNull(callResult)) {
@@ -132,10 +126,8 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
         String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_EVALUATION_API, timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置分布式印刷地址"));
-        String hostUrl = sysConfig.getConfigValue();
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
+
         String callResult = HttpUtil.postJson(hostUrl + SystemConstant.TEACHCLOUD_PRINT_OPEN_PAPER_EVALUATION_API, JacksonUtil.parseJson(printOpenParams), accessToken, timestamp);
         List<PaperEvaluation> paperEvaluationList = new ArrayList<>();
         if (Objects.nonNull(callResult)) {
@@ -160,10 +152,7 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
 
         SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置分布式印刷地址"));
-        String hostUrl = sysConfig.getConfigValue();
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
 
         int pageNumber = 1;
         do {

+ 4 - 9
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java

@@ -47,7 +47,6 @@ import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URLEncoder;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -769,24 +768,20 @@ public class ReportCommonServiceImpl implements ReportCommonService {
             }
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssPublicDomain()) && !StringUtils.isBlank(dictionaryConfig.fssPublicDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, type, true);
             stringJoiner.add(SystemConstant.getNanoId()).add(format);
 
             JSONObject jsonObject = new JSONObject();
             String dirName = stringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
-            if (oss) {//上传至oss\
+            if (oss || (!oss && dictionaryConfig.fssPrivateDomain().getConfig().startsWith("../"))) {//上传至oss\
                 fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5, type.getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
-                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                    fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), md5, LocalCatalogEnum.LOCAL_FILE);
-                } else {
-                    fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5, type.getFssType());
-                }
+                fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), md5, LocalCatalogEnum.LOCAL_FILE);
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
             }

+ 1 - 4
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CalculateTaskTemplate.java

@@ -152,11 +152,8 @@ public abstract class CalculateTaskTemplate {
 
         SysConfig sysConfig = commonCacheService.addSysConfigCache(calculateParams.getSchoolId(), SystemConstant.TEACHCLOUD_PRINT_HOST_URL);
         Optional.ofNullable(sysConfig).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置分布式印刷地址"));
-        String hostUrl = sysConfig.getConfigValue();
         BasicSchool basicSchool = commonCacheService.schoolCache(calculateParams.getSchoolId());
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
+        String hostUrl = SystemConstant.getHost(sysConfig.getConfigValue(), basicSchool.getCode());
 
         String callbackResult = HttpUtil.postJson(hostUrl + SystemConstant.TEACHCLOUD_PRINT_NOTIFY_ANALYSIS_PROGRESS_API, jsonObject.toJSONString(), sign, time);
         if (Objects.nonNull(callbackResult)) {

+ 1 - 2
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysController.java

@@ -235,8 +235,7 @@ public class SysController {
             authInfoService.appHasExpired(code);
             Map<String, String> map = new HashMap<>();
             if (Objects.nonNull(basicSchool.getLogo()) && (!basicSchool.getLogo().startsWith("http") || !basicSchool.getLogo().startsWith("https"))) {
-                String url = SystemConstant.getLogoFilePath(basicSchool);
-                map.put(SystemConstant.LOGO, url);
+                map.put(SystemConstant.LOGO, SystemConstant.getLocalFilePath(basicSchool.getLogo()));
             } else {
                 map.put(SystemConstant.LOGO, basicSchool.getLogo());
             }