From 4445988bf4aadd1d3f71cee86e155d21ddae233f Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 12 Apr 2024 11:57:50 +0800 Subject: [PATCH] =?UTF-8?q?fix=20api=E6=97=A5=E5=BF=97=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiLog/Request/ApiLogRequest.cs | 29 ++++++++++++++----- .../ApiLog/Services/ApiLogService.cs | 2 ++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs b/Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs index c08de14e..e6cac2f1 100644 --- a/Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs +++ b/Src/Dlhis.Common/ApiLog/Request/ApiLogRequest.cs @@ -1,14 +1,27 @@ -using Kurisu.Core.DataAccess.Dto; +using Kurisu.Core.CustomClass; +using Kurisu.Core.DataAccess.Dto; using System.ComponentModel.DataAnnotations; -namespace Dlhis.Common.ApiLog.Request +namespace Dlhis.Common.ApiLog.Request; + +public class ApiLogRequest : PageDto, IValidatableObject { - public class ApiLogRequest : PageDto + /// + /// 日志级别 LogLevel + /// + [EnumDataType(typeof(LogLevel))] + public LogLevel? Level { get; set; } + + + public DateTimePeriod SearchDateTimePeriod { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) { - /// - /// 日志级别 LogLevel - /// - [EnumDataType(typeof(LogLevel))] - public LogLevel? Level { get; set; } + if (SearchDateTimePeriod != null && SearchDateTimePeriod.End.HasValue) + { + SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.AddDays(1).AddSeconds(-1); + } + + yield break; } } diff --git a/Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs b/Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs index e9d9cc66..54bdd9de 100644 --- a/Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs +++ b/Src/Dlhis.Common/ApiLog/Services/ApiLogService.cs @@ -22,6 +22,8 @@ namespace Dlhis.Common.ApiLog.Services public async Task> GetLogsAsync(ApiLogRequest request) { var logs = await _dbContext.ChangeDb("log").Queryable() + .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true && request.SearchDateTimePeriod?.End.HasValue == true, + x => x._ts >= request.SearchDateTimePeriod.Start && x._ts <= request.SearchDateTimePeriod.End) .WhereIF(request.Search.IsPresent(), x => x.Message.Contains(request.Search)) .WhereIF(request.Level.HasValue, x => x.Level == request.Level) .OrderBy(x => x.Timestamp, OrderByType.Desc)