public SqlSugarPagedList <UserListResponseDto> GetUserList([FromBody] UserListRequestDto dto) { return(_sysUserSerivce.GetUserList(dto)); }
/// <summary> /// 获取用户列表 /// </summary> /// <param name="dto"></param> /// <returns></returns> public SqlSugarPagedList <UserListResponseDto> GetUserList(UserListRequestDto dto) { var query = dbClint.Queryable <SysUser>().Where(u => u.IsDeleted == false); query.WhereIF(!string.IsNullOrEmpty(dto.UserName), u => u.UserName.Contains(dto.UserName.Trim())); if (dto.OrgId > 0) { //获取部门下面的所有子部门 var reKey = SysRelevanceEnum.SysUser_SysOrg.ToString(); var orgId = _sysOrgService.GetAllChild(new List <long> { dto.OrgId.Value }).Select(o => o.OrgId).ToArray(); var rUserId = dbClint.Queryable <SysRelevance>().Where(o => o.Key == reKey && orgId.Contains(o.SecondId) && o.IsDeleted == false).Select(o => o.FirstId).Distinct().ToArray(); query.Where(o => rUserId.Contains(o.UserId)); } int count = 0; var list = query.Select(u => new UserListResponseDto() { UserId = u.UserId, UserCode = u.UserCode, UserName = u.UserName, Avatar = u.Avatar, Phone = u.Phone, Email = u.Email, Qq = u.Qq, Sex = u.Sex, Status = u.Status, LastLoginIp = u.LastLoginIp, LastLoginDate = u.LastLoginDate, CreateDate = u.CreateDate, Remark = u.Remark, }).ToPageList(dto.Page, dto.Limit, ref count); //var result = list.Adapt<List<UserListResponseDto>>(); if (list.Count > 0) { var userIds = list.Select(u => u.UserId).ToList(); var userOrgs = _sysOrgService.GetUserOrg(userIds); var roleList = dbClint.Queryable <SysRelevance>().Where(o => o.Key == SysRelevanceEnum.SysUser_SysRole.ToString() && userIds.Contains(o.FirstId) && o.IsDeleted == false).Select(o => new { UserId = o.FirstId, RoleId = o.SecondId }).Distinct().ToArray(); list.ForEach(l => { var userOrg = userOrgs.Where(o => o.UserId == l.UserId).FirstOrDefault(); if (userOrg != null) { l.OrgId = userOrg.OrgId; l.OrgName = userOrg.OrgName; } l.RoleId = roleList.Where(r => r.UserId == l.UserId).Select(r => r.RoleId).ToList(); }); } return(new SqlSugarPagedList <UserListResponseDto>() { PageIndex = dto.Page, PageSize = dto.Limit, Items = list, TotalCount = count }); }