组织管理接口
功能描述
组织结构接口用于增删改查组织结构信息,整个组织结构的索引建立在内存索引基础上,响应速度快。
通过以下方式调用组织管理的接口:
H3.Organization.User u
= this.Engine.Organization.GetUnit("userId") as H3.Organization.User;
接口列表
获取公司信息(属性)
功能描述
获取当前公司的基础信息。
接口定义
参数
返回值
示例
H3.Organization.Company company = this.Engine.Organization.Company;
按 ID 批量获取组织
功能描述
通过组织 ID 数组,批量获取对应的组织对象。
接口定义
Unit[] GetUnits(string[] ids);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
ids |
是 |
string[] |
组织的 ID 数组 |
返回值
| 类型 |
描述 |
H3.Organization.Unit[] |
批量获取的组织对象数组 |
示例
// ID 可以是用户、部门、角色
H3.Organization.Unit[] units = this.Engine.Organization.GetUnits(new string[] {"Id1","Id2"});
按 ID 批量获取组织名称
功能描述
通过组织 ID 数组批量获取组织名称,无需锁定组织结构服务,返回 ID 与名称的映射关系,且去重。
接口定义
Dictionary<string, string> GetUnitNameTable(string[] ids, NameType type);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
ids |
是 |
string[] |
组织的 ID 数组(若为 null,返回 null) |
type |
是 |
NameType |
名称的类型(如全称、简称等) |
返回值
| 类型 |
描述 |
Dictionary<string, string> |
键为组织 ID、值为对应名称的映射字典(无重复记录) |
示例
Dictionary<string, string> unitNameTable = this.Engine.Organization.GetUnitNameTable(
new string[] {"Id1","Id2"},
H3.Organization.NameType.Name);
按 ID 获取组织名称
功能描述
根据组织 ID 和名称类型,获取组织的实际名称(如人员姓名、部门名称等)。
接口定义
string GetName(string id, NameType type);
参数
| 极名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
组织的 ID |
type |
是 |
NameType |
组织名称的类型 |
返回值
| 类型 |
描述 |
string |
组织的实际名称(若组织不存在,返回 null) |
示例
string name = this.Engine.Organization.GetName("id", H3.Organization.NameType.Path);
获取组织层级
功能描述
根据组织 ID,获取该组织在组织结构中的层级(如公司为 0 级,部门为 1 级等)。
接口定义
int GetUnitLevel(string id);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
组织的 ID |
返回值
示例
int unitLevel = this.Engine.Organization.GetUnitLevel("id");
按组织 ID 和经理类型获取经理
功能描述
获取用户、组、OU、公司的经理(不支持获取群的经理),需指定经理类型。
接口定义
string GetManager(string id, ManagerType type);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
组织的 ID(用户、组、OU、公司) |
type |
是 |
H3.Organization.ManagerType |
经理类型枚举(如直接经理、间接经理等) |
返回值
示例
string manager = this.Engine.Organization.GetManager("id", H3.Organization.ManagerType.DirectManager);
// 如果直接经理不存在,则获得上级 OU 的经理
string manager = this.Engine.Organization.GetManager("id", H3.Organization.ManagerType.Manager);
按组织 ID 数组获取经理
功能描述
批量获取用户、组、OU、公司的经理。
接口定义
string[] GetManagers(string[] units);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
units |
是 |
string[] |
组织 ID 数组(用户、组、OU、公司、群) |
返回值
| 类型 |
描述 |
string[] |
对应组织的经理 ID 数组(无重复) |
示例
string[] managers = this.Engine.Organization.GetManagers(new string[] {"id","id2"});
按组织 ID 和层级获取跨级经理
功能描述
根据组织 ID 数组和指定层级,获取对应组织的跨级经理(层级 0 为公司,1 为公司直接下属 OU,依次类推)。
接口定义
string[] GetManagersByLevel(string[] units, int level);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
units |
是 |
string[] |
组织 ID 数组(群会展开子对象) |
level |
是 |
int |
层级(0 表示公司,1 表示公司直接下属 OU 等) |
返回值
| 类型 |
描述 |
string[] |
跨级经理 ID 数组(无重复) |
示例
string[] managers = this.Engine.Organization.GetManagersByLevel(new string[] {"id","id2"}, 1);
按组织和角色获取对应经理
功能描述
获取指定组织中,具有特定角色的最近标签成员(即对应经理)。
接口定义
string[] GetManagersByRole(string[] units, string roleId);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
units |
是 |
string[] |
组织 ID 数组 |
roleId |
是 |
string |
角色 ID |
返回值
| 类型 |
描述 |
string[] |
符合条件的经理 ID 数组(若对象不存在,返回 null) |
示例
string[] managers = this.Eng极.Organization.GetManagersByRole(new string[] {"id","id2"}, "角色Id");
获取父节点 ID
功能描述
根据组织 ID,获取其父组织的 ID。
接口定义
string GetParent(string id);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
组织的 ID |
返回值
示例
string parentId = this.Engine.Organization.GetParent("id");
获取父对象
功能描述
根据组织 ID,获取其父组织对象。
接口定义
Unit GetParentUnit(string id);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
组织的 ID |
返回值
| 类型 |
描述 |
H3.Organization.Unit |
父组织对象 |
示例
H3.Organization.Unit parentUnit = this.Engine.Organization.GetParentUnit("id");
按层级获取父对象
功能描述
根据子对象 ID 和指定层级,获取对应层级的父对象。0 表示公司,1 表示公司直接下属 OU,依次类推。
接口定义
Unit GetParentUnitByLevel(string id, int level);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
子对象 ID |
level |
是 |
int |
层级 |
返回值
示例
H3.Organization.Unit parentUnit = this.Engine.Organization.GetParentUnitByLevel("id", 1);
批量按层级获取父对象
功能描述
根据多个子对象 ID 和指定层级,批量获取对应层级的父对象,返回子 ID 与父对象的映射。
接口定义
Dictionary<string, Unit> GetParentUnitsByLevel(string[] ids, int level);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
ids |
是 |
string[] |
子对象 ID 数组 |
level |
是 |
int |
层级 |
返回值
| 类型 |
描述 |
Dictionary<string, H3.Organization.Unit> |
键为子对象 ID、值为对应层级父对象的映射字典 |
示例
Dictionary<string, H3.Organization.Unit> unitTable = this.Engine.Organization.GetParentUnitsByLevel(new string[] {"id","id2"}, 1);
获取父/祖先组织 ID
功能描述
根据组织 ID,获取其指定类型的父/祖先组织 ID(支持递归查询)。
接口定义
string[] GetParents(string id, UnitType parentUnitType, bool recursive, State state);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
子 Unit 的 ID |
parentUnitType |
是 |
UnitType |
要获取的父/祖先的类型 |
recursive |
是 |
bool |
是否递归查询 |
state |
是 |
State |
状态条件(Unspecified 表示所有状态) |
返回值
| 类型 |
描述 |
string[] |
父/祖先组织 ID 数组 |
示例
string[] parentIds = this.Engine.Organization.GetParents("id", H3.Organization.UnitType.OrganizationUnit, false, H3.Organization.State.Active);
获取父组织成员(递归)
功能描述
获取指定父组织下的所有成员(用户),若父组织为用户则返回自身,若为组或组织单元则递归返回所有用户成员。
接口定义
string[] GetMembers(string[] parents, State state);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
parents |
是 |
string[] |
父组织的 ID 数组 |
state |
是 |
State |
成员状态 |
返回值
| 类型 |
描述 |
string[] |
隶属于父组织的成员 ID 数组 |
示例
string[] members = this.Engine.Organization.GetMembers(
new string[] {"id","id2"},
H3.Organization.State.Unspecified);
获取父组织成员(可控制递归)
功能描述
获取指定父组织下的成员(用户),可控制是否递归查询。
接口定义
string[] GetMembers(string[] parents, State state, bool recursive);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
parents |
是 |
string[] |
父组织的 ID 数组 |
state |
是 |
H3.Organization.State |
成员状态枚举 |
recursive |
是 |
bool |
是否递归查询 |
返回值
| 类型 |
描述 |
string[] |
隶属于父组织的成员 ID 数组 |
示例
string[] members = this.Engine.Organization.GetMembers(new string[] {"id","id2"},
H3.Organization.State.Unspecified,
false);
获取父组织中的用户成员
功能描述
获取指定父组织下的所有用户成员(自动根据父组织类型处理递归逻辑)。
接口定义
User[] GetMemberUsers(string[] units);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
units |
极 |
string[] |
父组织的 ID 数组 |
返回值
| 类型 |
描述 |
H3.Organization.User[] |
父组织中的所有用户子成员对象数组 |
示例
H3.Organization.User[] users = this.Engine.Organization.GetMemberUsers(new string[] {"id","id2"});
获取子组织 ID
功能描述
根据组织 ID,获取指定类型的子组织 ID(支持递归查询)。
接口定义
string[] GetChildren(string id, UnitType childUnitType, bool recursive, State state);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
祖先的 ID |
childUnitType |
是 |
UnitType |
过滤条件,仅返回该类型的子组织 |
recursive |
是 |
bool |
是否递归查询 |
state |
是 |
State |
状态条件(Unspecified 表示所有状态) |
返回值
| 类型 |
描述 |
string[] |
符合条件的子组织 ID 数组 |
示例
H3.Organization.User[] users = this.Engine.Organization.GetMemberUsers(new string[] {"id","id2"});
获取子组织对象
功能描述
根据多个祖先组织 ID,批量获取指定类型的子组织对象(支持递归查询)。
接口定义
Unit[] GetChildUnits(string[] ids, UnitType childUnitType, bool recursive, State state);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
ids |
是 |
string[] |
祖先的 ID 数组 |
childUnitType |
是 |
H3.Organization.UnitType |
过滤条件,仅返回该类型的子组织 |
recursive |
是 |
bool |
是否递归查询 |
state |
是 |
H3.Organization.State |
状态条件(Unspecified 表示所有状态) |
返回值
| 类型 |
描述 |
H3.Organization.Unit[] |
符合条件的子组织对象数组 |
示例
H3.Organization.Unit[] units = this.Engine.Organization.GetChildUnits(new string[] {"id","id2"},
H3.Organization.UnitType.User,
true,
H3.Organization.State.Active);
按层级获取子组织 ID
功能描述
根据父对象 ID 和指定层级,获取对应层级的子组织 ID。
接口定义
string[] GetChildrenByLevel(string id, UnitType childUnitType, int level, State state);
参数
| 参数名称 |
是否必填 |
类型 |
描述 |
id |
是 |
string |
父对象 ID |
childUnitType |
是 |
H3.Organization.UnitType |
子对象类型 |
level |
是 |
int |
层级 |