Browse Source

新增合并文件接口

tsurumure 3 tháng trước cách đây
mục cha
commit
34de280fe6

+ 17 - 21
src/main/java/com/backendsys/modules/upload/service/impl/SysFileServiceImpl.java

@@ -461,35 +461,33 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
         // 判断 target_object 是否存在于 object_keys 中
         boolean exists = CollectionUtil.contains(object_keys, target_object_key);
         if (!exists) throw new CustException("合并目标文件ID不存在于列表中");
-
         // 判断权限 (需要子权限或超级管理员)
         if (!SecurityUtil.isSuper() && !securityUtil.hasPermission("1.1.5")) {
             throw new CustException(SecurityEnum.NOAUTH);
         }
 
-
-
-        // --------------------------------------------------------------------------------
-        // 更新文件命名
-
-
-
-
-        // --------------------------------------------------------------------------------
+        // [DB] 查询文件列表 (不包含 target_object_key、当前用户ID、upload_id 为空)
+        LambdaQueryWrapper<SysFile> selectWrapper = new LambdaQueryWrapper<>();
+        selectWrapper.in(SysFile::getUser_id, user_id);
         // 过滤一个没有 target_object_key 的 object_keys 集合
         List<String> file_object_keys_without_target = object_keys.stream().filter(object_key -> !object_key.equals(target_object_key)).collect(Collectors.toList());
+        selectWrapper.in(SysFile::getObject_key, file_object_keys_without_target);
+        selectWrapper.isNull(SysFile::getUpload_id);
+        List<SysFile> querySysFileList = sysFileDao.selectList(selectWrapper);
+        if (querySysFileList.size() == 0) {
+            throw new CustException("选中的文件不存在", ResultEnum.PARAMETER_EXCEPTION.getCode(), "Field: object_keys");
+        }
 
-        // 查询文件列表 (不包含 target_object_key、当前用户ID、upload_id 为空)
-        LambdaQueryWrapper<SysFile> wrapperFile = new LambdaQueryWrapper<>();
-        wrapperFile.in(SysFile::getUser_id, user_id);
-        wrapperFile.in(SysFile::getObject_key, file_object_keys_without_target);
-        wrapperFile.isNull(SysFile::getUpload_id);
-        List<SysFile> querySysFileList = sysFileDao.selectList(wrapperFile);
+        // [DB] 更新文件命名
+        LambdaQueryWrapper<SysFile> updateWrapper = new LambdaQueryWrapper<>();
+        updateWrapper.eq(SysFile::getObject_key, target_object_key);
+        SysFile updateEntity = new SysFile();
+        updateEntity.setName(target_file_name);
+        sysFileDao.update(updateEntity, updateWrapper);
 
-        // 筛选出待删除的文件 object_key
+        // [DB] 批量删除 (除了 target_object_key 外的文件)
         List<String> delete_object_keys = querySysFileList.stream().map(entity -> entity.getObject_key()).collect(Collectors.toList());
-
-        // [Delete] 批量删除
+        System.out.println(delete_object_keys);
         sysFileDao.delete(new LambdaQueryWrapper<SysFile>().in(SysFile::getObject_key, delete_object_keys));
 
         // [异步任务] 创建一个 CompletableFuture 来执行异步任务
@@ -498,12 +496,10 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
                 deleteObject(entity.getObject_key(), entity.getTarget());
             });
         });
-        // --------------------------------------------------------------------------------
 
         Map<String, Object> resp = new LinkedHashMap<>();
         resp.put("delete_object_keys", delete_object_keys);
         resp.put("target_object_key", target_object_key);
-
         return resp;
     }
 

+ 3 - 0
src/main/resources/mapper/upload/SysFileDao.xml

@@ -81,6 +81,9 @@
             <if test="object_key != null and object_key != ''">
                 AND object_key = #{object_key}
             </if>
+            <if test="md5 != null and md5 != ''">
+                AND md5 = #{md5}
+            </if>
         </where>
         ORDER BY upload_time DESC
     </select>