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
|
{
|
/// <summary>
|
/// 查询短信配置
|
/// </summary>
|
public class GetSmsSettingQueryHandler(
|
IRepository<SmsSetting> rep,
|
IRepository<SmsLog> repSmsLog
|
) :
|
IRequestHandler<GetSmsSettingQuery, GetSmsSettingQueryResult>,
|
IRequestHandler<GetSmsLogsQuery, GetSmsLogsQueryResult>
|
{
|
private readonly IRepository<SmsSetting> rep = rep;
|
private readonly IRepository<SmsLog> repSmsLog = repSmsLog;
|
|
/// <summary>
|
/// 查询短信配置
|
/// </summary>
|
/// <param name="request"></param>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public async Task<GetSmsSettingQueryResult> Handle(GetSmsSettingQuery request, CancellationToken cancellationToken)
|
{
|
var logier = JwtUtils.GetCurrentLogier();
|
var detail = await rep.AsQueryable().AsNoTracking()
|
.Where(it => it.ChannelId == logier.ChannelId)
|
.GetDetail<SmsSetting, GetSmsSettingQueryResult>();
|
detail.Accesses = detail.Accesses.OrderBy(it => it.Sort).ToList();
|
return detail;
|
}
|
|
public async Task<GetSmsLogsQueryResult> 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<GetSmsLogsQueryResultItem>();
|
var list = await request.PageModel.GetPagedListAsync<GetSmsLogsQueryResult, GetSmsLogsQueryResultItem>(s, cancellationToken);
|
return list;
|
}
|
}
|
}
|