Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }