Эх сурвалжийг харах

自贡任务 428 结果短信发送时间调整

tangjiang 1 сар өмнө
parent
commit
62c7274b69

+ 114 - 90
src/Hotline.Api/Controllers/OrderController.cs

@@ -71,6 +71,7 @@ using MiniExcelLibs;
 using SqlSugar;
 using System.Text;
 using System.Text.Json;
+using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Cache;
 using XF.Domain.Exceptions;
@@ -677,40 +678,63 @@ public class OrderController : BaseController
         {
             try
             {
-                if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
+                if (_appOptions.Value.IsZiGong)
                 {
-                    var code = "";
-                    //受理类型为“投诉、举报”
-                    if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited)
+                    if (order.Source == ESource.ProvinceStraight)
                     {
-                        code = "1017";
-                        orderVisit.VisitState = EVisitState.SMSVisiting;
-                        await _orderVisitRepository.UpdateAsync(orderVisit);
+                        //发送查询短信
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.SearchSms,
+                            ExternalId = visitId,
+                            OrderId = order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = order.Title,
+                            Name = order.FromName,
+                            TemplateCode = "1021",
+                            Params = new List<string>() { order.No, order.Password },
+                            TelNumber = order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
                     }
-                    else
-                        code = "1018";
-
-                    var messageDto = new Share.Dtos.Push.MessageDto
+                }
+                else
+                {
+                    if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
                     {
-                        PushBusiness = EPushBusiness.SearchSms,
-                        ExternalId = visitId,
-                        OrderId = order.Id,
-                        PushPlatform = EPushPlatform.Sms,
-                        Remark = order.Title,
-                        Name = order.FromName,
-                        TemplateCode = code,
-                        Params = new List<string>() { order.No, order.Password },
-                        TelNumber = order.Contact,
-                    };
-                    await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
-
-                    // 发送短信后推送一个 48小时的延迟消息队列. 当消息队列收到消息时, 判断用户是否回复了, 如果未回复短信就 默认满意
-                    var delaySecond = _systemSettingCacheManager.DefaultVisitSmsDelaySecond;
-                    await _capPublisher.PublishDelayAsync(
-                        TimeSpan.FromSeconds(delaySecond),
-                        EventNames.UpdateVisitDelaySms,
-                        messageDto,
-                        cancellationToken: HttpContext.RequestAborted);
+                        var code = "";
+                        //受理类型为“投诉、举报”
+                        if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited)
+                        {
+                            code = "1017";
+                            orderVisit.VisitState = EVisitState.SMSVisiting;
+                            await _orderVisitRepository.UpdateAsync(orderVisit);
+                        }
+                        else
+                            code = "1018";
+
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.SearchSms,
+                            ExternalId = visitId,
+                            OrderId = order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = order.Title,
+                            Name = order.FromName,
+                            TemplateCode = code,
+                            Params = new List<string>() { order.No, order.Password },
+                            TelNumber = order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
+
+                        // 发送短信后推送一个 48小时的延迟消息队列. 当消息队列收到消息时, 判断用户是否回复了, 如果未回复短信就 默认满意
+                        var delaySecond = _systemSettingCacheManager.DefaultVisitSmsDelaySecond;
+                        await _capPublisher.PublishDelayAsync(
+                            TimeSpan.FromSeconds(delaySecond),
+                            EventNames.UpdateVisitDelaySms,
+                            messageDto,
+                            cancellationToken: HttpContext.RequestAborted);
+                    }
                 }
             }
             catch (Exception)
@@ -5650,78 +5674,78 @@ public class OrderController : BaseController
         {
             if (order.FileJson != null)
             {
-				var ids = order.FileJson.Select(x => x.Id).ToList();
-				allFiles = await _fileRepository.GetFilesAsync(ids, cancellationToken: HttpContext.RequestAborted);
-			}
-		}
-		foreach (var step in steps)
-		{
-			if (step.FileJson != null && step.FileJson.Any())
-			{
-				var ids = step.FileJson.Select(x => x.Id).ToList();
-				var stepFiles = await _fileRepository.GetPermissionFilesAsync(ids, HttpContext.RequestAborted);
-				allFiles.AddRange(stepFiles);
-			}
-		}
-		return allFiles;
-	}
-
-	/// <summary>
-	/// 获取流程信息
-	/// </summary>
-	/// <param name="workflowId"></param>
-	/// <returns></returns>
-	[HttpGet("all_file/workflow/{id}")]
-	public async Task<WorkflowDto> GetOrderWorkflowAsync(string workflowId)
-	{
-		var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withSteps: false,
-			cancellationToken: HttpContext.RequestAborted);
+                var ids = order.FileJson.Select(x => x.Id).ToList();
+                allFiles = await _fileRepository.GetFilesAsync(ids, cancellationToken: HttpContext.RequestAborted);
+            }
+        }
+        foreach (var step in steps)
+        {
+            if (step.FileJson != null && step.FileJson.Any())
+            {
+                var ids = step.FileJson.Select(x => x.Id).ToList();
+                var stepFiles = await _fileRepository.GetPermissionFilesAsync(ids, HttpContext.RequestAborted);
+                allFiles.AddRange(stepFiles);
+            }
+        }
+        return allFiles;
+    }
+
+    /// <summary>
+    /// 获取流程信息
+    /// </summary>
+    /// <param name="workflowId"></param>
+    /// <returns></returns>
+    [HttpGet("all_file/workflow/{id}")]
+    public async Task<WorkflowDto> GetOrderWorkflowAsync(string workflowId)
+    {
+        var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withSteps: false,
+            cancellationToken: HttpContext.RequestAborted);
         var steps = _mapper.Map<List<WorkflowTraceDto>>(workflow.Steps);
-		var workflowDto = _mapper.Map<WorkflowDto>(workflow);
+        var workflowDto = _mapper.Map<WorkflowDto>(workflow);
         workflowDto.Traces = steps;
-		foreach (var item in workflowDto.Traces)
+        foreach (var item in workflowDto.Traces)
         {
             if (item.FileJson != null)
             {
-				var ids = item.FileJson.Select(x => x.Id).ToList();
-				item.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
-			}
-		}
+                var ids = item.FileJson.Select(x => x.Id).ToList();
+                item.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
+            }
+        }
         return workflowDto;
-	}
+    }
 
-	/// <summary>
-	/// 附件列表补充附件
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpPost("list/file_upload")]
-	[LogFilter("附件列表补充附件")]
+    /// <summary>
+    /// 附件列表补充附件
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpPost("list/file_upload")]
+    [LogFilter("附件列表补充附件")]
 
-	public async Task Add([FromBody] OrderStepUploadFilesDto dto)
-	{
-		var order = await _orderRepository.GetAsync(dto.OrderId);
-		var step = await _workflowStepRepository.GetAsync(dto.StepId);
+    public async Task Add([FromBody] OrderStepUploadFilesDto dto)
+    {
+        var order = await _orderRepository.GetAsync(dto.OrderId);
+        var step = await _workflowStepRepository.GetAsync(dto.StepId);
 
-		var listFileJson = new List<FileJson>();
-		if (dto.Files.Any())
+        var listFileJson = new List<FileJson>();
+        if (dto.Files.Any())
         {
-             listFileJson = await _fileRepository.AddFileAsync(dto.Files, dto.StepId, "", HttpContext.RequestAborted);
-		}
-		await _workflowStepRepository.Updateable().SetColumns(x => new WorkflowStep { FileJson = listFileJson }).Where(x => x.Id == dto.StepId).ExecuteCommandAsync(HttpContext.RequestAborted);
-		await _workflowTraceRepository.Updateable().SetColumns(x => new WorkflowTrace { FileJson = listFileJson }).Where(x => x.Id == dto.StepId).ExecuteCommandAsync(HttpContext.RequestAborted);
+            listFileJson = await _fileRepository.AddFileAsync(dto.Files, dto.StepId, "", HttpContext.RequestAborted);
+        }
+        await _workflowStepRepository.Updateable().SetColumns(x => new WorkflowStep { FileJson = listFileJson }).Where(x => x.Id == dto.StepId).ExecuteCommandAsync(HttpContext.RequestAborted);
+        await _workflowTraceRepository.Updateable().SetColumns(x => new WorkflowTrace { FileJson = listFileJson }).Where(x => x.Id == dto.StepId).ExecuteCommandAsync(HttpContext.RequestAborted);
 
         ////附件上传后推送省上
-		var orderDto = _mapper.Map<OrderDto>(order);
-		var flowDto = new OrderFlowDto
-		{
-			Order = orderDto,
-			WorkflowTrace = _mapper.Map<WorkflowTraceDto>(step),
-			ExpiredTimeChanged = false,
-			HandlerOrgLevel = step.HandlerOrgId.CalcOrgLevel()
-		};
-		await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFlowFile, flowDto, cancellationToken: HttpContext.RequestAborted);
-	}
+        var orderDto = _mapper.Map<OrderDto>(order);
+        var flowDto = new OrderFlowDto
+        {
+            Order = orderDto,
+            WorkflowTrace = _mapper.Map<WorkflowTraceDto>(step),
+            ExpiredTimeChanged = false,
+            HandlerOrgLevel = step.HandlerOrgId.CalcOrgLevel()
+        };
+        await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFlowFile, flowDto, cancellationToken: HttpContext.RequestAborted);
+    }
 
     #endregion
 

+ 39 - 8
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -838,12 +838,12 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.FiledTime, OrderByType.Desc)
             .OrderByIF(dto is { SortRule: 0, SortField: "filedTime" }, d => d.FiledTime, OrderByType.Asc)
             .OrderByIF(dto is { SortRule: 1, SortField: "filedTime" }, d => d.FiledTime, OrderByType.Desc)
-			.OrderByIF(dto is { SortRule: 0, SortField: "actualHandleTime" }, d => d.ActualHandleTime, OrderByType.Asc)
-			.OrderByIF(dto is { SortRule: 1, SortField: "actualHandleTime" }, d => d.ActualHandleTime, OrderByType.Desc)
-			.OrderByIF(dto is { SortRule: 0, SortField: "creationTime" }, d => d.CreationTime, OrderByType.Asc)
-			.OrderByIF(dto is { SortRule: 1, SortField: "creationTime" }, d => d.CreationTime, OrderByType.Desc)
-			.OrderByIF(dto is { SortRule: 0, SortField: "expiredTimeProvince" }, d => d.ExpiredTimeProvince, OrderByType.Asc)
-			.OrderByIF(dto is { SortRule: 1, SortField: "expiredTimeProvince" }, d => d.ExpiredTimeProvince, OrderByType.Desc);
+            .OrderByIF(dto is { SortRule: 0, SortField: "actualHandleTime" }, d => d.ActualHandleTime, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "actualHandleTime" }, d => d.ActualHandleTime, OrderByType.Desc)
+            .OrderByIF(dto is { SortRule: 0, SortField: "creationTime" }, d => d.CreationTime, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "creationTime" }, d => d.CreationTime, OrderByType.Desc)
+            .OrderByIF(dto is { SortRule: 0, SortField: "expiredTimeProvince" }, d => d.ExpiredTimeProvince, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "expiredTimeProvince" }, d => d.ExpiredTimeProvince, OrderByType.Desc);
     }
 
     public ISugarQueryable<OrderPublish> GetPublishedOrder(PublishedPagedRequest dto)
@@ -1413,6 +1413,37 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             _sessionContext.OrgName);
         await _workflowDomainService.HandleVisitTraceAsync(visit.Id, visitor, visit.VisitTime ?? DateTime.Now, cancellationToken);
 
+        var isOpenSendEndSms = _systemSettingCacheManager.GetSetting(SettingConstants.IsOpenSendEndSms)?.SettingValue[0];
+        if (isOpenSendEndSms == "true")
+        {
+            try
+            {
+                if (_appOptions.Value.IsZiGong)
+                {
+                    if (visit.Order.Source != ESource.ProvinceStraight)
+                    {
+                        //发送查询短信
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.SearchSms,
+                            ExternalId = visit.Id,
+                            OrderId = visit.Order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = visit.Order.Title,
+                            Name = visit.Order.FromName,
+                            TemplateCode = "1021",
+                            Params = new List<string>() { visit.Order.No, visit.Order.Password },
+                            TelNumber = visit.Order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
+                    }
+                }
+            }
+            catch (Exception)
+            {
+            }
+        }
+
         var orderDto = _mapper.Map<OrderDto>(visit.Order);
         if (first != null)
         {
@@ -1465,8 +1496,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                 }, cancellationToken);
 
                 //回访成功后结果不满意发送甄别提醒短信
-                var isOpenSendEndSms = _systemSettingCacheManager.IsSendDissatisfiedScreenSms;
-                if (isOpenSendEndSms)
+                var isSendDissatisfiedScreenSms = _systemSettingCacheManager.IsSendDissatisfiedScreenSms;
+                if (isSendDissatisfiedScreenSms)
                 {
                     try
                     {

+ 62 - 39
src/Hotline/Orders/OrderDomainService.cs

@@ -340,41 +340,64 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
         {
             try
             {
-                if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
+                if (_appOptions.Value.IsZiGong)
                 {
-                    var code = "";
-                    //受理类型为“投诉、举报”
-                    if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited)
+                    if (order.Source == ESource.ProvinceStraight)
                     {
-                        code = "1017";
-                        orderVisit.VisitState = EVisitState.SMSVisiting;
-                        await _orderVisitRepository.UpdateAsync(orderVisit);
+                        //发送查询短信
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.SearchSms,
+                            ExternalId = visitId,
+                            OrderId = order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = order.Title,
+                            Name = order.FromName,
+                            TemplateCode = "1021",
+                            Params = new List<string>() { order.No, order.Password },
+                            TelNumber = order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
                     }
-                    else
-                        code = "1018";
-
-                    //发送查询短信
-                    var messageDto = new Share.Dtos.Push.MessageDto
+                }
+                else
+                {
+                    if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
                     {
-                        PushBusiness = EPushBusiness.SearchSms,
-                        ExternalId = visitId,
-                        OrderId = order.Id,
-                        PushPlatform = EPushPlatform.Sms,
-                        Remark = order.Title,
-                        Name = order.FromName,
-                        TemplateCode = code,
-                        Params = new List<string>() { order.No, order.Password },
-                        TelNumber = order.Contact,
-                    };
-                    await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
-
-                    // 发送短信后推送一个 48小时的延迟消息队列. 当消息队列收到消息时, 判断用户是否回复了, 如果未回复短信就 默认满意
-                    var delaySecond = _systemSettingCacheManager.DefaultVisitSmsDelaySecond;
-                    await _capPublisher.PublishDelayAsync(
-                        TimeSpan.FromSeconds(delaySecond),
-                        EventNames.UpdateVisitDelaySms,
-                        messageDto,
-                        cancellationToken: cancellationToken);
+                        var code = "";
+                        //受理类型为“投诉、举报”
+                        if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited)
+                        {
+                            code = "1017";
+                            orderVisit.VisitState = EVisitState.SMSVisiting;
+                            await _orderVisitRepository.UpdateAsync(orderVisit);
+                        }
+                        else
+                            code = "1018";
+
+                        //发送查询短信
+                        var messageDto = new Share.Dtos.Push.MessageDto
+                        {
+                            PushBusiness = EPushBusiness.SearchSms,
+                            ExternalId = visitId,
+                            OrderId = order.Id,
+                            PushPlatform = EPushPlatform.Sms,
+                            Remark = order.Title,
+                            Name = order.FromName,
+                            TemplateCode = code,
+                            Params = new List<string>() { order.No, order.Password },
+                            TelNumber = order.Contact,
+                        };
+                        await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
+
+                        // 发送短信后推送一个 48小时的延迟消息队列. 当消息队列收到消息时, 判断用户是否回复了, 如果未回复短信就 默认满意
+                        var delaySecond = _systemSettingCacheManager.DefaultVisitSmsDelaySecond;
+                        await _capPublisher.PublishDelayAsync(
+                            TimeSpan.FromSeconds(delaySecond),
+                            EventNames.UpdateVisitDelaySms,
+                            messageDto,
+                            cancellationToken: cancellationToken);
+                    }
                 }
             }
             catch (Exception)
@@ -445,7 +468,7 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
         if (string.IsNullOrEmpty(orderId))
             throw UserFriendlyException.SameMessage("无效工单编号");
 
-        var query = _orderRepository.Queryable().Includes(d=>d.OrderPushTypes);
+        var query = _orderRepository.Queryable().Includes(d => d.OrderPushTypes);
         if (withHotspot)
             query = query.Includes(d => d.Hotspot);
         if (withAcceptor)
@@ -609,13 +632,13 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     /// <returns></returns>
     public async Task LogAverageOrder(string userId, Scheduling scheduling, CancellationToken cancellationToken)
     {
-		//1.获取默认派单员所属的工单
-		//2.获取今天上班的人员
-		//3.给当前这个用户平均派单
+        //1.获取默认派单员所属的工单
+        //2.获取今天上班的人员
+        //3.给当前这个用户平均派单
 
-		var steps = await _workflowDomainService.GetStepsBelongsToAsync(AppDefaults.SendPoolId,
-		   cancellationToken);
-		var roleId = _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan)?.SettingValue[0];
+        var steps = await _workflowDomainService.GetStepsBelongsToAsync(AppDefaults.SendPoolId,
+           cancellationToken);
+        var roleId = _systemSettingCacheManager.GetSetting(SettingConstants.RolePaiDan)?.SettingValue[0];
 
         var user = await _userRepository.Queryable()
             .Includes(d => d.Organization)
@@ -653,7 +676,7 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
             }, cancellationToken);
         }
 
-	}
+    }
 
     /// <summary>
     /// 触发平均派单