跳转至

组织管理场景示例

获取所有角色分组

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);