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); }
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); }
/// <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); }
/// <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); }
/// <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); }