解决发现的bug
This commit is contained in:
parent
0ec69f5d8f
commit
22e92702d1
|
|
@ -50,8 +50,8 @@ public class ProjectController {
|
|||
}
|
||||
|
||||
@RequestMapping("deleteFolder")
|
||||
public ElectromagneticResult<?> deleteFolder(@RequestParam String id, @RequestParam String parentId) {
|
||||
return edPrjService.deleteFolder(id, parentId);
|
||||
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
|
||||
return edPrjService.deleteFolder(id);
|
||||
}
|
||||
|
||||
@RequestMapping("folderResort")
|
||||
|
|
|
|||
|
|
@ -67,10 +67,9 @@ public interface EdPrjService {
|
|||
* 删除子集
|
||||
*
|
||||
* @param id
|
||||
* @param parentId
|
||||
* @return
|
||||
*/
|
||||
ElectromagneticResult<?> deleteFolder(String id, String parentId);
|
||||
ElectromagneticResult<?> deleteFolder(String id);
|
||||
|
||||
/**
|
||||
* 层级沿用
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import cn.hutool.core.util.StrUtil;
|
|||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants;
|
||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
|
||||
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
|
||||
|
|
@ -91,14 +90,14 @@ public class CommonService {
|
|||
/**
|
||||
* 检查同层级是否有同名的文件夹
|
||||
*/
|
||||
public boolean checkSameFolder(String parentId, String newFolderName) {
|
||||
public boolean notExistSameFolder(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;
|
||||
return count == 0;
|
||||
}
|
||||
|
||||
public String getFileSysPath(String dbPath) {
|
||||
|
|
@ -151,7 +150,7 @@ public class CommonService {
|
|||
// 验证名称是否合法
|
||||
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), NAME_VALID_MSG);
|
||||
// 检查名称是否存在
|
||||
Assert.isTrue(checkSameFolder(parentId, folderName), "该名称已存在");
|
||||
Assert.isTrue(notExistSameFolder(parentId, folderName), "该名称已存在");
|
||||
|
||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
|
||||
|
|
@ -189,7 +188,7 @@ public class CommonService {
|
|||
.setPrjDir(isPrjDir)
|
||||
.setDataType(EleDataTypeEnum.FOLDER.code)
|
||||
.setDataStatus(isPrjDir ? EleDataStatusEnum.NOT_PUBLISHED.code : EleDataStatusEnum.PUBLISHED.code)
|
||||
.setEffectFlag(isPrjDir ? EffectFlagEnum.NOT_EFFECTIVE.code : EffectFlagEnum.EFFECT.code)
|
||||
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
||||
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||
.setFilePath(path)
|
||||
.setSort(names.size() + 1)
|
||||
|
|
@ -209,13 +208,16 @@ public class CommonService {
|
|||
}
|
||||
}
|
||||
|
||||
public ElectromagneticResult<?> queryAllPrjInfo() {
|
||||
public ElectromagneticResult<?> queryAllPrjInfo(boolean isAdminQuery) {
|
||||
|
||||
try {
|
||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||
.select(EdFileInfo::getId)
|
||||
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
|
||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||
if (!isAdminQuery) {
|
||||
queryWrapper.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code);
|
||||
}
|
||||
List<String> ids = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList());
|
||||
|
||||
List<ProjectVO> projectVOS = new ArrayList<>();
|
||||
|
|
@ -248,11 +250,12 @@ public class CommonService {
|
|||
}
|
||||
}
|
||||
|
||||
public ElectromagneticResult<?> deleteFolder(String id, String parentId) {
|
||||
public ElectromagneticResult<?> deleteFolder(String id) {
|
||||
// 如果文件夹下存在文件(包括文件夹和已经逻辑删除的文件),则不允许删除。后面管理员选择会有物理删除文件夹和文件的功能,此时MySQL和文件系统则会进行物理删除该文件。
|
||||
try {
|
||||
// 这里要分两种情况,1是删除层级目录,2是删除用户创建的文件夹
|
||||
EdFileInfo fileInfo = edFileInfoMapper.selectOne(Wrappers.<EdFileInfo>lambdaQuery().eq(EdFileInfo::getId, id));
|
||||
String parentId = fileInfo.getParentId();
|
||||
if (fileInfo.getPrjDir()) { // 删除的是层级目录
|
||||
long count = edFileInfoMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
|
||||
.eq(EdFileInfo::getPrjDir, false)
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
|||
*/
|
||||
@Override
|
||||
public ElectromagneticResult<?> tree() {
|
||||
return commonService.queryAllPrjInfo();
|
||||
return commonService.queryAllPrjInfo(false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -171,7 +171,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
|||
EdFileInfo fileInfo = this.baseMapper.selectById(id);
|
||||
String parentId = fileInfo.getParentId();
|
||||
if (fileInfo.getDataType() == EleDataTypeEnum.FOLDER.code) {
|
||||
return commonService.deleteFolder(id, parentId);
|
||||
return commonService.deleteFolder(id);
|
||||
}
|
||||
|
||||
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants;
|
||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
|
||||
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
|
||||
|
|
@ -97,7 +96,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
.setPrjDir(true)
|
||||
.setDataType(EleDataTypeEnum.FOLDER.code)
|
||||
.setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
||||
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||
.setFilePath(newPrjId)
|
||||
.setSort(1)
|
||||
|
|
@ -222,7 +221,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
*/
|
||||
@Override
|
||||
public ElectromagneticResult<?> queryAllPrjInfo() {
|
||||
return commonService.queryAllPrjInfo();
|
||||
return commonService.queryAllPrjInfo(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -267,9 +266,8 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
.likeRight(EdFileInfo::getFilePath, prjId));
|
||||
// 其余置为发布状态
|
||||
LambdaUpdateWrapper<EdFileInfo> updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||
.set(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code)
|
||||
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||
.likeRight(EdFileInfo::getFilePath, prjId);
|
||||
this.update(updateWrapper);
|
||||
return ElectromagneticResultUtil.success(true);
|
||||
|
|
@ -284,13 +282,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
* 删除子集
|
||||
*
|
||||
* @param fileId
|
||||
* @param parentId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ElectromagneticResult<?> deleteFolder(String fileId, String parentId) {
|
||||
return commonService.deleteFolder(fileId, parentId);
|
||||
public ElectromagneticResult<?> deleteFolder(String fileId) {
|
||||
return commonService.deleteFolder(fileId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -310,6 +307,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
// 查找source的全部目录
|
||||
List<EdFileInfo> sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId);
|
||||
List<EdFileInfo> targetEdFileInfos = commonService.selectAllAdminFolder(targetId);
|
||||
List<String> needSavePaths = new ArrayList<>();
|
||||
// 确定层级最大为prjFolderMaxLength层,现在逐层来处理。
|
||||
for (int i = 1; i <= prjFolderMaxLength; ++i) {
|
||||
// 先查找source第i层下有那些子集
|
||||
|
|
@ -360,15 +358,22 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
this.save(targetFile);
|
||||
targetEdFileInfos.add(targetFile);
|
||||
String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath());
|
||||
fileSystemService.createDirectory(targetSysFilePath);
|
||||
needSavePaths.add(targetSysFilePath);
|
||||
} else {
|
||||
String info = "存在相同子集";
|
||||
log.error(info);
|
||||
throw new BizException(-1, info);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (String path : needSavePaths) {
|
||||
fileSystemService.createDirectory(path);
|
||||
}
|
||||
return ElectromagneticResultUtil.success(true);
|
||||
} catch (Exception e) {
|
||||
String info = StrFormatter.format("层级沿用失败");
|
||||
log.error(info, e);
|
||||
return ElectromagneticResultUtil.fail("-1", info);
|
||||
throw new BizException(-1, info);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -387,11 +392,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
|||
try {
|
||||
String parentId = this.baseMapper.selectById(id).getParentId();
|
||||
// 首先检查同层是否有同名目录
|
||||
if (commonService.checkSameFolder(parentId, newFolderName)) {
|
||||
String info = "存在同名子集,禁止修改";
|
||||
log.error(info);
|
||||
return ElectromagneticResultUtil.fail("-1", info);
|
||||
}
|
||||
Assert.isTrue(commonService.notExistSameFolder(parentId, newFolderName));
|
||||
// if (commonService.notExistSameFolder(parentId, newFolderName)) {
|
||||
// String info = "存在同名子集,禁止修改";
|
||||
// log.error(info);
|
||||
// return ElectromagneticResultUtil.fail("-1", info);
|
||||
// }
|
||||
String currentUserId = UserThreadLocal.getUserId();
|
||||
Date now = new Date();
|
||||
EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||
|
|
|
|||
Loading…
Reference in New Issue