Просмотр исходного кода

1:文件上传增加获取当前登录人信息
2:工具类增加获取oss默认前缀地址
3:增加调用方法注释

lengfaqiang 2 лет назад
Родитель
Сommit
3c5ecc46d2

+ 8 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/response/HttpResult.java

@@ -38,6 +38,7 @@ public class HttpResult {
 		return r;
 	}
 
+
 	public static HttpResult ok() {
 		return new HttpResult();
 	}
@@ -54,6 +55,13 @@ public class HttpResult {
 		return r;
 	}
 
+    public static HttpResult ok(int code, String msg) {
+        HttpResult r = new HttpResult();
+        r.setCode(code);
+        r.setMsg(msg);
+        return r;
+    }
+
 	public static HttpResult ok(String msg, Object data) {
 		HttpResult r = new HttpResult();
 		r.setMsg(msg);

+ 2 - 2
sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java

@@ -80,14 +80,14 @@ public class FileApiController {
 
     /**
      * oss删除文件
-     * @param fileName  kll/uploads/20230621/07ccbec381a011d121a215719199ac49.html
+     * @param fileName  https://kaiwu-saas.oss-cn-chengdu.aliyuncs.com/kll/uploads/20230621/07ccbec381a011d121a215719199ac49.html
      * @return
      */
     @RequestMapping(value = "/remove",method = RequestMethod.GET)
     public HttpResult remove(String fileName) {
         //获取上传文件
         fileService.remove(fileName);
-        return HttpResult.ok();
+        return HttpResult.ok(HttpStatus.SUCCESS_CODE,HttpStatus.SUCCESS_MESSAGE);
     }
 
     /***

+ 7 - 35
sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java

@@ -5,6 +5,7 @@ import com.aliyun.oss.model.OSSObject;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.common.NumberConstant;
 import com.sckw.excel.common.StringConstant;
@@ -17,9 +18,9 @@ import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -47,18 +48,6 @@ import java.util.zip.ZipOutputStream;
 @Service
 public class FileService {
 
-    @Value("${aliyun.oss.endpoint}")
-    private String oss_endpoint;
-
-    @Value("${aliyun.oss.accessKeyId}")
-    private String oss_accessKeyId;
-
-    @Value("${aliyun.oss.secret}")
-    private String oss_accessKeySecret;
-
-    @Value("${aliyun.oss.bucket}")
-    public String oss_bucketName;
-
     @Autowired
     KwsFileInfoDao fileInfoDao;
 
@@ -68,6 +57,7 @@ public class FileService {
      * @param file
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public HttpResult uploadFile(MultipartFile file) {
         HttpResult result = new HttpResult();
         List<Map<String, Object>> resultList = new ArrayList<>();
@@ -78,23 +68,13 @@ public class FileService {
             result.setMsg("上传请不要选择空文件");
             return result;
         }
-        //获取文件类型
-        String contentType = file.getContentType();
-        //获取上传文件的原始文件名
         String oFileName = file.getOriginalFilename();
-        //文件大小
         BigDecimal fileSize = FileUtils.getFileSize(file, StringConstant.KB);
         FileInfo fileInfo = new FileInfo();
         fileInfo.setOriginalName(oFileName);
-        //获取文件后缀
         fileInfo.setFileSuffix(FilenameUtils.getExtension(oFileName));
-        fileInfo.setFileSize(StringUtils.isBlank(fileSize) ? new BigDecimal("0") : fileSize);
+        fileInfo.setFileSize(StringUtils.isBlank(fileSize) ? new BigDecimal(NumberConstant.ZERO) : fileSize);
         Map<String, String> infoMap = FileUtils.uploadFileByInfo(file, FileEnum.DOCUMENT_ADDRESS);
-//        Map<String, String> infoMap=new HashMap<>();
-//        infoMap.put("fileName","fileName");
-//        infoMap.put("fileMd5","fileMd5");
-//        infoMap.put("filePath","filePath");
-//        infoMap.put("fileKey","fileKey");
         fileInfo.setId(new IdWorker(1).nextId());
         fileInfo.setType(FileEnum.FILE_STORE_TYPE_OSS.getFileType());
         fileInfo.setFileName(infoMap.get("fileName"));
@@ -104,12 +84,10 @@ public class FileService {
         fileInfo.setUpdateTime(new Date());
         fileInfo.setStatus(0);
         fileInfo.setDelFlag(0);
-        fileInfo.setCreateBy(1L);
-        fileInfo.setUpdateBy(1L);
+        fileInfo.setCreateBy(LoginUserHolder.getUserId());
+        fileInfo.setUpdateBy(LoginUserHolder.getUserId());
         fileInfoDao.insert(fileInfo);
-        //上传至oss文件地址
         if (StringUtils.isNotBlank(infoMap.get("filePath"))) {
-            result.setCode(HttpStatus.SUCCESS_CODE);
             result.setMsg("上传成功");
             Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
             map.put("fileKey", infoMap.get("fileMd5"));
@@ -184,13 +162,7 @@ public class FileService {
 
 
     public void remove(String fileName) {
-        String str = StringConstant.HTTP_STRING
-                + StringConstant.COLON
-                + StringConstant.LEFT_SEPARATORS
-                + oss_bucketName
-                + StringConstant.POINT
-                + oss_endpoint
-                + StringConstant.LEFT_SEPARATOR;
+        String str = FileUtils.getOSSAddressPrefix();
         String fileNameSubstring = StringUtils.substring(fileName, str.length() + 1);
         FileUtils.remove(fileName);
     }

+ 19 - 2
sckw-modules/sckw-file/src/main/java/com/sckw/file/utils/FileUtils.java

@@ -7,6 +7,7 @@ import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.PasswordUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.excel.common.NumberConstant;
+import com.sckw.excel.common.StringConstant;
 import com.sckw.file.common.enums.AliyunOssFileTypeEnum;
 import com.sckw.file.common.enums.FileEnum;
 import jakarta.annotation.PostConstruct;
@@ -89,6 +90,21 @@ public class FileUtils {
         bucketName = this.oss_bucketName;
     }
 
+    /**
+     * 获取oss 地址前缀
+     * @return
+     */
+    public static String getOSSAddressPrefix() {
+        defalutOSS();
+        return StringConstant.HTTP_STRING
+                + StringConstant.COLON
+                + StringConstant.LEFT_SEPARATORS
+                + bucketName
+                + StringConstant.POINT
+                + endpoint
+                + StringConstant.LEFT_SEPARATOR;
+    }
+
     /**
      * 获取指定文件或文件夹的后缀名
      *
@@ -202,7 +218,7 @@ public class FileUtils {
             ObjectMetadata objectMeta = new ObjectMetadata();
             objectMeta.setContentType(FileUtils.getContentTypeByOSS(file.getOriginalFilename()));
             //调用方法实现上传
-            ossClient.putObject(bucketName, filePath, inputStream,objectMeta);
+            ossClient.putObject(bucketName, filePath, inputStream, objectMeta);
             //上传后的文件地址
 //            String url1 = getUrl(ossClient, bucketName, filePath);
 //            System.out.println(url1);
@@ -321,7 +337,6 @@ public class FileUtils {
     }
 
     /**
-     *
      * @param fileName
      * @param response
      */
@@ -873,6 +888,8 @@ public class FileUtils {
      * 删除文件
      *
      * @param url 示例:'download/file.xsl' oss服务器文件路径以及文件名
+     *            https://kaiwu-saas.oss-cn-chengdu.aliyuncs.com/kll/uploads/20230621/07ccbec381a011d121a215719199ac49.html
+     *            删除时,去掉默认前缀,只需要相对路径 “kll/uploads/20230621/07ccbec381a011d121a215719199ac49.html”
      */
     public static void remove(String url) {
         try {