/// <summary> /// 按组织机构获取角色列表 /// </summary> /// <param name="userInfo">用户</param> /// <param name="organizeId">组织机构主键</param> /// <param name="showUser">显示用户</param> /// <returns>角色列表</returns> public DataTable GetDTByOrganize(UserInfo userInfo, string organizeId, bool showUser = true) { var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.RoleService_GetDTByOrganize); var dtRole = new DataTable(PiRoleTable.TableName); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) => { // 获得角色列表 var manager = new PiRoleManager(dbProvider, userInfo); dtRole = manager.GetDTByOrganize(organizeId); PiUserManager userManager = new PiUserManager(dbProvider, userInfo); if (showUser) { DataTable dataTableUser = userManager.GetDT(); if (!dtRole.Columns.Contains("Users")) { dtRole.Columns.Add("Users"); } // 友善的显示属于多个角色的功能 string userName = string.Empty; foreach (DataRow dr in dtRole.Rows) { userName = string.Empty; // 获取所在用户 string[] userIds = userManager.GetUserIdsInRole(dr[PiRoleTable.FieldId].ToString()); if (userIds != null) { userName = userIds.Aggregate(userName, (current, t) => current + BusinessLogic.GetProperty(dataTableUser, t, PiRoleTable.FieldRealName) + ", "); } if (!string.IsNullOrEmpty(userName)) { userName = userName.Substring(0, userName.Length - 2); // 设置用户的名称 dr["Users"] = userName; } } dtRole.AcceptChanges(); } dtRole.TableName = PiRoleTable.TableName; }); return(dtRole); }