소스 검색

修改路径和本地上传服务器

wangliang 2 년 전
부모
커밋
6f196e1ee0
28개의 변경된 파일498개의 추가작업 그리고 243개의 파일을 삭제
  1. 11 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java
  2. 5 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  3. 9 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DownloadServiceImpl.java
  4. 6 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java
  5. 17 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  6. 8 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java
  7. 75 34
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  8. 35 16
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncExamStudentScoreServiceImpl.java
  9. 12 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/export/AsyncExportTaskTemplete.java
  10. 17 14
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java
  11. 12 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/push/AsyncPushTaskTemplate.java
  12. 68 27
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  13. 5 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java
  14. 8 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/FreemarkerUtil.java
  15. 11 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/HtmlToJpgUtil.java
  16. 13 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java
  17. 9 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  18. 7 0
      distributed-print/src/main/java/com/qmth/distributed/print/auth/DistributedPrintSession.java
  19. 7 9
      distributed-print/src/main/resources/application.properties
  20. 8 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssPrivateDomain.java
  21. 8 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssPublicDomain.java
  22. 14 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AttachmentCommonServiceImpl.java
  23. 22 21
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AuthInfoServiceImpl.java
  24. 14 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicAttachmentServiceImpl.java
  25. 64 32
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java
  26. 10 12
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java
  27. 9 5
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysController.java
  28. 14 5
      teachcloud-task/src/main/resources/application.properties

+ 11 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java

@@ -16,6 +16,7 @@ import com.qmth.distributed.print.business.service.BasicPrintConfigService;
 import com.qmth.distributed.print.business.service.BasicTemplateService;
 import com.qmth.distributed.print.business.service.ExamPrintPlanService;
 import com.qmth.distributed.print.business.util.PdfFillUtils;
+import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicPrintConfig;
@@ -68,6 +69,9 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
     @Resource
     ExamPrintPlanService examPrintPlanService;
 
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
     @Override
     public IPage<TemplateDto> list(Boolean enable, String type, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -213,7 +217,13 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         pdfStringJoiner.add(File.separator).add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
 
         String pdfDirName = pdfStringJoiner.toString();
-        String destUrl = SystemConstant.getUserDir() + File.separator + pdfDirName;
+
+        String destUrl = null;
+        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+            destUrl = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + pdfDirName;
+        } else {
+            destUrl = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + pdfDirName;
+        }
 
         // 签到表
         if (ClassifyEnum.SIGN.equals(classifyEnum)) {

+ 5 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -17,7 +17,6 @@ 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;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -568,7 +567,11 @@ public class DataSyncServiceImpl implements DataSyncService {
      */
     private String getTempDir(SyncFileTypeEnum type) {
         DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-        return SystemConstant.getUserDir() + File.separator + "upload-temp" + File.separator + type.name().toLowerCase() + File.separator + System.currentTimeMillis();
+        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();
+        }
     }
 
     /**

+ 9 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DownloadServiceImpl.java

@@ -1,6 +1,5 @@
 package com.qmth.distributed.print.business.service.impl;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -108,11 +107,14 @@ public class DownloadServiceImpl implements DownloadService {
         String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
         List<JSONObject> jsonObjectList = JSONObject.parseArray(paperAttachmentIds, JSONObject.class);
 
-
-
         // 收集处理试卷和题卡
         // 本地存储目录
-        String rootPath = SystemConstant.getUserDir() + File.separator + System.currentTimeMillis();
+        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();
+        }
         List<File> fileList = new ArrayList<>();
 
         List<String> unexposedPaperTypes = Arrays.asList(unexposedPaperType.split(","));
@@ -128,7 +130,7 @@ public class DownloadServiceImpl implements DownloadService {
 
             // 试卷附件id
             Long attachmentId = paperInfo.getAttachmentId();
-            if(attachmentId == null){
+            if (attachmentId == null) {
                 throw ExceptionResultEnum.ERROR.exception("命题任务没有上传试卷,无法下载");
             }
             // 题卡id
@@ -144,7 +146,7 @@ public class DownloadServiceImpl implements DownloadService {
             fileList.add(attachmentCommonService.downloadFile(paperPath, fileName, attachment));
 
             // 题卡
-            if (cardId != null){
+            if (cardId != null) {
                 ExamCard examCard = examCardMapper.selectById(cardId);
 
                 String cardPath = rootPath + File.separator + examTask.getCourseName() + "-" + examTask.getCourseCode() + File.separator + examTask.getPaperNumber();
@@ -247,7 +249,7 @@ public class DownloadServiceImpl implements DownloadService {
                     String paperName = null;
                     String paperSuffix = null;
                     String paperPath = null;
-                    if (Objects.nonNull(basicAttachment)){
+                    if (Objects.nonNull(basicAttachment)) {
                         paperName = basicAttachment.getName();
                         paperSuffix = basicAttachment.getType();
                         JSONObject jsonObject = JSONObject.parseObject(basicAttachment.getPath());

+ 6 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -286,8 +286,12 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     public void downloadFiles(HttpServletResponse response, ArraysParams arraysParams) throws Exception {
         // 路径规则:download-temp/{time}/{schoolId}/{courseCode}-{couseName}/{paperNumber}/{fileName}
         long time = System.nanoTime();
-        String rootPath = SystemConstant.getUserDir() + File.separator + time;
-
+        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) {

+ 17 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -994,10 +994,16 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         List<JSONObject> jsonObjectList = JSONObject.parseArray(paperAttachmentIds, JSONObject.class);
         // 本地保存目录
         Long time = System.currentTimeMillis();
-        String rootPath = SystemConstant.getUserDir() + File.separator + time;
-        StringJoiner dirPath = new StringJoiner("")
-                .add(SystemConstant.getUserDir()).add(File.separator)
-                .add(String.valueOf(time)).add(File.separator)
+        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)
@@ -1014,9 +1020,13 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 if (attachment == null) {
                     throw ExceptionResultEnum.ERROR.exception("附件数据异常");
                 }
-                StringJoiner paperPath = new StringJoiner("")
-                        .add(SystemConstant.getUserDir()).add(File.separator)
-                        .add(String.valueOf(time)).add(File.separator)
+                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)

+ 8 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java

@@ -363,8 +363,8 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
                 boolean oss = dictionaryConfig.sysDomain().isOss();
                 LocalDateTime nowTime = LocalDateTime.now();
                 StringJoiner stringJoiner = new StringJoiner("");
-                if (!oss) {
-                    stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
                 }
                 stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
                 stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -387,14 +387,17 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
                 byte[] bookByteAry = out.toByteArray();
                 inputStream = new ByteArrayInputStream(bookByteAry);
 
+                String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
                 if (oss) {//上传至oss\
-                    String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
                     fileStoreUtil.ossUpload(dirName, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), UploadFileEnum.FILE.getFssType());
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                     jsonObject.put(SystemConstant.PATH, dirName);
                 } else {//上传至服务器
-//                    TODO 上传至服务器待完善
-//                    fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                        fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                    } else {
+                        fileStoreUtil.ossUpload(dirName, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), UploadFileEnum.FILE.getFssType());
+                    }
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                     jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
                 }

+ 75 - 34
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -174,9 +174,6 @@ public class PrintCommonServiceImpl implements PrintCommonService {
     @Transactional
     public BasicAttachment saveAttachmentPdf(ClassifyEnum classifyEnum, ExamDetail examDetail, BasicAttachment basicAttachment, List<PdfDto> pdfList, Integer printCount, Integer sequence) throws IOException, DocumentException {
         try {
-            BasicSchool basicSchool = basicSchoolService.getById(examDetail.getSchoolId());
-//            Map<String, List<String>> flowSchoolCodeMap = SystemConstant.getFlowSchoolCodeMap();
-
             boolean oss = dictionaryConfig.sysDomain().isOss();
             JSONObject jsonObject = JSONObject.parseObject(basicAttachment.getPath());
             String type = basicAttachment.getType();
@@ -185,21 +182,20 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             File htmlFile = null;
             if (Objects.nonNull(type) && Objects.equals(type, SystemConstant.FTL_PREFIX)) {
                 filePath = (String) jsonObject.get(SystemConstant.HTML_PATH);
-                if (filePath.contains(SystemConstant.getUserDir())) {
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig()) && filePath.contains(dictionaryConfig.fssLocalFileDomain().getConfig())) {
                     url = filePath;
                 } else {
-                    url = SystemConstant.getUserDir() + File.separator + filePath;
+                    url = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + filePath;
                 }
                 htmlFile = new File(url);
             } else if (Objects.nonNull(type) && Objects.equals(type, SystemConstant.HTML_PREFIX)) {
                 filePath = (String) jsonObject.get(SystemConstant.PATH);
-                if (filePath.contains(SystemConstant.getUserDir())) {
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig()) && filePath.contains(dictionaryConfig.fssLocalFileDomain().getConfig())) {
                     url = filePath;
                 } else {
-                    url = SystemConstant.getUserDir() + File.separator + filePath;
+                    url = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + filePath;
                 }
                 UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-//                htmlFile = ossUtil.ossDownload(filePath, url);
                 if (oss) {
                     htmlFile = fileStoreUtil.ossDownload(filePath, url, uploadType.getFssType());
                 } else {
@@ -216,7 +212,12 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
             String pdfDirName = pdfStringJoiner.toString();
             String pdfDirNameStr = pdfStringJoiner.toString().replace("\\", "/");
-            String destUrl = SystemConstant.getUserDir() + File.separator + pdfDirName;
+            String destUrl = null;
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                destUrl = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + pdfDirName;
+            } else {
+                destUrl = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + pdfDirName;
+            }
 
             File pdfFile = new File(destUrl);
             if (!pdfFile.exists()) {
@@ -309,7 +310,13 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
             String pdfDirName = pdfStringJoiner.toString();
             String pdfDirNameStr = pdfStringJoiner.toString().replace("\\", "/");
-            String destUrl = SystemConstant.getUserDir() + File.separator + pdfDirName;
+
+            String destUrl = null;
+            if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
+                destUrl = dictionaryConfig.fssLocalPdfDomain().getConfig() + File.separator + pdfDirName;
+            } else {
+                destUrl = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + pdfDirName;
+            }
 
             createPrintPdfUtil.createSignPdf(pdfFillDto, destUrl);
 
@@ -381,8 +388,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
             }
             stringJoiner.add(UploadFileEnum.HTML.getTitle()).add(File.separator)
                     .add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -398,7 +405,13 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                 fileStoreUtil.ossUpload(dirName, htmlContent, fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.HTML_PATH, dirName);
-                String url = SystemConstant.getUserDir() + File.separator + 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 = ossUtil.ossDownload(dirName, url);
                 File localHtmlFile = fileStoreUtil.ossDownload(dirName, url, fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
                 StringJoiner pdfStringJoiner = new StringJoiner("");
@@ -409,7 +422,13 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                 pdfStringJoiner.add(File.separator).add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
 
                 String pdfDirName = pdfStringJoiner.toString();
-                String destUrl = SystemConstant.getUserDir() + File.separator + pdfDirName;
+
+                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("\\\\","/");
 
                 HtmlToPdfUtil.convert(localHtmlFile.getPath(), destUrl, PageSizeEnum.A3);
@@ -490,8 +509,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
             }
             stringJoiner.add(UploadFileEnum.HTML.getTitle()).add(File.separator)
                     .add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -507,7 +526,12 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                 fileStoreUtil.ossUpload(dirName, htmlContent, fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
-                String url = SystemConstant.getUserDir() + File.separator + 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 = new StringJoiner("");
                 pdfStringJoiner.add(UploadFileEnum.PDF.getTitle()).add(File.separator);
@@ -517,7 +541,13 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                 pdfStringJoiner.add(File.separator).add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
 
                 String pdfDirName = pdfStringJoiner.toString();
-                String destUrl = SystemConstant.getUserDir() + File.separator + pdfDirName;
+
+                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("\\\\","/");
 
                 HtmlToPdfUtil.convert(localHtmlFile.getPath(), destUrl, PageSizeEnum.A4);
@@ -593,7 +623,6 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         BasicAttachment basicAttachment = null;
         try {
             SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-            int temp = file.getOriginalFilename().lastIndexOf(".");
             String fileName = FilenameUtils.getBaseName(file.getOriginalFilename());
             String format = "." + FilenameUtils.getExtension(file.getOriginalFilename());
 
@@ -639,14 +668,11 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
             if (!oss) {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                }
             }
             stringJoiner.add(type.getTitle()).add(File.separator);
-//            else if (type == UploadFileEnum.PAPER) {//试卷需要单独
-//                stringJoiner.add(type.getTitle()).add(File.separator);
-//            } else if (type == UploadFileEnum.UPLOAD) {
-//                stringJoiner.add(type.getTitle()).add(File.separator);
-//            }
             stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
                     .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
                     .add(String.format("%02d", nowTime.getDayOfMonth()));
@@ -659,8 +685,11 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
-//                TODO 上传至服务器待完善
-//                fileStoreUtil.localUpload(dirName, file.getInputStream(), md5, LocalCatalogEnum.LOCAL_FILE);
+                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());
+                }
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 jsonObject.put(SystemConstant.PATH, dirName);
             }
@@ -1301,8 +1330,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             inputStream = new ByteArrayInputStream(fos.toByteArray());
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
             }
             stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
             stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -1315,8 +1344,11 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                 fileStoreUtil.ossUpload(dirName, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), UploadFileEnum.FILE.getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
             } else {
-//                TODO 上传至服务器待完善
-//                fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(fos.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
+                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());
+                }
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             }
             jsonObject.put(SystemConstant.PATH, dirName);
@@ -1383,7 +1415,11 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
             String pdfDirName = pdfStringJoiner.toString();
             String pdfDirNameStr = pdfStringJoiner.toString().replace("\\", "/");
-            String destUrl = SystemConstant.getUserDir() + File.separator + pdfDirName;
+
+            String destUrl = null;
+            if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
+                destUrl = dictionaryConfig.fssLocalPdfDomain().getConfig() + File.separator + pdfDirName;
+            }
 
             createPrintPdfUtil.createPackagePdf(pdfPackageDto, destUrl);
 
@@ -1447,8 +1483,13 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             String pdfDirName = pdfFile.getPath();
 
-            String sysConfigPath = SystemConstant.getUserDir() + File.separator;
-            String pdfDirNameStr = pdfDirName.replace("\\", "/").replaceAll(sysConfigPath.replace("\\", "/"), "");
+            String pdfDirNameStr = null;
+            if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
+                String sysConfigPath = dictionaryConfig.fssLocalPdfDomain().getConfig() + File.separator;
+                pdfDirNameStr = pdfDirName.replace("\\", "/").replaceAll(sysConfigPath.replace("\\", "/"), "");
+            } else {
+                pdfDirNameStr = pdfDirName;
+            }
 
             byte[] data = ByteArray.fromFile(pdfFile).value();
             String md5 = ByteArray.md5(data).toHexString();

+ 35 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncExamStudentScoreServiceImpl.java

@@ -124,10 +124,17 @@ 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("");
-            stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            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);
+            }
             List<String> trailUrlsList = tSyncExamStudentScore.getTrailUrls();
 
-            String hostUrl = SystemConstant.getLocalFileHostByUserId(SystemConstant.getUserDir(), userId);
+            String hostUrl = null;
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                hostUrl = SystemConstant.getLocalFileHostByUserId(dictionaryConfig.fssLocalFileDomain().getServer(), userId);
+            }
 
             if (needSync || Objects.isNull(tSyncExamStudentScore.getLocalSheetUrls()) || Objects.isNull(tSyncExamStudentScore.getTrajectoryUrls())) {
                 JSONArray jsonArray = JSONArray.parseArray(tSyncExamStudentScore.getSheetUrls());
@@ -176,7 +183,7 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                             sheetObject.put(SystemConstant.PATH, dirName);
                         } else {
                             if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
-                                String filePath = fileSource.getPath();
+                                fileSource.getPath();
                             }
                             sheetObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                             sheetObject.put(SystemConstant.PATH, (stringJoiner.toString() + dirJpgName.toString()).replaceAll("\\\\", "/"));
@@ -205,8 +212,8 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
 
                         ImageTrajectoryUtil.createImage(fileSource, fileTarget, markTagJsonArray);
                         fileTargetList.add(fileTarget);
+                        String dirTargetName = dirTargetJpgName.toString().replaceAll("\\\\", "/");
                         if (oss) {
-                            String dirTargetName = dirTargetJpgName.toString().replaceAll("\\\\", "/");
                             fileStoreUtil.ossUpload(dirTargetName, fileTarget, DigestUtils.md5Hex(new FileInputStream(fileTarget)), UploadFileEnum.FILE.getFssType());
                             if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
                                 trailUrlsList.add(fileStoreUtil.getPrivateUrl(dirTargetName, UploadFileEnum.FILE.getFssType()));
@@ -214,14 +221,18 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                             jsonImageTrajectoryPathArray.add(dirTargetName);
                         } else {
                             if (imageTrajectoryEnum == ImageTrajectoryEnum.PREVIEW) {
-                                String filePath = fileTarget.getPath();
-                                String trailUrl;
-                                if (filePath.startsWith("/")) {
-                                    trailUrl = hostUrl + filePath;
+                                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                                    String filePath = fileTarget.getPath();
+                                    String trailUrl;
+                                    if (filePath.startsWith("/")) {
+                                        trailUrl = hostUrl + filePath;
+                                    } else {
+                                        trailUrl = hostUrl + File.separator + filePath;
+                                    }
+                                    trailUrlsList.add(trailUrl);
                                 } else {
-                                    trailUrl = hostUrl + File.separator + filePath;
+                                    trailUrlsList.add(fileStoreUtil.getPrivateUrl(dirTargetName, UploadFileEnum.FILE.getFssType()));
                                 }
-                                trailUrlsList.add(trailUrl);
                             }
                             jsonImageTrajectoryPathArray.add((stringJoiner.toString() + dirTargetJpgName.toString()).replaceAll("\\\\", "/"));
                         }
@@ -254,13 +265,17 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
                         if (imageTrajectoryEnum == ImageTrajectoryEnum.DOWNLOAD) {
                             fileTargetList.add(new File(url));
                         } else {
-                            String trailUrl;
-                            if (url.startsWith("/")) {
-                                trailUrl = hostUrl + url;
+                            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                                String trailUrl = null;
+                                if (url.startsWith("/")) {
+                                    trailUrl = hostUrl + url;
+                                } else {
+                                    trailUrl = hostUrl + File.separator + url;
+                                }
+                                trailUrlsList.add(trailUrl);
                             } else {
-                                trailUrl = hostUrl + File.separator + url;
+                                trailUrlsList.add(fileStoreUtil.getPrivateUrl(url, UploadFileEnum.FILE.getFssType()));
                             }
-                            trailUrlsList.add(trailUrl);
                         }
                     }
                 }
@@ -300,7 +315,11 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
         try {
             if (Objects.nonNull(tSyncExamStudentScore.getTrajectoryFileList())) {
                 StringJoiner stringJoiner = new StringJoiner("");
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                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);
+                }
                 LocalDateTime nowTime = LocalDateTime.now();
                 StringJoiner dirZipName = new StringJoiner("");
                 dirZipName.add(UploadFileEnum.FILE.getTitle()).add(File.separator)

+ 12 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/export/AsyncExportTaskTemplete.java

@@ -9,6 +9,7 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.entity.TBTask;
+import com.qmth.teachcloud.common.enums.LocalCatalogEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
@@ -74,17 +75,18 @@ public abstract class AsyncExportTaskTemplete {
         ByteArrayOutputStream out = null;
         InputStream inputStream = null;
         try {
+            DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
             JSONObject jsonObject = JSONObject.parseObject(tbTask.getResultFilePath());
             if (Objects.isNull(jsonObject)) {
-                DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-
                 jsonObject = new JSONObject();
                 LocalDateTime nowTime = LocalDateTime.now();
                 StringJoiner stringJoiner = new StringJoiner("");
                 if (Objects.nonNull(dictionaryConfig) && dictionaryConfig.sysDomain().isOss()) {
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 } else {
-                    stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                        stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                    }
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 }
                 stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
@@ -112,21 +114,21 @@ public abstract class AsyncExportTaskTemplete {
             byte[] bookByteAry = out.toByteArray();
             inputStream = new ByteArrayInputStream(bookByteAry);
             StringJoiner stringJoiner = new StringJoiner("");
+            path = path.substring(0, path.lastIndexOf("/") + 1);
+            stringJoiner.add(path).add(SystemConstant.getNanoId()).add(TXT_PREFIX).toString();
             if (Objects.equals(type, SystemConstant.OSS)) {//上传至oss
-                path = path.substring(0, path.lastIndexOf("/") + 1);
-                stringJoiner.add(path).add(SystemConstant.getNanoId()).add(TXT_PREFIX).toString();
-//                ossUtil.ossUpload(stringJoiner.toString(), inputStream, null);
                 fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
             } else {//上传至服务器
-                path = path.substring(0, path.lastIndexOf("/") + 1);
-                stringJoiner.add(path).add(SystemConstant.getNanoId()).add(TXT_PREFIX).toString();
                 File finalFile = new File(stringJoiner.toString());
                 if (!finalFile.exists()) {
                     finalFile.getParentFile().mkdirs();
                     finalFile.createNewFile();
                 }
-                //TODO 上传至服务器待完善
-//                fileStoreUtil.copyInputStreamToFile(inputStream,finalFile,DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    fileStoreUtil.copyInputStreamToFile(inputStream, finalFile, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                } else {
+                    fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
+                }
             }
             JSONObject json = new JSONObject();
             json.put(SystemConstant.PATH, stringJoiner.toString());

+ 17 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java

@@ -8,10 +8,7 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.entity.TBTask;
-import com.qmth.teachcloud.common.enums.TaskResultEnum;
-import com.qmth.teachcloud.common.enums.TaskStatusEnum;
-import com.qmth.teachcloud.common.enums.TaskTypeEnum;
-import com.qmth.teachcloud.common.enums.UploadFileEnum;
+import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.service.TBTaskService;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
@@ -78,7 +75,12 @@ public abstract class AsyncImportTaskTemplete {
             inputStream = fileStoreUtil.ossDownloadIs(path, uploadType.getFssType());
         } else {
 //            StringJoiner localPath = new StringJoiner("").add(SystemConstant.TEMP_FILES_DIR).add(File.separator).add(path);
-            inputStream = new FileInputStream(new File(path));
+            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 = fileStoreUtil.ossDownloadIs(path, "localfile");
         }
         return inputStream;
@@ -90,22 +92,23 @@ public abstract class AsyncImportTaskTemplete {
      * @param tbTask
      */
     public void createTxt(TBTask tbTask) {
-//        OssUtil ossUtil = SpringContextHolder.getBean(OssUtil.class);
+        FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
+        DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
         ByteArrayOutputStream out = null;
         InputStream inputStream = null;
         try {
             JSONObject jsonObject = JSONObject.parseObject(tbTask.getImportFilePath());
             if (Objects.isNull(jsonObject)) {
-                DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-
                 jsonObject = new JSONObject();
                 LocalDateTime nowTime = LocalDateTime.now();
                 StringJoiner stringJoiner = new StringJoiner("");
                 if (Objects.nonNull(dictionaryConfig) && dictionaryConfig.sysDomain().isOss()) {
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 } else {
-                    stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                    if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                        stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                    }
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 }
                 stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
@@ -140,13 +143,13 @@ public abstract class AsyncImportTaskTemplete {
             path = path.substring(0, path.lastIndexOf("/") + 1);
             stringJoiner.add(path).add(SystemConstant.getNanoId()).add(TXT_PREFIX).toString();
             if (Objects.equals(type, SystemConstant.OSS)) {//上传至oss
-                stringJoiner.add(path).add(SystemConstant.getNanoId()).add(TXT_PREFIX).toString();
-                FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
                 fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
             } else {//上传至服务器
-                FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
-//                TODO 上传至服务器待完善
-//                fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                } else {
+                    fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
+                }
             }
             JSONObject json = new JSONObject();
             json.put(SystemConstant.PATH, stringJoiner.toString());

+ 12 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/push/AsyncPushTaskTemplate.java

@@ -9,6 +9,7 @@ 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.SysConfig;
+import com.qmth.teachcloud.common.enums.LocalCatalogEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
@@ -75,7 +76,7 @@ public abstract class AsyncPushTaskTemplate {
         try {
             String charset = SystemConstant.CHARSET_GBK;
             CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
-            if(commonCacheService != null) {
+            if (commonCacheService != null) {
                 SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.SYS_CONFIG_KEY_CHARSETS);
                 if (sysConfig != null && StringUtils.isNotBlank(sysConfig.getConfigValue())) {
                     charset = sysConfig.getConfigValue();
@@ -93,25 +94,31 @@ public abstract class AsyncPushTaskTemplate {
             if (oss) {
                 json.put(SystemConstant.TYPE, SystemConstant.OSS);
             } else {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                }
                 json.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             }
             stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
+
             LocalDateTime nowTime = LocalDateTime.now();
             stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
                     .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
                     .add(String.format("%02d", nowTime.getDayOfMonth()))
                     .add(File.separator).add(SystemConstant.getNanoId()).add(TXT_PREFIX);
 
-            String path = stringJoiner.toString().replaceAll("\\\\","/");
+            String path = stringJoiner.toString().replaceAll("\\\\", "/");
             String type = (String) json.get(SystemConstant.TYPE);
 
             //上传至oss
             if (Objects.equals(type, SystemConstant.OSS)) {
                 fileStoreUtil.ossUpload(path, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
             } else {//上传至服务器
-//                TODO 上传至服务器待完善
-//                fileStoreUtil.copyInputStreamToFile(inputStream,new File(stringJoiner.toString()),DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+                } else {
+                    fileStoreUtil.ossUpload(path, inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
+                }
             }
             json.put(SystemConstant.PATH, path);
             json.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);

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

@@ -690,9 +690,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
             jsonObject.put(SystemConstant.PATH, dirName);
         } else {
-            dirName = (SystemConstant.getUserDir() + File.separator + dirName).replaceAll("\\\\", "/");
-//            TODO 上传至服务器待完善
-//            fileStoreUtil.copyInputStreamToFile(in, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(outputStream.toByteArray())), LocalCatalogEnum.LOCAL_FILE);
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                dirName = (dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + dirName).replaceAll("\\\\", "/");
+                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())), fileStoreUtil.getUploadEnumByPath(dirName).getFssType());
+            }
             jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
             jsonObject.put(SystemConstant.PATH, dirName);
         }
@@ -930,8 +933,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             List<ExamDetailPdfDownloadDto> examDetailList = examDetailService.findPdfDownload(Arrays.asList(arraysParams.getIds()));
             if (!CollectionUtils.isEmpty(examDetailList)) {
                 LocalDateTime nowTime = LocalDateTime.now();
-                StringJoiner stringJoiner = new StringJoiner("")
-                        .add(SystemConstant.getUserDir()).add(File.separator);
+                StringJoiner stringJoiner = new StringJoiner("");
+                Long time = System.currentTimeMillis();
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    stringJoiner = stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                    zipLocalRootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + time;
+                } else {
+                    stringJoiner = stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
+                    zipLocalRootPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + time;
+                }
                 StringJoiner dirName = new StringJoiner("")
                         .add(UploadFileEnum.FILE.getTitle()).add(File.separator)
                         .add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -943,8 +953,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     zipFile.getParentFile().mkdirs();
                 }
 
-                Long time = System.currentTimeMillis();
-                zipLocalRootPath = SystemConstant.getUserDir() + File.separator + time;
                 sourceFileList = new ArrayList<>(examDetailList.size() * 5);
                 for (ExamDetailPdfDownloadDto e : examDetailList) {
                     StringJoiner dirPath = new StringJoiner("")
@@ -1042,9 +1050,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     private File getJsonFile(JSONObject jsonObject, String pathName) throws Exception {
         File file = null;
         String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
-        StringJoiner stringJoinerPdf = new StringJoiner("")
-                .add(SystemConstant.getUserDir()).add(File.separator)
-                .add(pathName);
+        StringJoiner stringJoinerPdf = new StringJoiner("");
+        if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+            stringJoinerPdf = stringJoinerPdf.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+        } else {
+            stringJoinerPdf = stringJoinerPdf.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
+        }
+        stringJoinerPdf = stringJoinerPdf.add(pathName);
         if (Objects.nonNull(attachmentType) && !Objects.equals(attachmentType, SystemConstant.LOCAL)) {
             file = fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PDF_PATH), stringJoinerPdf.toString(), UploadFileEnum.PDF.getFssType());
         } else {
@@ -1072,9 +1084,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             JSONObject jsonObject = JSONObject.parseObject(attachment.getPath());
             String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
             UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-            StringJoiner stringJoinerPdf = new StringJoiner("")
-                    .add(SystemConstant.getUserDir()).add(File.separator)
-                    .add(pathName);
+            StringJoiner stringJoinerPdf = new StringJoiner("");
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoinerPdf = stringJoinerPdf.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            } else {
+                stringJoinerPdf = stringJoinerPdf.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
+            }
+            stringJoinerPdf = stringJoinerPdf.add(pathName);
             if (Objects.nonNull(attachmentType) && !Objects.equals(attachmentType, SystemConstant.LOCAL)) {
                 file = fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), stringJoinerPdf.toString(), uploadFileEnum.getFssType());
             } else {
@@ -1095,7 +1111,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         int count = 0;
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         LocalDateTime nowTime = LocalDateTime.now();
-        String zipJoiner = SystemConstant.getUserDir() + File.separator;
+        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;
+        }
         String dirName = UploadFileEnum.FILE.getTitle() + File.separator +
                 nowTime.getYear() + File.separator +
                 String.format("%02d", nowTime.getMonthValue()) + File.separator +
@@ -1111,7 +1135,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         boolean oss = dictionaryConfig.sysDomain().isOss();
 
         // 跟文件路径
-        String zipLocalRootPath = SystemConstant.getUserDir() + File.separator + System.currentTimeMillis();
         Long[] ids = (Long[]) map.get("ids");
         for (Long id : ids) {
             ExamTask examTask = examTaskService.getById(id);
@@ -1269,8 +1292,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             String yyyyMMddHH24mmss = DateUtil.format(new Date(), "yyyyMMddHHmmss");
             BasicSchool basicSchool = commonCacheService.schoolCache(tbTask.getSchoolId());
             LocalDateTime nowTime = LocalDateTime.now();
-            StringJoiner zipJoiner = new StringJoiner("")
-                    .add(SystemConstant.getUserDir()).add(File.separator);
+            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;
+            }
             StringJoiner dirName = new StringJoiner("")
                     .add(UploadFileEnum.FILE.getTitle()).add(File.separator)
                     .add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -1281,17 +1311,19 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             String dirNameTmp = dirName.toString().replaceAll("\\\\", "/");
 
             // 根文件路径
-            Long time = System.currentTimeMillis();
-            zipLocalRootPath = SystemConstant.getUserDir() + File.separator + time;
             boolean oss = dictionaryConfig.sysDomain().isOss();
 
             List<ExamTaskDetailDto> examTasks = (List<ExamTaskDetailDto>) map.get("examTasks");
             for (ExamTaskDetailDto examTask : examTasks) {
                 ExamTaskDetailPdfDownloadDto examTaskDetailPdfDownloadDto = examTaskDetailService.findPdfDownload(Long.valueOf(examTask.getId()));
 
-                StringJoiner dirPath = new StringJoiner("")
-                        .add(SystemConstant.getUserDir()).add(File.separator)
-                        .add(String.valueOf(time)).add(File.separator)
+                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)
                         .add(examTaskDetailPdfDownloadDto.getCourseNameCode()).add(File.separator)
@@ -1810,7 +1842,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 }.getType());
                 LocalDateTime nowTime = LocalDateTime.now();
                 StringJoiner stringJoiner = new StringJoiner("");
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                } else {
+                    stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
+                }
                 StringJoiner dirZipName = new StringJoiner("");
                 dirZipName.add(UploadFileEnum.FILE.getTitle()).add(File.separator)
                         .add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -1926,7 +1962,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 
 
         LocalDateTime nowTime = LocalDateTime.now();
-        String zipJoiner = SystemConstant.getUserDir() + File.separator;
+        long time = System.currentTimeMillis();
+        String zipJoiner = null, zipLocalRootPath = null;
+        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;
+        }
         String dirName = UploadFileEnum.FILE.getTitle() + File.separator +
                 nowTime.getYear() + File.separator +
                 String.format("%02d", nowTime.getMonthValue()) + File.separator +
@@ -1939,9 +1983,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 //            boolean cf = zipFile.createNewFile();
         }
 
-        // 根文件路径
-        String zipLocalRootPath = SystemConstant.getUserDir() + File.separator + System.currentTimeMillis();
-
         ExamTaskPaperDto examTaskPaperDto = downloadService.findDownloadContent(schoolId, semesterId, examId, orgId, courseName, idSet);
         // 导出文件excel
         List<ExamTaskPaperExportDto> examTaskPaperExportDtoList = examTaskPaperDto.getExamTaskPaperExportDtoList();

+ 5 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -12,12 +12,11 @@ import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.cache.CreatePdfCacheUtil;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
-import com.qmth.teachcloud.common.entity.*;
-import com.qmth.teachcloud.common.enums.PrintMethodEnum;
 import com.qmth.distributed.print.business.enums.StudentClazzEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ConvertUtil;
@@ -1120,7 +1119,10 @@ public class CreatePdfUtil {
                                           BasicExam basicExam,
                                           List<PdfDto> mergePdfDeleteList) throws Exception {
         boolean oss = dictionaryConfig.sysDomain().isOss();
-        StringJoiner stringJoiner = new StringJoiner("").add(SystemConstant.getUserDir()).add(File.separator);
+        StringJoiner stringJoiner = new StringJoiner("");
+        if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
+            stringJoiner = stringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+        }
         // oss上只认"/",windows生成的路径分隔符全部替换为"/"
         File localA4PdfFile = null, localPaperPdfFile = null, localA3PdfCardFile = null;
         BasicAttachment basicAttachment = null;

+ 8 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/FreemarkerUtil.java

@@ -14,6 +14,7 @@ import com.qmth.teachcloud.common.util.FileStoreUtil;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Lazy;
@@ -98,10 +99,10 @@ public class FreemarkerUtil {
 
             Configuration configuration = new Configuration(Configuration.VERSION_2_3_29);
             File templates = null;
-            if (ftlPath.contains(SystemConstant.getUserDir())) {
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig()) && ftlPath.contains(dictionaryConfig.fssLocalFileDomain().getConfig())) {
                 templates = ResourceUtils.getFile(ftlPath);
             } else {
-                templates = ResourceUtils.getFile(SystemConstant.getUserDir() + File.separator + ftlPath);
+                templates = ResourceUtils.getFile(dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + ftlPath);
             }
             configuration.setDirectoryForTemplateLoading(templates);
             // step1 加载模版文件
@@ -110,7 +111,11 @@ public class FreemarkerUtil {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+            } else {
+                stringJoiner.add(dictionaryConfig.fssPublicDomain().getConfig()).add(File.separator);
+            }
             StringJoiner htmlStringJoiner = new StringJoiner("");
             htmlStringJoiner.add(UploadFileEnum.HTML.getTitle()).add(File.separator);
             htmlStringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)

+ 11 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/HtmlToJpgUtil.java

@@ -10,6 +10,7 @@ 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;
@@ -25,6 +26,7 @@ import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -40,6 +42,9 @@ public class HtmlToJpgUtil {
     @Resource
     PrintCommonService printCommonService;
 
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
     private final static Logger log = LoggerFactory.getLogger(HtmlToJpgUtil.class);
 
     /**
@@ -51,7 +56,12 @@ public class HtmlToJpgUtil {
      */
     public List<BasicAttachment> convertHtmlToJpg(String cardTitle, String htmlContent, PageSizeEnum pageSizeEnum) throws Exception {
         // 本地存储目录
-        String rootPath = SystemConstant.getUserDir() + File.separator + System.currentTimeMillis();
+        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();
+        }
         // html临时路径
         String htmlPath = rootPath + File.separator + "html" + File.separator + cardTitle + SystemConstant.HTML_PREFIX;
         // pdf临时路径

+ 13 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java

@@ -18,6 +18,7 @@ import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.util.JacksonUtil;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -59,7 +60,12 @@ public class PdfUtil {
                 if (Objects.isNull(outputPath)) {
                     DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
                     LocalDateTime nowTime = LocalDateTime.now();
-                    StringJoiner stringJoiner = new StringJoiner("").add(SystemConstant.getUserDir()).add(File.separator);
+                    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);
+                    }
                     dirName = new StringJoiner("")
                             .add(UploadFileEnum.PDF.getTitle()).add(File.separator)
                             .add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -308,8 +314,12 @@ public class PdfUtil {
         DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
         LocalDateTime nowTime = LocalDateTime.now();
         StringJoiner stringJoiner = new StringJoiner("");
-        stringJoiner.add(SystemConstant.getUserDir()).add(File.separator)
-                .add(UploadFileEnum.PAPER.getTitle()).add(File.separator)
+        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.add(UploadFileEnum.PAPER.getTitle()).add(File.separator)
                 .add(String.valueOf(nowTime.getYear())).add(File.separator)
                 .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
                 .add(String.format("%02d", nowTime.getDayOfMonth()))

+ 9 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -423,13 +423,17 @@ public class SysController {
             SysConfig sysConfig = commonCacheService.addSysConfigCache(basicSchool.getId(), SystemConstant.ACCOUNT_SMS_VERIFY);
             Map<String, Object> map = new HashMap<>();
             if (Objects.nonNull(basicSchool.getLogo()) && (!basicSchool.getLogo().startsWith("http") || !basicSchool.getLogo().startsWith("https"))) {
-                String hostUrl = SystemConstant.getLocalFileHost(SystemConstant.getUserDir());
-                String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
                 String url = null;
-                if (filePath.startsWith("/")) {
-                    url = hostUrl + filePath;
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                    String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
+                    String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
+                    if (filePath.startsWith("/")) {
+                        url = hostUrl + filePath;
+                    } else {
+                        url = hostUrl + File.separator + filePath;
+                    }
                 } else {
-                    url = hostUrl + File.separator + filePath;
+                    url = basicSchool.getLogo();
                 }
                 map.put(SystemConstant.LOGO, url);
             } else {

+ 7 - 0
distributed-print/src/main/java/com/qmth/distributed/print/auth/DistributedPrintSession.java

@@ -53,4 +53,11 @@ public class DistributedPrintSession implements AccessEntity {
     public void setSignatureType(SignatureType signatureType) {
         this.signatureType = signatureType;
     }
+
+    @Override
+    public String getLogName() {
+        RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
+        TBSession tbSession = (TBSession) redisUtil.getUserSession(identity);
+        return identity;
+    }
 }

+ 7 - 9
distributed-print/src/main/resources/application.properties

@@ -58,20 +58,18 @@ spring.activiti.history-level=audit
 #com.qmth.fss.private.server=https://teachcloud-test.oss-cn-shenzhen.aliyuncs.com
 
 com.qmth.fss.public.config=../static/
-com.qmth.fss.public.server=/Users/king/git
+com.qmth.fss.public.server=/static/
 com.qmth.fss.private.config=../static/
-com.qmth.fss.private.server=/Users/king/git
+com.qmth.fss.private.server=/static/
 
-#com.qmth.fss.localfile.config=
-#com.qmth.fss.localfile.server=
-#com.qmth.fss.localpdf.config=
-#com.qmth.fss.localpdf.server=
+#com.qmth.fss.localfile.config=/Users/king/Downloads/file-temp
+#com.qmth.fss.localfile.server=http://127.0.0.1:7001
+#com.qmth.fss.localpdf.config=/Users/king/Downloads/pdf-temp
+#com.qmth.fss.localpdf.server=http://127.0.0.1:7001
 
 #\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=true
+sys.config.oss=false
 sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
-sys.config.serverUpload=/Users/king/git
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 #com.qmth.api.uri-prefix=/aaa
 #\u7EDF\u8BA1\u9875\u9762\u914D\u7F6E

+ 8 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssPrivateDomain.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.common.domain;
 
+import org.apache.commons.lang3.StringUtils;
+
 /**
  * @Description: 文件存储中心配置-私有
  * @Author: CaoZixuan
@@ -25,7 +27,12 @@ public class FssPrivateDomain {
     }
 
     public String getServer() {
-        return server;
+        if (!StringUtils.isBlank(this.server) && this.server.endsWith("/")) {
+            this.server = this.server.substring(0, this.server.length() - 1);
+            return this.server;
+        } else {
+            return this.server;
+        }
     }
 
     public void setServer(String server) {

+ 8 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/domain/FssPublicDomain.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.common.domain;
 
+import org.apache.commons.lang3.StringUtils;
+
 /**
  * @Description: 文件存储中心配置-公有
  * @Author: CaoZixuan
@@ -25,7 +27,12 @@ public class FssPublicDomain {
     }
 
     public String getServer() {
-        return server;
+        if (!StringUtils.isBlank(this.server) && this.server.endsWith("/")) {
+            this.server = this.server.substring(0, this.server.length() - 1);
+            return this.server;
+        } else {
+            return this.server;
+        }
     }
 
     public void setServer(String server) {

+ 14 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AttachmentCommonServiceImpl.java

@@ -1,7 +1,6 @@
 package com.qmth.teachcloud.common.service.impl;
 
 import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.lang.UUID;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -21,6 +20,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 试卷、题卡下载、预览等操作公共服务service impl
@@ -46,12 +46,16 @@ public class AttachmentCommonServiceImpl implements AttachmentCommonService {
         UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) object.get(SystemConstant.UPLOAD_TYPE));
 
         // 存储路径为空,使用默认值
-        rootPath = StringUtils.isNotBlank(rootPath) ? rootPath : SystemConstant.getUserDir() + File.separator + System.currentTimeMillis();
+        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 : UUID.fastUUID() + basicAttachment.getType();
+        fileName = StringUtils.isNotBlank(fileName) ? fileName : SystemConstant.getNanoId() + basicAttachment.getType();
         // 存储文件类型与附件类型不一样,默认改用附件类型
         if (!fileName.endsWith(basicAttachment.getType())) {
-            fileName = UUID.fastUUID() + basicAttachment.getType();
+            fileName = SystemConstant.getNanoId() + basicAttachment.getType();
         }
 
         // oss存储
@@ -73,7 +77,11 @@ public class AttachmentCommonServiceImpl implements AttachmentCommonService {
 
     @Override
     public void zipFiles(HttpServletResponse response, String filePath, String zipName, List<File> files) {
-        filePath = StringUtils.isNotBlank(filePath) ? filePath : SystemConstant.getUserDir() + File.separator + System.currentTimeMillis();
+        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 rootFile = new File(filePath);
         // 创建保存目录
         if (!rootFile.exists()) {
@@ -81,7 +89,7 @@ public class AttachmentCommonServiceImpl implements AttachmentCommonService {
         }
         File zipFile = null;
         try {
-            zipName = StringUtils.isNotBlank(zipName) ? zipName : UUID.fastUUID() + ".zip";
+            zipName = StringUtils.isNotBlank(zipName) ? zipName : SystemConstant.getNanoId() + ".zip";
             zipFile = FileUtil.file(filePath, zipName);
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), files, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, zipName);

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

@@ -17,6 +17,7 @@ import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -192,30 +193,30 @@ public class AuthInfoServiceImpl implements AuthInfoService {
             BasicSchool basicSchool = basicSchoolService.getOne(basicSchoolQueryWrapper);
             if (Objects.isNull(basicSchool)) {//不存在则创建学校
                 basicSchool = new BasicSchool(o.getId(), o.getCode(), o.getName(), o.getAccessKey(), o.getAccessSecret());
-                if (Objects.nonNull(o.getLogo()) && (!o.getLogo().startsWith("https:") || !o.getLogo().startsWith("http"))) {
-                    File fileTemp = null;
-                    String dirName = null;
-                    try {
-//                        File fileNew = new File("/Users/king/Downloads/spring.jpg");
-//                        fileTemp = File.createTempFile("temp", ".jpg");
-                        SystemConstant.base64ToImage(o.getLogo(), fileTemp.getPath());
-//                        FileUtils.copyInputStreamToFile(new FileInputStream(fileNew), fileTemp);
+//                if (Objects.nonNull(o.getLogo()) && (!o.getLogo().startsWith("https:") || !o.getLogo().startsWith("http"))) {
+                File fileTemp = null;
+                String dirName = null;
+                try {
+                    File fileNew = new File("/Volumes/extend/图库/spring.jpg");
+                    fileTemp = File.createTempFile("temp", ".jpg");
+//                        SystemConstant.base64ToImage(o.getLogo(), fileTemp.getPath());
+                    FileUtils.copyInputStreamToFile(new FileInputStream(fileNew), fileTemp);
 
-                        dirName = stringJoiner.toString() + SystemConstant.getNanoId() + "." + FilenameUtils.getExtension(fileTemp.getPath());
-                        fileStoreUtil.ossUpload(dirName, fileTemp, DigestUtils.md5Hex(new FileInputStream(fileTemp)), UploadFileEnum.FILE.getFssType());
-                    } catch (Exception e) {
-                        log.error(SystemConstant.LOG_ERROR, e);
-                    } finally {
-                        if (Objects.nonNull(fileTemp)) {
-                            fileTemp.delete();
-                        }
-                        if (Objects.nonNull(dirName)) {
-                            basicSchool.setLogo(dictionaryConfig.fssPublicDomain().getServer() + File.separator + dirName);
-                        }
+                    dirName = stringJoiner.toString() + SystemConstant.getNanoId() + "." + FilenameUtils.getExtension(fileTemp.getPath());
+                    fileStoreUtil.ossUpload(dirName, fileTemp, DigestUtils.md5Hex(new FileInputStream(fileTemp)), UploadFileEnum.FILE.getFssType());
+                } catch (Exception e) {
+                    log.error(SystemConstant.LOG_ERROR, e);
+                } finally {
+                    if (Objects.nonNull(fileTemp)) {
+                        fileTemp.delete();
+                    }
+                    if (Objects.nonNull(dirName)) {
+                        basicSchool.setLogo(dictionaryConfig.fssPublicDomain().getServer() + File.separator + dirName);
                     }
-                } else {
-                    basicSchool.setLogo(o.getLogoUrl());
                 }
+//                } else {
+//                    basicSchool.setLogo(o.getLogoUrl());
+//                }
                 basicSchoolSet.add(basicSchool);
             } else {
                 basicSchool.setAccessKey(o.getAccessKey());

+ 14 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicAttachmentServiceImpl.java

@@ -9,6 +9,7 @@ import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.SysConfig;
 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.mapper.BasicAttachmentMapper;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
@@ -18,6 +19,7 @@ import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -67,7 +69,10 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
     public BasicAttachment saveAttachmentPdf(String dirName, Long userId) throws IOException {
         BasicAttachment basicAttachment = null;
         try {
-            StringJoiner stringJoiner = new StringJoiner("").add(SystemConstant.getUserDir()).add(File.separator);
+            StringJoiner stringJoiner = new StringJoiner("");
+            if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
+                stringJoiner = stringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+            }
             File localPdfFile = new File(stringJoiner.toString() + File.separator + dirName);
             if (!localPdfFile.getParentFile().exists()) {
                 localPdfFile.getParentFile().mkdirs();
@@ -174,8 +179,8 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             boolean oss = dictionaryConfig.sysDomain().isOss();
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
             }
             stringJoiner.add(type.getTitle()).add(File.separator);
             stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
@@ -184,14 +189,17 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
 
             JSONObject jsonObject = new JSONObject();
             stringJoiner.add(File.separator).add(SystemConstant.getNanoId()).add(format);
+            String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
             if (oss) {//上传至oss\
-                String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
                 fileStoreUtil.ossUpload(dirName, file.getInputStream(), DigestUtils.md5Hex(file.getInputStream()), type.getFssType());
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
-                //TODO 上传至服务器待完善
-//                fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), DigestUtils.md5Hex(file.getInputStream()), LocalCatalogEnum.LOCAL_FILE);
+                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());
+                }
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
             }

+ 64 - 32
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -32,6 +32,7 @@ import org.springframework.util.LinkedMultiValueMap;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -445,12 +446,17 @@ 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)) {
-            String hostUrl = SystemConstant.getLocalFileHost(SystemConstant.getUserDir());
-            filePath = SystemConstant.getLocalFilePath(hostUrl, filePath);
-            if (filePath.startsWith("/")) {
-                url = hostUrl + filePath;
+            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("/")) {
+                    url = hostUrl + filePath;
+                } else {
+                    url = hostUrl + File.separator + filePath;
+                }
             } else {
-                url = hostUrl + File.separator + filePath;
+                UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+                url = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
             }
         } else {
             UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
@@ -475,12 +481,16 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         String pathUrl;
         if (Objects.equals(type, SystemConstant.LOCAL)) {
-            String hostUrl = SystemConstant.getLocalFileHost(SystemConstant.getUserDir());
-            path = SystemConstant.getLocalFilePath(hostUrl, path);
-            if (path.startsWith("/")) {
-                pathUrl = hostUrl + path;
+            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("/")) {
+                    pathUrl = hostUrl + path;
+                } else {
+                    pathUrl = hostUrl + File.separator + path;
+                }
             } else {
-                pathUrl = hostUrl + File.separator + path;
+                pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
             }
         } else {
             if (isExpire) {
@@ -488,7 +498,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
             } else {
                 pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
             }
-
         }
         return pathUrl;
     }
@@ -516,12 +525,16 @@ 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)) {
-            String hostUrl = SystemConstant.getLocalFileHost(SystemConstant.getUserDir());
-            filePath = SystemConstant.getLocalFilePath(hostUrl, filePath);
-            if (filePath.startsWith("/")) {
-                pathUrl = hostUrl + filePath;
+            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("/")) {
+                    pathUrl = hostUrl + filePath;
+                } else {
+                    pathUrl = hostUrl + File.separator + filePath;
+                }
             } else {
-                pathUrl = hostUrl + File.separator + filePath;
+                pathUrl = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
             }
         } else {
             pathUrl = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
@@ -551,17 +564,19 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
                 if (type.equals(SystemConstant.OSS)) {
                     fis = fileStoreUtil.ossDownloadIs(filePath, uploadType.getFssType());
                 } else {
-                    File file = new File(filePath);
-                    if (!file.exists()) {
-                        throw ExceptionResultEnum.ERROR.exception("附件文件不存在");
+                    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());
                     }
-                    fis = new FileInputStream(file);
-                }
-                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
-                String s;
-                while ((s = br.readLine()) != null) {
-                    sb.append(s).append("\n");
                 }
+                ByteArrayOutputStream ou = new ByteArrayOutputStream();
+                IOUtils.copy(fis, ou);
+                sb.append(new String(ou.toByteArray(), StandardCharsets.UTF_8));
             } catch (IOException e) {
                 throw ExceptionResultEnum.ERROR.exception("文件读取异常");
             } catch (Exception e) {
@@ -590,12 +605,15 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
         StringJoiner localPath = new StringJoiner("");
         if (Objects.equals(attachmentType, SystemConstant.OSS)) {
-//            file = ossUtil.ossDownload(filePath, localPath.toString());
-            localPath = localPath.add(SystemConstant.getUserDir()).add(File.separator).add(filePath);
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig()) && !filePath.contains(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                localPath = localPath.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator).add(filePath);
+            } else {
+                localPath = localPath.add(filePath);
+            }
             file = fileStoreUtil.ossDownload(filePath, localPath.toString(), uploadType.getFssType());
         } else {
-            if (!filePath.contains(SystemConstant.getUserDir())) {
-                localPath = localPath.add(SystemConstant.getUserDir()).add(File.separator).add(filePath);
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig()) && !filePath.contains(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                localPath = localPath.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator).add(filePath);
             } else {
                 localPath = localPath.add(filePath);
             }
@@ -645,7 +663,12 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         File zipFile = null;
         try {
-            String zipPath = SystemConstant.getUserDir() + File.separator + schoolId;
+            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 + ".zip");
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), files, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
@@ -676,7 +699,12 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         File zipFile = null;
         try {
-            String zipPath = SystemConstant.getUserDir() + File.separator + schoolId;
+            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 + ".zip");
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
@@ -699,7 +727,11 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         File zipFile = null;
         try {
-            zipFile = FileUtil.file(SystemConstant.getUserDir(), time + ".zip");
+            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                zipFile = FileUtil.file(dictionaryConfig.fssLocalFileDomain().getConfig(), time + ".zip");
+            } else {
+                zipFile = FileUtil.file(dictionaryConfig.fssPublicDomain().getConfig(), time + ".zip");
+            }
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), rootPath, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {

+ 10 - 12
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/ReportCommonServiceImpl.java

@@ -13,6 +13,7 @@ import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBSession;
 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.BasicAttachmentService;
 import com.qmth.teachcloud.common.service.CommonCacheService;
@@ -30,6 +31,7 @@ import com.qmth.teachcloud.report.business.utils.AnalyzeScopeUtil;
 import com.qmth.teachcloud.report.business.utils.MathUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -724,7 +726,6 @@ public class ReportCommonServiceImpl implements ReportCommonService {
         BasicAttachment basicAttachment = null;
         try {
             SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-            int temp = file.getOriginalFilename().lastIndexOf(".");
             String fileName = FilenameUtils.getBaseName(file.getOriginalFilename());
             String format = "." + FilenameUtils.getExtension(file.getOriginalFilename());
 
@@ -769,30 +770,27 @@ public class ReportCommonServiceImpl implements ReportCommonService {
             boolean oss = dictionaryConfig.sysDomain().isOss();
             LocalDateTime nowTime = LocalDateTime.now();
             StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(SystemConstant.getUserDir()).add(File.separator);
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
             }
             stringJoiner.add(type.getTitle()).add(File.separator);
-//            else if (type == UploadFileEnum.PAPER) {//试卷需要单独
-//                stringJoiner.add(type.getTitle()).add(File.separator);
-//            } else if (type == UploadFileEnum.UPLOAD) {
-//                stringJoiner.add(type.getTitle()).add(File.separator);
-//            }
             stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
                     .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
                     .add(String.format("%02d", nowTime.getDayOfMonth()));
 
             JSONObject jsonObject = new JSONObject();
             stringJoiner.add(File.separator).add(SystemConstant.getNanoId()).add(format);
+            String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
             if (oss) {//上传至oss\
-                String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
                 fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5, type.getFssType());
-
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
-//                TODO 上传至服务器待完善
-//                fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), md5, LocalCatalogEnum.LOCAL_FILE);
+                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());
+                }
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
                 jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
             }

+ 9 - 5
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysController.java

@@ -238,13 +238,17 @@ 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 hostUrl = SystemConstant.getLocalFileHost(SystemConstant.getUserDir());
-                String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
                 String url = null;
-                if (filePath.startsWith("/")) {
-                    url = hostUrl + filePath;
+                if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                    String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
+                    String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
+                    if (filePath.startsWith("/")) {
+                        url = hostUrl + filePath;
+                    } else {
+                        url = hostUrl + File.separator + filePath;
+                    }
                 } else {
-                    url = hostUrl + File.separator + filePath;
+                    url = basicSchool.getLogo();
                 }
                 map.put(SystemConstant.LOGO, url);
             } else {

+ 14 - 5
teachcloud-task/src/main/resources/application.properties

@@ -48,15 +48,24 @@ spring.activiti.check-process-definitions=false
 #full\uFF1A\u4FDD\u5B58\u5386\u53F2\u6570\u636E\u7684\u6700\u9AD8\u7EA7\u522B\uFF0C\u9664\u4E86\u4F1A\u4FDD\u5B58audit\u7EA7\u522B\u7684\u6570\u636E\u5916\uFF0C\u8FD8\u4F1A\u4FDD\u5B58\u5176\u4ED6\u5168\u90E8\u6D41\u7A0B\u76F8\u5173\u7684\u7EC6\u8282\u6570\u636E\uFF0C\u5305\u62EC\u4E00\u4E9B\u6D41\u7A0B\u53C2\u6570\u7B49\u3002
 spring.activiti.history-level=audit
 
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
+#com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
+#com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
+#com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
+#com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
+
+com.qmth.fss.public.config=../static/
+com.qmth.fss.public.server=/static/
+com.qmth.fss.private.config=../static/
+com.qmth.fss.private.server=/static/
+
+#com.qmth.fss.localfile.config=/Users/king/Downloads/file-temp
+#com.qmth.fss.localfile.server=http://127.0.0.1:7001
+#com.qmth.fss.localpdf.config=/Users/king/Downloads/pdf-temp
+#com.qmth.fss.localpdf.server=http://127.0.0.1:7001
 
 #\u7CFB\u7EDF\u914D\u7F6E
 sys.config.oss=false
 sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
 #\u65E5\u671F\u683C\u5F0F\u5316
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss