Переглянути джерело

修复文件名长度限制

tsurumure 3 місяців тому
батько
коміт
d7becd32a2

+ 4 - 1
src/main/java/com/backendsys/modules/upload/controller/SysFileCategoryController.java

@@ -40,6 +40,7 @@ public class SysFileCategoryController {
         return Result.success().put("data", sysFileCategoryService.selectUploadFileCategoryList(sysFileCategory));
     }
 
+    @SysLog("创建文件分类")
     @Operation(summary = "创建文件分类")
     @PreAuthorize("@sr.hasPermission('1.1.3')")
     @PostMapping("/api/upload/createFileCategory")
@@ -48,6 +49,7 @@ public class SysFileCategoryController {
         return Result.success().put("data", sysFileCategoryService.insertFileCategory(sysFileCategory));
     }
 
+    @SysLog("编辑文件分类")
     @Operation(summary = "编辑文件分类")
     @PreAuthorize("@sr.hasPermission('1.1.4')")
     @PutMapping("/api/upload/updateFileCategory")
@@ -57,13 +59,14 @@ public class SysFileCategoryController {
     }
 
     // 包含 增、删、改 权限
+    @SysLog("编辑文件分类(批量)")
     @Operation(summary = "编辑文件分类(批量)")
-//    @PreAuthorize("@sr.hasPermission('1.1.4')")
     @PutMapping("/api/upload/updateFileCategoryBatch")
     public Result updateFileCategoryBatch(@Validated(SysFileCategory.UpdateBatch.class) @RequestBody SysFileCategory sysFileCategory) {
         return Result.success().put("data", sysFileCategoryService.updateFileCategoryBatch(sysFileCategory.getList()));
     }
 
+    @SysLog("删除文件分类")
     @Operation(summary = "删除文件分类")
     @PreAuthorize("@sr.hasPermission('1.1.6')")
     @DeleteMapping("/api/upload/deleteFileCategory")

+ 11 - 4
src/main/java/com/backendsys/modules/upload/controller/SysFileController.java

@@ -59,8 +59,6 @@ public class SysFileController {
         return Result.success().put("data", sysFileService.selectUploadTarget());
     }
 
-
-
     @SysLog("上传文件 (普通上传)")
     @Operation(summary = "上传文件 (普通上传,单文件上传不超过 100MB)")
     @PreAuthorize("@sr.hasPermission('1.1.3')")
@@ -69,8 +67,8 @@ public class SysFileController {
         return Result.success().put("data", sysFileService.uploadSmall(multipartFile, category_id));
     }
 
-    @SysLog("编辑文件 (名称)")
-    @Operation(summary = "编辑文件 (名称)")
+    @SysLog("编辑文件")
+    @Operation(summary = "编辑文件")
     @PreAuthorize("@sr.hasPermission('1.1.4')")
     @PutMapping("/api/upload/updateUploadFile")
     public Result updateUploadFile(@Validated(SysFile.Update.class) @RequestBody SysFile sysFile) {
@@ -78,6 +76,15 @@ public class SysFileController {
         return Result.success().put("data", sysFileService.updateUploadFile(sysFile));
     }
 
+    @SysLog("编辑文件 (批量)")
+    @Operation(summary = "编辑文件 (批量)")
+    @PreAuthorize("@sr.hasPermission('1.1.4')")
+    @PutMapping("/api/upload/updateUploadFileBatch")
+    public Result updateUploadFileBatch(@Validated(SysFile.UpdateBatch.class) @RequestBody SysFile sysFile) {
+        sysFile.setUser_id(SecurityUtil.getUserId());
+        return Result.success().put("data", sysFileService.updateUploadFileBatch(sysFile));
+    }
+
     @SysLog("删除文件")
     @Operation(summary = "删除文件")
     @PreAuthorize("@sr.hasPermission('1.1.6')")

+ 9 - 1
src/main/java/com/backendsys/modules/upload/entity/SysFile.java

@@ -9,11 +9,14 @@ import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @TableName("sys_file")
 public class SysFile {
 
     public static interface Update{}
+    public static interface UpdateBatch{}
     public static interface Delete{}
     public static interface DeleteBatch{}
 
@@ -21,6 +24,11 @@ public class SysFile {
     @NotNull(message = "id 不能为空", groups = { Update.class })
     private Long id;
 
+    @TableField(exist = false)
+    @NotNull(message = "ids 不能为空", groups = { UpdateBatch.class })
+    private List<Long> ids;
+
+    @NotNull(message = "文件分类不能为空", groups = { UpdateBatch.class })
     private Long category_id;
 
     @TableField(exist = false)
@@ -36,7 +44,7 @@ public class SysFile {
     private String username;
 
     @NotEmpty(message = "文件名不能为空", groups = { Update.class })
-    @Size(max = 100, message = "文件名长度不超过 {max} 字符", groups = { Update.class })
+    @Size(max = 50, message = "文件名长度不超过 {max} 字符", groups = { Update.class })
     private String name;
     private String content_type;
     private String url;

+ 3 - 0
src/main/java/com/backendsys/modules/upload/service/SysFileService.java

@@ -25,4 +25,7 @@ public interface SysFileService extends IService<SysFile> {
 
     // 编辑文件
     Map<String, Object> updateUploadFile(SysFile sysFile);
+
+    // 编辑文件 (批量)
+    Map<String, Object> updateUploadFileBatch(SysFile sysFile);
 }

+ 5 - 1
src/main/java/com/backendsys/modules/upload/service/impl/SysFileMultipartServiceImpl.java

@@ -91,6 +91,9 @@ public class SysFileMultipartServiceImpl implements SysFileMultipartService {
         if (multipartFile.isEmpty()) throw new CustException("file 上传文件不能为空");
         if (upload_chunk_count == null) throw new CustException("upload_chunk_count 分块数量不能为空");
 
+        String filename = multipartFile.getOriginalFilename();
+        if (filename.length() > 50) throw new CustException("文件名长度不能超过 50 字符");
+
         // 获得公共配置
         List<SysCommon> sysCommonList = sysCommonService.getCommonByCategory("UPLOAD");
         AtomicReference<Integer> UPLOAD_TARGET = new AtomicReference<>();
@@ -129,7 +132,8 @@ public class SysFileMultipartServiceImpl implements SysFileMultipartService {
         sysFileEntity.setUpload_id(upload_id);
         sysFileEntity.setUpload_chunk_count(upload_chunk_count);
         sysFileEntity.setUpload_chunk_index(0);
-        sysFileEntity.setName(FileNameUtil.getName(object_key));
+//        sysFileEntity.setName(FileNameUtil.getName(object_key));
+        sysFileEntity.setName(filename);
         sysFileEntity.setObject_key(object_key);
         sysFileEntity.setTarget(UPLOAD_TARGET.get());
         sysFileEntity.setContent_type(multipartFile.getContentType());

+ 25 - 1
src/main/java/com/backendsys/modules/upload/service/impl/SysFileServiceImpl.java

@@ -129,6 +129,10 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
     // [方法] 上传事件
     private SysFile uploadEvent(MultipartFile multipartFile, Long category_id, Integer target) {
         try {
+
+            String filename = multipartFile.getOriginalFilename();
+            if (filename.length() > 50) throw new CustException("文件名长度不能超过 50 字符");
+
             SysFileResult uploadResult = new SysFileResult();
 
             // target: 上传目标 (-1:本地, 1:腾讯云, 2:阿里云, 3.抖音云)
@@ -154,7 +158,7 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
             // 文件名
 //            sysFileEntity.setName(FileNameUtil.getName(uploadResult.getKey()));
 
-            String filename = multipartFile.getOriginalFilename();
+
             String filename_prefix = StrUtil.subBefore(filename, '.', true);
             String filename_suffix = StringUtils.getFilenameExtension(filename);
             /*
@@ -387,4 +391,24 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
         return Map.of("id", sysFile.getId());
     }
 
+
+    /**
+     * 编辑文件 (批量)
+     * - 文件、文件分类必须存在,且是该用户所有
+     */
+    @Override
+    public Map<String, Object> updateUploadFileBatch(SysFile sysFile) {
+
+        List<Long> ids = sysFile.getIds();
+        Long category_id = sysFile.getCategory_id();
+
+        // 判断文件是否存在
+        LambdaQueryWrapper<SysFile> wrapperFile = new LambdaQueryWrapper<>();
+        wrapperFile.eq(SysFile::getUser_id, sysFile.getUser_id());
+//        wrapperFile.in(ids);
+        List<SysFile> sysFileList = sysFileDao.selectList(wrapperFile);
+
+        return null;
+    }
+
 }