From 5e76a671c6dcdaf845eb71a17bb6659f00b8e5c3 Mon Sep 17 00:00:00 2001 From: chanhengseang Date: Sun, 18 May 2025 17:08:17 -0700 Subject: [PATCH] remove pid --- .../zhengjie/modules/system/domain/Dept.java | 10 --- .../zhengjie/modules/system/domain/Role.java | 7 -- .../system/repository/DeptRepository.java | 20 ------ .../modules/system/rest/DeptController.java | 12 ---- .../modules/system/rest/UserController.java | 2 - .../modules/system/service/DeptService.java | 7 -- .../modules/system/service/dto/DeptDto.java | 3 - .../system/service/impl/DataServiceImpl.java | 4 -- .../system/service/impl/DeptServiceImpl.java | 65 ++----------------- .../system/service/impl/RoleServiceImpl.java | 1 - 10 files changed, 6 insertions(+), 125 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 4f9a669b..0325826b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -15,7 +15,6 @@ */ package me.zhengjie.modules.system.domain; -import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -25,7 +24,6 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Objects; -import java.util.Set; /** * @author Zheng Jie @@ -44,11 +42,6 @@ public class Dept extends BaseEntity implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @JSONField(serialize = false) - @ManyToMany(mappedBy = "depts") - @ApiModelProperty(value = "角色") - private Set roles; - @ApiModelProperty(value = "排序") private Integer deptSort; @@ -60,9 +53,6 @@ public class Dept extends BaseEntity implements Serializable { @ApiModelProperty(value = "是否启用") private Boolean enabled; - @ApiModelProperty(value = "上级部门") - private Long pid; - @ApiModelProperty(value = "子节点数目", hidden = true) private Integer subCount = 0; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 1225e5ea..af32dcb4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -59,13 +59,6 @@ public class Role extends BaseEntity implements Serializable { @ApiModelProperty(value = "菜单", hidden = true) private Set menus; - @ManyToMany - @JoinTable(name = "sys_roles_depts", - joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")}, - inverseJoinColumns = {@JoinColumn(name = "dept_id",referencedColumnName = "dept_id")}) - @ApiModelProperty(value = "部门", hidden = true) - private Set depts; - @NotBlank @ApiModelProperty(value = "名称", hidden = true) private String name; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java index fa9ed98c..91250f88 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java @@ -29,19 +29,6 @@ import java.util.Set; */ public interface DeptRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * 根据 PID 查询 - * @param id pid - * @return / - */ - List findByPid(Long id); - - /** - * 获取顶级部门 - * @return / - */ - List findByPidIsNull(); - /** * 根据角色ID 查询 * @param roleId 角色ID @@ -51,13 +38,6 @@ public interface DeptRepository extends JpaRepository, JpaSpecificat "d.dept_id = r.dept_id and r.role_id = ?1", nativeQuery = true) Set findByRoleId(Long roleId); - /** - * 判断是否存在子节点 - * @param pid / - * @return / - */ - int countByPid(Long pid); - /** * 根据ID更新sub_count * @param count / diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index 6cd96b39..597bc8e5 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -74,11 +74,6 @@ public class DeptController { DeptDto deptDto = deptService.findById(id); List depts = deptService.getSuperior(deptDto, new ArrayList<>()); if(exclude){ - for (DeptDto dept : depts) { - if(dept.getId().equals(deptDto.getPid())) { - dept.setSubCount(dept.getSubCount() - 1); - } - } // 编辑部门时不显示自己以及自己下级的数据,避免出现PID数据环形问题 depts = depts.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toList()); } @@ -114,13 +109,6 @@ public class DeptController { @PreAuthorize("@el.check('dept:del')") public ResponseEntity deleteDept(@RequestBody Set ids){ Set deptDtos = new HashSet<>(); - for (Long id : ids) { - List deptList = deptService.findByPid(id); - deptDtos.add(deptService.findById(id)); - if(CollectionUtil.isNotEmpty(deptList)){ - deptDtos = deptService.getDeleteDepts(deptList, deptDtos); - } - } // 验证是否被角色或用户关联 deptService.verification(deptDtos); deptService.delete(deptDtos); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 4b76782e..98802b9c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -82,9 +82,7 @@ public class UserController { if (!ObjectUtils.isEmpty(criteria.getDeptId())) { criteria.getDeptIds().add(criteria.getDeptId()); // 先查找是否存在子节点 - List data = deptService.findByPid(criteria.getDeptId()); // 然后把子节点的ID都加入到集合中 - criteria.getDeptIds().addAll(deptService.getDeptChildren(data)); } // 数据权限 List dataScopes = dataService.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername())); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java index fdfe8da4..5902e36c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java @@ -64,13 +64,6 @@ public interface DeptService { */ void delete(Set deptDtos); - /** - * 根据PID查询 - * @param pid / - * @return / - */ - List findByPid(long pid); - /** * 根据角色ID查询 * @param id / diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java index 1be9a60d..51fb6225 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDto.java @@ -46,9 +46,6 @@ public class DeptDto extends BaseDTO implements Serializable { @ApiModelProperty(value = "子部门") private List children; - @ApiModelProperty(value = "上级部门") - private Long pid; - @ApiModelProperty(value = "子部门数量", hidden = true) private Integer subCount; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java index 66daee94..0040b0c0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java @@ -87,10 +87,6 @@ public class DataServiceImpl implements DataService { Set depts = deptService.findByRoleId(role.getId()); for (Dept dept : depts) { deptIds.add(dept.getId()); - List deptChildren = deptService.findByPid(dept.getId()); - if (CollUtil.isNotEmpty(deptChildren)) { - deptIds.addAll(deptService.getDeptChildren(deptChildren)); - } } return deptIds; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index 0847dd9b..1ce4189e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -60,11 +60,8 @@ public class DeptServiceImpl implements DeptService { Sort sort = Sort.by(Sort.Direction.ASC, "deptSort"); String dataScopeType = SecurityUtils.getDataScopeType(); if (isQuery) { - if(dataScopeType.equals(DataScopeEnum.ALL.getValue())){ - criteria.setPidIsNull(true); - } List fields = QueryHelp.getAllFields(criteria.getClass(), new ArrayList<>()); - List fieldNames = new ArrayList(){{ add("pidIsNull");add("enabled");}}; + List fieldNames = new ArrayList(){{ add("enabled");}}; for (Field field : fields) { //设置对象的访问权限,保证对private的属性的访问 field.setAccessible(true); @@ -73,7 +70,6 @@ public class DeptServiceImpl implements DeptService { continue; } if (ObjectUtil.isNotNull(val)) { - criteria.setPidIsNull(null); break; } } @@ -98,11 +94,6 @@ public class DeptServiceImpl implements DeptService { return deptMapper.toDto(dept); } - @Override - public List findByPid(long pid) { - return deptRepository.findByPid(pid); - } - @Override public Set findByRoleId(Long id) { return deptRepository.findByRoleId(id); @@ -112,30 +103,17 @@ public class DeptServiceImpl implements DeptService { @Transactional(rollbackFor = Exception.class) public void create(Dept resources) { deptRepository.save(resources); - // 计算子节点数目 - resources.setSubCount(0); // 清理缓存 - updateSubCnt(resources.getPid()); - // 清理自定义角色权限的datascope缓存 - delCaches(resources.getPid()); + delCaches(resources.getId()); } @Override @Transactional(rollbackFor = Exception.class) public void update(Dept resources) { - // 旧的部门 - Long oldPid = findById(resources.getId()).getPid(); - Long newPid = resources.getPid(); - if(resources.getPid() != null && resources.getId().equals(resources.getPid())) { - throw new BadRequestException("上级不能为自己"); - } Dept dept = deptRepository.findById(resources.getId()).orElseGet(Dept::new); ValidationUtil.isNull( dept.getId(),"Dept","id",resources.getId()); resources.setId(dept.getId()); deptRepository.save(resources); - // 更新父节点中子节点数目 - updateSubCnt(oldPid); - updateSubCnt(newPid); // 清理缓存 delCaches(resources.getId()); } @@ -147,7 +125,6 @@ public class DeptServiceImpl implements DeptService { // 清理缓存 delCaches(deptDto.getId()); deptRepository.deleteById(deptDto.getId()); - updateSubCnt(deptDto.getPid()); } } @@ -168,10 +145,6 @@ public class DeptServiceImpl implements DeptService { public Set getDeleteDepts(List menuList, Set deptDtos) { for (Dept dept : menuList) { deptDtos.add(deptMapper.toDto(dept)); - List depts = deptRepository.findByPid(dept.getId()); - if(CollUtil.isNotEmpty(depts)){ - getDeleteDepts(depts, deptDtos); - } } return deptDtos; } @@ -181,10 +154,6 @@ public class DeptServiceImpl implements DeptService { List list = new ArrayList<>(); deptList.forEach(dept -> { if (dept!=null && dept.getEnabled()) { - List depts = deptRepository.findByPid(dept.getId()); - if (CollUtil.isNotEmpty(depts)) { - list.addAll(getDeptChildren(depts)); - } list.add(dept.getId()); } } @@ -194,12 +163,7 @@ public class DeptServiceImpl implements DeptService { @Override public List getSuperior(DeptDto deptDto, List depts) { - if(deptDto.getPid() == null){ - depts.addAll(deptRepository.findByPidIsNull()); - return deptMapper.toDto(depts); - } - depts.addAll(deptRepository.findByPid(deptDto.getPid())); - return getSuperior(findById(deptDto.getPid()), depts); + return deptMapper.toDto(depts); } @Override @@ -210,22 +174,12 @@ public class DeptServiceImpl implements DeptService { boolean isChild; for (DeptDto deptDTO : deptDtos) { isChild = false; - if (deptDTO.getPid() == null) { - trees.add(deptDTO); - } + trees.add(deptDTO); for (DeptDto it : deptDtos) { - if (it.getPid() != null && deptDTO.getId().equals(it.getPid())) { - isChild = true; - if (deptDTO.getChildren() == null) { - deptDTO.setChildren(new ArrayList<>()); - } - deptDTO.getChildren().add(it); - } + isChild = true; } if(isChild) { depts.add(deptDTO); - } else if(deptDTO.getPid() != null && !deptNames.contains(findById(deptDTO.getPid()).getName())) { - depts.add(deptDTO); } } @@ -249,19 +203,12 @@ public class DeptServiceImpl implements DeptService { } } - private void updateSubCnt(Long deptId){ - if(deptId != null){ - int count = deptRepository.countByPid(deptId); - deptRepository.updateSubCntById(count, deptId); - } - } - private List deduplication(List list) { List deptDtos = new ArrayList<>(); for (DeptDto deptDto : list) { boolean flag = true; for (DeptDto dto : list) { - if (dto.getId().equals(deptDto.getPid())) { + if (dto.getId().equals(deptDto.getId())) { flag = false; break; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index 7fba169b..60a728c4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -113,7 +113,6 @@ public class RoleServiceImpl implements RoleService { role.setName(resources.getName()); role.setDescription(resources.getDescription()); role.setDataScope(resources.getDataScope()); - role.setDepts(resources.getDepts()); role.setLevel(resources.getLevel()); roleRepository.save(role); // 更新相关缓存