Beispiel #1
0
        /// <summary>
        /// 根据条件获取分页数据
        /// </summary>
        /// <param name="input">查询条件的类</param>
        public async Task <PagedResultOutput <OperateLogOutputDto> > GetPageListByParamCondition(QueryOperateLogInputParamDto input, int pageIndex, int pageSize)
        {
            try
            {
                IEnumerable <OperateLogEntity> query = _IOperateLogRepository.GetAll();

                // 条件过滤
                if (input.UserName != null && input.UserName.Trim().Length > 0)
                {
                    query = query.Where(p => p.UserName.ToUpper().Contains(input.UserName.ToUpper()));
                }
                if (input.SystemFunc != null && input.SystemFunc.Trim().Length > 0)
                {
                    query = query.Where(p => p.SystemFunc.ToUpper().Contains(input.SystemFunc.ToUpper()));
                }
                if (input.OperateType != null && input.OperateType.Trim().Length > 0)
                {
                    query = query.Where(p => p.OperateType.ToUpper().Contains(input.OperateType.ToUpper()));
                }
                if (input.StartDate != null)
                {
                    query = query.Where(s => s.OperateTime >= input.StartDate.Value.AddHours(-1));
                }
                if (input.EndDate != null)
                {
                    query = query.Where(s => s.OperateTime <= input.EndDate.Value.AddDays(1).AddHours(-1));
                }

                int count = 0;
                List <OperateLogEntity> result = null;
                if (query != null)
                {
                    count  = query.Count();
                    result = query.OrderByDescending(p => p.OperateTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
                }

                IReadOnlyList <OperateLogOutputDto> ir;
                if (result != null)
                {
                    ir = result.MapTo <List <OperateLogOutputDto> >();
                }
                else
                {
                    ir = new List <OperateLogOutputDto>();
                }
                PagedResultOutput <OperateLogOutputDto> outputList = new PagedResultOutput <OperateLogOutputDto>(count, ir);

                return(outputList);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }