类 OrgCache
java.lang.Object
net.sohelp.boot.admin.core.cache.OrgCache
- 所有已实现的接口:
ISohelpCache
组织机构缓存(永不过期,按需失效)
Key 规则:
"name:{orgId}"→ 组织名称"path:{orgId}"→ 名称路径(如 /公司/部门)"idpath:{orgId}"→ ID 路径(如 /1/2)
NONE 模式每次直接查库。
- 从以下版本开始:
- 2023/7/21 15:17
- 作者:
- AaronFung
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明获取缓存描述信息获取缓存名称(唯一标识)longgetByOrgName(String orgName) 根据组织名称查询组织 ID获取单个组织信息getOrgName(Object orgId) 根据组织 ID 获取组织名称getOrgPath(Object orgId) 根据组织 ID 获取组织名称路径批量获取组织信息列表获取指定组织的所有下级子组织 ID 列表voidinit()初始化方法,在 Bean 创建后自动调用voidreload()从数据库重新加载全部组织机构数据到缓存void根据组织 ID 重新加载单个组织到缓存void移除指定组织的全部缓存条目从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait从接口继承的方法 net.sohelp.boot.admin.core.cache.ISohelpCache
clear, get, getProvider, put, remove
-
构造器详细资料
-
OrgCache
public OrgCache()
-
-
方法详细资料
-
init
@PostConstruct public void init()初始化方法,在 Bean 创建后自动调用通过
SohelpCacheManager创建名为 "org"、永不过期(TTL=0)的缓存提供者。 -
cacheName
获取缓存名称(唯一标识)- 指定者:
cacheName在接口中ISohelpCache- 返回:
- 缓存唯一标识名称 "org"
-
cacheDescription
获取缓存描述信息- 指定者:
cacheDescription在接口中ISohelpCache- 返回:
- 缓存的中文描述文本 "组织机构缓存"
-
reload
@Comment("\u52a0\u8f7d\u7ec4\u7ec7\u673a\u6784\u7f13\u5b58") public void reload() throws SQLException从数据库重新加载全部组织机构数据到缓存先清空现有缓存,然后从
pb_org表按 ID 升序查询所有组织, 按顺序构建每个组织的名称路径和 ID 路径,最后写入缓存。 父节点必须在子节点之前处理,以确保路径正确拼接。- 指定者:
reload在接口中ISohelpCache- 抛出:
SQLException- 数据库查询过程中发生异常
-
getByOrgName
根据组织名称查询组织 ID直接查询数据库
pb_org表,不走缓存。 若存在同名组织,返回第一条记录的 ID。- 参数:
orgName- 组织名称,为空时直接返回 0- 返回:
- 组织 ID;未找到或名称为空时返回 0
-
getSubOrg
获取指定组织的所有下级子组织 ID 列表查询所有组织并逐一检查其 ID 路径是否以指定组织 ID 开头, 从而找出所有直属或间接下级组织。无论缓存模式如何,此方法均查询数据库获取组织列表, 以避免全量扫描 Redis 的性能问题。
- 参数:
orgId- 父组织 ID,不能为null- 返回:
- 所有下级子组织的 ID 列表;无子组织时返回空列表
- 抛出:
SQLException- 数据库查询过程中发生异常
-
reload
@Comment("\u6839\u636e\u7ec4\u7ec7ID\u91cd\u65b0\u52a0\u8f7d\u7ec4\u7ec7\u5230\u7f13\u5b58") public void reload(@Comment("\u7ec4\u7ec7ID") Object orgId) throws SQLException 根据组织 ID 重新加载单个组织到缓存先移除该组织的旧缓存条目,再从数据库查询最新数据并写入缓存。 注意:此方法仅更新组织名称缓存,不会更新路径缓存。
- 参数:
orgId- 组织 ID,为null或空字符串时不执行任何操作- 抛出:
SQLException- 数据库查询过程中发生异常
-
getOrgs
批量获取组织信息列表根据组织 ID 列表,逐个获取组织名称并组装成包含
id和org_name的 Map 列表。- 参数:
orgs- 组织 ID 列表,为null或空列表时返回空列表- 返回:
- 组织信息列表,每个元素为包含 "id" 和 "org_name" 的 Map
- 抛出:
SQLException- 数据库查询过程中发生异常
-
getOrg
获取单个组织信息根据组织 ID 获取其名称,并组装成包含
id和org_name的 Map 返回。- 参数:
orgId- 组织 ID,不能为null- 返回:
- 包含 "id" 和 "org_name" 的 Map
- 抛出:
SQLException- 数据库查询过程中发生异常
-
getOrgName
@Comment("\u6839\u636e\u7ec4\u7ec7ID\u83b7\u53d6\u7ec4\u7ec7\u540d\u79f0") public String getOrgName(@Comment("\u7ec4\u7ec7ID") Object orgId) throws SQLException 根据组织 ID 获取组织名称优先从缓存中获取;若缓存未启用(NONE 模式),则直接查询数据库。 若缓存中未命中,会触发全量重载后再次尝试获取。
- 参数:
orgId- 组织 ID,为null或空字符串时返回空字符串- 返回:
- 组织名称;未找到时返回空字符串
- 抛出:
SQLException- 数据库查询过程中发生异常
-
getOrgPath
@Comment("\u6839\u636e\u7ec4\u7ec7ID\u83b7\u53d6\u7ec4\u7ec7\u8def\u5f84") public String getOrgPath(@Comment("\u7ec4\u7ec7ID") Object orgId) throws SQLException 根据组织 ID 获取组织名称路径优先从缓存中获取;若缓存未启用(NONE 模式),则通过递归查询数据库构建路径。 若缓存中未命中,会触发全量重载后再次尝试获取。
- 参数:
orgId- 组织 ID,为null或空字符串时返回空字符串- 返回:
- 组织名称路径,格式如 "/公司/部门";未找到时返回空字符串
- 抛出:
SQLException- 数据库查询过程中发生异常
-
remove
@Comment("\u6e05\u7a7a\u7ec4\u7ec7\u7f13\u5b58") public void remove(@Comment("\u7ec4\u7ec7ID") Object orgId) 移除指定组织的全部缓存条目同时删除该组织的名称缓存、名称路径缓存和 ID 路径缓存。
- 参数:
orgId- 组织 ID,为null或空字符串时不执行任何操作
-