public async Task <RequestInfoSearchResult> SearchRequestInfoAsync(RequestInfoSearchFilterOption option)
        {
            var response = await Client.SearchAsync <RequestInfo>(x => x.Index(GetIndexName <RequestInfo>())

                                                                  .Query(d =>

                                                                         d.HasDateWhere(option.StartTime, option.EndTime)

                                                                         && d.Term(e => e.IP, option.IP)

                                                                         && d.Bool(e => e.Filter(c => c.Wildcard("url", $"*{option.Url}*")))

                                                                         ).From(option.Skip).Size(option.Take).Sort(c => c.Descending(e => e.CreateTime))

                                                                  );

            RequestInfoSearchResult result = new RequestInfoSearchResult();

            if (response != null && response.IsValid)
            {
                result.List = response.Documents.Select(x => x as IRequestInfo).ToList();

                result.List.ForEach(x =>
                {
                    var k = x.CreateTime;

                    x.CreateTime = new DateTime(k.Year, k.Month, k.Day, k.Hour, k.Minute, k.Second, DateTimeKind.Unspecified);
                });

                result.AllItemCount = Convert.ToInt32(response.Total);
            }

            return(result);
        }
Beispiel #2
0
        public async Task <RequestInfoSearchResult> GetSearchRequestInfoAsync(QueryDetailFilter filter)
        {
            List <string> detailId = default;

            if (!filter.RequestBody.IsEmpty() || !filter.ResponseBody.IsEmpty())
            {
                detailId = await freeSql.Select <RequestDetail>()
                           .Where(x => x.CreateTime >= filter.StartTime && x.CreateTime < filter.EndTime)
                           .WhereIf(!filter.RequestBody.IsEmpty(), x => x.RequestBody.Contains(filter.RequestBody))
                           .WhereIf(!filter.ResponseBody.IsEmpty(), x => x.ResponseBody.Contains(filter.RequestBody))
                           .Limit(100)
                           .ToListAsync(x => x.Id);
            }

            var list = await freeSql.Select <RequestInfo>()
                       .Where(x => x.CreateTime >= filter.StartTime && x.CreateTime <= filter.EndTime)
                       .WhereIf(!filter.Service.IsEmpty(), x => x.Service == filter.Service)
                       .WhereIf(!filter.Instance.IsEmpty(), x => x.Instance == filter.Instance)
                       .WhereIf(!filter.RequestId.IsEmpty(), x => x.Id == filter.RequestId)
                       .WhereIf(filter.StatusCode > 0, x => x.StatusCode == filter.StatusCode)
                       .WhereIf(!filter.Route.IsEmpty(), x => x.Route.Contains(filter.Route))
                       .WhereIf(detailId != null && detailId.Any(), x => detailId.Contains(x.Id))
                       .Count(out var total)
                       .Page(filter.PageNumber, filter.PageSize)
                       .OrderByDescending(x => x.CreateTime)
                       .ToListAsync();

            RequestInfoSearchResult result = new RequestInfoSearchResult()
            {
                List  = list,
                Total = total.ToInt()
            };

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 获取请求信息
        /// </summary>
        /// <param name="filterOption"></param>
        /// <returns></returns>
        public async Task <RequestInfoSearchResult> SearchRequestInfoAsync(RequestInfoSearchFilterOption filterOption)
        {
            var whereBuilder = new StringBuilder(BuildSqlFilter(filterOption), 512);

            var sqlBuilder = new StringBuilder("Select * From RequestInfo ", 512);

            if (whereBuilder.Length == 0)
            {
                whereBuilder.Append("Where 1=1 ");
            }

            if (!filterOption.IP.IsEmpty())
            {
                whereBuilder.Append($" AND IP = '{filterOption.IP}' ");
            }

            if (!filterOption.Url.IsEmpty())
            {
                whereBuilder.Append($" AND  Url like '%{filterOption.Url}%' ");
            }

            var where = whereBuilder.ToString();

            sqlBuilder.Append(where);
            sqlBuilder.Append(BuildSqlControl(filterOption));

            var sql = sqlBuilder.ToString();

            TraceLogSql(sql);

            var countSql = "Select count(1) From RequestInfo " + where;

            TraceLogSql(countSql);

            var result = new RequestInfoSearchResult()
            {
                SearchOption = filterOption,
            };

            await LoggingSqlOperation(async connection =>
            {
                result.AllItemCount = connection.QueryFirstOrDefault <int>(countSql);

                result.List.AddRange((await connection.QueryAsync <RequestInfo>(sql).ConfigureAwait(false)).ToArray());
            }, "查询请求信息列表异常").ConfigureAwait(false);

            return(result);
        }
        public async Task <RequestInfoSearchResult> SearchRequestInfoAsync(RequestInfoSearchFilterOption filterOption)
        {
            var whereBuilder = new StringBuilder(BuildSqlFilter(filterOption), 512);

            var sqlBuilder = new StringBuilder($@"Select * From ""{Prefix}RequestInfo"" ", 512);

            if (whereBuilder.Length == 0)
            {
                whereBuilder.Append("Where 1=1 ");
            }

            if (!filterOption.IP.IsEmpty())
            {
                whereBuilder.Append($" AND IP = '{filterOption.IP}' ");
            }

            if (!filterOption.Url.IsEmpty())
            {
                whereBuilder.Append($" AND  Url like '%{filterOption.Url}%' ");
            }

            if (!filterOption.TraceId.IsEmpty())
            {
                whereBuilder.Append($" AND ID = '{filterOption.TraceId}' ");
            }


            if (filterOption.StatusCodes != null)
            {
                if (filterOption.StatusCodes.Length == 1)
                {
                    whereBuilder.Append($" AND StatusCode = {filterOption.StatusCodes[0]} ");
                }
                else
                {
                    whereBuilder.Append($" AND StatusCode in ({string.Join(",", filterOption.StatusCodes)}) ");
                }
            }

            var where = whereBuilder.ToString();

            sqlBuilder.Append(where);
            sqlBuilder.Append(BuildSqlControl(filterOption));

            var sql = sqlBuilder.ToString();

            TraceLogSql(sql);

            var countSql = $@"Select count(1) From ""{Prefix}RequestInfo"" " + where;

            TraceLogSql(countSql);

            var result = new RequestInfoSearchResult()
            {
                SearchOption = filterOption,
            };

            await LoggingSqlOperation(async connection =>
            {
                result.AllItemCount = connection.QueryFirstOrDefault <int>(countSql);

                result.List.AddRange((await connection.QueryAsync <RequestInfo>(sql)).ToArray());
            }, "查询请求信息列表异常");

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// 获取请求信息
        /// </summary>
        /// <param name="filterOption"></param>
        /// <returns></returns>
        public async Task <RequestInfoSearchResult> SearchRequestInfoAsync(RequestInfoSearchFilterOption filterOption)
        {
            var whereBuilder = new StringBuilder(BuildSqlFilter(filterOption), 512);

            var sqlBuilder = new StringBuilder($"Select * From [{Prefix}RequestInfo] ", 512);

            if (whereBuilder.Length == 0)
            {
                whereBuilder.Append("Where 1=1 ");
            }

            if (!filterOption.IP.IsEmpty())
            {
                whereBuilder.Append($" AND IP = '{filterOption.IP}' ");
            }

            if (!filterOption.Url.IsEmpty())
            {
                whereBuilder.Append($" AND  Url like '%{filterOption.Url}%' ");
            }

            if (!filterOption.TraceId.IsEmpty())
            {
                whereBuilder.Append($" AND ID = '{filterOption.TraceId}' ");
            }


            if (filterOption.StatusCodes != null)
            {
                if (filterOption.StatusCodes.Length == 1)
                {
                    whereBuilder.Append($" AND StatusCode = {filterOption.StatusCodes[0]} ");
                }
                else
                {
                    whereBuilder.Append($" AND StatusCode in ({string.Join(",", filterOption.StatusCodes)}) ");
                }
            }

            // Query Detail
            IEnumerable <string> RequestIdCollection = await QueryDetailAsync(filterOption);

            if (RequestIdCollection != null && RequestIdCollection.Any())
            {
                whereBuilder.Append($" AND Id IN ({string.Join(",", RequestIdCollection.Select(x => "'" + x + "'"))}) ");
            }


            var where = whereBuilder.ToString();

            sqlBuilder.Append(where);

            var sql = sqlBuilder.ToString();

            TraceLogSql(sql);

            var countSql = $"Select count(1) From [{Prefix}RequestInfo] " + where;

            TraceLogSql(countSql);

            var result = new RequestInfoSearchResult()
            {
                SearchOption = filterOption,
            };

            await LoggingSqlOperation(async connection =>
            {
                result.AllItemCount = connection.QueryFirstOrDefault <int>(countSql);

                result.List.AddRange((await connection.GetListBySqlAsync <RequestInfo>(sql, "CreateTime desc", filterOption.PageSize, filterOption.Page, result.AllItemCount)).ToArray());
            }, "查询请求信息列表异常");

            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// 获取请求信息
        /// </summary>
        /// <param name="filterOption"></param>
        /// <returns></returns>
        public async Task <RequestInfoSearchResult> SearchRequestInfoAsync(RequestInfoSearchFilterOption filterOption)
        {
            var whereBuilder = new StringBuilder(BuildSqlFilter(filterOption), 512);

            var sqlBuilder = new StringBuilder("Select * From RequestInfo ", 512);

            if (!filterOption.IP.IsEmpty())
            {
                whereBuilder.Append($" AND IP = '{filterOption.IP}' ");
            }

            if (!filterOption.Url.IsEmpty())
            {
                whereBuilder.Append($" AND  Url like '%{filterOption.Url}%' ");
            }

            if (!filterOption.TraceId.IsEmpty())
            {
                whereBuilder.Append($" AND ID = '{filterOption.TraceId}' ");
            }


            if (filterOption.StatusCodes != null)
            {
                if (filterOption.StatusCodes.Length == 1)
                {
                    whereBuilder.Append($" AND StatusCode = {filterOption.StatusCodes[0]} ");
                }
                else
                {
                    whereBuilder.Append($" AND StatusCode in ({string.Join(",", filterOption.StatusCodes)}) ");
                }
            }

            var where = whereBuilder.ToString();

            sqlBuilder.Append(where);

            var sql = sqlBuilder.ToString();

            TraceLogSql(sql);

            var countSql = "Select count(1) From RequestInfo " + where;

            TraceLogSql(countSql);

            var result = new RequestInfoSearchResult()
            {
                SearchOption = filterOption,
            };

            await LoggingSqlOperation(async _ =>
            {
                result.AllItemCount = await _.QueryFirstOrDefaultAsync <int>(countSql);

                var listSql = GetListSql(sql, "CreateTime Desc", filterOption.Page, filterOption.PageSize);

                result.List.AddRange((await _.QueryAsync <RequestInfo>(listSql)).ToArray());
            }, "查询请求信息列表异常");

            return(result);
        }