public async Task <string> GetDetailData(QueryDetailRequest request) { var start = request.Start.ToDateTime(); var end = request.End.ToDateTime(); QueryDetailFilter filter = new QueryDetailFilter { Service = request.Service, Instance = request.Instance, StartTime = start, EndTime = end, RequestId = request.RequestId, Route = request.Route, StatusCode = request.StatusCode, RequestBody = request.RequestBody, ResponseBody = request.ResponseBody, PageNumber = request.PageNumber == 0 ? 1 : request.PageNumber, PageSize = request.PageSize == 0 ? 20 : request.PageSize }; var result = await _storage.GetSearchRequestInfoAsync(filter); return(Json(true, result)); }
public async Task <RequestInfoSearchResult> GetSearchRequestInfoAsync(QueryDetailFilter filter) { List <long> 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 > 0, 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)) .WhereIf(!filter.Method.IsEmpty(), x => x.Method == filter.Method) .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); }