/// <summary> /// 加载特定用户的模块 /// TODO:这里会加载用户及用户角色的所有模块,“为用户分配模块”功能会给人一种混乱的感觉,但可以接受 /// </summary> /// <param name="userId">The user unique identifier.</param> public IEnumerable <SysModule> LoadForUser(int userId) { var roleIds = _revelanceApp.Get(Define.USERROLE, true, userId); var moduleIds = UnitWork.Find <SysRelevance>( u => (u.FirstId == userId && u.RelKey == Define.USERMODULE) || (u.RelKey == Define.ROLEMODULE && roleIds.Contains(u.FirstId.Value))).Select(u => u.SecondId); return(UnitWork.Find <SysModule>(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo)); }
/// <summary> /// 加载当前登录用户可访问的一个部门及子部门全部角色 /// </summary> public TableData Load(PageReq pageRequest, int?orgId) { var loginUser = _auth.GetCurrentUser(); string cascadeId = ".0."; if (orgId != null) { var org = loginUser.Orgs.SingleOrDefault(u => u.Id == orgId); cascadeId = org.CascadeId; } var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id.Value).ToArray(); var roleIds = _revelanceApp.Get(Define.ROLEORG, false, ids); //SQL2008不支持分页的语法 //var data = UnitWork.Find<Role>(u => roleIds.Contains(u.Id)).ToList(); //var roles = data // .OrderBy(u => u.Name) // .Skip((pageRequest.page - 1) * pageRequest.limit) // .Take(pageRequest.limit); var roles = UnitWork.Find <SysRole>(u => roleIds.Contains(u.Id.Value)) .OrderBy(u => u.Name) .Skip((pageRequest.page - 1) * pageRequest.limit) .Take(pageRequest.limit); var records = Repository.GetCount(u => roleIds.Contains(u.Id.Value)); var roleViews = new List <SysRoleView>(); foreach (var role in roles.ToList()) { SysRoleView uv = role; var orgs = LoadByRole(role.Id.Value); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); roleViews.Add(uv); } return(new TableData { count = records, data = roleViews, }); }
/// <summary> /// 加载当前登录用户可访问的一个部门及子部门全部用户 /// </summary> public TableData Load(PageReq request, int?orgId) { var loginUser = _auth.GetCurrentUser(); string cascadeId = ".0."; if (orgId != null) { var org = loginUser.Orgs.SingleOrDefault(u => u.Id == orgId.Value); cascadeId = org.CascadeId; } var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id.Value).ToArray(); var userIds = _revelanceApp.Get(Define.USERORG, false, ids); //SQL2008不支持分页的语法 //var data = UnitWork.Find<User>(u => userIds.Contains(u.Id)).ToList(); //var users = data // .OrderBy(u => u.Name) // .Skip((request.page - 1) * request.limit) // .Take(request.limit); var users = Repository.Find(u => userIds.Contains(u.Id.Value) && u.Account != "System") .OrderBy(u => u.Name) .Skip((request.page - 1) * request.limit) .Take(request.limit); var records = Repository.GetCount(u => userIds.Contains(u.Id.Value) && u.Account != "System"); var userviews = new List <SysUserView>(); foreach (var user in users.ToList()) { SysUserView uv = user; var orgs = LoadByUser(user.Id.Value); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); userviews.Add(uv); } return(new TableData { count = records, data = userviews, }); }