lijin
2025-11-20 df6224a4e27e0dadc648cc51ff362e2d7e24a034
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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;
        }
    }
}