ソースを参照

Dev removeUploadFile

tsurumure 8 ヶ月 前
コミット
9608b76ea7

+ 4 - 0
src/main/java/com/backendsys/modules/sdk/tencent/cos/service/TencentCosService.java

@@ -5,12 +5,16 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.Map;
 
 public interface TencentCosService {
 
     // [腾讯云COS] 上传对象
     UploadResult putObject(MultipartFile file, String object_key) throws IOException;
 
+    // [腾讯云COS] 查询对象是否存在
+    boolean doesObjectExist(String object_key);
+
     // [腾讯云COS] 获得临时图片地址
     URL generateUrl(String object_key, Integer minutes);
 }

+ 8 - 0
src/main/java/com/backendsys/modules/sdk/tencent/cos/service/impl/TencentCosServiceImpl.java

@@ -201,6 +201,14 @@ public class TencentCosServiceImpl implements TencentCosService {
 
     }
 
+    // [腾讯云COS] 查询对象是否存在
+    @Override
+    public boolean doesObjectExist(String object_key) {
+        COSClient cosClient = getClient();
+        return cosClient.doesObjectExist(BUCKET_NAME, object_key);
+    }
+
+
     @Override
     public URL generateUrl(String object_key, Integer minutes) {
         // 生成临时访问的URL (15分钟)

+ 32 - 14
src/main/java/com/backendsys/modules/upload/controller/SysUploadController.java

@@ -1,6 +1,8 @@
 package com.backendsys.modules.upload.controller;
 
 import cn.hutool.core.convert.Convert;
+import com.backendsys.entity.PageDTO;
+import com.backendsys.entity.System.SysFile.SysFileDTO;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.common.utils.Result;
@@ -8,14 +10,12 @@ import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
 import com.backendsys.modules.sse.emitter.SseEmitterManager;
 import com.backendsys.modules.sse.utils.SseEmitterUTF8;
 import com.backendsys.modules.sse.utils.SseUtil;
+import com.backendsys.modules.upload.entity.SysUpload;
 import com.backendsys.modules.upload.service.SysUploadService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
@@ -33,7 +33,25 @@ public class SysUploadController {
     private SysUploadService sysUploadService;
 
     /**
-     * 简单上传文件 (小文件,20MB以内)
+     * 获取上传文件列表
+     */
+    @GetMapping("/api/v2/upload/getUploadFileList")
+    public Result getUploadFileList(@Validated SysUpload sysUpload) {
+        return Result.success().put("data", sysUploadService.selectUploadList(sysUpload));
+    }
+
+    /**
+     * 删除上传文件
+     */
+    @PreAuthorize("@ss.hasPermi(1.1)")
+    @DeleteMapping("/api/v2/upload/removeUploadFile")
+    public Result removeUploadFile(@Validated(SysUpload.Delete.class) @RequestBody SysUpload sysUpload) {
+        return Result.success(sysUploadService.removeUploadFile(sysUpload));
+    }
+
+
+    /**
+     * 上传文件 (单文件上传不超过 20MB)
      */
     @PreAuthorize("@ss.hasPermi(1.1)")
     @PostMapping("/api/v2/upload/simpleUpload")
@@ -61,14 +79,14 @@ public class SysUploadController {
         return emitter;
     }
 
-    /**
-     * [SSE] 测试发送
-     */
-    @GetMapping("/api/v2/sse/send")
-    public String send() {
-        String message = "{\"message\": \"Hello World\"}";
-        sseUtil.send(httpRequestUtil.getUserId(), message);
-        return "success";
-    }
+//    /**
+//     * [SSE] 测试发送
+//     */
+//    @GetMapping("/api/v2/sse/send")
+//    public String send() {
+//        String message = "{\"message\": \"Hello World\"}";
+//        sseUtil.send(httpRequestUtil.getUserId(), message);
+//        return "success";
+//    }
 
 }

+ 5 - 0
src/main/java/com/backendsys/modules/upload/entity/SysUpload.java

@@ -3,11 +3,15 @@ package com.backendsys.modules.upload.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 @Data
 @TableName("sys_upload")
 public class SysUpload {
+
+    public static interface Delete{}
+
     @TableId(type = IdType.AUTO)
     private Long id;
     private Long category_id;
@@ -15,6 +19,7 @@ public class SysUpload {
     private String name;
     private String content_type;
     private String url;
+    @NotEmpty(message = "object_key 不能为空", groups = { Delete.class })
     private String object_key;
     private Long size;
     private String md5;

+ 10 - 2
src/main/java/com/backendsys/modules/upload/service/SysUploadService.java

@@ -1,11 +1,19 @@
 package com.backendsys.modules.upload.service;
 
 import com.backendsys.modules.upload.entity.SysUpload;
+import com.backendsys.utils.response.PageEntity;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Map;
+
 public interface SysUploadService {
 
-    // [上传] 小文件
-    SysUpload uploadSmall(MultipartFile file);
+    // 获取上传文件列表
+    PageEntity selectUploadList(SysUpload sysUpload);
+    // 删除上传文件
+    Map<String, Object> removeUploadFile(SysUpload sysUpload);
 
+
+    // 上传文件 (单文件上传不超过 n)
+    SysUpload uploadSmall(MultipartFile file);
 }

+ 34 - 1
src/main/java/com/backendsys/modules/upload/service/impl/SysUploadServiceImpl.java

@@ -6,10 +6,15 @@ import cn.hutool.crypto.digest.DigestUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
+import com.backendsys.modules.system.entity.SysUserInfo;
 import com.backendsys.modules.upload.dao.SysUploadDao;
 import com.backendsys.modules.upload.entity.SysUpload;
 import com.backendsys.modules.upload.service.SysUploadService;
+import com.backendsys.utils.response.PageEntity;
+import com.backendsys.utils.response.PageInfoResult;
+import com.backendsys.utils.v2.PageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qcloud.cos.model.UploadResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -17,6 +22,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.List;
+import java.util.Map;
 
 @Service
 public class SysUploadServiceImpl implements SysUploadService {
@@ -32,7 +39,33 @@ public class SysUploadServiceImpl implements SysUploadService {
     private String ACCESSIBLE_DOMAIN;
 
     /**
-     * [上传] 小文件
+     * 获取上传文件列表
+     */
+    public PageEntity selectUploadList(SysUpload sysUpload) {
+        PageUtils.startPage();  // 分页
+        List<SysUpload> list = sysUploadDao.selectList(new QueryWrapper<SysUpload>().setEntity(sysUpload));
+        return new PageInfoResult(list).toEntity();
+    }
+
+    /**
+     * 删除上传文件
+     */
+    public Map<String, Object> removeUploadFile(SysUpload sysUpload) {
+
+        System.out.println(sysUpload);
+
+        // 查询对象是否存在
+        Boolean isObjectExist = tencentCosService.doesObjectExist(sysUpload.getObject_key());
+
+        // [Delete] 删除文件记录
+//        sysUploadDao.delete(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getObject_key, sysUpload.getObject_key()));
+
+        return Map.of("object_key", sysUpload.getObject_key());
+    }
+
+
+    /**
+     * 上传文件 (单文件上传不超过 n)
      * - 5MB = 5242880
      * - 20MB = 20971520
      * - 100MB = 104857600