类 OrganizationServiceImpl

java.lang.Object
io.github.lishangbu.orange.rbac.service.impl.OrganizationServiceImpl
所有已实现的接口:
OrganizationService

@Service public class OrganizationServiceImpl extends Object implements OrganizationService
组织信息服务实现类

实现组织的分页、条件查询、增删改查等核心业务逻辑

从以下版本开始:
2025/10/16
作者:
lishangbu
  • 构造器详细资料

    • OrganizationServiceImpl

      public OrganizationServiceImpl()
  • 方法详细资料

    • saveOrganization

      @Transactional(rollbackFor=Exception.class) public Organization saveOrganization(Organization organization)
      新增组织信息,自动维护层级深度和顶级组织ID

      根据 parentId 判断组织层级和 rootId:

      • 顶级组织(parentId=0):depth=1,插入后 rootId=自身 id
      • 非顶级组织:depth=父组织.depth+1,rootId=父组织.rootId
      指定者:
      saveOrganization 在接口中 OrganizationService
      参数:
      organization - 组织实体
      返回:
      新增后的组织实体
    • updateOrganization

      @Transactional(rollbackFor=Exception.class) public void updateOrganization(Organization organization)
      根据ID更新组织信息
      指定者:
      updateOrganization 在接口中 OrganizationService
      参数:
      organization - 组织实体
    • removeOrganizationByAncestorId

      @Transactional(rollbackFor=Exception.class) public void removeOrganizationByAncestorId(Long id)
      根据ID删除组织,包括其所有下级组织
      指定者:
      removeOrganizationByAncestorId 在接口中 OrganizationService
      参数:
      id - 组织ID
    • removeOrganizationByAncestorIds

      @Transactional(rollbackFor=Exception.class) public void removeOrganizationByAncestorIds(List<Long> ids)
      根据祖先ID列表删除组织
      指定者:
      removeOrganizationByAncestorIds 在接口中 OrganizationService
      参数:
      ids - 祖先组织ID列表
    • getOrganizationById

      public Organization getOrganizationById(Long id)
      根据ID查询组织详情
      指定者:
      getOrganizationById 在接口中 OrganizationService
      参数:
      id - 组织ID
      返回:
      组织实体
    • getOrganizationWithDescendants

      public @NonNull List<OrganizationTreeNode> getOrganizationWithDescendants(@NonNull Long id)
      查询指定组织及其所有下级组织(含自身),并构建树结构

      业务逻辑:

      1. 根据组织ID查询组织实体,若不存在则返回空列表
      2. 递归查询该组织及所有子孙节点,按 sortOrder、id 升序排列
      3. 将所有结果转换为树节点,使用 TreeUtils 构建组织树,根父ID为当前组织的 parentId
      指定者:
      getOrganizationWithDescendants 在接口中 OrganizationService
      参数:
      id - 组织ID,不能为空
      返回:
      组织树结构(含自身及所有下级),永不为 null
    • listAllChildrenByParentId

      public @NonNull List<OrganizationTreeNode> listAllChildrenByParentId(@NonNull Long parentId)
      递归查询所有子节点(不包含当前节点)

      根据指定父组织ID,返回其所有下级组织(多级),不包含父节点本身 结果按 sortOrder、id 升序排列

      指定者:
      listAllChildrenByParentId 在接口中 OrganizationService
      参数:
      parentId - 父组织ID,不能为空
      返回:
      所有子孙节点的组织列表
    • getPageByOrganization

      public com.baomidou.mybatisplus.core.metadata.IPage<OrganizationTreeNode> getPageByOrganization(com.baomidou.mybatisplus.core.metadata.IPage<Organization> page, Organization condition)
      将组织分页查询并转换为树节点形式的分页结果

      根据传入的分页参数和动态查询条件进行组织数据的分页查询,支持按 id、name、code、enabled、parentId 等字段进行过滤 查询结果会被映射为 OrganizationTreeNode,便于前端直接构建组织树或展示层级信息

      1. condition 为 null,则视为无过滤条件,查询所有组织
      2. 分页参数 page 用于指定页码和每页数量,不能为空
      3. 返回结果按 sort_orderid 升序排列,分页信息保留在返回的 IPage
      指定者:
      getPageByOrganization 在接口中 OrganizationService
      参数:
      page - 分页参数,包含当前页码和每页大小,不能为空
      condition - 动态查询条件,允许为 null,常用字段:id、name、code、enabled、parentId
      返回:
      包含 OrganizationTreeNode 的分页数据,永远不返回 null