/// <summary> /// 获取用户的角色列表 /// </summary> /// <param name="userInfo">用户</param> /// <returns>数据表</returns> public DataTable GetRoleDT(UserInfo userInfo) { var dataTable = new DataTable(PiRoleTable.TableName); var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.UserService_GetRoleDT); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var roleManager = new PiRoleManager(dbProvider, userInfo); // 获取有效的,未必删除的数据,按排序码排序 string[] names = { PiRoleTable.FieldDeleteMark, PiRoleTable.FieldEnabled }; Object[] values = { 0, 1 }; dataTable = roleManager.GetDT(names, values, PiRoleTable.FieldSortCode); // 不是超级管理员,不能添加超级管理员 if (!userInfo.IsAdministrator) { foreach (DataRow dataRow in dataTable.Rows.Cast <DataRow>().Where(dataRow => dataRow[PiRoleTable.FieldCode].ToString().Equals(DefaultRole.Administrators.ToString()))) { dataRow.Delete(); } dataTable.AcceptChanges(); } dataTable.TableName = PiUserTable.TableName; dataTable.DefaultView.Sort = PiUserTable.FieldSortCode; }); return(dataTable); }
/// <summary> /// 根据部门查询用户分页列表 /// </summary> /// <param name="userInfo">用户</param> /// <param name="permissionScopeCode">权限代码</param> /// <param name="searchValue">查询</param> /// <param name="enabled">有效</param> /// <param name="auditStates">审核状态</param> /// <param name="roleIds">用户角色</param> /// <param name="showRole">是否显示角色信息</param> /// <param name="departmentId">部门主键</param> /// <returns></returns> public DataTable GetUserPageDTByDepartment(UserInfo userInfo, string permissionScopeCode, string searchValue, bool?enabled, string auditStates, string[] roleIds, bool showRole, bool userAllInformation, out int recordCount, int pageIndex = 0, int pageSize = 100, string sort = null, string departmentId = null) { if (departmentId == null) { departmentId = string.Empty; } var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.UserService_Search); int myrecordCount = 0; var dt = new DataTable(PiUserTable.TableName); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) => { var userManager = new PiUserManager(dbProvider, userInfo); dt = userManager.SearchByPage(permissionScopeCode, searchValue, roleIds, enabled, auditStates, departmentId, showRole, userAllInformation, out myrecordCount, pageIndex, pageSize, sort); dt.TableName = PiUserTable.TableName; // 是否显示角色信息 if (showRole) { // 这里是获取角色列表 PiRoleManager roleManager = new PiRoleManager(dbProvider, userInfo); DataTable dataTableRole = roleManager.GetDT(); if (!dt.Columns.Contains("RoleName")) { dt.Columns.Add("RoleName"); } // 友善的显示属于多个角色的功能 string roleName = string.Empty; foreach (DataRow dr in dt.Rows) { roleName = string.Empty; // 获取所在角色 roleIds = userManager.GetRoleIds(dr[PiUserTable.FieldId].ToString()); if (roleIds != null) { for (int i = 0; i < roleIds.Length; i++) { roleName = roleName + BusinessLogic.GetProperty(dataTableRole, roleIds[i], PiRoleTable.FieldRealName) + ", "; } } // 设置角色的名称 if (!string.IsNullOrEmpty(roleName)) { roleName = roleName.Substring(0, roleName.Length - 2); dr["RoleName"] = roleName; } } dt.AcceptChanges(); } }); recordCount = myrecordCount; return(dt); }
/// <summary> /// 获取业务角色列表 /// </summary> /// <param name="userInfo">用户</param> /// <returns>业务角色列表</returns> public DataTable GetApplicationRole(UserInfo userInfo) { var parameter = ParameterUtil.CreateWithMessage(userInfo , MethodBase.GetCurrentMethod() , this.serviceName , RDIFrameworkMessage.RoleService_GetDT); var dt = new DataTable(PiRoleTable.TableName); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, (dbProvider) => { // 获得角色列表 var manager = new PiRoleManager(dbProvider, userInfo, PiRoleTable.TableName); var parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiRoleTable.FieldCategory, "ApplicationRole"), new KeyValuePair <string, object>(PiRoleTable.FieldDeleteMark, 0) }; dt = manager.GetDT(parameters, PiRoleTable.FieldSortCode); dt.TableName = PiRoleTable.TableName; }); return(dt); }