using Aop.Api.Domain; using ApiTools.Core; using Furion.DatabaseAccessor; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ApiTools.CommonServer.Application { /// /// 查询短信配置 /// public class GetSmsSettingQueryHandler( IRepository rep, IRepository repSmsLog ) : IRequestHandler, IRequestHandler { private readonly IRepository rep = rep; private readonly IRepository repSmsLog = repSmsLog; /// /// 查询短信配置 /// /// /// /// public async Task Handle(GetSmsSettingQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var detail = await rep.AsQueryable().AsNoTracking() .Where(it => it.ChannelId == logier.ChannelId) .GetDetail(); detail.Accesses = detail.Accesses.OrderBy(it => it.Sort).ToList(); return detail; } public async Task Handle(GetSmsLogsQuery request, CancellationToken cancellationToken) { var q = repSmsLog.AsQueryable().AsNoTracking(); if (request.CreatedTimeBegin.HasValue && request.CreatedTimeEnd.HasValue) { q = q.Where(it => request.CreatedTimeBegin <= it.CreatedTime && it.CreatedTime <= request.CreatedTimeEnd); } if (request.ChannelCreatedUserIds.IsNotNull()) { q = q.Where(it => it.ChannelCreatedUserId.HasValue && request.ChannelCreatedUserIds.Contains(it.ChannelCreatedUserId.Value)); } if (request.TraceId.IsNotNull()) { q = q.Where(it => it.TraceId == request.TraceId); } if (request.Access.HasValue) { q = q.Where(it => it.Access == request.Access); } if (request.PhoneNumber.IsNotNull()) { q = q.Where(it => it.PhoneNumber == request.PhoneNumber); } if (request.TemplateCode.IsNotNull()) { q = q.Where(it => it.TemplateCode == request.TemplateCode); } if (request.TemplateParam.IsNotNull()) { q = q.Where(it => it.TemplateParam.Contains(request.TemplateParam)); } if (request.IsUsed.HasValue) { q = q.Where(it => it.IsUsed == request.IsUsed); } if (request.Status.HasValue) { q = q.Where(it => it.Status == request.Status); } var s = q.ProjectToType(); var list = await request.PageModel.GetPagedListAsync(s, cancellationToken); return list; } } }