wangliang преди 2 години
родител
ревизия
d1e28ab9f8

+ 8 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.pdf.PdfReader;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.boot.tools.models.ByteArray;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.dto.PdfPackageDto;
 import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
@@ -1387,17 +1386,20 @@ public class PrintCommonServiceImpl implements PrintCommonService {
     @Override
     public JSONObject uploadPdfFile(File pdfFile, ClassifyEnum classifyEnum) {
         try {
-            StringJoiner pdfStringJoiner = SystemConstant.getDirName(UploadFileEnum.PDF, true);
+            boolean oss = dictionaryConfig.sysDomain().isOss();
+            StringJoiner pdfStringJoiner = new StringJoiner("");
+            if (!oss && Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
+                pdfStringJoiner.add(dictionaryConfig.fssLocalPdfDomain().getConfig()).add(File.separator);
+            }
+            pdfStringJoiner = SystemConstant.getDirName(pdfStringJoiner, UploadFileEnum.PDF, true);
             pdfStringJoiner.add(SystemConstant.getNanoId()).add(SystemConstant.PDF_PREFIX);
+
             String pdfDirName = pdfStringJoiner.toString();
             pdfDirName = SystemConstant.getPdfFilePath(pdfDirName, pdfFile);
-            boolean oss = dictionaryConfig.sysDomain().isOss();
 
-            byte[] data = ByteArray.fromFile(pdfFile).value();
-            String md5 = ByteArray.md5(data).toHexString();
             JSONObject object = new JSONObject();
             object.put("printType", classifyEnum);
-            object.put("pdfMd5", md5);
+            object.put("pdfMd5", DigestUtils.md5Hex(new FileInputStream(pdfFile)));
             object.put(SystemConstant.PATH, pdfDirName);
             if (!oss) {
                 object.put(SystemConstant.TYPE, SystemConstant.LOCAL);

+ 30 - 58
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TSyncExamStudentScoreServiceImpl.java

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

+ 1 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

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

+ 15 - 60
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -19,7 +19,6 @@ import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.Zip4jUtil;
 import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -730,27 +729,21 @@ public class SystemConstant {
      */
     public static String getLocalFileHost(String hostUrl) {
         CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
-        if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            BasicSchool basicSchool = commonCacheService.schoolCache(sysUser.getSchoolId());
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-        }
-        return hostUrl;
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        BasicSchool basicSchool = commonCacheService.schoolCache(sysUser.getSchoolId());
+        return SystemConstant.getHost(hostUrl, basicSchool.getCode());
     }
 
     /**
-     * 获取本地文件host
+     * 获取host
      *
      * @param hostUrl
-     * @param userId
+     * @param schoolCode
      * @return
      */
-    public static String getLocalFileHostByUserId(String hostUrl, Long userId) {
-        CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
+    public static String getHost(String hostUrl, String schoolCode) {
         if (hostUrl.contains(SystemConstant.PATH_MATCH)) {
-            SysUser sysUser = commonCacheService.userCache(userId);
-            BasicSchool basicSchool = commonCacheService.schoolCache(sysUser.getSchoolId());
-            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
+            hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, schoolCode);
         }
         return hostUrl;
     }
@@ -761,13 +754,12 @@ public class SystemConstant {
      * @param filePath
      * @return
      */
-    public static String getLocalFilePath(String hostUrl, String filePath) {
-        Optional.ofNullable(hostUrl).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未配置hostUrl"));
-        String[] hostArray = hostUrl.split(":");
-        if (hostArray.length == 2 && filePath.contains(SystemConstant.FILE_TEMP)) {
-            filePath = filePath.substring(filePath.indexOf(SystemConstant.FILE_TEMP), filePath.length());
-        } else if (hostArray.length == 2 && filePath.contains(SystemConstant.PDF_TEMP)) {
-            filePath = filePath.substring(filePath.indexOf(SystemConstant.PDF_TEMP), filePath.length());
+    public static String getLocalFilePath(String filePath) {
+        DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
+        if (filePath.contains(dictionaryConfig.fssLocalFileDomain().getServer())) {
+            filePath = filePath.substring(filePath.indexOf(dictionaryConfig.fssLocalFileDomain().getServer()), filePath.length());
+        } else if (filePath.contains(dictionaryConfig.fssLocalPdfDomain().getServer())) {
+            filePath = filePath.substring(filePath.indexOf(dictionaryConfig.fssLocalPdfDomain().getServer()), filePath.length());
         }
         return filePath;
     }
@@ -882,51 +874,14 @@ public class SystemConstant {
         boolean oss = dictionaryConfig.sysDomain().isOss();
         if (oss) {
             fileStoreUtil.ossUpload(pdfDirName, file, DigestUtils.md5Hex(new FileInputStream(file)), fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-            return pdfDirName;
         } else {
             if (Objects.nonNull(dictionaryConfig.fssLocalPdfDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalPdfDomain().getConfig())) {
-                String destUrl = dictionaryConfig.fssLocalPdfDomain().getConfig() + File.separator + pdfDirName;
-                File newFile = new File(destUrl);
-                if (!newFile.exists()) {
-                    newFile.getParentFile().mkdirs();
-                    newFile.createNewFile();
-                }
-                FileUtils.copyFile(file, newFile);
-                return destUrl;
+                fileStoreUtil.localUpload(pdfDirName, new FileInputStream(file), DigestUtils.md5Hex(new FileInputStream(file)), LocalCatalogEnum.LOCAL_FILE);
             } else {
                 fileStoreUtil.ossUpload(pdfDirName, file, DigestUtils.md5Hex(new FileInputStream(file)), fileStoreUtil.getUploadEnumByPath(pdfDirName).getFssType());
-                return pdfDirName;
-            }
-        }
-    }
-
-    /**
-     * 获取学校logo
-     *
-     * @param basicSchool
-     * @return
-     */
-    public static String getLogoFilePath(BasicSchool basicSchool) {
-        DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-        boolean oss = dictionaryConfig.sysDomain().isOss();
-        String url = null;
-        if (oss) {
-            url = dictionaryConfig.fssPublicDomain().getServer() + File.separator + basicSchool.getLogo();
-        } else {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = dictionaryConfig.fssLocalFileDomain().getServer();
-                hostUrl = hostUrl.replace(SystemConstant.PATH_MATCH, basicSchool.getCode());
-                String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
-                if (filePath.startsWith(SystemConstant.ORG_SPLIT)) {
-                    url = hostUrl + filePath;
-                } else {
-                    url = hostUrl + File.separator + filePath;
-                }
-            } else {
-                url = dictionaryConfig.fssPublicDomain().getServer() + File.separator + basicSchool.getLogo();
             }
         }
-        return url;
+        return pdfDirName;
     }
 
     /**

+ 18 - 72
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -446,14 +446,10 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
         String filePath = (String) jsonObject.get(SystemConstant.PATH);
         if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
-                filePath = SystemConstant.getLocalFilePath(hostUrl, filePath);
-                if (filePath.startsWith(SystemConstant.ORG_SPLIT)) {
-                    url = hostUrl + filePath;
-                } else {
-                    url = hostUrl + File.separator + filePath;
-                }
+            if (filePath.contains(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                url = filePath.substring(filePath.indexOf(dictionaryConfig.fssLocalFileDomain().getServer()), filePath.length());
+            } else if (filePath.contains(dictionaryConfig.fssLocalPdfDomain().getServer())) {
+                url = filePath.substring(filePath.indexOf(dictionaryConfig.fssLocalPdfDomain().getServer()), filePath.length());
             } else {
                 UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
                 url = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
@@ -481,23 +477,15 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
         String pathUrl;
         if (Objects.equals(type, SystemConstant.LOCAL)) {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
-                path = SystemConstant.getLocalFilePath(hostUrl, path);
-                if (path.startsWith(SystemConstant.ORG_SPLIT)) {
-                    pathUrl = hostUrl + path;
-                } else {
-                    pathUrl = hostUrl + File.separator + path;
-                }
+            if (path.contains(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                pathUrl = path.substring(path.indexOf(dictionaryConfig.fssLocalFileDomain().getServer()), path.length());
+            } else if (path.contains(dictionaryConfig.fssLocalPdfDomain().getServer())) {
+                pathUrl = path.substring(path.indexOf(dictionaryConfig.fssLocalPdfDomain().getServer()), path.length());
             } else {
                 pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
             }
         } else {
-            if (isExpire) {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
-            } else {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
-            }
+            pathUrl = fileStoreUtil.getPrivateUrl(path, fileStoreUtil.getUploadEnumByPath(path).getFssType());
         }
         return pathUrl;
     }
@@ -525,14 +513,10 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         UploadFileEnum uploadFileEnum = jsonObject.get(SystemConstant.UPLOAD_TYPE).toString().contains(UploadFileEnum.HTML.name()) ? UploadFileEnum.HTML : UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
 
         if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
-                filePath = SystemConstant.getLocalFilePath(hostUrl, filePath);
-                if (filePath.startsWith(SystemConstant.ORG_SPLIT)) {
-                    pathUrl = hostUrl + filePath;
-                } else {
-                    pathUrl = hostUrl + File.separator + filePath;
-                }
+            if (filePath.contains(dictionaryConfig.fssLocalFileDomain().getServer())) {
+                pathUrl = filePath.substring(filePath.indexOf(dictionaryConfig.fssLocalFileDomain().getServer()), filePath.length());
+            } else if (filePath.contains(dictionaryConfig.fssLocalPdfDomain().getServer())) {
+                pathUrl = filePath.substring(filePath.indexOf(dictionaryConfig.fssLocalPdfDomain().getServer()), filePath.length());
             } else {
                 pathUrl = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
             }
@@ -605,7 +589,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         Optional.ofNullable(filePath).orElseThrow(() -> ExceptionResultEnum.ATTACHMENT_IS_NULL.exception("附件路径不存在"));
 
         UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-        StringJoiner localPath = new StringJoiner("");
         if (Objects.equals(attachmentType, SystemConstant.OSS)) {
             String suffix = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
             File fileTemp = SystemConstant.getFileTempVar(suffix);
@@ -634,7 +617,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         File localPath = new File(rootPath, fileName);
         if (type.equals(SystemConstant.OSS)) {
             try {
-//                File file = ossUtil.ossDownload(filePath, localPath.getPath());
                 File file = fileStoreUtil.ossDownload(filePath, localPath.getPath(), uploadType.getFssType());
                 return file;
             } catch (IOException e) {
@@ -656,22 +638,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
     @Override
     public void downloadFileAndZip(HttpServletResponse response, String rootPath, List<File> files) {
-        String schoolId = ServletUtil.getRequestHeaderSchoolId().toString();
-        long time = System.nanoTime();
-        File rootFile = new File(rootPath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
+        long time = System.currentTimeMillis();
+        File zipFile = SystemConstant.getFileTempDirVar(System.currentTimeMillis() + SystemConstant.ZIP_PREFIX, null);
         try {
-            String zipPath = null;
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + schoolId;
-            } else {
-                zipPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + schoolId;
-            }
-            zipFile = FileUtil.file(zipPath, time + SystemConstant.ZIP_PREFIX);
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), files, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {
@@ -692,22 +661,9 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
      */
     @Override
     public void downloadFileAndZip(HttpServletResponse response, String rootPath, String zipRootPath) {
-        String schoolId = ServletUtil.getRequestHeaderSchoolId().toString();
-        long time = System.nanoTime();
-        File rootFile = new File(rootPath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
+        long time = System.currentTimeMillis();
+        File zipFile = SystemConstant.getFileTempDirVar(time + SystemConstant.ZIP_PREFIX, null);
         try {
-            String zipPath = null;
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + schoolId;
-            } else {
-                zipPath = dictionaryConfig.fssPublicDomain().getConfig() + File.separator + schoolId;
-            }
-            zipFile = FileUtil.file(zipPath, time + SystemConstant.ZIP_PREFIX);
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {
@@ -722,18 +678,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
     @Override
     public void downloadFileAndZip(HttpServletResponse response, String rootPath, long time) {
-        File rootFile = new File(rootPath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
+        File zipFile = SystemConstant.getFileTempDirVar(time + SystemConstant.ZIP_PREFIX, null);
         try {
-            if (Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                zipFile = FileUtil.file(dictionaryConfig.fssLocalFileDomain().getConfig(), time + SystemConstant.ZIP_PREFIX);
-            } else {
-                zipFile = FileUtil.file(dictionaryConfig.fssPublicDomain().getConfig(), time + SystemConstant.ZIP_PREFIX);
-            }
             Zip4jUtil.zipEncryptFile(zipFile.getPath(), rootPath, SystemConstant.ZIP_ENCRYPT_PWD);
             outputFile(response, zipFile, String.valueOf(time));
         } catch (Exception e) {

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

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

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

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

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

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

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

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