public async Task <PagedResultDto <AuditLogListDto> > GetAuditLogs(GetAuditLogsInput input)
        {
            var query = CreateAuditLogAndUsersQuery(input);

            var resultCount = await query.CountAsync();

            var results = await query
                          .OrderBy(input.Sorting)
                          .PageBy(input)
                          .ToListAsync();

            var auditLogListDtos = ConvertToAuditLogListDtos(results);

            return(new PagedResultDto <AuditLogListDto>(resultCount, auditLogListDtos));
        }
Пример #2
0
        public async Task <PagedResultDto <AuditLogDto> > GetAll(GetAuditLogsInput input)
        {
            var count = await _auditLogRepository.GetCountAsync(httpMethod : input.HttpMethod, url : input.Url,
                                                                userName : input.UserName, applicationName : input.ApplicationName, correlationId : input.CorrelationId, maxExecutionDuration : input.MaxExecutionDuration,
                                                                minExecutionDuration : input.MinExecutionDuration, hasException : input.HasException, httpStatusCode : input.HttpStatusCode);

            var list = await _auditLogRepository.GetListAsync(sorting : input.Sorting, maxResultCount : input.MaxResultCount, skipCount : input.SkipCount, httpMethod : input.HttpMethod, url : input.Url,
                                                              userName : input.UserName, applicationName : input.ApplicationName, correlationId : input.CorrelationId, maxExecutionDuration : input.MaxExecutionDuration,
                                                              minExecutionDuration : input.MinExecutionDuration, hasException : input.HasException, httpStatusCode : input.HttpStatusCode);

            return(new PagedResultDto <AuditLogDto>(
                       count,
                       ObjectMapper.Map <List <AuditLog>, List <AuditLogDto> >(list)
                       ));
        }
Пример #3
0
        private IQueryable <AuditLogListDto> CreateFilteredQuery(GetAuditLogsInput input)
        {
            var query = CreateFilteredQuery().Where(x => x.ExecutionTime >= input.StartDate &&
                                                    x.ExecutionTime <= input.EndDate);

            if (input.ExecutionDurationFrom.HasValue && input.ExecutionDurationTo.HasValue)
            {
                query = query.Where(x => x.ExecutionDuration >= input.ExecutionDurationFrom &&
                                    x.ExecutionDuration <= input.ExecutionDurationTo);
            }

            if (input.ExecutionDurationFrom.HasValue && !input.ExecutionDurationTo.HasValue)
            {
                query = query.Where(x => x.ExecutionDuration >= input.ExecutionDurationFrom);
            }

            if (!input.ExecutionDurationFrom.HasValue && input.ExecutionDurationTo.HasValue)
            {
                query = query.Where(x => x.ExecutionDuration <= input.ExecutionDurationTo);
            }

            if (!input.UserName.IsNullOrEmpty())
            {
                query = query.Where(x => x.UserName.ToLower().Contains(input.UserName.Trim().ToLower()));
            }

            if (!input.ServiceName.IsNullOrEmpty())
            {
                query = query.Where(x => x.ServiceName.ToLower().Contains(input.ServiceName.Trim().ToLower()));
            }

            if (!input.MethodName.IsNullOrEmpty())
            {
                query = query.Where(x => x.MethodName.ToLower().Contains(input.MethodName.Trim().ToLower()));
            }

            if (!input.BrowserInfo.IsNullOrEmpty())
            {
                query = query.Where(x => x.BrowserInfo.ToLower().Contains(input.BrowserInfo.Trim().ToLower()));
            }

            if (input.HasError.HasValue)
            {
                query = query.Where(x => input.HasError.Value ? x.Exception != null : x.Exception == null);
            }

            return(query);
        }
Пример #4
0
        /// <summary>
        /// 根据入参获取审计日志信息
        /// 2021-04-30 create by sean
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <PagedResultDto <AuditLogDto> > GetListAsync(GetAuditLogsInput input)
        {
            var count = await _auditLogRepository.GetCountAsync(null, null, input.HttpMethod, input.Url,
                                                                input.UserName, input.ApplicationName, input.CorrelationId, input.MaxExecutionDuration,
                                                                input.MinExecutionDuration, input.HasException, input.HttpStatusCode);

            var list = await _auditLogRepository.GetListAsync(input.Sorting,
                                                              input.MaxResultCount, input.SkipCount, null, null, input.HttpMethod, input.Url,
                                                              input.UserName, input.ApplicationName, input.CorrelationId, input.MaxExecutionDuration,
                                                              input.MinExecutionDuration, input.HasException, input.HttpStatusCode, true);

            return(new PagedResultDto <AuditLogDto>(
                       count,
                       ObjectMapper.Map <List <AuditLog>, List <AuditLogDto> >(list)
                       ));
        }
Пример #5
0
        /// <summary>
        ///
        /// </summary>
        private IQueryable <AuditLogAndUser> CreateAuditLogAndUsersQuery(GetAuditLogsInput input)
        {
            var query = from auditLog in _auditLogRepository.GetAll()
                        join user in _userRepository.GetAll() on auditLog.UserId equals user.Id into userJoin
                        from joinedUser in userJoin.DefaultIfEmpty()
                        where auditLog.ExecutionTime >= input.StartDate && auditLog.ExecutionTime <= input.EndDate
                        select new AuditLogAndUser {
                AuditLog = auditLog, User = joinedUser
            };

            query = query
                    .WhereIf(!input.UserName.IsNullOrWhiteSpace(), item => item.User.UserName.Contains(input.UserName))
                    .WhereIf(!input.ServiceName.IsNullOrWhiteSpace(),
                             item => item.AuditLog.ServiceName.Contains(input.ServiceName));
            return(query);
        }
Пример #6
0
        public async Task <PagedResultDto <AuditLogListDto> > GetPagedAuditLogs(GetAuditLogsInput input)
        {
            var query = CreateAuditLogAndUsersQuery(input);

            var resultCount = await query.CountAsync();

            var results = await query
                          .AsNoTracking()
                          .OrderBy(input.Sorting)// TODO: OrderBy(input.Sorting)
                          .PageBy(input)
                          .ToListAsync();

            var auditLogListDtos = ConvertToAuditLogListDtos(results);

            //   _userRepository.GetAll().OrderByDescending()

            return(new PagedResultDto <AuditLogListDto>(resultCount, auditLogListDtos));
        }
Пример #7
0
        /// <summary>
        ///     创建审计日志用户的查询服务
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private IQueryable <AuditLogAndUser> CreateAuditLogAndUsersQuery(GetAuditLogsInput input)
        {
            IQueryable <AuditLogAndUser> query;

            if (input.StartDate.HasValue && input.EndDate.HasValue)
            {
                query = from auditLog in _auditLogRepository.GetAll()
                        join user in _userRepository.GetAll() on auditLog.UserId equals user.Id into userJoin
                        from joinedUser in userJoin.DefaultIfEmpty()
                        where auditLog.ExecutionTime >= input.StartDate && auditLog.ExecutionTime <= input.EndDate
                        select new AuditLogAndUser {
                    AuditLogInfo = auditLog, UserInfo = joinedUser
                }
            }
            ;
            else
            {
                query = from auditLog in _auditLogRepository.GetAll()
                        join user in _userRepository.GetAll() on auditLog.UserId equals user.Id into userJoin
                        from joinedUser in userJoin.DefaultIfEmpty()
                        select new AuditLogAndUser {
                    AuditLogInfo = auditLog, UserInfo = joinedUser
                }
            };

            query = query
                    .WhereIf(!input.UserName.IsNullOrWhiteSpace(), item => item.UserInfo.UserName.Contains(input.UserName))
                    .WhereIf(!input.ServiceName.IsNullOrWhiteSpace(),
                             item => item.AuditLogInfo.ServiceName.Contains(input.ServiceName))
                    .WhereIf(!input.MethodName.IsNullOrWhiteSpace(),
                             item => item.AuditLogInfo.MethodName.Contains(input.MethodName))
                    .WhereIf(!input.BrowserInfo.IsNullOrWhiteSpace(),
                             item => item.AuditLogInfo.BrowserInfo.Contains(input.BrowserInfo))
                    .WhereIf(input.MinExecutionDuration.HasValue && input.MinExecutionDuration > 0,
                             item => item.AuditLogInfo.ExecutionDuration >= input.MinExecutionDuration.Value)
                    .WhereIf(input.MaxExecutionDuration.HasValue && input.MaxExecutionDuration < int.MaxValue,
                             item => item.AuditLogInfo.ExecutionDuration <= input.MaxExecutionDuration.Value)
                    .WhereIf(input.HasException == true,
                             item => item.AuditLogInfo.Exception != null && item.AuditLogInfo.Exception != "")
                    .WhereIf(input.HasException == false,
                             item => item.AuditLogInfo.Exception == null || item.AuditLogInfo.Exception == "");
            return(query);
        }
Пример #8
0
        /// <summary>
        ///     创建审计日志用户的查询服务
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private IQueryable <AuditLogAndUser> CreateAuditLogAndUsersQuery(GetAuditLogsInput input)
        {
            var auditLogQuery = _auditLogRepository.GetAll().AsNoTracking().IgnoreQueryFilters();

            var userQuery = _userRepository.GetAll().AsNoTracking().IgnoreQueryFilters();


            var query = from auditLog in auditLogQuery

                        join user in userQuery on auditLog.UserId equals user.Id into userJoin
                        from joinedUser in userJoin.DefaultIfEmpty()

                        select new AuditLogAndUser
            {
                AuditLogInfo = auditLog,
                UserInfo     = joinedUser
            };

            query = query
                    .Where(o => !o.UserInfo.IsDeleted && o.UserInfo.TenantId == AbpSession.TenantId &&
                           o.AuditLogInfo.TenantId == AbpSession.TenantId)

                    .WhereIf(input.StartDate.HasValue && input.EndDate.HasValue, o => o.AuditLogInfo.ExecutionTime >= input.StartDate && o.AuditLogInfo.ExecutionTime <= input.EndDate)
                    .WhereIf(!input.UserName.IsNullOrWhiteSpace(), item => item.UserInfo.UserName.Contains(input.UserName))
                    .WhereIf(!input.ServiceName.IsNullOrWhiteSpace(),
                             item => item.AuditLogInfo.ServiceName.Contains(input.ServiceName))
                    .WhereIf(!input.MethodName.IsNullOrWhiteSpace(),
                             item => item.AuditLogInfo.MethodName.Contains(input.MethodName))
                    .WhereIf(!input.BrowserInfo.IsNullOrWhiteSpace(),
                             item => item.AuditLogInfo.BrowserInfo.Contains(input.BrowserInfo))
                    .WhereIf(input.MinExecutionDuration.HasValue && input.MinExecutionDuration > 0,
                             item => item.AuditLogInfo.ExecutionDuration >= input.MinExecutionDuration.Value)
                    .WhereIf(input.MaxExecutionDuration.HasValue && input.MaxExecutionDuration < int.MaxValue,
                             item => item.AuditLogInfo.ExecutionDuration <= input.MaxExecutionDuration.Value)
                    .WhereIf(input.HasException == true,
                             item => item.AuditLogInfo.Exception != null && item.AuditLogInfo.Exception != "")
                    .WhereIf(input.HasException == false,
                             item => item.AuditLogInfo.Exception == null || item.AuditLogInfo.Exception == "");
            return(query);
        }
Пример #9
0
        public async Task <PagedResultDto <AuditLogListDto> > GetPaged(GetAuditLogsInput input)
        {
            var query = CreateAuditLogAndUsersQuery(input);
            //var query = _entityRepository.GetAll();
            // TODO:根据传入的参数添加过滤条件


            var count = await query.CountAsync();


            var results = await query
                          .OrderBy(input.Sorting)
                          .PageBy(input)
                          .ToListAsync();

            var auditLogListDtos = ConvertToAuditLogListDtos(results);

            // var entityListDtos = ObjectMapper.Map<List<AuditLogListDto>>(entityList);
            //var entityListDtos =entityList.MapTo<List<AuditLogListDto>>();
            //return new PagedResultDto<AuditLogListDto>(resultCount, auditLogListDtos);
            return(new PagedResultDto <AuditLogListDto>(count, auditLogListDtos));
        }
Пример #10
0
        public PagedResultDto <AuditLogDto> GetAuditLogs(GetAuditLogsInput input)
        {
            DapperExtensions.Sql.SqlServerDialect sqldic = new DapperExtensions.Sql.SqlServerDialect();

            //IList<IPredicate> predList = new List<IPredicate>();
            //predList.Add(Predicates.Field<AuditLogDto>(p => p.Name, Operator.Like, "不知道%"));
            //predList.Add(Predicates.Field<AuditLogDto>(p => p.ID, Operator.Eq, 1));
            //IPredicateGroup predGroup = Predicates.Group(GroupOperator.And, predList.ToArray());


            //var audi = GetAllPaged(m => m.BrowserInfo != "", input.PageIndex, input.MaxResultCount, true, m => m.ExecutionTime).ToList();

            string executeQuery = @"WITH pagintable AS(
                                        SELECT ROW_NUMBER() OVER(ORDER BY [AbpAuditLogs].ID DESC )AS RowID, 
                                        [AbpAuditLogs].*,[dbo].[AbpTenants].TenancyName,
                                        [dbo].[AbpUsers].UserName from [dbo].[AbpAuditLogs]
                                        left join[dbo].[AbpTenants]
                                        on[dbo].[AbpAuditLogs].TenantId=[dbo].[AbpTenants].Id
                                        left join[dbo].[AbpUsers]
                                        on[AbpAuditLogs].UserId=[dbo].[AbpUsers].Id
                                        WHERE 1= 1) 
                                        SELECT * FROM pagintable where RowID 
                                        between ((@CurrentPageIndex - 1)  * @PageSize) + 1 
                                        and (@CurrentPageIndex  * @PageSize)";

            string executeCount = "SELECT COUNT(*) FROM AbpAuditLogs WHERE 1= 1";

            var mixCondition = new
            {
                CurrentPageIndex = input.PageIndex,
                PageSize         = input.MaxResultCount
            };

            var logs = Query <AuditLogDto>(executeQuery, mixCondition).ToList();

            var count = Connection.ExecuteScalar <int>(executeCount, transaction: ActiveTransaction);

            return(new PagedResultDto <AuditLogDto>(count, logs));
        }
Пример #11
0
        private IQueryable <AuditLogAndUser> CreateAuditLogAndUsersQuery(GetAuditLogsInput input)
        {
            var auditLogs = from auditLog in this._auditLogRepository.GetAll()
                            join user in this._userRepository.GetAll() on auditLog.UserId equals(long?) user.Id into userJoin
                            from joinedUser in userJoin.DefaultIfEmpty <User>()
                                where auditLog.ExecutionTime >= input.StartDate && auditLog.ExecutionTime < input.EndDate
                            select new AuditLogAndUser
            {
                AuditLog = auditLog,
                User     = joinedUser
            };

            return(auditLogs
                   .WhereIf(!input.UserName.IsNullOrWhiteSpace(), i => i.User.UserName.Contains(input.UserName))
                   .WhereIf(!input.ServiceName.IsNullOrWhiteSpace(), i => i.AuditLog.ServiceName.Contains(input.ServiceName))
                   .WhereIf(!input.MethodName.IsNullOrWhiteSpace(), i => i.AuditLog.MethodName.Contains(input.MethodName))
                   .WhereIf(!input.BrowserInfo.IsNullOrWhiteSpace(), i => i.AuditLog.BrowserInfo.Contains(input.BrowserInfo))
                   .WhereIf(input.MinExecutionDuration.HasValue && input.MinExecutionDuration > 0, i => i.AuditLog.ExecutionDuration >= input.MinExecutionDuration.Value)
                   .WhereIf(input.MaxExecutionDuration.HasValue && input.MaxExecutionDuration < 2147483647, i => i.AuditLog.ExecutionDuration <= input.MaxExecutionDuration.Value)
                   .WhereIf(input.HasException == true, i => i.AuditLog.Exception != null && i.AuditLog.Exception != "")
                   .WhereIf(input.HasException == false, i => i.AuditLog.Exception == null || i.AuditLog.Exception == ""));
        }
Пример #12
0
 public Task <PagedResultDto <AuditLogDto> > GetAll(GetAuditLogsInput input)
 {
     return(_auditLoggingAppService.GetAll(input));
 }
 // GET: AuditLogs
 public ActionResult Index(GetAuditLogsInput input)
 {
     return(View());
 }
Пример #14
0
 public PagedResultDto <AuditLogDto> GetAuditLogsByPage(GetAuditLogsInput input)
 {
     return(_auditedRepository.GetAuditLogs(input));
 }