Pārlūkot izejas kodu

本地上传兼容到一个接口中

Gaokun Wang 7 mēneši atpakaļ
vecāks
revīzija
ac7ce12cb5

+ 1 - 0
als-common/common-oss/src/main/java/org/eco/common/oss/entity/UploadResult.java

@@ -2,6 +2,7 @@ package org.eco.common.oss.entity;
 
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * 上传返回体

+ 13 - 0
als-modules/system/src/main/java/org/eco/system/service/ICommonService.java

@@ -0,0 +1,13 @@
+package org.eco.system.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+/**
+ * 上传下载处理
+ *
+ */
+public interface ICommonService {
+    Map<String, String> uploadFile(MultipartFile file);
+}

+ 48 - 0
als-modules/system/src/main/java/org/eco/system/service/impl/CommonService.java

@@ -0,0 +1,48 @@
+package org.eco.system.service.impl;
+
+import org.eco.common.core.annotation.Excel;
+import org.eco.common.core.config.EcoConfig;
+import org.eco.common.core.exception.BusinessException;
+import org.eco.common.core.utils.StringUtils;
+import org.eco.common.core.utils.file.FileUploadUtils;
+import org.eco.system.config.ServerConfig;
+import org.eco.system.domain.vo.SysOssUploadVo;
+import org.eco.system.domain.vo.SysOssVo;
+import org.eco.system.service.ICommonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class CommonService implements ICommonService {
+
+    private static final String FILE_DELIMETER = ",";
+    @Autowired
+    private ServerConfig serverConfig;
+
+    @Override
+    public Map<String, String> uploadFile(MultipartFile file) {
+        try {
+
+            // 上传文件路径
+            String filePath = EcoConfig.getUploadPath();
+            // 上传并返回新文件名称
+            String fileName = FileUploadUtils.upload(filePath, file);
+            String url = serverConfig.getUrl() + fileName;
+            String originalFilename = file.getOriginalFilename();
+            assert originalFilename != null;
+            String suffix = StringUtils.substring(originalFilename, originalFilename.lastIndexOf("."), originalFilename.length());
+            Map<String,String> map = new HashMap<>();
+            map.put("url", url);
+            map.put("originalFilename", originalFilename);
+            map.put("suffix", suffix);
+            map.put("fileName", fileName);
+            return map;
+        } catch (Exception e) {
+            throw new BusinessException(e.getMessage());
+        }
+    }
+}

+ 19 - 5
als-modules/system/src/main/java/org/eco/system/service/impl/SysOssServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.mybatisflex.core.paginate.Page;
 import com.mybatisflex.core.query.QueryWrapper;
+import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -31,7 +32,9 @@ import org.eco.common.oss.factory.OssFactory;
 import org.eco.system.domain.SysOss;
 import org.eco.system.domain.bo.SysOssBo;
 import org.eco.system.domain.vo.SysOssVo;
+import org.eco.system.mapper.SysDeptMapper;
 import org.eco.system.mapper.SysOssMapper;
+import org.eco.system.service.ICommonService;
 import org.eco.system.service.ISysOssService;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.http.MediaType;
@@ -44,6 +47,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 import static org.eco.common.core.utils.file.FileUtils.percentEncode;
 import static org.eco.system.domain.table.SysOssTableDef.SYS_OSS;
@@ -61,6 +65,9 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
 
     private final SysOssMapper ossMapper;
 
+    @Resource
+    private ICommonService commonService;
+
 
     @Override
     public QueryWrapper query() {
@@ -169,7 +176,12 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
         OssClient storage = OssFactory.instance();
         UploadResult uploadResult;
         try {
-            uploadResult = storage.uploadSuffix(file.getBytes(), suffix);
+            if(StrUtil.equals(storage.getConfigKey(),"local")) {
+                Map<String,String> map = commonService.uploadFile(file);
+                uploadResult = UploadResult.builder().url(map.get("url")).filename(map.get("fileName")).build();
+            } else {
+                uploadResult = storage.uploadSuffix(file.getBytes(), suffix);
+            }
         } catch (IOException e) {
             throw new BusinessException(e.getMessage());
         }
@@ -181,7 +193,9 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
     public UploadRes upload(byte[] file, String name) {
         String suffix = StringUtils.substring(name, name.lastIndexOf("."), name.length());
         OssClient storage = OssFactory.instance();
-        UploadResult uploadResult = storage.uploadSuffix(file, suffix);
+        UploadResult uploadResult;
+        // TODO local情况处理 异步
+        uploadResult = storage.uploadSuffix(file, suffix);
         SysOssVo ossVo = buildResultEntity(name, suffix, storage.getConfigKey(), uploadResult);
         return UploadRes.builder().name(name).url(uploadResult.getUrl()).ossId(ossVo.getOssId()).build();
     }
@@ -217,7 +231,7 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
 
         List<SysOss> list = this.listByIds(ids);
         for (SysOss sysOss : list) {
-            if (StrUtil.equals("Local", sysOss.getService())) {
+            if (StrUtil.equals("local", sysOss.getService())) {
                 // 删除本地文件
                 String filePath = EcoConfig.getProfile() + StringUtils.substringAfter(sysOss.getFileName(), Constants.RESOURCE_PREFIX);
                 boolean deleted = FileUtil.del(filePath);
@@ -239,7 +253,7 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
      * @return oss 匹配Url的OSS对象
      */
     private SysOssVo matchingUrl(SysOssVo oss) {
-        if (StrUtil.equals("Local", oss.getService())) {
+        if (StrUtil.equals("local", oss.getService())) {
             return oss;
         }
         OssClient storage = OssFactory.instance(oss.getService());
@@ -257,7 +271,7 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
         oss.setFileSuffix(suffix);
         oss.setFileName(fileName);
         oss.setOriginalName(originalFileName);
-        oss.setService("Local");
+        oss.setService("local");
         this.save(oss);
         SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class);
         assert sysOssVo != null;