From 68724883a7155ba89667ae3ddd8565faf7e327cd Mon Sep 17 00:00:00 2001 From: chenxudong Date: Mon, 3 Mar 2025 15:42:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=B7=B2=E7=9F=A5=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 --- .../UserEdFileRelationController.java | 97 +++++++++++++++++++ .../service/serviceimpl/CommonService.java | 1 + .../serviceimpl/EdFileInfoServiceImpl.java | 88 +++++++++++------ .../software/common/util/UserThreadLocal.java | 4 +- 4 files changed, 161 insertions(+), 29 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileRelationController.java diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileRelationController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileRelationController.java new file mode 100644 index 0000000..71a74b1 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/UserEdFileRelationController.java @@ -0,0 +1,97 @@ +package com.electromagnetic.industry.software.manage.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.common.util.UserThreadLocal; +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.req.UpdateRelationDTO; +import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileRelationServiceImpl; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/data/ed/user/relation") +public class UserEdFileRelationController { + + @Resource + EdFileRelationServiceImpl edFileRelationService; + + /** + * 创建文件关系 + * + * @param relation + * @return + */ + @RequestMapping(value = "/create", method = RequestMethod.POST) + @UserOperation(value="创建了文件关系", modelName = UserOperationModuleEnum.DATABASE) + public ElectromagneticResult createRelation(@RequestBody EdFileRelation relation) { + return ElectromagneticResultUtil.success(edFileRelationService.createRelation(relation)); + } + + /** + * 更新文件关系 + * + * @param updateRelation + * @return + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + @UserOperation(value="更新了文件关系", modelName = UserOperationModuleEnum.DATABASE) + public ElectromagneticResult updateRelation(@RequestBody UpdateRelationDTO updateRelation) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(EdFileRelation::getId, updateRelation.getRelationId()).set(EdFileRelation::getRelationship, updateRelation.getRelationship()); + boolean isUpdated = edFileRelationService.update(wrapper); + if (isUpdated) { + UserThreadLocal.setSuccessInfo("", updateRelation.getRelationId(), "更新了文件关系"); + } + return ElectromagneticResultUtil.success(isUpdated); + } + + /** + * 取消文件关系 + * + * @param relationId 关系主键id + * @return + */ + @RequestMapping(value = "/cancel/{relationId}", method = RequestMethod.GET) + @UserOperation(value="取消了文件关系", modelName = UserOperationModuleEnum.DATABASE) + public ElectromagneticResult cancelRelation(@PathVariable("relationId") String relationId) { + return ElectromagneticResultUtil.success(edFileRelationService.cancelRelation(relationId)); + } + + /** + * 展示文件关系 + */ + @RequestMapping(value = "listRelations/{id}", method = RequestMethod.GET) + @UserOperation(value="查看了文件关系", modelName = UserOperationModuleEnum.DATABASE) + public ElectromagneticResult listRelations(@PathVariable("id") String id) { + return ElectromagneticResultUtil.success(edFileRelationService.listRelations(id)); + } + + /** + * 检验文件名是否唯一 + */ + @RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST) + @UserOperation(value="校验文件名唯一性", modelName = UserOperationModuleEnum.DATABASE) + public ElectromagneticResult checkFileNameExist(@RequestBody CheckNameUniqueRequest checkNameUniqueRequest) { + return ElectromagneticResultUtil.success(edFileRelationService.checkNameExist(checkNameUniqueRequest)); + } + + /** + * 本地上传并建立关系 + */ + @RequestMapping(value = "/upload", method = RequestMethod.POST) + @UserOperation(value="上传了文件并创建了文件关系", modelName = UserOperationModuleEnum.DATABASE) + public ElectromagneticResult uploadRelation(@RequestParam("parentId") String parentId, + @RequestParam("file") MultipartFile file, + @RequestParam("description") String description, + @RequestParam("id") String id) { + return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.COMMON.code)); + } +} 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 e1c9748..8ddd8f6 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 @@ -232,6 +232,7 @@ public class CommonService { queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code); } else if (dataOwnCode == DataOwnEnum.USER_FILE.code) { queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_PRJ.code); + queryWrapper.eq(EdFileInfo::getCreatedBy, UserThreadLocal.getUserId()); } if (dataOwnCode == DataOwnEnum.SYS_PRJ.code || dataOwnCode == DataOwnEnum.USER_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 ebbe56c..abf2f00 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 @@ -76,6 +76,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl accessibleTree = permissionService.getAccessibleTree(); - if (!accessibleTree.contains(parentId) && parentId.length() == PRJ_ID_LENGTH) { + if ((dataOwnCode != DataOwnEnum.USER_FILE.code) && (!accessibleTree.contains(parentId) && parentId.length() == PRJ_ID_LENGTH)) { throw new PermissionDeniedException(); } + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo.class, file -> !file.getColumn().equals("file_content")) - .select() .eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getParentId, pars.getParentId()) @@ -123,6 +125,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl qr.like(EdFileInfo::getFileName, pars.getKeyword()) .or() @@ -161,10 +167,22 @@ public class EdFileInfoServiceImpl extends ServiceImpl tree(int dataOwnCode) { - List prjIds = permissionService.getAccessibleTree(); - if (CollUtil.isEmpty(prjIds) && dataOwnCode != DataOwnEnum.USER_FILE.code ) { - return ElectromagneticResultUtil.success(new ArrayList<>()); + + List prjIds; + + if (dataOwnCode != DataOwnEnum.USER_FILE.code) { + prjIds = permissionService.getAccessibleTree(); + if (CollUtil.isEmpty(prjIds) && dataOwnCode != DataOwnEnum.USER_FILE.code ) { + return ElectromagneticResultUtil.success(new ArrayList<>()); + } + } else { + prjIds = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_PRJ.code) + .eq(EdFileInfo::getCreatedBy, UserThreadLocal.getUserId()) + .eq(EdFileInfo::getParentId, PRJ_PARENT_ID)).stream().map(EdFileInfo::getId).collect(Collectors.toList()); } + List strings = commonService.queryAllPrjInfo(prjIds, dataOwnCode); List res = new ArrayList<>(); strings.forEach(e -> { @@ -716,11 +734,16 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getParentId, parentId) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) - .eq(EdFileInfo::getDataOwn, dataOwnCode) - .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code)); + .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code); + if (dataOwnCode == DataOwnEnum.USER_FILE.code) { + queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_PRJ.code); + } else { + queryWrapper.eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code); + } + long dirCount = this.baseMapper.selectCount(queryWrapper); Assert.isTrue(dirCount == 0, "文件 {} 上传到 {} 失败,层级结构不允许上传文件,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr); String mainName = FileUtil.mainName(fileName); @@ -856,7 +879,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl sameFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getParentId, targetFolderId) @@ -885,7 +910,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl uploadRecord(int pageNum, int pageSize, int dataOwnCode) { - List accessibleIds = permissionService.getAccessibleTree(); - Set allLeafIds = commonService.selectPrjLeafs(dataOwnCode); - List list = new ArrayList<>(); - for (String leafId : allLeafIds) { - if (accessibleIds.contains(leafId)) { - list.add(leafId); - } - } - if (CollUtil.isEmpty(list)) { - return ElectromagneticResultUtil.success(new UploadRecordVO(0, new ArrayList<>())); - } LambdaQueryWrapper lambdaQuery = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getSaveStatus, EdFileInfo::getCreatedTime, EdFileInfo::getFileType) .eq(EdFileInfo::getDataOwn, dataOwnCode) .eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); - lambdaQuery.or(qr -> { - for (String id : list) { - qr.likeRight(EdFileInfo::getFileCode, id); + + if (dataOwnCode == DataOwnEnum.USER_FILE.code) { + lambdaQuery.eq(EdFileInfo::getCreatedBy, UserThreadLocal.getUserId()); + } else { + List accessibleIds = permissionService.getAccessibleTree(); + Set allLeafIds = commonService.selectPrjLeafs(dataOwnCode); + List list = new ArrayList<>(); + for (String leafId : allLeafIds) { + if (accessibleIds.contains(leafId)) { + list.add(leafId); + } } - }); + if (CollUtil.isEmpty(list)) { + return ElectromagneticResultUtil.success(new UploadRecordVO(0, new ArrayList<>())); + } + + lambdaQuery.or(qr -> { + for (String id : list) { + qr.likeRight(EdFileInfo::getFileCode, id); + } + }); + } + Page edFileInfoPage = this.baseMapper.selectPage(new Page<>(pageNum, pageSize), lambdaQuery); long total = edFileInfoPage.getTotal(); List uploadRecordDTOS = BeanUtil.copyToList(edFileInfoPage.getRecords(), UploadRecordDTO.class); @@ -1015,7 +1046,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) @@ -1291,4 +1324,5 @@ public class EdFileInfoServiceImpl extends ServiceImpl