组织管理场景示例
获取所有角色分组
H3.Organization.OrgRoleGroup[] groups
= this.Request.Engine.Organization.GetAllRoleGroups();
获取公司所有角色
H3.Organization.OrgRole[] allRoles
= this.Request.Engine.Organization.GetAllRoles();
获取用户所在部门
// this.Request.UserContext.UserId 为当前登录用户。
H3.Organization.Unit unit
= this.Request.Engine.Organization.GetParentUnit(this.Request.UserContext.UserId);
获取用户所有角色
H3.Organization.OrgRole[] roles
= this.Request.Engine.Organization.GetUserRoles(this.Request.UserContext.UserId,true);
获取公司所有有效用户
string[] userIds = this.Request.Engine.Organization.GetChildren(
this.Request.Engine.Organization.Company.CompanyId,
H3.Organization.UnitType.User,
true,
H3.Organization.State.Active);
根据用户ID获取用户对象
H3.Organization.User user
= Engine.Organization.GetUnit(this.Request.UserContext.UserId) as H3.Organization.User;
根据人员ID查询其所有的部门ID
H3.Organization.User user
= Engine.Organization.GetUnit(this.Request.UserContext.UserId) as H3.Organization.User;
根据人员ID第N级父部门
根据人员 ID 第 N 级父部门,0 是第一级,1 是第二级,以此类推。
H3.Organization.Unit unit = this.Engine.Organization.GetParentUnitByLevel("用户Id", 1);
根据部门ID获取其第N级父部门
根据部门 ID 获取其第 N 级父部门,0 是第一级,1 是第二级,以此类推。
H3.Organization.Unit unit = this.Engine.Organization.GetParentUnitByLevel("部门Id", 1);
判断一个部门是否是另一个部门的祖先部门
判断一个部门是否是另一个部门的祖先部门,返回 true 表示是祖先部门。
bool isAncestor = this.Engine.Organization.IsAncestor("子孙部门Id", "祖先部门Id");
根据人员/部门ID获取人员/部门名称
// id:人员/部门的ID
// type:名称的类型
// H3.Organization.NameType.Name 名称
// H3.Organization.NameType.Path 组织路径,/Company/OU1/OU2这种格式
// H3.Organization.NameType.FullName 全名称,如果是用户则是:用户名[用户编码];如果是OU,则是:/Company/OU1/OU2这种格式
string name = this.Engine.Organization.GetName(string id, H3.Organization.NameType type);
如何添加角色
通过编程方式创建新角色。
H3.Organization.OrgRole role = new H3.Organization.OrgRole();
role.Code = "manager";
role.Name = "经理";
role.CompanyId = Engine.Organization.Company.CompanyId;
role.GroupId = "角色组ID";
Engine.Organization.AddUnit(role); //创建角色
如何添加角色组
通过编程方式创建新角色分组。
H3.Organization.OrgRoleGroup roleGroup = new H3.Organization.OrgRoleGroup();
roleGroup.Name = "角色分组名称";
roleGroup.SortKey = -1; //排序值
roleGroup.CompanyId = Engine.Organization.Company.CompanyId;
Engine.Organization.AddUnit(roleGroup); //创建角色分组
如何判断当前用户是不是管理员
// 获取当前用户ID。
string userId = this.Request.UserContext.UserId + string.Empty;
// 根据用户ID,获取该用户所有的角色。
H3.Organization.OrgRole[] userRoles = this.Engine.Organization.GetUserRoles(userId, true);
for(int i = 0; i < userRoles.Length; i++)
{
if(userRoles[i].Name == "系统管理员") // 判断是否为管理员
{
response.Message = "true";
}
}
如何获取角色中的所有人员
通过角色名称获取对应所有成员 ID。
// 存储角色ID。
string roleId = "";
// 获取所有角色。
H3.Organization.OrgRole[] allRoles = this.Engine.Organization.GetAllRoles();
foreach(H3.Organization.OrgRole allRole in allRoles)
{
// 查找角色
if(allRole.Name == "公海提醒")
{
roleId = allRole.ObjectId;
}
}
// 获取“公海提醒”角色的所有成员ID。
string[] Renyuans = this.Engine.Organization.GetChildren(
roleId,
H3.Organization.UnitType.User,
true,
H3.Organization.State.Active);