/// <summary>
        /// 查询用户
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public SearchUserOutput SearchUser(SearchUserInput input)
        {
            SearchUserOutput output = new SearchUserOutput();
            var pager = new Pager(input.PageIndex, input.PageSize);
            var skip  = pager.CurrentPage * pager.ItemsPerPage - pager.ItemsPerPage;
            IEnumerable <User> items = null;
            var total = 0;

            if (!string.IsNullOrEmpty(input.Keywords))
            {
                if (!string.IsNullOrEmpty(input.RoleId))
                {
                    items = _userRepository.Filter(out total, a => a.OrgId == input.OrgId && a.UserName.Contains(input.Keywords) && a.RoleId == input.RoleId, a => a.OrderByDescending(x => x.CreationTime), "", pager.CurrentPage, pager.ItemsPerPage);
                }
                else
                {
                    items = _userRepository.Filter(out total, a => a.OrgId == input.OrgId && a.UserName.Contains(input.Keywords), a => a.OrderByDescending(x => x.CreationTime), "", pager.CurrentPage, pager.ItemsPerPage);
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(input.RoleId))
                {
                    items = _userRepository.Filter(out total, a => a.OrgId == input.OrgId && a.RoleId == input.RoleId, a => a.OrderByDescending(x => x.CreationTime), "", pager.CurrentPage, pager.ItemsPerPage);
                }
                else
                {
                    items = _userRepository.Filter(out total, a => a.OrgId == input.OrgId, a => a.OrderByDescending(x => x.CreationTime), "", pager.CurrentPage, pager.ItemsPerPage);
                }
            }
            output.Users = items.ToList();
            output.Total = total;
            return(output);
        }
        public SearchUserOutput Search(SearchUserInput input)
        {
            using (var dbContext = new AllureContext())
            {
                IQueryable <User> query = dbContext
                                          .Set <User>()
                                          .Include(u => u.Roles)
                                          .Include(u => u.Deliveries);

                if (!input.Email.IsNullOrEmpty())
                {
                    query = query.Where(u => u.Email == input.Email);
                }

                if (input.Gender.HasValue)
                {
                    query = query.Where(u => u.Gender == input.Gender.Value);
                }

                if (!input.Telephone.IsNullOrEmpty())
                {
                    query = query.Where(u => u.Telephone == input.Telephone);
                }

                if (!input.Mobile.IsNullOrEmpty())
                {
                    query = query.Where(u => u.Mobile == input.Mobile);
                }

                if (!input.LastName.IsNullOrEmpty())
                {
                    query = query.Where(u => u.LastName == input.LastName);
                }

                if (!input.Company.IsNullOrEmpty())
                {
                    query = query.Where(u => u.Company.Contains(input.Company));
                }

                if (input.Status.HasValue)
                {
                    query = query.Where(u => u.Status == input.Status);
                }

                if (input.Roles != null && input.Roles.Length > 0)
                {
                    query = query.Where(u => input.Roles.All(r => u.Roles.Any(ur => ur.Role == r)));
                }

                var result = new SearchUserOutput();
                result.Count = query.Count();

                var pageSize   = input.PageSize.GetValueOrDefault(10);
                var pageNumber = input.PageNumber.GetValueOrDefault(1) - 1;

                result.Users = query
                               .OrderBy(u => u.Id)
                               .Skip(pageNumber * pageSize)
                               .Take(pageSize)
                               .ToList()
                               .Select(u => new UserOutput(u))
                               .ToArray();

                return(result);
            }
        }
        public SearchUserOutput SearchUser(SearchUserInput input)
        {
            SearchUserOutput output = _UsersService.SearchUser(input);

            return(output);
        }