From ab8786be7fc9c632bad0e6261afb0382870d377f Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 12 Mar 2025 11:47:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=8F=91=E7=8E=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/pojo/models/EdFileInfo.java | 2 +- .../service/serviceimpl/CommonService.java | 6 +++--- .../serviceimpl/EdFileInfoServiceImpl.java | 16 ++++++++++------ .../service/serviceimpl/EdPrjServiceImpl.java | 4 ++-- .../serviceimpl/FileRecycleServiceImpl.java | 13 ++++++++----- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java index 3b4b931..fe3a740 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileInfo.java @@ -113,7 +113,7 @@ public class EdFileInfo extends BaseModel { /** * 数据的归属:0-》上传的文件或者新建的文件夹 1-》系统管理员创建的层级 2-》用户自定义的层级 */ - @TableField(value = "prj_dir") + @TableField(value = "data_own") private Integer dataOwn; /** diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java index ca19b3d..7958b92 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java @@ -183,16 +183,16 @@ public class CommonService { return parentId + fileFormat.getSuffixNo() + version + timeStr; } - public List selectAllAdminFolder(String id, List accessibleIds, int dataOwnCode) { + public List selectAllPrjFolder(String id, List accessibleIds, int dataOwnCode) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code) .likeRight(EdFileInfo::getFilePath, id); - if (dataOwnCode == DataOwnEnum.SYS_FILE.code) { + if (dataOwnCode == DataOwnEnum.SYS_FILE.code || dataOwnCode == DataOwnEnum.SYS_PRJ.code) { queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code); queryWrapper.in(EdFileInfo::getId, accessibleIds); - } else if(dataOwnCode == DataOwnEnum.USER_FILE.code){ + } else if (dataOwnCode == DataOwnEnum.USER_FILE.code || dataOwnCode == DataOwnEnum.USER_PRJ.code) { queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_PRJ.code); } else { queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.REPO_PRJ.code); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 42d6006..fa41239 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -91,10 +91,12 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryEdFileInfo(FileInfoQueryDTO pars, int dataOwnCode) { - String parentId = pars.getParentId(); - List accessibleTree = permissionService.getAccessibleTree(); - if ((dataOwnCode != DataOwnEnum.USER_FILE.code) && (!accessibleTree.contains(parentId) && parentId.length() == PRJ_ID_LENGTH)) { - throw new PermissionDeniedException(); + if (DataOwnEnum.isSysCode(dataOwnCode)) { + String parentId = pars.getParentId(); + List accessibleTree = permissionService.getAccessibleTree(); + if ((dataOwnCode != DataOwnEnum.USER_FILE.code) && (!accessibleTree.contains(parentId) && parentId.length() == PRJ_ID_LENGTH)) { + throw new PermissionDeniedException(); + } } LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) @@ -187,7 +189,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl tree(int querySource) { /** - * 都是从用户界面处进来,一个是从数据库的用户界面(SYS_DB),一个是从用户自己的工程界面处(USER_DB)。 + * 都是从用户界面处进来,一个是从数据库的用户界面(SYS_DB),一个是从用户自己的工程界面处(USER_DB),一个是从库工程界面进入(REPO_DB)。 */ List accessibleIds; @@ -768,8 +770,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl try { // 把source工程的层级结构copy到目标工程 // 查找source的全部目录 - List sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId, null, dataOwnCode); + List sourceEdFileInfos = commonService.selectAllPrjFolder(sourceId, null, dataOwnCode); List needSavePaths = new ArrayList<>(); // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 for (int i = 1; i <= prjFolderMaxLength; ++i) { - List targetEdFileInfos = commonService.selectAllAdminFolder(targetId, null, dataOwnCode); + List targetEdFileInfos = commonService.selectAllPrjFolder(targetId, null, dataOwnCode); // 先查找source第i层下有那些子集 final int count = i; // 取source当前层 diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java index 86129ed..69ad09e 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java @@ -9,10 +9,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.electromagnetic.industry.software.common.enums.AdminTypeEnum; -import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; -import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; -import com.electromagnetic.industry.software.common.enums.FileBackupSource; +import com.electromagnetic.industry.software.common.enums.*; import com.electromagnetic.industry.software.common.exception.BizException; import com.electromagnetic.industry.software.common.pojo.BackupFileResLog; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; @@ -103,9 +100,10 @@ public class FileRecycleServiceImpl implements FileRecycleService { .or() .like(EdFileInfo::getFileContent, pars.getKeyword())); } - + // TODO 要考虑数据是个人数据还是库数据,如果是管理员,则展示全部数据,其他用户则展示有权限的系统数据+用户个人数据+库数据 if (!UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue())) { List accessibleTree = permissionService.getAccessibleTree(); + queryWrapper.and(qr -> qr.eq(EdFileInfo::getCreatedBy, UserThreadLocal.getUserId()).eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_FILE.code)); if (CollUtil.isNotEmpty(accessibleTree)) { for (String permission : accessibleTree) { queryWrapper.or().likeRight(EdFileInfo::getFileCode, permission); @@ -222,6 +220,11 @@ public class FileRecycleServiceImpl implements FileRecycleService { } private void resetRes(List records) { + + if (CollUtil.isEmpty(records)) { + return; + } + List userIds = records.stream().map(FileRecycleQueryVO::getUpdatedBy).collect(Collectors.toList()); Map idNameMap = userMapper.selectList(Wrappers.lambdaQuery().in(User::getId, userIds)).stream().collect(Collectors.toMap(User::getUserId, User::getUserName)); records.forEach(e -> {