using Dlhis.Basic.Common.ApiLog.Request; using Dlhis.Basic.Common.ApiLog.Response; using Dlhis.Basic.Common.ApiLog.Services.Implements; using Dlhis.Entity.Common; using Kurisu.AspNetCore.CustomClass; 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.Basic.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.HasValue(), x => x._ts >= request.SearchDateTimePeriod.Start && x._ts <= request.SearchDateTimePeriod.End) .WhereIF(request.Level.HasValue, x => x.Level == request.Level) .WhereIF(request.Search.IsPresent(), x => x.Message.Contains(request.Search)) .OrderBy(x => x._ts, OrderByType.Desc) .Select() .ToPageListAsync(request.PageIndex, request.PageSize); return new Pagination { PageIndex = request.PageIndex, PageSize = request.PageSize, Total = 0, Data = logs }; } }