public async Task <PaginationOutput <UserDto> > GetListAsync(QueryUserInput input) { var query = from a in _context.Users select new UserDto() { Id = a.Id, UserName = a.UserName, Name = a.Name, Surname = a.Surname, Email = a.Email, EmailConfirmed = a.EmailConfirmed, PhoneNumber = a.PhoneNumber, PhoneNumberConfirmed = a.PhoneNumberConfirmed, Photo = a.Photo, Active = a.Confirmed, CreationTime = a.CreationTime, Protected = a.Protected }; if (!string.IsNullOrEmpty(input.Keyword)) { query = query.Where(w => w.Name.Contains(input.Keyword) || w.Surname.Contains(input.Keyword) || w.UserName.Contains(input.Keyword)); } var totalCount = await query.CountAsync(CancellationToken); var totalSize = (int)Math.Ceiling(totalCount / (decimal)input.PageSize); var users = await query.OrderByDescending(o => o.CreationTime) .Skip((input.PageIndex - 1) * input.PageSize) .Take(input.PageSize) .ToListAsync(CancellationToken); return(new PaginationOutput <UserDto>(totalSize, users)); }
public async Task <IPagedResult <GetUserOutput> > Query(QueryUserInput query) { var userList = await _userRepository.GetAllAsync(p => p.UserName.Contains(query.UserName) && p.ChineseName.Contains(query.ChineseName) && p.Email.Contains(query.Email) && p.Phone.Contains(query.Phone)); return(userList.MapTo <IEnumerable <GetUserOutput> >().PageBy(query)); }
public async Task <IPagedResult <GetUserNormOutput> > Search(QueryUserInput query) { if (!query.Sorting.IsNullOrEmpty() && !AuthConstant.UserSortingFileds.Any(p => p == query.Sorting)) { throw new BusinessException("指定的排序字段无效"); } return(await _userDomainService.Search(query)); }
public async Task <string> GetUserName(QueryUserInput input) { var id = await GetService <IServiceProxyProvider>().Invoke <string>(new Dictionary <string, object>() { { "id", Guid.NewGuid().ToString() }, }, "v1/api/debug/demo/getuserid"); return(input.UserId + Guid.NewGuid() + id); }
public async Task <IPagedResult <GetUserNormOutput> > Query(QueryUserInput query) { Expression <Func <UserInfo, bool> > expression = p => p.UserName.Contains(query.SearchKey) || p.ChineseName.Contains(query.SearchKey) || p.Email.Contains(query.SearchKey) || p.Phone.Contains(query.SearchKey); if (query.Status.HasValue) { expression = expression.And(p => p.Status == query.Status.Value); } var queryResult = await _userRepository.GetAllAsync(expression); if (query.OrgId.HasValue && query.OrgId != 0) { var subOrgIds = await GetService <IOrganizationAppService>().GetSubOrgIds(query.OrgId.Value); queryResult = queryResult.Where(p => subOrgIds.Any(q => q == p.OrgId)); } var queryResultOutput = queryResult.MapTo <IEnumerable <GetUserNormOutput> >().GetPagedResult(queryResult.Count()); foreach (var userOutput in queryResultOutput.Items) { if (userOutput.OrgId.HasValue) { userOutput.DeptName = (await GetService <IDepartmentAppService>().GetByOrgId(userOutput.OrgId.Value)).Name; } if (userOutput.PositionId.HasValue) { userOutput.PositionName = (await GetService <IPositionAppService>().Get(userOutput.PositionId.Value)).Name; } userOutput.Roles = (await _userDomainService.GetUserRoles(userOutput.Id)).MapTo <IEnumerable <GetDisplayRoleOutput> >(); if (userOutput.LastModifierUserId.HasValue) { var modifyUserInfo = (await _userRepository.SingleOrDefaultAsync(p => p.Id == userOutput.LastModifierUserId.Value)); userOutput.LastModificationUserName = modifyUserInfo.ChineseName; } } return(queryResultOutput); }
public async Task <IPagedResult <GetUserNormOutput> > Query(QueryUserInput query) { IPagedResult <GetUserNormOutput> queryResultOutput = null; if (!query.OrgId.HasValue || query.OrgId == 0) { var queryPageResult = await _userRepository.GetPageAsync(p => p.UserName.Contains(query.SearchKey) || p.ChineseName.Contains(query.SearchKey) || p.Email.Contains(query.SearchKey) || p.Phone.Contains(query.SearchKey), query.PageIndex, query.PageCount); queryResultOutput = queryPageResult.Item1.WhereIf(query.Status.HasValue, p => p.Status == query.Status.Value).MapTo <IEnumerable <GetUserNormOutput> >().GetPagedResult(queryPageResult.Item2); } else { var subOrgIds = await GetService <IOrganizationAppService>().GetSubOrgIds(query.OrgId.Value); // :todo 优化 var queryResult = await _userRepository.GetAllAsync(p => p.UserName.Contains(query.SearchKey) || p.ChineseName.Contains(query.SearchKey) || p.Email.Contains(query.SearchKey) || p.Phone.Contains(query.SearchKey)); queryResult = queryResult.Where(p => subOrgIds.Any(q => q == p.OrgId)).WhereIf(query.Status.HasValue, p => p.Status == query.Status.Value); queryResultOutput = queryResult.MapTo <IEnumerable <GetUserNormOutput> >().PageBy(query); } foreach (var userOutput in queryResultOutput.Items) { if (userOutput.OrgId.HasValue) { userOutput.DeptName = (await GetService <IDepartmentAppService>().GetByOrgId(userOutput.OrgId.Value)).Name; } if (userOutput.PositionId.HasValue) { userOutput.PositionName = (await GetService <IPositionAppService>().Get(userOutput.PositionId.Value)).Name; } userOutput.Roles = (await _userDomainService.GetUserRoles(userOutput.Id)).MapTo <IEnumerable <GetDisplayRoleOutput> >(); } return(queryResultOutput); }
public async Task <IPagedResult <GetUserNormOutput> > Search(QueryUserInput query) { var querySql = @"SELECT u.*,u.CreateBy as CreatorUserId, u.CreateTime as CreationTime, u.UpdateBy as LastModifierUserId, u.UpdateTime as LastModificationTime FROM UserInfo as u WHERE 1=1 "; var sqlParams = new Dictionary <string, object>(); if (query.OrgId.HasValue && query.OrgId.Value != 0) { var subOrgIds = await GetService <IOrganizationAppService>().GetSubOrgIds(query.OrgId.Value); querySql += " AND u.OrgId in @DataPermissionOrgIds"; sqlParams.Add("DataPermissionOrgIds", subOrgIds); } if (query.UserGroupId.HasValue && query.UserGroupId.Value > 0) { var userGroup = await _userGroupRepository.SingleOrDefaultAsync(p => p.Id == query.UserGroupId); if (userGroup == null) { throw new BusinessException($"不存在IUserGroupId为{query.UserGroupId}的用户组"); } if (!userGroup.IsAllOrg) { var userGroupOrgIds = (await _userGroupOrganizationDapperRepository.GetAllAsync(p => p.UserGroupId == query.UserGroupId)) .Select(p => p.OrgId); if (sqlParams.ContainsKey("DataPermissionOrgIds")) { sqlParams["DataPermissionOrgIds"] = userGroupOrgIds; } else { querySql += " AND u.OrgId in @DataPermissionOrgIds"; sqlParams.Add("DataPermissionOrgIds", userGroupOrgIds); } } } if (query.Status.HasValue) { querySql += " AND u.Status=@Status"; sqlParams.Add("Status", query.Status.Value); } if (query.PositionId.HasValue && query.PositionId.Value != 0) { querySql += " AND u.PositionId=@PositionId"; sqlParams.Add("PositionId", query.PositionId.Value); } if (!query.SearchKey.IsNullOrEmpty()) { querySql += " AND (u.UserName like @UserName or u.ChineseName like @ChineseName or u.Phone like @Phone or u.Email like @Email)"; sqlParams.Add("UserName", $"%{query.SearchKey}%"); sqlParams.Add("ChineseName", $"%{query.SearchKey}%"); sqlParams.Add("Phone", $"%{query.SearchKey}%"); sqlParams.Add("Email", $"%{query.SearchKey}%"); } if (query.UserIds != null && query.UserIds.Ids != null && query.UserIds.Ids.Any()) { var includeKey = query.UserIds.Include ? " in " : "not in "; querySql += $" AND u.Id {includeKey} @UserId"; sqlParams.Add("UserId", query.UserIds.Ids); } await using var conn = Connection; var sortTypes = new Dictionary <string, SortType>(); if (!query.Sorting.IsNullOrEmpty()) { sortTypes.Add($"u.{query.Sorting}", query.SortType); } else { sortTypes.Add($"u.Id", SortType.Desc); } var queryResult = await conn.QueryDataPermissionPageAsync <UserInfo>(querySql, sqlParams, query.PageIndex, query.PageCount, sortTypes : sortTypes, "u.OrgId", deleteField : "u.IsDeleted"); var queryResultOutput = queryResult.Item1.MapTo <IEnumerable <GetUserNormOutput> >() .GetPagedResult((int)queryResult.Item2); foreach (var userOutput in queryResultOutput.Items) { if (userOutput.OrgId.HasValue) { var department = await GetService <IDepartmentAppService>().GetByOrgId(userOutput.OrgId.Value); userOutput.DeptId = department.Id; userOutput.DeptName = department.Name; } if (userOutput.PositionId.HasValue) { userOutput.PositionName = (await GetService <IPositionAppService>().Get(userOutput.PositionId.Value)).Name; } userOutput.Roles = (await GetUserRoles(userOutput.Id)).MapTo <IEnumerable <GetDisplayRoleOutput> >(); userOutput.UserGroups = (await GetUserGroups(userOutput.Id)).MapTo <IEnumerable <GetDisplayUserGroupOutput> >(); await userOutput.SetAuditInfo(); } return(queryResultOutput); }
public async Task <IActionResult> List(QueryUserInput input) { var output = await _userQuerier.GetListAsync(input); return(View(new PaginationModel <UserDto>(output, input))); }