工程最大层级数从配置文件获取

This commit is contained in:
chenxudong 2025-04-08 15:28:39 +08:00
parent d247fda266
commit 1be0488bd6
6 changed files with 14 additions and 10 deletions

View File

@ -5,6 +5,7 @@ import com.electromagnetic.industry.software.common.cons.ElectromagneticConstant
import com.electromagnetic.industry.software.common.enums.FilePermission; import com.electromagnetic.industry.software.common.enums.FilePermission;
import com.electromagnetic.industry.software.common.exception.PermissionDeniedException; import com.electromagnetic.industry.software.common.exception.PermissionDeniedException;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService; import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
@ -25,6 +26,8 @@ public class FilePermissionCheckAspect {
PermissionService permissionService; PermissionService permissionService;
@Resource @Resource
EdFileInfoService edFileInfoService; EdFileInfoService edFileInfoService;
@Resource
private ElePropertyConfig elePropertyConfig;
@Around("@annotation(requiredPermission)") @Around("@annotation(requiredPermission)")
public Object requirePermission(ProceedingJoinPoint joinPoint, RequiredPermission requiredPermission) throws Throwable { public Object requirePermission(ProceedingJoinPoint joinPoint, RequiredPermission requiredPermission) throws Throwable {
@ -41,7 +44,7 @@ public class FilePermissionCheckAspect {
String id = extractId(args[0]); // 提取ID逻辑封装成方法减少冗余代码 String id = extractId(args[0]); // 提取ID逻辑封装成方法减少冗余代码
// 特殊处理 FileInfoQueryDTO // 特殊处理 FileInfoQueryDTO
if (args[0] instanceof FileInfoQueryDTO) { if (args[0] instanceof FileInfoQueryDTO) {
if (id.length() > ElectromagneticConstants.PRJ_ID_LENGTH) { if (id.length() > elePropertyConfig.getPrjFolderMaxLength()) {
return joinPoint.proceed(); return joinPoint.proceed();
} }
} }

View File

@ -66,6 +66,10 @@ public class ElePropertyConfig {
@Value("${ai.store.max.docs:200}") @Value("${ai.store.max.docs:200}")
private Integer aiMaxDocs; private Integer aiMaxDocs;
@Getter
@Value("${prj.folder.max.length}")
private Integer prjFolderMaxLength;
public String getEleTmpPath() { public String getEleTmpPath() {
if (EleCommonUtil.isWinOs()) { if (EleCommonUtil.isWinOs()) {
return winPrefix + eleTmpPath; return winPrefix + eleTmpPath;

View File

@ -45,8 +45,6 @@ public class CommonService {
private static final Map<Integer, String> PATH_MAP = new HashMap<>(); private static final Map<Integer, String> PATH_MAP = new HashMap<>();
private final EleLog log = new EleLog(CommonService.class); private final EleLog log = new EleLog(CommonService.class);
@Value("${prj.folder.max.length}")
private int prjFolderMaxLength;
@Resource @Resource
private ElePropertyConfig elePropertyConfig; private ElePropertyConfig elePropertyConfig;
@ -226,7 +224,7 @@ public class CommonService {
String currentPath = edFileInfo.getFilePath(); String currentPath = edFileInfo.getFilePath();
List<String> paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)); List<String> paths = CollUtil.newArrayList(edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT));
if (maxLengthCheck) { if (maxLengthCheck) {
if (paths.size() >= prjFolderMaxLength) { if (paths.size() >= elePropertyConfig.getPrjFolderMaxLength()) {
String info = StrFormatter.format("当前子集已达到最大层级,禁止创建子集,{} 创建失败。", folderName); String info = StrFormatter.format("当前子集已达到最大层级,禁止创建子集,{} 创建失败。", folderName);
log.error(info); log.error(info);
return ElectromagneticResultUtil.fail("-1", info); return ElectromagneticResultUtil.fail("-1", info);

View File

@ -99,7 +99,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
if (DataOwnEnum.isSysCode(dataOwnCode)) { if (DataOwnEnum.isSysCode(dataOwnCode)) {
String parentId = pars.getParentId(); String parentId = pars.getParentId();
List<String> accessibleTree = permissionService.getAccessibleTree(); List<String> accessibleTree = permissionService.getAccessibleTree();
if ((dataOwnCode != DataOwnEnum.USER_FILE.code) && (!accessibleTree.contains(parentId) && parentId.length() == PRJ_ID_LENGTH)) { if ((dataOwnCode != DataOwnEnum.USER_FILE.code) && (!accessibleTree.contains(parentId) && parentId.length() == elePropertyConfig.getPrjFolderMaxLength())) {
throw new PermissionDeniedException(); throw new PermissionDeniedException();
} }
} }

View File

@ -18,6 +18,7 @@ import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import com.electromagnetic.industry.software.common.util.EleLog; import com.electromagnetic.industry.software.common.util.EleLog;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
@ -44,8 +45,8 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
@Resource @Resource
private FileSystemService fileSystemService; private FileSystemService fileSystemService;
@Value("${prj.folder.max.length}") @Resource
private int prjFolderMaxLength; private ElePropertyConfig elePropertyConfig;
@Resource @Resource
private CommonService commonService; private CommonService commonService;
@ -413,7 +414,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
Map<String, String> idMaps = new HashMap<>(); Map<String, String> idMaps = new HashMap<>();
idMaps.put(sourceId, targetId); idMaps.put(sourceId, targetId);
List<String> sysFilePaths = new ArrayList<>(); List<String> sysFilePaths = new ArrayList<>();
for (int i = 1; i <= prjFolderMaxLength; ++i) { for (int i = 1; i <= elePropertyConfig.getPrjFolderMaxLength(); ++i) {
int layerIndex = i; int layerIndex = i;
List<EdFileInfo> currentSourceLayerDirs = sourceEdFileInfos.stream().filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == layerIndex).toList(); List<EdFileInfo> currentSourceLayerDirs = sourceEdFileInfos.stream().filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == layerIndex).toList();
if (layerIndex == 1) { if (layerIndex == 1) {

View File

@ -16,7 +16,5 @@ public interface ElectromagneticConstants {
String FILE_SEC_PASSWD = "adknfhkj87654knd"; String FILE_SEC_PASSWD = "adknfhkj87654knd";
int PRJ_ID_LENGTH = 6;
String DELETE_FLAG = "deleted"; String DELETE_FLAG = "deleted";
} }