using Dlhis.Common.ApiLog.Request; using Dlhis.Common.ApiLog.Response; using Dlhis.Common.ApiLog.Services.Implements; using Dlhis.Entity.Common; using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.Utils.Extensions; using SqlSugar; namespace Dlhis.Common.ApiLog.Services { public class ApiLogService : IApiLogService { private readonly IDbContext _dbContext; public ApiLogService(IDbContext dbContext) { _dbContext = dbContext; } 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) .Select() .ToPageListAsync(request); return logs; } } }