Przeglądaj źródła

3.2.2-学校管理logo更新

xiaof 2 lat temu
rodzic
commit
f7a2520fd0

+ 8 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -28,10 +28,7 @@ import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.enums.log.SystemEnum;
 import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.*;
-import com.qmth.teachcloud.common.util.FileUtil;
-import com.qmth.teachcloud.common.util.Result;
-import com.qmth.teachcloud.common.util.ResultUtil;
-import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.common.util.*;
 import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -435,8 +432,13 @@ 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);
+                String logo = basicSchool.getLogo();
+                if(logo.startsWith("data:image/png;base64")){
+                    map.put(SystemConstant.LOGO, logo);
+                } else {
+                    String url = SystemConstant.getLogoFilePath(basicSchool);
+                    map.put(SystemConstant.LOGO, Base64Util.imageToBase64(new File(url)));
+                }
             } else {
                 map.put(SystemConstant.LOGO, basicSchool.getLogo());
             }

+ 6 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -923,7 +923,12 @@ public class SystemConstant {
                     url = hostUrl + File.separator + filePath;
                 }
             } else {
-                url = dictionaryConfig.fssPublicDomain().getServer() + File.separator + basicSchool.getLogo();
+                String logo = basicSchool.getLogo();
+                if(logo.startsWith(dictionaryConfig.fssLocalFileDomain().getConfig())){
+                    url = logo;
+                } else {
+                    url = dictionaryConfig.fssPublicDomain().getServer() + File.separator + logo;
+                }
             }
         }
         return url;

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

@@ -9,6 +9,7 @@ import com.qmth.teachcloud.common.enums.LocalCatalogEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
 import com.qmth.teachcloud.common.service.BasicSchoolService;
+import com.qmth.teachcloud.common.util.Base64Util;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
@@ -43,7 +44,14 @@ public class BasicSchoolServiceImpl extends ServiceImpl<BasicSchoolMapper, Basic
 
     @Override
     public List<SchoolDto> listSchool() {
-        return this.baseMapper.listSchool();
+        List<SchoolDto> schoolDtos = this.baseMapper.listSchool();
+        for (SchoolDto schoolDto : schoolDtos) {
+            String logo = schoolDto.getLogo();
+            if(StringUtils.isNotBlank(logo) && logo.startsWith("file")){
+                schoolDto.setLogo(Base64Util.imageToBase64(new File(logo)));
+            }
+        }
+        return schoolDtos;
     }
 
     @Override
@@ -56,7 +64,7 @@ public class BasicSchoolServiceImpl extends ServiceImpl<BasicSchoolMapper, Basic
             boolean oss = dictionaryConfig.sysDomain().isOss();
             StringJoiner stringJoiner = new StringJoiner("");
             if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getConfig())) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig());
             }
             stringJoiner = SystemConstant.getDirName(stringJoiner, UploadFileEnum.FILE, true);
 
@@ -64,16 +72,21 @@ public class BasicSchoolServiceImpl extends ServiceImpl<BasicSchoolMapper, Basic
             String dirName = null;
             try {
                 fileTemp = File.createTempFile("temp", SystemConstant.JPG_PREFIX);
-                FileUtils.copyInputStreamToFile(new FileInputStream((File) logo), fileTemp);
+                FileUtils.copyInputStreamToFile(logo.getInputStream(), fileTemp);
 
                 dirName = stringJoiner + SystemConstant.getNanoId() + "." + FilenameUtils.getExtension(fileTemp.getPath());
                 String jpgFileMd5 = DigestUtils.md5Hex(new FileInputStream(fileTemp));
                 if (!oss && Objects.nonNull(dictionaryConfig.fssLocalFileDomain()) && !StringUtils.isBlank(dictionaryConfig.fssLocalFileDomain().getServer())) {
-                    fileStoreUtil.localUpload(dirName, new FileInputStream(fileTemp), jpgFileMd5, LocalCatalogEnum.LOCAL_FILE);
+//                    File file = new File(dirName);
+//                    if(!file.exists()){
+//                        file.getParentFile().mkdirs();
+//                    }
+                    String toBase64 = Base64Util.imageToBase64(fileTemp);
+                    basicSchool.setLogo(toBase64);
                 } else {
                     fileStoreUtil.ossUpload(dirName, fileTemp, jpgFileMd5, UploadFileEnum.FILE.getFssType());
+                    basicSchool.setLogo(dirName);
                 }
-                basicSchool.setLogo(dirName);
             } catch (Exception e) {
                 log.error(SystemConstant.LOG_ERROR, e);
             } finally {

+ 32 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/Base64Util.java

@@ -2,6 +2,8 @@ package com.qmth.teachcloud.common.util;
 
 import com.qmth.teachcloud.common.contant.SystemConstant;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.util.Base64;
 
 public class Base64Util {
@@ -13,4 +15,34 @@ public class Base64Util {
     public static byte[] decode(String input) {
         return Base64.getDecoder().decode(input.getBytes(SystemConstant.CHARSET));
     }
+
+    /**
+     * 文件File类型转BASE64
+     *
+     * @param file
+     * @return
+     */
+    public static String imageToBase64(File file) {
+        return "data:image/png;base64," + encode(fileToByte(file));
+    }
+
+    /**
+     * 文件File类型转byte[]
+     *
+     * @param file
+     * @return
+     */
+    private static byte[] fileToByte(File file) {
+        byte[] fileBytes = null;
+        FileInputStream fis;
+        try {
+            fis = new FileInputStream(file);
+            fileBytes = new byte[(int) file.length()];
+            fis.read(fileBytes);
+            fis.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return fileBytes;
+    }
 }