diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/FilePermissionCheckAspect.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/FilePermissionCheckAspect.java index d657f1f..156c9e4 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/FilePermissionCheckAspect.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/aop/FilePermissionCheckAspect.java @@ -28,39 +28,54 @@ public class FilePermissionCheckAspect { @Around("@annotation(requiredPermission)") public Object requirePermission(ProceedingJoinPoint joinPoint, RequiredPermission requiredPermission) throws Throwable{ - - // 获取方法参数 Object[] args = joinPoint.getArgs(); - if (args.length > 0) { - FilePermission filePermission = requiredPermission.value(); - String userId = UserThreadLocal.getUserId(); - String id = ""; + if (args.length == 0) { + return joinPoint.proceed(); + } - if (args[0] instanceof String) { - String childId = args[0].toString(); - id = edFileInfoService.getCategoryId(childId); - } + FilePermission filePermission = requiredPermission.value(); + String userId = UserThreadLocal.getUserId(); + String id = extractId(args[0]); // 提取ID逻辑封装成方法,减少冗余代码 - if (args[0] instanceof UpdateFileInfoDTO) { - UpdateFileInfoDTO updateFileInfoDTO = (UpdateFileInfoDTO) args[0]; - String childId = updateFileInfoDTO.getId(); - id = edFileInfoService.getCategoryId(childId); - } - - if (args[0] instanceof FileInfoQueryDTO) { - FileInfoQueryDTO fileInfoQueryDTO = (FileInfoQueryDTO) args[0]; - id = fileInfoQueryDTO.getParentId(); - if (id.length() > ElectromagneticConstants.PRJ_ID_LENGTH) { - return joinPoint.proceed(); - } - } - - Map permissions = permissionService.getUserPermission(userId,id,true); - if (!permissions.get(filePermission.getCode()).equals(Boolean.TRUE)) { - throw new PermissionDeniedException("用户无权限执行此操作"); + // 特殊处理 FileInfoQueryDTO + if (args[0] instanceof FileInfoQueryDTO) { + if (id.length() > ElectromagneticConstants.PRJ_ID_LENGTH) { + return joinPoint.proceed(); } } + + // 先判断是否有权限,避免不必要的 `if` 嵌套 + if (!permissionService.isPermitted(filePermission.getCode(), userId, id)) { + throw new PermissionDeniedException("用户无权限执行此操作"); + } + + // 如果是 MOVE 操作,还需要检查目标文件夹权限 + if (filePermission.equals(FilePermission.MOVE)) { + if (args.length < 2 || !(args[1] instanceof String)) { + throw new IllegalArgumentException("MOVE 操作需要提供目标文件夹 ID"); + } + String targetId = edFileInfoService.getCategoryId(args[1].toString()); + if (!permissionService.isPermitted(filePermission.getCode(), userId, targetId)) { + throw new PermissionDeniedException("用户无权限对目标文件夹执行此操作"); + } + } + return joinPoint.proceed(); } + + /** + * 提取参数中的 ID,避免重复代码 + */ + private String extractId(Object arg) { + if (arg instanceof String) { + return edFileInfoService.getCategoryId(arg.toString()); + } else if (arg instanceof UpdateFileInfoDTO) { + return edFileInfoService.getCategoryId(((UpdateFileInfoDTO) arg).getId()); + } else if (arg instanceof FileInfoQueryDTO) { + return ((FileInfoQueryDTO) arg).getParentId(); + } + throw new IllegalArgumentException("不支持的参数类型:" + arg.getClass().getName()); + } + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java index c9f420a..eaf846d 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/common/GlobalExceptionHandler.java @@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; -import java.nio.file.AccessDeniedException; - @Slf4j @ControllerAdvice public class GlobalExceptionHandler { diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java index 3101f39..e3609a6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java @@ -81,9 +81,7 @@ public class EdFileRelationController { @RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST) @UserOperation(value="校验文件名唯一性", modelName = UserOperationModuleEnum.DATABASE) public ElectromagneticResult checkFileNameExist(@RequestBody CheckNameUniqueRequest checkNameUniqueRequest) { - String fileName = checkNameUniqueRequest.getFileName(); - String parentId = checkNameUniqueRequest.getParentId(); - return ElectromagneticResultUtil.success(edFileRelationService.checkNameUnique(parentId, fileName)); + return ElectromagneticResultUtil.success(edFileRelationService.checkNameExist(checkNameUniqueRequest)); } /** diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java index 6e6f46c..23bf5b6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java @@ -4,9 +4,11 @@ import com.electromagnetic.industry.software.common.annotations.UserOperation; import com.electromagnetic.industry.software.common.enums.DataOwnEnum; import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO; import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus; import com.electromagnetic.industry.software.manage.service.EdPrjService; +import com.electromagnetic.industry.software.manage.service.PermissionService; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -22,6 +24,8 @@ public class ProjectController { @Resource private EdPrjService edPrjService; + @Resource + private PermissionService permissionService; @UserOperation(value = "创建工程", modelName = UserOperationModuleEnum.PRJ_SETTING) @RequestMapping("create") @@ -74,7 +78,10 @@ public class ProjectController { @UserOperation(value = "发布工程", modelName = UserOperationModuleEnum.PRJ_SETTING) @RequestMapping("publish") public ElectromagneticResult publish(@RequestParam String prjId) { - return edPrjService.publish(prjId, DataOwnEnum.SYS_PRJ.code); + edPrjService.publish(prjId, DataOwnEnum.SYS_PRJ.code); + // 更新项目权限 + permissionService.syncPermissions(prjId); + return ElectromagneticResultUtil.success(true); } @UserOperation(value = "引用工程", modelName = UserOperationModuleEnum.PRJ_SETTING) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java index e98ab0c..d3f02ae 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/RolePermissionMapper.java @@ -2,9 +2,14 @@ package com.electromagnetic.industry.software.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; +import com.electromagnetic.industry.software.manage.pojo.req.PublishedFileDTO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; @Mapper public interface RolePermissionMapper extends BaseMapper { + + List getCurrentPermission(PublishedFileDTO publishedFileDTO); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java index 5c8d3df..9fe91f8 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/RolePermission.java @@ -10,6 +10,12 @@ import lombok.Data; @AllArgsConstructor public class RolePermission { + /** + * 主键id + */ + @TableField(value = "id") + private Long id; + /** * 角色编码 */ @@ -27,4 +33,11 @@ public class RolePermission { */ @TableField(value = "permission_code") private String permissionCode; + + + public RolePermission(String roleId, String fileId, String permissionCode) { + this.roleId = roleId; + this.fileId = fileId; + this.permissionCode = permissionCode; + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java index 2540945..432746b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/other/FileInfoVO.java @@ -22,6 +22,8 @@ public class FileInfoVO { private String parentId; + private String categoryId; + private Integer dataType; private Integer dataStatus; diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/CheckNameUniqueRequest.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/CheckNameUniqueRequest.java index e20f693..ffe1455 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/CheckNameUniqueRequest.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/CheckNameUniqueRequest.java @@ -14,4 +14,9 @@ public class CheckNameUniqueRequest { * 文件名称 */ private String fileName; + + /** + * 文件后缀 + */ + private String fileType; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PublishedFileDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PublishedFileDTO.java new file mode 100644 index 0000000..7e506ee --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PublishedFileDTO.java @@ -0,0 +1,25 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.PublishEnum; +import lombok.Data; + +@Data +public class PublishedFileDTO { + + + private String fileId; + + private Integer dataStatus; + + private Integer effectFlag; + + private Boolean prjDir; + + + public void newInit() { + this.setPrjDir(Boolean.TRUE); + this.setDataStatus(PublishEnum.PUBLISHED.getCode()); + this.setEffectFlag(EffectFlagEnum.EFFECT.code); + } +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileSimpleInfoVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileSimpleInfoVO.java index efb1d41..e873104 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileSimpleInfoVO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/FileSimpleInfoVO.java @@ -15,6 +15,11 @@ public class FileSimpleInfoVO { */ private String fileName; + /** + * 文件类型 + */ + private String fileType; + /** * 文件编号 */ @@ -25,4 +30,8 @@ public class FileSimpleInfoVO { */ private Integer fileVersion; + /** + * 是否有效 + */ + private Integer effectFlag; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index 9cdd6da..9344e93 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -4,11 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.manage.pojo.other.FileInfoVO; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO; import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO; import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO; -import org.apache.ibatis.annotations.Param; import org.springframework.core.io.InputStreamResource; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; @@ -168,6 +168,7 @@ public interface EdFileInfoService { * @param parentId * @return */ + ElectromagneticResult queryChildFolder(String parentId, int dataOwnCode); /** @@ -190,4 +191,11 @@ public interface EdFileInfoService { * @return */ IPage queryFileList (Page page, List ids, FileInfoQueryDTO queryDTO, int saveStatus, int effectFlag); + + /** + * 处理重名文件,文件名后+_1 + * @param fileInfo + */ + void resetFileInfoName(EdFileInfo fileInfo); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java index 2477c08..e9c3d8c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java @@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.service; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; +import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest; import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO; import org.springframework.web.multipart.MultipartFile; @@ -34,11 +35,9 @@ public interface EdFileRelationService { /** * 检查文件名是否唯一 * - * @param parentId - * @param fileName * @return */ - Boolean checkNameUnique(String parentId, String fileName); + Boolean checkNameExist(CheckNameUniqueRequest checkNameUniqueRequest); /** * 文件上传并建立关系 diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java index 1cf0e31..5884e78 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java @@ -44,4 +44,17 @@ public interface PermissionService { */ Map filterExportIds(String[] ids); + /** + * 同步权限 + */ + void syncPermissions (String prjId); + + /** + * 判断用户有无权限 + * @param permissionCode 权限 + * @param userId 用户编码 + * @param fileId 文件编码 + * @return + */ + boolean isPermitted (String permissionCode, String userId, String fileId); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java index 4a3b40c..3b94260 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java @@ -1,7 +1,33 @@ package com.electromagnetic.industry.software.manage.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; +import com.electromagnetic.industry.software.manage.pojo.req.PublishedFileDTO; +import org.apache.ibatis.annotations.Param; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; public interface RolePermissionService extends IService { + + /** + * 同步新权限 + * @param currentPermission + * @param infoId + */ + void syncNewPermissions (List currentPermission, String infoId); + + /** + * 获取新权限 + * @param publishedFileDTO + * @return + */ + List getCurrentPermission(PublishedFileDTO publishedFileDTO); + + /** + * 在树形结构变动后同步权限 + * @param prjId + */ + void syncPermissionsAfterTreeUpdate (List files, String prjId); } 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 80e13ae..8eefd6a 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 @@ -318,7 +318,7 @@ public class CommonService { } else { // 先设置dataStatus状态为删除状态 edFileInfoMapper.update(null, Wrappers.lambdaUpdate() - .eq(EdFileInfo::getId, id) + .like(EdFileInfo::getFilePath, id) .set(EdFileInfo::getSort, -1) .set(EdFileInfo::getUpdatedBy, currentUserId) .set(EdFileInfo::getUpdatedTime, now) 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 e09641a..cccf273 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 @@ -73,7 +73,6 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo.class, file -> !file.getColumn().equals("file_content")) + .select() + .eq(EdFileInfo::getDataOwn, DataOwnEnum.COMMON.code) .eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getParentId, pars.getParentId()) @@ -115,7 +116,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl 0) { - edFileInfoService.handUploadRepeatFile(parentId, file, 3, dataOwnCode); - } else { - EdFileInfo parentFolderInfo = edFileInfoService.getOne(Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getId, parentId) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); - - String codePathByDbPath = commonService.getCodePathByDbPath(parentFolderInfo.getFilePath()); - String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime()); - newEdFileInfo.setParentId(parentId) - .setFileCode(fileCode) - .setFileName(mainName) - .setFileType(suffix) - .setFileContent(EleCommonUtil.parse(file.getInputStream(), suffix)) - .setFileVersion(FILE_START_VERSION) - .setFileSize(file.getSize()) - .setFilePath(parentFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId()) - .setDataType(EleDataTypeEnum.FILE.code) - .setDataStatus(PublishEnum.PUBLISHED.getCode()) - .setEffectFlag(EffectFlagEnum.EFFECT.code) - .setFileCode(fileCode) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) - .setDataOwn(dataOwnCode); - edFileInfoService.saveOrUpdate(newEdFileInfo); - String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode); - FileUtil.writeFromStream(file.getInputStream(), fileDestPath); - EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes())); -// fileSystemService.save(FileUtil.getInputStream(fileDestPath), fileDestPath); // 这里会导致文件大小为0,考虑到当前的系统为OS文件系统,暂不处理 - - // 创建文件关系 - EdFileRelation relation = new EdFileRelation(); - relation.setId1(id); - relation.setId2(newEdFileInfo.getId()); - relation.setRelationship(desc); - createRelation(relation); + edFileInfoService.resetFileInfoName(newEdFileInfo); } + + edFileInfoService.saveOrUpdate(newEdFileInfo); + String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath(), dataOwnCode); + FileUtil.writeFromStream(file.getInputStream(), fileDestPath); + EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes())); + + // 创建文件关系 + EdFileRelation relation = new EdFileRelation(); + relation.setId1(id); + relation.setId2(newEdFileInfo.getId()); + relation.setRelationship(desc); + createRelation(relation); + } catch (Exception e) { newEdFileInfo.setParentId(parentId) .setFileName(mainName) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java index 6506f87..f0a095c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java @@ -67,8 +67,8 @@ public class EdPrjServiceImpl extends ServiceImpl // 首先检查工程是否存在 Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) - .eq(EdFileInfo::getEffectFlag, true) .eq(EdFileInfo::getDataOwn, dataOwnCode) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getFileName, prjName)); if (count > 0) { @@ -224,6 +224,7 @@ public class EdPrjServiceImpl extends ServiceImpl .eq(EdFileInfo::getParentId, parentId) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); Assert.isTrue(count == 0, StrFormatter.format("该层级目录下存在文件,不允许再定义层级目录。父目录id {},子集名称 {}", parentId, folderName)); + Assert.isTrue(commonService.notExistSameFolder(parentId, folderName, dataOwnCode), "子集名已经存在"); int id = Integer.parseInt(this.baseMapper.maxPrjId()); String folderId = String.valueOf(id + 1); ElectromagneticResult electromagneticResult = commonService.addFolder(parentId, folderName, true, folderId, null, dataOwnCode); @@ -355,33 +356,40 @@ public class EdPrjServiceImpl extends ServiceImpl // 把source工程的层级结构copy到目标工程 // 查找source的全部目录 List sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId, true, null); - List targetEdFileInfos = commonService.selectAllAdminFolder(targetId, true, null); List needSavePaths = new ArrayList<>(); // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 for (int i = 1; i <= prjFolderMaxLength; ++i) { + List targetEdFileInfos = commonService.selectAllAdminFolder(targetId, true, null); // 先查找source第i层下有那些子集 final int count = i; - EdFileInfo targetParentFile = targetEdFileInfos.stream() - .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) - .collect(Collectors.toList()).stream().findFirst().orElse(null); - if (targetParentFile == null) { - continue; - } + // 取source当前层 List sourceTmpEdFiles = sourceEdFileInfos.stream() .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) .collect(Collectors.toList()); + // 取target父层 List targetTmpEdFiles = targetEdFileInfos.stream() - .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) + .collect(Collectors.toList()); + // 获取source名称的map + Map sourceFileNameMap = sourceTmpEdFiles.stream() + .collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); + // 获取target当前层级的子集名称 + List targetFileNames = targetEdFileInfos.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .map(EdFileInfo::getFileName) .collect(Collectors.toList()); - Map sourceFileNameMap = sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); - List targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); int sort = targetTmpEdFiles.size(); for (EdFileInfo edFileInfo : sourceTmpEdFiles) { String sourceFileName = edFileInfo.getFileName(); + + String sourceFileParentName = sourceEdFileInfos.stream().filter(e -> e.getId().equals(edFileInfo.getParentId())).findFirst().get().getFileName(); + EdFileInfo targetParentFile = i == 1 ? targetTmpEdFiles.stream().filter(e -> e.getId().equals(targetId)).findFirst().get() : targetTmpEdFiles.stream().filter(e -> e.getFileName().equals(sourceFileParentName)).findFirst().get(); + if (!targetFileNames.contains(sourceFileName)) { EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); EdFileInfo targetFile = new EdFileInfo(); int maxFolderId = Integer.parseInt(this.baseMapper.maxPrjId()); + String newFolderId = String.valueOf(maxFolderId + 1); String nowTimeStr = EleCommonUtil.getNowTimeStr(); String fileCode = commonService.createFileCode(targetParentFile.getId(), EleDataTypeEnum.FOLDER.desc, FILE_START_VERSION, nowTimeStr); @@ -397,6 +405,7 @@ public class EdPrjServiceImpl extends ServiceImpl .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) .setEffectFlag(EffectFlagEnum.EFFECT.code) .setFileCode(fileCode) + .setFileType("文件夹") .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) .setSort(++sort) @@ -423,7 +432,7 @@ public class EdPrjServiceImpl extends ServiceImpl } catch (Exception e) { String info = StrFormatter.format("层级沿用失败,源工程 {},目标工程 {},原因 {}", sourceId, targetId, e.getMessage()); log.error(info, e); - throw new BizException(info); + throw new BizException(info, e); } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java index 65e09d7..bd1e27c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java @@ -1,17 +1,16 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; -import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.electromagnetic.industry.software.common.enums.FilePermission; +import com.electromagnetic.industry.software.common.enums.*; import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; -import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper; import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; import com.electromagnetic.industry.software.manage.pojo.models.UserRole; import com.electromagnetic.industry.software.manage.service.PermissionService; import com.electromagnetic.industry.software.manage.service.RolePermissionService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,13 +18,14 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +@Slf4j @Service public class PermissionServiceImpl implements PermissionService { @Resource UserRoleMapper userRoleMapper; @Resource - RolePermissionMapper rolePermissionMapper; + RolePermissionService rolePermissionService; @Resource EdFileInfoMapper edFileInfoMapper; @@ -49,7 +49,7 @@ public class PermissionServiceImpl implements PermissionService { queryWrapper1.select(RolePermission::getPermissionCode) .eq(RolePermission::getFileId, id) .in(RolePermission::getRoleId, roleIds); - List permissionCodes = rolePermissionMapper.selectObjs(queryWrapper1).stream().map(Object::toString).collect(Collectors.toList()); + List permissionCodes = rolePermissionService.listObjs(queryWrapper1).stream().map(Object::toString).collect(Collectors.toList()); return transToMap(permissionCodes, includeView); } @@ -72,7 +72,7 @@ public class PermissionServiceImpl implements PermissionService { queryWrapper1.select(RolePermission::getFileId) .in(RolePermission::getRoleId, roleIds) .eq(RolePermission::getPermissionCode, FilePermission.VIEW); - List ids = rolePermissionMapper.selectObjs(queryWrapper1).stream().map(Object::toString).collect(Collectors.toList()); + List ids = rolePermissionService.listObjs(queryWrapper1).stream().map(Object::toString).collect(Collectors.toList()); Set result = new HashSet<>(); // 把父亲节点加上 @@ -109,7 +109,7 @@ public class PermissionServiceImpl implements PermissionService { queryWrapper.select(RolePermission::getPermissionCode) .eq(RolePermission::getFileId, fileId) .eq(RolePermission::getRoleId, roleId); - return rolePermissionMapper.selectObjs(queryWrapper).stream().map(Object::toString).collect(Collectors.toList()); + return rolePermissionService.listObjs(queryWrapper).stream().map(Object::toString).collect(Collectors.toList()); } /** @@ -155,7 +155,7 @@ public class PermissionServiceImpl implements PermissionService { queryWrapper.eq(RolePermission::getFileId, id) .eq(RolePermission::getPermissionCode, FilePermission.EXPORT.getCode()) .in(RolePermission::getRoleId, roleIds); - long count = rolePermissionMapper.selectCount(queryWrapper); + long count = rolePermissionService.count(queryWrapper); map.put(id, count>0); // 添加父节点 @@ -169,4 +169,62 @@ public class PermissionServiceImpl implements PermissionService { } return map; } + + + /** + * 同步权限 + */ + @Override + public void syncPermissions (String prjId) { + + // 获取当前项目所有已逻辑删除的节点,删除其权限 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .likeRight(EdFileInfo::getFilePath, prjId); + List deletedIds = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); + + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); + if (!deletedIds.isEmpty()) { + deleteWrapper.in(RolePermission::getFileId, deletedIds); + rolePermissionService.remove(deleteWrapper); + } + + // 获取当前项目所有已发布的节点 + LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); + infoWrapper.likeRight(EdFileInfo::getFilePath, prjId) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code); + List files = edFileInfoMapper.selectList(infoWrapper); + + // 同步权限 + rolePermissionService.syncPermissionsAfterTreeUpdate(files, prjId); + } + + /** + * 判断用户有无权限 + * @param permissionCode 权限 + * @param userId 用户编码 + * @param fileId 文件编码 + * @return + */ + @Override + public boolean isPermitted (String permissionCode, String userId, String fileId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(UserRole::getUserId, userId); + List roleIds = Optional.ofNullable(userRoleMapper.selectList(queryWrapper)) + .orElse(Collections.emptyList()) + .stream().map(UserRole::getRoleId).collect(Collectors.toList()); + + if (roleIds.isEmpty()) { + return false; + } + + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(RolePermission::getPermissionCode, permissionCode) + .eq(RolePermission::getFileId, fileId) + .in(RolePermission::getRoleId, roleIds); + return rolePermissionService.count(queryWrapper1)>0; + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java index 52ceee6..4ec2c99 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java @@ -1,11 +1,133 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; +import com.electromagnetic.industry.software.manage.pojo.req.PublishedFileDTO; import com.electromagnetic.industry.software.manage.service.RolePermissionService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.TreeMap; +import java.util.stream.Collectors; + +@Slf4j @Service public class RolePermissionServiceImpl extends ServiceImpl implements RolePermissionService { + + @Resource + private RolePermissionMapper rolePermissionMapper; + + /** + * 同步新权限 + * @param currentPermission + * @param infoId + */ + @Transactional + @Override + public void syncNewPermissions (List currentPermission, String infoId) { + + if (currentPermission == null) { + throw new IllegalArgumentException("currentPermission must not be null"); + } + + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); + deleteWrapper.eq(RolePermission::getFileId, infoId); + List oldPermissions = this.list(deleteWrapper); + + Set newPermissionSet = currentPermission.stream() + .map(p -> p.getRoleId() + "_" + p.getPermissionCode()) + .collect(Collectors.toSet()); + + List permissionsToDelete = oldPermissions.stream() + .filter(p -> !newPermissionSet.contains(p.getRoleId() + "_" + p.getPermissionCode())) + .collect(Collectors.toList()); + + log.info ("删除旧权限: {}", permissionsToDelete); + + // 删除不需要的权限 + if (!permissionsToDelete.isEmpty()) { + List idsToDelete = permissionsToDelete.stream() + .map(RolePermission::getId) + .collect(Collectors.toList()); + this.removeBatchByIds(idsToDelete); + } + + // 批量插入/更新新权限(使用 ON DUPLICATE KEY UPDATE 机制) + if (!currentPermission.isEmpty()) { + for (RolePermission rp : currentPermission) { + RolePermission exist = this.getOne(new LambdaQueryWrapper() + .eq(RolePermission::getFileId, rp.getFileId()) + .eq(RolePermission::getRoleId, rp.getRoleId()) + .eq(RolePermission::getPermissionCode, rp.getPermissionCode())); + if (exist != null) { + rp.setId(exist.getId()); // 赋值已有 ID,避免重复插入 + } + } + this.saveOrUpdateBatch(currentPermission); + } + } + + /** + * 获取新权限 + * @param publishedFileDTO + * @return + */ + @Override + public List getCurrentPermission(PublishedFileDTO publishedFileDTO) { + return rolePermissionMapper.getCurrentPermission(publishedFileDTO); + } + + /** + * 在树形结构变动后同步权限 + * @param prjId + */ + @Transactional + @Override + public void syncPermissionsAfterTreeUpdate (List files, String prjId) { + + log.info("开始同步项目权限:{}", prjId); + + // 对files分层 + TreeMap> levelMap = new TreeMap<>(); + for (EdFileInfo file : files) { + int len = file.getFilePath().split("_").length; + levelMap.computeIfAbsent(len, k -> new ArrayList<>()).add(file); + } + + System.out.println("levelMap:"+levelMap); + + // 获取叶子节点 + int maxLen = levelMap.lastKey(); + + // 从最底层的叶子节点的上级节点开始遍历,更新权限 + for (int i=maxLen-1; i>0;i--) { + for (EdFileInfo fileInfo : levelMap.get(i)) { + String infoId = fileInfo.getId(); + if (isLeafNode(infoId, files)) { + continue; + } + PublishedFileDTO publishedFileDTO = new PublishedFileDTO(); + publishedFileDTO.newInit(); + publishedFileDTO.setFileId(infoId); + List currentPermission = getCurrentPermission(publishedFileDTO); + syncNewPermissions(currentPermission, infoId); + } + } + log.info("同步项目权限结束:{}", prjId); + } + + private boolean isLeafNode(String id, List files) { + Set parentIdSet = files.stream() + .map(EdFileInfo::getParentId) + .collect(Collectors.toSet()); + return !parentIdSet.contains(id); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java index c34ea41..dff91a2 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java @@ -377,7 +377,10 @@ public class RoleServiceImpl extends ServiceImpl implements Ro .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code) .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) - .eq(EdFileInfo::getDataOwn, dataOwnCode)); + .eq(EdFileInfo::getDataOwn, dataOwnCode)) + .and(wrapper -> wrapper.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .or() + .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)); } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java index afd5662..781103b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java @@ -101,6 +101,7 @@ public class UserServiceImpl implements UserService { claims.put(UserConstants.LOGIN_ADMIN_TYPE, loginInfo.getAdminType()); return Jwts.builder() .addClaims(claims) + .setId(UUID.randomUUID().toString()) .setIssuedAt(DateTime.now()) .signWith(SignatureAlgorithm.HS512, UserConstants.SECRET_KEY) .compact(); diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index 8d351c9..a7a910e 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -4,6 +4,7 @@ spring.datasource.typd=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://127.0.0.1:3306/em_data_dev?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true spring.datasource.username=user spring.datasource.password=123123 + spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource mybatis-plus.mapper-locations=classpath:sqlmapper/*.xml @@ -12,6 +13,7 @@ spring.servlet.multipart.max-file-size=500MB spring.servlet.multipart.max-request-size=500MB pagehelper.helperDialect=mysql pagehelper.reasonable=false + server.port=12396 #windows文件存储目录,用于测试 data.windows.path=D:/tmp/szsd/data/eleData/dev/project/ diff --git a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml index cf76b94..5471ce6 100644 --- a/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml +++ b/electrmangnetic/src/main/resources/sqlmapper/EdFileInfoMapper.xml @@ -11,6 +11,7 @@ + @@ -29,7 +30,7 @@ + SELECT f.parent_id as file_id , rp.permission_code, rp.role_id + FROM ed_role_permission rp + JOIN ed_file_info f ON rp.file_id = f.id + WHERE f.parent_id = #{fileId} + AND f.prj_dir = #{prjDir} + AND f.data_status = #{dataStatus} + AND f.effect_flag = #{effectFlag} + GROUP BY rp.role_id, rp.permission_code + HAVING COUNT(f.id) = ( + SELECT COUNT(f2.id) + FROM ed_file_info f2 + WHERE f2.parent_id = #{fileId} + AND f2.prj_dir = #{prjDir} + AND f2.data_status = #{dataStatus} + AND f2.effect_flag = #{effectFlag} + ) + + + \ No newline at end of file diff --git a/electrmangnetic/src/test/java/Test1.java b/electrmangnetic/src/test/java/Test1.java index 5380d65..dfd6148 100644 --- a/electrmangnetic/src/test/java/Test1.java +++ b/electrmangnetic/src/test/java/Test1.java @@ -1,74 +1,21 @@ -//import cn.hutool.core.io.FileUtil; -//import cn.hutool.core.util.IdUtil; -//import cn.hutool.core.util.ZipUtil; -//import cn.hutool.crypto.SecureUtil; -//import cn.hutool.crypto.symmetric.AES; -//import com.electromagnetic.industry.software.common.util.UserThreadLocal; //import com.electromagnetic.industry.software.manage.Application; -//import com.electromagnetic.industry.software.manage.service.FileSystemService; -//import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileInfoServiceImpl; +//import com.electromagnetic.industry.software.manage.service.serviceimpl.EdPrjServiceImpl; //import org.junit.jupiter.api.Test; -//import org.springframework.beans.factory.annotation.Value; //import org.springframework.boot.test.context.SpringBootTest; -//import org.springframework.core.env.Environment; // -//import javax.annotation.PostConstruct; //import javax.annotation.Resource; -//import java.io.File; -//import java.io.InputStream; -//import java.io.OutputStream; -//import java.nio.file.Files; -//import java.nio.file.Paths; // //@SpringBootTest(classes = Application.class) //public class Test1 { // // @Resource -// private EdFileInfoServiceImpl edFileInfoServiceImpl; -// @Resource -// private FileSystemService fileSystemService; -// -// @Value("${file.security.passwd}") -// private String password; -// -// private String downloadDataDir = ""; -// private String uploadDataDir = ""; -// -// @Resource -// private Environment environment; -// -// @PostConstruct -// public void init() { -// String osName = System.getProperty("os.name").toLowerCase(); -// uploadDataDir = osName.startsWith("win") ? environment.getProperty("data.upload.windows.tmp.path") : environment.getProperty("data.upload.linux.tmp.path"); -// downloadDataDir = osName.startsWith("win") ? environment.getProperty("data.download.windows.tmp.path") : environment.getProperty("data.download.linux.tmp.path"); -// } +// private EdPrjServiceImpl edPrjService; // // @Test -// public void testImport() { -// String currentUserId = UserThreadLocal.getUserId(); -// String destColibPath = "E:/tmp/测试沿用.colib"; -// String mainName = FileUtil.mainName(destColibPath); -// String parentDir = FileUtil.getParent(destColibPath, 1); -// String zipDirPath = parentDir + File.separator + mainName + ".zip"; -// AES aes = SecureUtil.aes(password.getBytes()); -// try ( -// InputStream inputStream = Files.newInputStream(Paths.get(destColibPath)); -// OutputStream outputStream = Files.newOutputStream(Paths.get(zipDirPath)); -// ) { -// aes.decrypt(inputStream, outputStream, true); -// } catch (Exception e) { -// e.printStackTrace(); -// String info = "文件上传错误"; -// System.out.println("info = " + info); -// } -// String uuid = IdUtil.fastSimpleUUID(); -// String tmpDir = uploadDataDir + currentUserId + File.separator + uuid + File.separator; -// ZipUtil.unzip(zipDirPath, tmpDir); -// -// edFileInfoServiceImpl.update2Database(tmpDir); -// fileSystemService.deleteFile(zipDirPath, destColibPath); -// +// public void testFollow() { +// String sourceId = "100101"; +// String targetId = "100323"; +// edPrjService.follow(sourceId, targetId); // } // //}