解决冲突
This commit is contained in:
commit
b17404393e
|
|
@ -50,8 +50,8 @@ public class ProjectController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("deleteFolder")
|
@RequestMapping("deleteFolder")
|
||||||
public ElectromagneticResult<?> deleteFolder(@RequestParam String id, @RequestParam String parentId) {
|
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
|
||||||
return edPrjService.deleteFolder(id, parentId);
|
return edPrjService.deleteFolder(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("folderResort")
|
@RequestMapping("folderResort")
|
||||||
|
|
|
||||||
|
|
@ -67,10 +67,9 @@ public interface EdPrjService {
|
||||||
* 删除子集
|
* 删除子集
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id
|
||||||
* @param parentId
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ElectromagneticResult<?> deleteFolder(String id, String parentId);
|
ElectromagneticResult<?> deleteFolder(String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 层级沿用
|
* 层级沿用
|
||||||
|
|
|
||||||
|
|
@ -90,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)
|
Long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
|
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)
|
||||||
.eq(EdFileInfo::getParentId, parentId)
|
.eq(EdFileInfo::getParentId, parentId)
|
||||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||||
.eq(EdFileInfo::getFileName, newFolderName));
|
.eq(EdFileInfo::getFileName, newFolderName));
|
||||||
|
|
||||||
return count > 0;
|
return count == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFileSysPath(String dbPath) {
|
public String getFileSysPath(String dbPath) {
|
||||||
|
|
@ -148,9 +148,9 @@ public class CommonService {
|
||||||
public ElectromagneticResult<?> addFolder(String parentId, String folderName, boolean maxLengthCheck, boolean isPrjDir, String folderId) {
|
public ElectromagneticResult<?> addFolder(String parentId, String folderName, boolean maxLengthCheck, boolean isPrjDir, String folderId) {
|
||||||
|
|
||||||
// 验证名称是否合法
|
// 验证名称是否合法
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
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)
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
|
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
|
||||||
|
|
@ -188,7 +188,7 @@ public class CommonService {
|
||||||
.setPrjDir(isPrjDir)
|
.setPrjDir(isPrjDir)
|
||||||
.setDataType(EleDataTypeEnum.FOLDER.code)
|
.setDataType(EleDataTypeEnum.FOLDER.code)
|
||||||
.setDataStatus(isPrjDir ? EleDataStatusEnum.NOT_PUBLISHED.code : EleDataStatusEnum.PUBLISHED.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)
|
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||||
.setFilePath(path)
|
.setFilePath(path)
|
||||||
.setSort(names.size() + 1)
|
.setSort(names.size() + 1)
|
||||||
|
|
@ -208,20 +208,25 @@ public class CommonService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ElectromagneticResult<?> queryAllPrjInfo() {
|
public ElectromagneticResult<?> queryAllPrjInfo(boolean isAdminQuery) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.select(EdFileInfo::getId)
|
.select(EdFileInfo::getId)
|
||||||
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
|
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
|
||||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
.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<String> ids = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
List<ProjectVO> projectVOS = new ArrayList<>();
|
List<ProjectVO> projectVOS = new ArrayList<>();
|
||||||
|
|
||||||
for (String id : ids) {
|
for (String id : ids) {
|
||||||
List<EdFileInfo> edFileInfos = selectAllAdminFolder(id);
|
List<EdFileInfo> edFileInfos = selectAllAdminFolder(id);
|
||||||
|
if (!isAdminQuery) {
|
||||||
|
edFileInfos = edFileInfos.stream().filter(e -> e.getDataStatus().equals(EleDataStatusEnum.PUBLISHED.code)).collect(Collectors.toList());
|
||||||
|
}
|
||||||
// 转换为树
|
// 转换为树
|
||||||
TreeNodeConfig config = new TreeNodeConfig();
|
TreeNodeConfig config = new TreeNodeConfig();
|
||||||
config.setIdKey(EdFileInfo.Fields.id);
|
config.setIdKey(EdFileInfo.Fields.id);
|
||||||
|
|
@ -247,11 +252,12 @@ public class CommonService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ElectromagneticResult<?> deleteFolder(String id, String parentId) {
|
public ElectromagneticResult<?> deleteFolder(String id) {
|
||||||
// 如果文件夹下存在文件(包括文件夹和已经逻辑删除的文件),则不允许删除。后面管理员选择会有物理删除文件夹和文件的功能,此时MySQL和文件系统则会进行物理删除该文件。
|
// 如果文件夹下存在文件(包括文件夹和已经逻辑删除的文件),则不允许删除。后面管理员选择会有物理删除文件夹和文件的功能,此时MySQL和文件系统则会进行物理删除该文件。
|
||||||
try {
|
try {
|
||||||
// 这里要分两种情况,1是删除层级目录,2是删除用户创建的文件夹
|
// 这里要分两种情况,1是删除层级目录,2是删除用户创建的文件夹
|
||||||
EdFileInfo fileInfo = edFileInfoMapper.selectOne(Wrappers.<EdFileInfo>lambdaQuery().eq(EdFileInfo::getId, id));
|
EdFileInfo fileInfo = edFileInfoMapper.selectOne(Wrappers.<EdFileInfo>lambdaQuery().eq(EdFileInfo::getId, id));
|
||||||
|
String parentId = fileInfo.getParentId();
|
||||||
if (fileInfo.getPrjDir()) { // 删除的是层级目录
|
if (fileInfo.getPrjDir()) { // 删除的是层级目录
|
||||||
long count = edFileInfoMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
|
long count = edFileInfoMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
|
||||||
.eq(EdFileInfo::getPrjDir, false)
|
.eq(EdFileInfo::getPrjDir, false)
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ public class EDDataServiceImpl implements EDDataService {
|
||||||
public Boolean createDataInfo(EDDataInfo edDataInfo) throws Exception {
|
public Boolean createDataInfo(EDDataInfo edDataInfo) throws Exception {
|
||||||
// 获取上级目录的名称
|
// 获取上级目录的名称
|
||||||
String fileName = edDataInfo.getDataName();
|
String fileName = edDataInfo.getDataName();
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), ElectromagneticConstants.NAME_VALID_MSG);
|
||||||
|
|
||||||
Category categoryParent = new Category();
|
Category categoryParent = new Category();
|
||||||
categoryParent.setCategoryId(edDataInfo.getCategoryId());
|
categoryParent.setCategoryId(edDataInfo.getCategoryId());
|
||||||
|
|
@ -316,7 +316,7 @@ public class EDDataServiceImpl implements EDDataService {
|
||||||
String fileType = EleCommonUtil.getFileType(fileFullName);
|
String fileType = EleCommonUtil.getFileType(fileFullName);
|
||||||
// 获取文件名称
|
// 获取文件名称
|
||||||
String fileName = EleCommonUtil.getFileName(fileFullName);
|
String fileName = EleCommonUtil.getFileName(fileFullName);
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), ElectromagneticConstants.NAME_VALID_MSG);
|
||||||
// 判断文件名称是否存在
|
// 判断文件名称是否存在
|
||||||
EDDataParams folderParames = new EDDataParams();
|
EDDataParams folderParames = new EDDataParams();
|
||||||
folderParames.setParentId(categoryId);
|
folderParames.setParentId(categoryId);
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants;
|
||||||
import com.electromagnetic.industry.software.common.enums.*;
|
import com.electromagnetic.industry.software.common.enums.*;
|
||||||
import com.electromagnetic.industry.software.common.exception.BizException;
|
import com.electromagnetic.industry.software.common.exception.BizException;
|
||||||
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
|
||||||
|
|
@ -144,6 +145,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ElectromagneticResult<?> createFolder(String parentId, String newFolderName) {
|
public ElectromagneticResult<?> createFolder(String parentId, String newFolderName) {
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(newFolderName), NAME_VALID_MSG);
|
||||||
String folderId = IdWorker.getSnowFlakeIdString();
|
String folderId = IdWorker.getSnowFlakeIdString();
|
||||||
return commonService.addFolder(parentId, newFolderName, false, false, folderId);
|
return commonService.addFolder(parentId, newFolderName, false, false, folderId);
|
||||||
}
|
}
|
||||||
|
|
@ -155,7 +157,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ElectromagneticResult<?> tree() {
|
public ElectromagneticResult<?> tree() {
|
||||||
return commonService.queryAllPrjInfo();
|
return commonService.queryAllPrjInfo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -169,7 +171,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
EdFileInfo fileInfo = this.baseMapper.selectById(id);
|
EdFileInfo fileInfo = this.baseMapper.selectById(id);
|
||||||
String parentId = fileInfo.getParentId();
|
String parentId = fileInfo.getParentId();
|
||||||
if (fileInfo.getDataType() == EleDataTypeEnum.FOLDER.code) {
|
if (fileInfo.getDataType() == EleDataTypeEnum.FOLDER.code) {
|
||||||
return commonService.deleteFolder(id, parentId);
|
return commonService.deleteFolder(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
|
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||||
|
|
@ -220,6 +222,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO) {
|
public ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO) {
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(updateFileInfoDTO.getFileName()), NAME_VALID_MSG);
|
||||||
try {
|
try {
|
||||||
// 首先检查新名称是否存在
|
// 首先检查新名称是否存在
|
||||||
EdFileInfo fileInfo = this.baseMapper.selectById(updateFileInfoDTO.getId());
|
EdFileInfo fileInfo = this.baseMapper.selectById(updateFileInfoDTO.getId());
|
||||||
|
|
@ -608,6 +611,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy) {
|
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy) {
|
||||||
|
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG);
|
||||||
EdFileInfo fileInfo = this.baseMapper.selectById(parentId);
|
EdFileInfo fileInfo = this.baseMapper.selectById(parentId);
|
||||||
Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件");
|
Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件");
|
||||||
// 首先检查是否是同名文件
|
// 首先检查是否是同名文件
|
||||||
|
|
@ -615,7 +619,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
String fileName = file.getOriginalFilename();
|
String fileName = file.getOriginalFilename();
|
||||||
String mainName = FileUtil.mainName(fileName);
|
String mainName = FileUtil.mainName(fileName);
|
||||||
String suffix = FileUtil.getSuffix(fileName);
|
String suffix = FileUtil.getSuffix(fileName);
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG);
|
||||||
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.eq(EdFileInfo::getParentId, parentId)
|
.eq(EdFileInfo::getParentId, parentId)
|
||||||
.eq(EdFileInfo::getFileName, mainName)
|
.eq(EdFileInfo::getFileName, mainName)
|
||||||
|
|
|
||||||
|
|
@ -59,13 +59,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> createNewPrj(String prjName) {
|
public ElectromagneticResult<?> createNewPrj(String prjName) {
|
||||||
|
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
|
Assert.isTrue(EleCommonUtil.isFileNameValid(prjName), NAME_VALID_MSG);
|
||||||
if (!EleCommonUtil.isFileNameValid(prjName)) {
|
// if (!EleCommonUtil.isFileNameValid(prjName)) {
|
||||||
String info = StrFormatter.format("工程名称{}不符合要求", prjName);
|
// String info = StrFormatter.format("工程名称{}不符合要求", prjName);
|
||||||
log.error(info);
|
// log.error(info);
|
||||||
return ElectromagneticResultUtil.fail("-1", info);
|
// return ElectromagneticResultUtil.fail("-1", info);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 首先检查工程是否存在
|
// 首先检查工程是否存在
|
||||||
// TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。
|
// TODO 一个项目如果被废除了,然后又新建了一个同名工程,这种情况怎么处理,需要产品确认。当前这里先按照同名如果存在则抛出异常处理。
|
||||||
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
|
@ -127,6 +126,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName) {
|
public ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName) {
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(newPrjName), NAME_VALID_MSG);
|
||||||
try {
|
try {
|
||||||
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
|
.eq(EdFileInfo::getParentId, PRJ_PARENT_ID)
|
||||||
|
|
@ -208,6 +208,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> addFolder(String parentId, String folderName) {
|
public ElectromagneticResult<?> addFolder(String parentId, String folderName) {
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), NAME_VALID_MSG);
|
||||||
int id = Integer.parseInt(this.baseMapper.maxPrjId());
|
int id = Integer.parseInt(this.baseMapper.maxPrjId());
|
||||||
String folderId = String.valueOf(id + 1);
|
String folderId = String.valueOf(id + 1);
|
||||||
return commonService.addFolder(parentId, folderName, true, true, folderId);
|
return commonService.addFolder(parentId, folderName, true, true, folderId);
|
||||||
|
|
@ -220,7 +221,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ElectromagneticResult<?> queryAllPrjInfo() {
|
public ElectromagneticResult<?> queryAllPrjInfo() {
|
||||||
return commonService.queryAllPrjInfo();
|
return commonService.queryAllPrjInfo(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -265,8 +266,8 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
.likeRight(EdFileInfo::getFilePath, prjId));
|
.likeRight(EdFileInfo::getFilePath, prjId));
|
||||||
// 其余置为发布状态
|
// 其余置为发布状态
|
||||||
LambdaUpdateWrapper<EdFileInfo> updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class)
|
LambdaUpdateWrapper<EdFileInfo> updateWrapper = Wrappers.lambdaUpdate(EdFileInfo.class)
|
||||||
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code)
|
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code)
|
||||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||||
.likeRight(EdFileInfo::getFilePath, prjId);
|
.likeRight(EdFileInfo::getFilePath, prjId);
|
||||||
this.update(updateWrapper);
|
this.update(updateWrapper);
|
||||||
return ElectromagneticResultUtil.success(true);
|
return ElectromagneticResultUtil.success(true);
|
||||||
|
|
@ -281,13 +282,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
* 删除子集
|
* 删除子集
|
||||||
*
|
*
|
||||||
* @param fileId
|
* @param fileId
|
||||||
* @param parentId
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> deleteFolder(String fileId, String parentId) {
|
public ElectromagneticResult<?> deleteFolder(String fileId) {
|
||||||
return commonService.deleteFolder(fileId, parentId);
|
return commonService.deleteFolder(fileId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -298,6 +298,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> follow(String sourceId, String targetId) {
|
public ElectromagneticResult<?> follow(String sourceId, String targetId) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -306,13 +307,17 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
// 查找source的全部目录
|
// 查找source的全部目录
|
||||||
List<EdFileInfo> sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId);
|
List<EdFileInfo> sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId);
|
||||||
List<EdFileInfo> targetEdFileInfos = commonService.selectAllAdminFolder(targetId);
|
List<EdFileInfo> targetEdFileInfos = commonService.selectAllAdminFolder(targetId);
|
||||||
|
List<String> needSavePaths = new ArrayList<>();
|
||||||
// 确定层级最大为prjFolderMaxLength层,现在逐层来处理。
|
// 确定层级最大为prjFolderMaxLength层,现在逐层来处理。
|
||||||
for (int i = 1; i <= prjFolderMaxLength; ++i) {
|
for (int i = 1; i <= prjFolderMaxLength; ++i) {
|
||||||
// 先查找source第i层下有那些子集
|
// 先查找source第i层下有那些子集
|
||||||
final int count = i;
|
final int count = i;
|
||||||
EdFileInfo targetParentFile = targetEdFileInfos.stream()
|
EdFileInfo targetParentFile = targetEdFileInfos.stream()
|
||||||
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1)
|
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1)
|
||||||
.collect(Collectors.toList()).get(0);
|
.collect(Collectors.toList()).stream().findFirst().orElse(null);
|
||||||
|
if (targetParentFile == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<EdFileInfo> sourceTmpEdFiles = sourceEdFileInfos.stream()
|
List<EdFileInfo> sourceTmpEdFiles = sourceEdFileInfos.stream()
|
||||||
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count)
|
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
@ -321,6 +326,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
Map<String, EdFileInfo> sourceFileNameMap = sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e));
|
Map<String, EdFileInfo> sourceFileNameMap = sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e));
|
||||||
List<String> targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList());
|
List<String> targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList());
|
||||||
|
int sort = targetTmpEdFiles.size();
|
||||||
for (EdFileInfo edFileInfo : sourceTmpEdFiles) {
|
for (EdFileInfo edFileInfo : sourceTmpEdFiles) {
|
||||||
String sourceFileName = edFileInfo.getFileName();
|
String sourceFileName = edFileInfo.getFileName();
|
||||||
if (!targetFileNames.contains(sourceFileName)) {
|
if (!targetFileNames.contains(sourceFileName)) {
|
||||||
|
|
@ -328,36 +334,46 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
EdFileInfo targetFile = new EdFileInfo();
|
EdFileInfo targetFile = new EdFileInfo();
|
||||||
int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId());
|
int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId());
|
||||||
String newFolderId = String.valueOf(maxFolderId + 1);
|
String newFolderId = String.valueOf(maxFolderId + 1);
|
||||||
|
String nowTimeStr = EleCommonUtil.getNowTimeStr();
|
||||||
|
String fileCode = commonService.createFileCode(targetParentFile.getId(), EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr);
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
targetFile.setId(newFolderId)
|
targetFile.setId(newFolderId)
|
||||||
.setFileId(newFolderId)
|
.setFileId(newFolderId)
|
||||||
.setFileName(sourceFile.getFileName())
|
.setFileName(sourceFile.getFileName())
|
||||||
.setFileVersion(FILE_START_VERSION)
|
.setFileVersion(FILE_START_VERSION)
|
||||||
.setPrjDir(true)
|
.setPrjDir(true)
|
||||||
.setParentId(targetParentFile.getParentId())
|
.setParentId(targetParentFile.getId())
|
||||||
.setFileTime(EleCommonUtil.getNowTimeStr())
|
.setFileTime(nowTimeStr)
|
||||||
.setDataType(EleDataTypeEnum.FOLDER.code)
|
.setDataType(EleDataTypeEnum.FOLDER.code)
|
||||||
.setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
|
.setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code)
|
||||||
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||||
|
.setFileCode(fileCode)
|
||||||
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||||
.setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId)
|
.setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId)
|
||||||
.setSort(targetTmpEdFiles.size() + 1)
|
.setSort(++sort)
|
||||||
.setCreatedTime(now)
|
.setCreatedTime(now)
|
||||||
.setUpdatedTime(now)
|
.setUpdatedTime(now)
|
||||||
.setCreatedBy(currentUserId)
|
.setCreatedBy(currentUserId)
|
||||||
.setUpdatedBy(currentUserId);
|
.setUpdatedBy(currentUserId);
|
||||||
this.save(targetFile);
|
this.save(targetFile);
|
||||||
|
targetEdFileInfos.add(targetFile);
|
||||||
String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath());
|
String targetSysFilePath = commonService.getFileSysPath(targetFile.getFilePath());
|
||||||
fileSystemService.createDirectory(targetSysFilePath);
|
needSavePaths.add(targetSysFilePath);
|
||||||
targetEdFileInfos = commonService.selectAllAdminFolder(targetId);
|
} else {
|
||||||
|
String info = "存在相同子集";
|
||||||
|
log.error(info);
|
||||||
|
throw new BizException(-1, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (String path : needSavePaths) {
|
||||||
|
fileSystemService.createDirectory(path);
|
||||||
|
}
|
||||||
return ElectromagneticResultUtil.success(true);
|
return ElectromagneticResultUtil.success(true);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String info = StrFormatter.format("层级沿用失败");
|
String info = StrFormatter.format("层级沿用失败");
|
||||||
log.error(info, e);
|
log.error(info, e);
|
||||||
return ElectromagneticResultUtil.fail("-1", info);
|
throw new BizException(-1, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -371,14 +387,12 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ElectromagneticResult<?> modifyFolder(String id, String newFolderName) {
|
public ElectromagneticResult<?> modifyFolder(String id, String newFolderName) {
|
||||||
|
|
||||||
|
Assert.isTrue(EleCommonUtil.isFileNameValid(newFolderName), NAME_VALID_MSG);
|
||||||
try {
|
try {
|
||||||
String parentId = this.baseMapper.selectById(id).getParentId();
|
String parentId = this.baseMapper.selectById(id).getParentId();
|
||||||
// 首先检查同层是否有同名目录
|
// 首先检查同层是否有同名目录
|
||||||
if (commonService.checkSameFolder(parentId, newFolderName)) {
|
Assert.isTrue(commonService.notExistSameFolder(parentId, newFolderName));
|
||||||
String info = "存在同名子集,禁止修改";
|
|
||||||
log.error(info);
|
|
||||||
return ElectromagneticResultUtil.fail("-1", info);
|
|
||||||
}
|
|
||||||
String currentUserId = UserThreadLocal.getUserId();
|
String currentUserId = UserThreadLocal.getUserId();
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
|
EdFileInfo fileInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,6 @@ public interface ElectromagneticConstants {
|
||||||
String PRJ_PARENT_ID = "0";
|
String PRJ_PARENT_ID = "0";
|
||||||
|
|
||||||
String UPLOAD_FILE_CHUNK_SUFFIX = ".part";
|
String UPLOAD_FILE_CHUNK_SUFFIX = ".part";
|
||||||
|
|
||||||
|
String NAME_VALID_MSG = "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ public enum EleDataStatusEnum {
|
||||||
NOT_PUBLISHED(0, "未发布"),
|
NOT_PUBLISHED(0, "未发布"),
|
||||||
PUBLISHED(1, "已发布"),
|
PUBLISHED(1, "已发布"),
|
||||||
OCCUPY(2, "占用"),
|
OCCUPY(2, "占用"),
|
||||||
DELETED(3, "已删除");
|
DELETED(3, "待删除");
|
||||||
|
|
||||||
public final int code;
|
public final int code;
|
||||||
public final String desc;
|
public final String desc;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue