浏览代码

修改短信发送

tangjiang 8 月之前
父节点
当前提交
cdd6bd800e

+ 11 - 6
src/Hotline.Api/Controllers/OrderController.cs

@@ -325,7 +325,7 @@ public class OrderController : BaseController
                     //是否开启
                     var isOpenContingencyManagement = _systemSettingCacheManager.GetSetting(SettingConstants.IsOpenContingencyManagement)?.SettingValue[0];
                     if (isOpenContingencyManagement == "true")
-                        await _publisher.PublishAsync(new ContingencyManagementNotify(order, order.Title, order.Content, order.ActualOpinion), PublishStrategy.ParallelNoWait, HttpContext.RequestAborted);
+                        await _publisher.PublishAsync(new ContingencyManagementNotify(order, order.Title, order.Content, order.ActualOpinion), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
 
                     var orderVisit = new OrderVisit();
                     orderVisit.No = order.No;
@@ -465,7 +465,7 @@ public class OrderController : BaseController
         //是否开启
         var isOpenContingencyManagement = _systemSettingCacheManager.GetSetting(SettingConstants.IsOpenContingencyManagement)?.SettingValue[0];
         if (isOpenContingencyManagement == "true")
-            await _publisher.PublishAsync(new ContingencyManagementNotify(order, dto.ArrangeTitle, dto.ArrangeContent, dto.ArrangeOpinion), PublishStrategy.ParallelNoWait, HttpContext.RequestAborted);
+            await _publisher.PublishAsync(new ContingencyManagementNotify(order, dto.ArrangeTitle, dto.ArrangeContent, dto.ArrangeOpinion), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
 
         var orderVisit = new OrderVisit();
         orderVisit.No = order.No;
@@ -2868,8 +2868,8 @@ public class OrderController : BaseController
         await _orderDomainService.AddAsync(order, true, HttpContext.RequestAborted);
 
         //订阅此事件的内部处理工单数据只能更新各自业务的字段,不能全部更新
-        //新增工单其他处理事件  
-        //await _publisher.PublishAsync(new AddOrderNotify(order), PublishStrategy.SyncContinueOnException, HttpContext.RequestAborted);
+        //新增工单其他处理事件  (受理短信)
+        await _publisher.PublishAsync(new AddOrderNotify(order), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
 
         //if (dto.Tags.Any()) await _repositoryts.AddVectorAsync(orderId, DateTime.Now, dto.Tags, HttpContext.RequestAborted);
         if (dto.RepeatableEventDetails?.Any() ?? false)
@@ -3047,6 +3047,11 @@ public class OrderController : BaseController
         else
             order.FileJson = new List<Share.Dtos.File.FileJson>();
         await _orderRepository.UpdateNav(order).Include(d => d.OrderExtension).ExecuteCommandAsync();
+
+        //订阅此事件的内部处理工单数据只能更新各自业务的字段,不能全部更新
+        //修改工单其他处理事件  (受理短信)
+        await _publisher.PublishAsync(new UpdateOrderNotify(order), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
+
         //敏感分词
         await _orderApplication.OrderSensitiveParticiple(dto.Content, order.Id, HttpContext.RequestAborted);
         // 副本工单
@@ -3125,8 +3130,8 @@ public class OrderController : BaseController
             _logger.LogError($"工单开启流程失败!, {e.Message}, {e.StackTrace}");
             throw new UserFriendlyException($"工单开启流程失败!, {e.Message}, {e.StackTrace}", "工单开启流程失败");
         }
-        //开启流程处理事件,处理市州互转、工单新增发送短信
-        await _publisher.PublishAsync(new OrderStartWorkflowNotify(order.Id), PublishStrategy.SyncStopOnException, HttpContext.RequestAborted);
+        //开启流程处理事件,处理市州互转
+        await _publisher.PublishAsync(new OrderStartWorkflowNotify(order.Id), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
     }
 
     /// <summary>

+ 1 - 1
src/Hotline.Application/Handlers/FlowEngine/WorkflowEndHandler.cs

@@ -260,7 +260,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                     //如果没开启则不处理
                     var isOpenJudicialManagement = _systemSettingCacheManager.GetSetting(SettingConstants.IsOpenJudicialManagement)?.SettingValue[0];
                     if (isOpenJudicialManagement == "true")
-                        await _publisher.PublishAsync(new JudicialManagementOrderNotify(order), PublishStrategy.ParallelNoWait, cancellationToken);
+                        await _publisher.PublishAsync(new JudicialManagementOrderNotify(order), PublishStrategy.ParallelWhenAll, cancellationToken);
 
                     break;
                 //case WorkflowModuleConsts.OrderScreen:

+ 1 - 1
src/Hotline.Application/Handlers/FlowEngine/WorkflowNextHandler.cs

@@ -167,7 +167,7 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
                     var isOpenJudicialManagement = _systemSettingCacheManager.GetSetting(SettingConstants.IsOpenJudicialManagement)?.SettingValue[0];
                     if (isOpenJudicialManagement == "true" && notification.Trace.StepType != EStepType.Summary && notification.Trace.StepType != EStepType.End && !notification.Trace.IsCountersignEndStep)
                         await _publisher.PublishAsync(new AddPassTheBuckOrderNotify(order, _sessionContext.RequiredOrgId, _sessionContext.OrgName),
-                            PublishStrategy.ParallelNoWait, cancellationToken);
+                            PublishStrategy.ParallelWhenAll, cancellationToken);
 
                     try
                     {

+ 24 - 24
src/Hotline.Application/Handlers/Order/AddOrderPushMessageNotifyHandler.cs

@@ -13,7 +13,6 @@ namespace Hotline.Application.Handlers.Order
     /// </summary>
     public class AddOrderPushMessageNotifyHandler : INotificationHandler<AddOrderNotify>
     {
-
         private readonly ICapPublisher _capPublisher;
         private readonly ILogger<AddOrderPushMessageNotifyHandler> _logger;
         private readonly IMediator _mediator;
@@ -40,36 +39,37 @@ namespace Hotline.Application.Handlers.Order
         {
             try
             {
-                //if(notification.Order.AcceptSms && !notification.Order.SmsSended)
-                //    push
-                //var id = notification.Id;
-                //var order = await _orderRepository.GetAsync(p => p.Id == id, cancellationToken);
-                //if (order != null && order.AcceptSms)
-                //{
-                //    _logger.LogInformation($"推送短信: orderNo: {order.No}");
+                if (notification.Order.AcceptSms && !notification.Order.SmsSended)
+                {
+                    var order = notification.Order;
+                    if (order != null && order.AcceptSms)
+                    {
+                        _logger.LogInformation($"推送短信: orderNo: {order.No}");
 
-                //    var messageDto = new Share.Dtos.Push.MessageDto
-                //    {
-                //        PushBusiness = EPushBusiness.OrderAccept,
-                //        ExternalId = order.Id,
-                //        OrderId = order.Id,
-                //        PushPlatform = EPushPlatform.Sms,
-                //        Remark = order.Title,
-                //        Name = order.FromName,
-                //        TemplateCode = "1005",
-                //        Params = new List<string>() { order.No, order.Password },
-                //        TelNumber = order.Contact,
-                //    };
-                //    await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.OrderAccept,
+                            ExternalId = order.Id,
+                            OrderId = order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = order.Title,
+                            Name = order.FromName,
+                            TemplateCode = "1005",
+                            Params = new List<string>() { order.No, order.Password },
+                            TelNumber = order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
 
-                //    order.SmsSended = true;
-                //    _orderRepository.Updateable(order).UpdateColumns(p => p.SmsSended).ExecuteCommand();
-                //}
+                        order.SmsSended = true;
+                        _orderRepository.Updateable(order).UpdateColumns(p => p.SmsSended).ExecuteCommand();
+                    }
+                }
             }
             catch (Exception e)
             {
                 _logger.LogError("新增工单发送短信失败,Error:{err}", e.Message);
             }
         }
+
     }
 }

+ 72 - 0
src/Hotline.Application/Handlers/Order/UpdateOrderPushMessageNotifyHandler.cs

@@ -0,0 +1,72 @@
+using DotNetCore.CAP;
+using Hotline.Orders;
+using Hotline.Orders.Notifications;
+using Hotline.Push.Notifies;
+using Hotline.Share.Enums.Push;
+using MediatR;
+using Microsoft.Extensions.Logging;
+
+namespace Hotline.Application.Handlers.Order
+{
+    public class UpdateOrderPushMessageNotifyHandler : INotificationHandler<UpdateOrderNotify>
+    {
+        private readonly ICapPublisher _capPublisher;
+        private readonly ILogger<UpdateOrderPushMessageNotifyHandler> _logger;
+        private readonly IMediator _mediator;
+        private readonly IOrderRepository _orderRepository;
+
+        public UpdateOrderPushMessageNotifyHandler(ICapPublisher capPublisher,
+            ILogger<UpdateOrderPushMessageNotifyHandler> logger,
+            IMediator mediator,
+            IOrderRepository orderRepository)
+        {
+            _capPublisher = capPublisher;
+            _logger = logger;
+            _mediator = mediator;
+            _orderRepository = orderRepository;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="notification"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task Handle(UpdateOrderNotify notification, CancellationToken cancellationToken)
+        {
+            try
+            {
+                if (notification.Order.AcceptSms && !notification.Order.SmsSended)
+                {
+                    var order = notification.Order;
+                    if (order != null && order.AcceptSms)
+                    {
+                        _logger.LogInformation($"推送短信: orderNo: {order.No}");
+
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.OrderAccept,
+                            ExternalId = order.Id,
+                            OrderId = order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = order.Title,
+                            Name = order.FromName,
+                            TemplateCode = "1005",
+                            Params = new List<string>() { order.No, order.Password },
+                            TelNumber = order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
+
+                        order.SmsSended = true;
+                        _orderRepository.Updateable(order).UpdateColumns(p => p.SmsSended).ExecuteCommand();
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                _logger.LogError("新增工单发送短信失败,Error:{err}", e.Message);
+            }
+        }
+
+    }
+}

+ 6 - 0
src/Hotline/Orders/Notifications/UpdateOrderNotify.cs

@@ -0,0 +1,6 @@
+using MediatR;
+
+namespace Hotline.Orders.Notifications
+{
+    public record UpdateOrderNotify(Orders.Order Order) : INotification;
+}