From 731b9205470f557b03fab3daaf10805d34bf92dc Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 13 Feb 2025 09:36:11 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/EdPrjServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 9ab3f32..436bf2b 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 @@ -206,10 +206,11 @@ public class EdPrjServiceImpl extends ServiceImpl Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), NAME_VALID_MSG); // 检查当前目录下有文件,如果有则不允许添加 long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getFileType, EleDataTypeEnum.FILE.code) + .eq(EdFileInfo::getPrjDir, false) .eq(EdFileInfo::getParentId, parentId) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); Assert.isTrue(count == 0, "该层级目录下存在文件,不允许再定义层级目录"); + Assert.isTrue(commonService.notExistSameFolder(parentId, folderName), "子集名已经存在"); int id = Integer.parseInt(this.baseMapper.maxPrjId()); String folderId = String.valueOf(id + 1); return commonService.addFolder(parentId, folderName, true, true, folderId, null); From 4faab3d89b4cd55e26bf554eae15365725876a6b Mon Sep 17 00:00:00 2001 From: s2042968 Date: Fri, 14 Feb 2025 09:40:35 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=97=B6=EF=BC=8C=E5=90=8C=E6=97=B6=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=96=87=E4=BB=B6=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/EdFileInfoServiceImpl.java | 10 +++++++++- .../src/main/resources/application.properties | 8 ++++---- 2 files changed, 13 insertions(+), 5 deletions(-) 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 05e6c08..27359f8 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 @@ -26,6 +26,7 @@ import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; import com.electromagnetic.industry.software.manage.mapper.UserMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.models.User; import com.electromagnetic.industry.software.manage.pojo.other.FileInfoVO; import com.electromagnetic.industry.software.manage.pojo.other.UploadRecordDTO; @@ -71,7 +72,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl Date: Fri, 14 Feb 2025 10:15:25 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=E5=85=B3?= =?UTF-8?q?=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 27359f8..b12c52e 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 @@ -24,6 +24,7 @@ import com.electromagnetic.industry.software.common.exception.PermissionDeniedEx import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; +import com.electromagnetic.industry.software.manage.mapper.EdFileRelationMapper; import com.electromagnetic.industry.software.manage.mapper.UserMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; @@ -73,7 +74,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl Date: Fri, 14 Feb 2025 11:20:18 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E6=92=A4=E9=94=80=EF=BC=9A=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=E5=85=B3?= =?UTF-8?q?=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 8 -------- 1 file changed, 8 deletions(-) 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 b12c52e..a237dfe 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,8 +73,6 @@ public class EdFileInfoServiceImpl extends ServiceImpl Date: Fri, 14 Feb 2025 12:04:30 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=85=B3=E7=B3=BB?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=9C=89=E6=95=88=E6=A0=87=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../industry/software/manage/pojo/resp/FileSimpleInfoVO.java | 4 ++++ 1 file changed, 4 insertions(+) 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..28c6a81 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 @@ -25,4 +25,8 @@ public class FileSimpleInfoVO { */ private Integer fileVersion; + /** + * 是否有效 + */ + private Integer effectFlag; } From cb42bae83074ef84c6e2b9496e36549419b2882b Mon Sep 17 00:00:00 2001 From: chenxudong Date: Fri, 14 Feb 2025 16:45:09 +0800 Subject: [PATCH 06/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 a237dfe..f7a16a6 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 @@ -101,6 +101,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select() + .eq(EdFileInfo::getPrjDir, false) .eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getParentId, pars.getParentId()) From c0995be7e7e776d65f8a8e62cb701b6298345bdc Mon Sep 17 00:00:00 2001 From: s2042968 Date: Tue, 18 Feb 2025 14:08:47 +0800 Subject: [PATCH 07/23] =?UTF-8?q?=E5=B1=82=E7=BA=A7=E5=8F=98=E5=8A=A8?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98=EF=BC=9A=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BD=86=E6=9C=AA=E5=8F=91=E5=B8=83=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=9D=83=E9=99=90=E5=BA=94=E4=BB=8D=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=9C=8B=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/RoleServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 74ea507..714db00 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 @@ -379,8 +379,9 @@ public class RoleServiceImpl extends ServiceImpl implements Ro return edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code) + .eq(EdFileInfo::getPrjDir, true) .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) - .eq(EdFileInfo::getPrjDir, true)); + .or().eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)); } } From 957769f2d17d86afbb32d6912d40d5e804fbe203 Mon Sep 17 00:00:00 2001 From: s2042968 Date: Tue, 18 Feb 2025 14:09:35 +0800 Subject: [PATCH 08/23] =?UTF-8?q?=E5=B1=82=E7=BA=A7=E5=8F=98=E5=8A=A8?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98=EF=BC=9A=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=90=8E=E5=8F=98=E5=8A=A8=E2=80=9C=E5=86=8D?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E2=80=9D=E6=97=B6=EF=BC=8C=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/controller/ProjectController.java | 8 +- .../manage/mapper/RolePermissionMapper.java | 5 + .../manage/pojo/models/RolePermission.java | 13 ++ .../manage/pojo/req/PublishedFileDTO.java | 25 ++++ .../manage/service/PermissionService.java | 5 + .../manage/service/RolePermissionService.java | 26 ++++ .../serviceimpl/PermissionServiceImpl.java | 50 ++++++-- .../RolePermissionServiceImpl.java | 121 ++++++++++++++++++ .../sqlmapper/RolePermissionMapper.xml | 31 +++++ 9 files changed, 275 insertions(+), 9 deletions(-) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PublishedFileDTO.java create mode 100644 electrmangnetic/src/main/resources/sqlmapper/RolePermissionMapper.xml 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 8566a3d..4260c4a 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,6 +4,7 @@ import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; 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; @@ -19,6 +20,8 @@ public class ProjectController { @Resource private EdPrjService edPrjService; + @Resource + private PermissionService permissionService; @RequestMapping("create") public ElectromagneticResult create(@RequestParam String prjName) { @@ -62,7 +65,10 @@ public class ProjectController { @RequestMapping("publish") public ElectromagneticResult publish(@RequestParam String prjId) { - return edPrjService.publish(prjId); + ElectromagneticResult result = edPrjService.publish(prjId); + // 更新项目权限 + permissionService.syncPermissions(prjId); + return result; } @RequestMapping("follow") 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/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/service/PermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java index 1cf0e31..eccfad6 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,9 @@ public interface PermissionService { */ Map filterExportIds(String[] ids); + /** + * 同步权限 + */ + void syncPermissions (String prjId); + } 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..fda8927 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 syncPermissions (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/PermissionServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/PermissionServiceImpl.java index 65e09d7..bd7977b 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,19 @@ 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.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.electromagnetic.industry.software.common.enums.*; +import com.electromagnetic.industry.software.common.util.EleLog; 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.pojo.req.PublishedFileDTO; 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 +21,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 +52,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 +75,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 +112,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 +158,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 +172,35 @@ 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<>(); + 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::getPrjDir, true); + List files = edFileInfoMapper.selectList(infoWrapper); + + // 同步权限 + rolePermissionService.syncPermissionsAfterTreeUpdate(files, prjId); + } + } 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..42b2523 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,132 @@ 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.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; 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 + */ + @Override + @Transactional + public void syncPermissions (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); + } + + // 获取叶子节点 + 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); + syncPermissions(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/resources/sqlmapper/RolePermissionMapper.xml b/electrmangnetic/src/main/resources/sqlmapper/RolePermissionMapper.xml new file mode 100644 index 0000000..b3e7d4e --- /dev/null +++ b/electrmangnetic/src/main/resources/sqlmapper/RolePermissionMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + \ No newline at end of file From b4f4e1b19397fadb054e6c7d1aea25d066d129eb Mon Sep 17 00:00:00 2001 From: s2042968 Date: Tue, 18 Feb 2025 14:21:48 +0800 Subject: [PATCH 09/23] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5=E6=AD=A7=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/RoleServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 714db00..5b22f82 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 @@ -380,8 +380,9 @@ public class RoleServiceImpl extends ServiceImpl implements Ro .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getDataType, EleDataTypeEnum.FOLDER.code) .eq(EdFileInfo::getPrjDir, true) - .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) - .or().eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code)); + .and(wrapper -> wrapper.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) + .or() + .eq(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code))); } } From 61e2254a93b143b4b8c938a1223d6ed757647b82 Mon Sep 17 00:00:00 2001 From: s2042968 Date: Tue, 18 Feb 2025 14:37:43 +0800 Subject: [PATCH 10/23] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E7=A9=BA=E9=9B=86?= =?UTF-8?q?=E5=90=88=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/serviceimpl/PermissionServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 bd7977b..741b3a7 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 @@ -188,8 +188,10 @@ public class PermissionServiceImpl implements PermissionService { List deletedIds = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).collect(Collectors.toList()); LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); - deleteWrapper.in(RolePermission::getFileId, deletedIds); - rolePermissionService.remove(deleteWrapper); + if (!deletedIds.isEmpty()) { + deleteWrapper.in(RolePermission::getFileId, deletedIds); + rolePermissionService.remove(deleteWrapper); + } // 获取当前项目所有已发布的节点 LambdaQueryWrapper infoWrapper = new LambdaQueryWrapper<>(); From 6ec4c66dd2b854c5897d236ceb378d117b9172b3 Mon Sep 17 00:00:00 2001 From: s2042968 Date: Tue, 18 Feb 2025 15:18:31 +0800 Subject: [PATCH 11/23] =?UTF-8?q?=E5=9C=A8token=E7=94=9F=E6=88=90=E6=97=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=94=AF=E4=B8=80=E6=A0=87=E8=AF=86=E7=AC=A6?= =?UTF-8?q?jti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/UserServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 0d02056..319ead6 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(); From d0551b30948c1317cb75ae8a4439623c6cdd8d31 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Tue, 18 Feb 2025 17:35:55 +0800 Subject: [PATCH 12/23] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E6=B2=BF=E7=94=A8=E7=9B=B8=E5=85=B3=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/serviceimpl/CommonService.java | 3 +-- .../manage/service/serviceimpl/EdPrjServiceImpl.java | 9 ++++++++- 2 files changed, 9 insertions(+), 3 deletions(-) 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 6edd810..9253934 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 @@ -297,7 +297,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) @@ -308,7 +308,6 @@ public class CommonService { .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .ne(EdFileInfo::getDataStatus, EleDataStatusEnum.DELETED.code) .eq(EdFileInfo::getParentId, parentId) - .orderByAsc(EdFileInfo::getSort)); for (int i = 0; i < edFileInfos1.size(); i++) { 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 436bf2b..0b5d688 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 @@ -63,6 +63,7 @@ public class EdPrjServiceImpl extends ServiceImpl // 首先检查工程是否存在 Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class) .eq(EdFileInfo::getParentId, PRJ_PARENT_ID) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getFileName, prjName)); if (count > 0) { @@ -351,6 +352,7 @@ public class EdPrjServiceImpl extends ServiceImpl 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); @@ -389,7 +391,12 @@ public class EdPrjServiceImpl extends ServiceImpl } return ElectromagneticResultUtil.success(true); } catch (Exception e) { - String info = StrFormatter.format("层级沿用失败"); + String info; + if (e instanceof BizException) { + info = StrFormatter.format("层级沿用失败,{}", e.getMessage()); + } else { + info = "层级沿用失败"; + } log.error(info, e); throw new BizException(info); } From c014db1dcfd45c576c3ea12fdce58c45131c542c Mon Sep 17 00:00:00 2001 From: s2042968 Date: Wed, 19 Feb 2025 10:52:36 +0800 Subject: [PATCH 13/23] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=8D=E5=88=B6/?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E6=97=B6=EF=BC=8C=E5=AF=B9=E4=BA=8E=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=96=87=E4=BB=B6=E5=A4=B9=E7=9A=84=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/aop/FilePermissionCheckAspect.java | 69 +++++++++++-------- .../manage/service/PermissionService.java | 8 +++ .../manage/service/RolePermissionService.java | 2 +- .../serviceimpl/PermissionServiceImpl.java | 28 +++++++- .../RolePermissionServiceImpl.java | 13 ++-- .../src/main/resources/application.properties | 4 +- 6 files changed, 85 insertions(+), 39 deletions(-) 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/service/PermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/PermissionService.java index eccfad6..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 @@ -49,4 +49,12 @@ public interface PermissionService { */ 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 fda8927..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 @@ -16,7 +16,7 @@ public interface RolePermissionService extends IService { * @param currentPermission * @param infoId */ - void syncPermissions (List currentPermission, String infoId); + void syncNewPermissions (List currentPermission, String infoId); /** * 获取新权限 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 741b3a7..612809b 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,16 +1,13 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.electromagnetic.industry.software.common.enums.*; -import com.electromagnetic.industry.software.common.util.EleLog; import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; 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.pojo.req.PublishedFileDTO; import com.electromagnetic.industry.software.manage.service.PermissionService; import com.electromagnetic.industry.software.manage.service.RolePermissionService; import lombok.extern.slf4j.Slf4j; @@ -205,4 +202,29 @@ public class PermissionServiceImpl implements PermissionService { 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 42b2523..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 @@ -2,8 +2,6 @@ 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.common.enums.EffectFlagEnum; -import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum; 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; @@ -32,9 +30,9 @@ public class RolePermissionServiceImpl extends ServiceImpl currentPermission, String infoId) { + @Override + public void syncNewPermissions (List currentPermission, String infoId) { if (currentPermission == null) { throw new IllegalArgumentException("currentPermission must not be null"); @@ -104,8 +102,11 @@ public class RolePermissionServiceImpl extends ServiceImpl 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)) { @@ -117,10 +118,10 @@ public class RolePermissionServiceImpl extends ServiceImpl currentPermission = getCurrentPermission(publishedFileDTO); - syncPermissions(currentPermission, infoId); + syncNewPermissions(currentPermission, infoId); } - log.info("同步项目权限结束:{}", prjId); } + log.info("同步项目权限结束:{}", prjId); } private boolean isLeafNode(String id, List files) { diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index 5fd632c..8c19a2d 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -1,7 +1,7 @@ #required spring.application.name=electromagnetic-data spring.datasource.typd=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url=jdbc:mysql://139.196.179.195:3306/em_user_test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +spring.datasource.url=jdbc:mysql://139.196.179.195:3306/em_data_test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true spring.datasource.username=em_user_test spring.datasource.password=Szsd#2O25$test spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver @@ -14,7 +14,7 @@ pagehelper.helperDialect=mysql pagehelper.reasonable=false server.port=12395 file.security.passwd=adknfhkj87654knd -#windows文件存储目录,用于测试 +#windows文件存储目录,用于测试 data.windows.path=D:/tmp/eleData/project/ data.linux.path=/szsd/data/eleData/project/ data.upload.windows.tmp.path=D:/tmp/eleData/upload/ From 634dd427781672b112a1d06dcff462b93255d207 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 19 Feb 2025 16:20:08 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E6=B2=BF=E7=94=A8=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/EdPrjServiceImpl.java | 26 ++++++++++++------- .../src/main/resources/application.properties | 1 - 2 files changed, 16 insertions(+), 11 deletions(-) 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 0b5d688..5d6c291 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 @@ -325,29 +325,35 @@ 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 = targetTmpEdFiles.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(); diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index 8c19a2d..9a20aa3 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -14,7 +14,6 @@ pagehelper.helperDialect=mysql pagehelper.reasonable=false server.port=12395 file.security.passwd=adknfhkj87654knd -#windows文件存储目录,用于测试 data.windows.path=D:/tmp/eleData/project/ data.linux.path=/szsd/data/eleData/project/ data.upload.windows.tmp.path=D:/tmp/eleData/upload/ From e34cf519005833dfa9f65b76b29a31cfe9ba20e0 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 19 Feb 2025 16:51:01 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E5=B1=82=E7=BA=A7=E6=B2=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/EdPrjServiceImpl.java | 2 +- electrmangnetic/src/test/java/Test1.java | 65 ++----------------- 2 files changed, 7 insertions(+), 60 deletions(-) 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 5d6c291..926217a 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 @@ -343,7 +343,7 @@ public class EdPrjServiceImpl extends ServiceImpl Map sourceFileNameMap = sourceTmpEdFiles.stream() .collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); // 获取target当前层级的子集名称 - List targetFileNames = targetTmpEdFiles.stream() + List targetFileNames = targetEdFileInfos.stream() .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) .map(EdFileInfo::getFileName) .collect(Collectors.toList()); 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); // } // //} From 1d323e90813494c2b350fcdc5e18447f337feb7a Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 19 Feb 2025 17:18:11 +0800 Subject: [PATCH 16/23] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/EdPrjServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 926217a..73a1806 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 @@ -374,6 +374,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) From 4a80dc3753a03f14310ce778b0db106d9583d276 Mon Sep 17 00:00:00 2001 From: s2042968 Date: Wed, 19 Feb 2025 17:21:47 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E6=96=87=E4=BB=B6=E5=90=8D=E5=94=AF=E4=B8=80=E6=80=A7?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EdFileRelationController.java | 4 +--- .../manage/pojo/req/CheckNameUniqueRequest.java | 5 +++++ .../manage/service/EdFileRelationService.java | 5 ++--- .../serviceimpl/EdFileRelationServiceImpl.java | 14 ++++++++------ 4 files changed, 16 insertions(+), 12 deletions(-) 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 769193f..a7fe027 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 @@ -73,9 +73,7 @@ public class EdFileRelationController { */ @RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST) 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.checkNameUnique(checkNameUniqueRequest)); } /** 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/service/EdFileRelationService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java index 1de8f98..27a31b7 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 checkNameUnique(CheckNameUniqueRequest checkNameUniqueRequest); /** * 文件上传并建立关系 diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java index 050fdce..985a6f6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java @@ -18,6 +18,7 @@ import com.electromagnetic.industry.software.manage.mapper.EdFileRelationMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.models.Edge; +import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest; import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO; import com.electromagnetic.industry.software.manage.pojo.resp.FileSimpleInfoVO; import com.electromagnetic.industry.software.manage.service.EdFileRelationService; @@ -130,19 +131,20 @@ public class EdFileRelationServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 17:28:06 +0800 Subject: [PATCH 18/23] =?UTF-8?q?=E4=BF=AE=E5=A4=8D2=EF=BC=9A=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E6=96=87=E4=BB=B6=E5=90=8D=E5=94=AF=E4=B8=80=E6=80=A7?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/controller/EdFileRelationController.java | 2 +- .../industry/software/manage/service/EdFileRelationService.java | 2 +- .../manage/service/serviceimpl/EdFileRelationServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 a7fe027..d413291 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 @@ -73,7 +73,7 @@ public class EdFileRelationController { */ @RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST) public ElectromagneticResult checkFileNameExist(@RequestBody CheckNameUniqueRequest checkNameUniqueRequest) { - return ElectromagneticResultUtil.success(!edFileRelationService.checkNameUnique(checkNameUniqueRequest)); + return ElectromagneticResultUtil.success(edFileRelationService.checkNameExist(checkNameUniqueRequest)); } /** 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 27a31b7..65aaff4 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 @@ -37,7 +37,7 @@ public interface EdFileRelationService { * * @return */ - Boolean checkNameUnique(CheckNameUniqueRequest checkNameUniqueRequest); + Boolean checkNameExist(CheckNameUniqueRequest checkNameUniqueRequest); /** * 文件上传并建立关系 diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java index 985a6f6..e3a958b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java @@ -135,7 +135,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl Date: Wed, 19 Feb 2025 17:50:08 +0800 Subject: [PATCH 19/23] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E9=87=8D?= =?UTF-8?q?=E5=90=8D=E6=96=87=E4=BB=B6=E5=BB=BA=E7=AB=8B=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/EdFileInfoService.java | 7 ++ .../serviceimpl/EdFileInfoServiceImpl.java | 3 +- .../EdFileRelationServiceImpl.java | 77 ++++++++++--------- 3 files changed, 51 insertions(+), 36 deletions(-) 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 e92d942..14b880e 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 @@ -1,6 +1,7 @@ package com.electromagnetic.industry.software.manage.service; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +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; @@ -164,4 +165,10 @@ public interface EdFileInfoService { * @return */ ElectromagneticResult queryChildFolder(String parentId); + + /** + * 处理重名文件,文件名后+_1 + * @param fileInfo + */ + void resetFileInfoName(EdFileInfo fileInfo); } 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 f7a16a6..38fa233 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 @@ -561,7 +561,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl 0) { - edFileInfoService.handUploadRepeatFile(parentId, file, 3); - } 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) - .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) - .setPrjDir(false); - edFileInfoService.saveOrUpdate(newEdFileInfo); - String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath()); - 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(descrption); - createRelation(relation); + edFileInfoService.resetFileInfoName(newEdFileInfo); } + + edFileInfoService.saveOrUpdate(newEdFileInfo); + String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath()); + 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(descrption); + createRelation(relation); + } catch (Exception e) { newEdFileInfo.setParentId(parentId) .setFileName(mainName) From 1f1266bbee27369305e0430327cba0c67f8f361b Mon Sep 17 00:00:00 2001 From: s2042968 Date: Wed, 19 Feb 2025 17:57:28 +0800 Subject: [PATCH 20/23] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=96=87=E4=BB=B6=E5=90=8E=E7=BC=80=E5=90=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../industry/software/manage/pojo/resp/FileSimpleInfoVO.java | 5 +++++ 1 file changed, 5 insertions(+) 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 28c6a81..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; + /** * 文件编号 */ From 3639983d59ae221d1c1dbe172c6bb34b6c7a956d Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 20 Feb 2025 15:17:34 +0800 Subject: [PATCH 21/23] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/pojo/req/FileInfoQueryDTO.java | 2 +- .../manage/service/serviceimpl/EdFileInfoServiceImpl.java | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java index a6094ce..c4ea8ec 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/FileInfoQueryDTO.java @@ -59,7 +59,7 @@ public class FileInfoQueryDTO { /** * 文件大小0-升序,1-降序) */ - private Integer fileSize; + private Integer fileSizeSort; /** * 状态(0-未发布 1-已发布 2-占用) 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 38fa233..a51bfc8 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 @@ -24,10 +24,8 @@ import com.electromagnetic.industry.software.common.exception.PermissionDeniedEx import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; -import com.electromagnetic.industry.software.manage.mapper.EdFileRelationMapper; import com.electromagnetic.industry.software.manage.mapper.UserMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; -import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.models.User; import com.electromagnetic.industry.software.manage.pojo.other.FileInfoVO; import com.electromagnetic.industry.software.manage.pojo.other.UploadRecordDTO; @@ -113,13 +111,13 @@ public class EdFileInfoServiceImpl extends ServiceImpl Date: Mon, 24 Feb 2025 17:17:14 +0800 Subject: [PATCH 22/23] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=B1=BB=E5=9E=8Bid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../industry/software/manage/pojo/other/FileInfoVO.java | 2 ++ .../src/main/resources/sqlmapper/EdFileInfoMapper.xml | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) 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/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 @@