增加同名校验

This commit is contained in:
chenxudong 2024-12-27 10:45:32 +08:00
parent 952efbd78d
commit 387af49985
2 changed files with 19 additions and 8 deletions

View File

@ -92,7 +92,9 @@ public class CommonService {
*/
public boolean checkSameFolder(String parentId, String newFolderName) {
Long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileName, newFolderName));
return count > 0;
@ -147,6 +149,9 @@ public class CommonService {
// 验证名称是否合法
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
// 检查名称是否存在
Assert.isTrue(checkSameFolder(parentId, folderName), "该名称已存在");
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
.eq(EdFileInfo::getId, parentId);
@ -161,18 +166,12 @@ public class CommonService {
}
}
// 判断文件夹名称是否存在
List<EdFileInfo> edFileInfos = edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFileName)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getParentId, parentId));
List<String> names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList());
if (names.contains(folderName)) {
String info = "该名称已存在";
log.error(info);
return ElectromagneticResultUtil.fail("-1", info);
}
try {
Date now = new Date();
String currentUserId = UserThreadLocal.getUserId();

View File

@ -210,8 +210,20 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
try {
// 首先检查新名称是否存在
EdFileInfo fileInfo = this.baseMapper.selectById(updateFileInfoDTO.getId());
String parentId = fileInfo.getParentId();
// 是更新文件还是文件夹
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.<EdFileInfo>lambdaQuery()
.select(EdFileInfo::getFileName)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
.eq(EdFileInfo::getFileName, updateFileInfoDTO.getFileName())
.eq(EdFileInfo::getFileType, fileInfo.getFileType())
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
if (fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code)) {
queryWrapper.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code);
} else {
queryWrapper.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code);
}
long count = this.baseMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
.select(EdFileInfo::getFileName)
.eq(EdFileInfo::getParentId, parentId)