|
@ -58,7 +58,32 @@ public class AccountFileServiceImpl implements AccountFileService { |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Long createFolder(FolderCreateReq req) { |
|
|
public Long createFolder(FolderCreateReq req) { |
|
|
AccountFileDTO accountFileDTO = AccountFileDTO.builder().accountId(req.getAccountId()) |
|
|
// 创建文件夹时,父ID必须是该用户下的
|
|
|
|
|
|
if (req.getParentId() != null) { |
|
|
|
|
|
if (req.getParentId() == 0L) { |
|
|
|
|
|
// 用户根目录不能操作
|
|
|
|
|
|
throw new BizException(BizCodeEnum.FILE_DIR_NOT_EXIST); |
|
|
|
|
|
} |
|
|
|
|
|
// 校验该用户下是否存在该父级id
|
|
|
|
|
|
Long sum = accountFileMapper.selectCount(new QueryWrapper<AccountFileDO>() |
|
|
|
|
|
.eq("id", req.getParentId()).eq("account_id", req.getAccountId())); |
|
|
|
|
|
if (sum == 0) { |
|
|
|
|
|
throw new BizException(BizCodeEnum.FILE_DIR_NOT_EXIST); |
|
|
|
|
|
} |
|
|
|
|
|
if (sum > 1) { |
|
|
|
|
|
throw new BizException(BizCodeEnum.FILE_DIR_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
AccountFileDO fileUser = accountFileMapper.selectOne(new QueryWrapper<AccountFileDO>() |
|
|
|
|
|
.eq("parent_id", 0L).eq("account_id", req.getAccountId())); |
|
|
|
|
|
if (fileUser == null) { |
|
|
|
|
|
// 用户根目录不存在
|
|
|
|
|
|
throw new BizException(BizCodeEnum.FILE_DIR_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
req.setParentId(fileUser.getId()); |
|
|
|
|
|
} |
|
|
|
|
|
AccountFileDTO accountFileDTO = AccountFileDTO.builder() |
|
|
|
|
|
.accountId(req.getAccountId()) |
|
|
.parentId(req.getParentId()) |
|
|
.parentId(req.getParentId()) |
|
|
.fileName(req.getFolderName()) |
|
|
.fileName(req.getFolderName()) |
|
|
.isDir(FolderFlagEnum.YES.getCode()).build(); |
|
|
.isDir(FolderFlagEnum.YES.getCode()).build(); |
|
@ -141,10 +166,12 @@ public class AccountFileServiceImpl implements AccountFileService { |
|
|
return rootFolderList; |
|
|
return rootFolderList; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 查询文件树接口 (非递归方式) |
|
|
* 查询文件树接口 (非递归方式) |
|
|
* 1、查询用户全部文件夹 |
|
|
* 1、查询用户全部文件夹 |
|
|
* 2、拼装文件树 |
|
|
* 2、拼装文件树 |
|
|
|
|
|
* |
|
|
* @param accountId |
|
|
* @param accountId |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
@ -238,6 +265,7 @@ public class AccountFileServiceImpl implements AccountFileService { |
|
|
* 检查目标文件夹ID是否合法,包括子文件夹 |
|
|
* 检查目标文件夹ID是否合法,包括子文件夹 |
|
|
* 1、目标的文件ID不能是文件 |
|
|
* 1、目标的文件ID不能是文件 |
|
|
* 2、要操作的文件列表不能包括目标文件ID |
|
|
* 2、要操作的文件列表不能包括目标文件ID |
|
|
|
|
|
* |
|
|
* @param req |
|
|
* @param req |
|
|
*/ |
|
|
*/ |
|
|
private void checkTargetParentIdLegal(FileBatchReq req) { |
|
|
private void checkTargetParentIdLegal(FileBatchReq req) { |
|
@ -251,8 +279,10 @@ public class AccountFileServiceImpl implements AccountFileService { |
|
|
throw new BizException(BizCodeEnum.FILE_TARGET_PARENT_ILLEGAL); |
|
|
throw new BizException(BizCodeEnum.FILE_TARGET_PARENT_ILLEGAL); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 检查被移动的文件ID是否合法 |
|
|
* 检查被移动的文件ID是否合法 |
|
|
|
|
|
* |
|
|
* @param fileIds |
|
|
* @param fileIds |
|
|
* @param accountId |
|
|
* @param accountId |
|
|
* @return |
|
|
* @return |
|
@ -273,6 +303,7 @@ public class AccountFileServiceImpl implements AccountFileService { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 保存文件和账号文件的关系到数据库 |
|
|
* 保存文件和账号文件的关系到数据库 |
|
|
|
|
|
* |
|
|
* @param req |
|
|
* @param req |
|
|
* @param storeFileObjectKey |
|
|
* @param storeFileObjectKey |
|
|
*/ |
|
|
*/ |
|
@ -309,15 +340,16 @@ public class AccountFileServiceImpl implements AccountFileService { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 上传文件到存储引擎,返回存储的文件路径 |
|
|
* 上传文件到存储引擎,返回存储的文件路径 |
|
|
|
|
|
* |
|
|
* @param req |
|
|
* @param req |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
private String storeFile(FileUploadReq req) { |
|
|
private String storeFile(FileUploadReq req) { |
|
|
|
|
|
|
|
|
String objectKey = CommonUtil.getFilePath(req.getFilename()); |
|
|
String objectKey = CommonUtil.getFilePath(req.getFilename()); |
|
|
fileStoreEngine.upload(minioConfig.getBucketName(), objectKey, req.getFile()); |
|
|
fileStoreEngine.upload(minioConfig.getBucketName(), objectKey, req.getFile()); |
|
|
return objectKey; |
|
|
return objectKey; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 处理用户和文件的关系,存储文件和文件夹都是可以的 |
|
|
* 处理用户和文件的关系,存储文件和文件夹都是可以的 |
|
|
* <p> |
|
|
* <p> |
|
|