using DotNetCore.CAP; using Hotline.Orders; using Hotline.Push.FWMessage; using Hotline.Push.Notifies; using Hotline.Share.Dtos.Push; using Hotline.Share.Enums.Push; using Hotline.Share.Mq; using MediatR; using XF.Domain.Dependency; using XF.Domain.Repository; namespace Hotline.Application.Orders.Handlers.OrderHandler; public class OrderVisitSmsHandler : INotificationHandler { private readonly IOrderVisitDomainService _orderVisitDomainService; private readonly IRepository _messageRepository; public OrderVisitSmsHandler(IOrderVisitDomainService orderVisitDomainService, IRepository messageRepository) { _orderVisitDomainService = orderVisitDomainService; _messageRepository = messageRepository; } public async Task Handle(ReceiveMessageNotify notification, CancellationToken cancellationToken) { if (notification.NotifyDto.Type != "2") return; var msg = await _messageRepository .Queryable() .Where(m => m.TelNumber == notification.NotifyDto.TelNumber) .Where(m => m.PushBusiness == EPushBusiness.VisitSms || m.PushBusiness == EPushBusiness.SearchSms) .Where(m => m.SendState == ESendState.Success) .OrderByDescending(m => m.CreationTime) .FirstAsync(); if (msg.SendTime!.Value.AddDays(2) < DateTime.Now) return; await _orderVisitDomainService.UpdateSmsReplyAsync(notification.NotifyDto); } } public class OrderVisitSmsDelay : ICapSubscribe, ITransientDependency { private readonly IOrderVisitDomainService _orderVisitDomainService; public OrderVisitSmsDelay(IOrderVisitDomainService orderVisitDomainService) { _orderVisitDomainService = orderVisitDomainService; } /// /// 超过48小时未回复短信,修改短信回访记录为默认满意 /// /// /// [CapSubscribe(EventNames.UpdateVisitDelaySms)] public async Task UpdateVisitDelaySms(MessageDto dto) { await _orderVisitDomainService.UpdateSmsReplyDefaultAsync(dto); } }