Parcourir la source

回访结果不满意发送甄别提醒短信

libin il y a 1 mois
Parent
commit
9755d73aa1

+ 35 - 1
src/Hotline.Application/Orders/OrderApplication.cs

@@ -63,6 +63,7 @@ using J2N.Text;
 using Hotline.Application.FlowEngine;
 using Hotline.Article;
 using Hotline.Share.Dtos.CallCenter;
+using DocumentFormat.OpenXml.Bibliography;
 
 namespace Hotline.Application.Orders;
 
@@ -1397,9 +1398,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             await _qualityApplication.AddQualityAsync(EQualitySource.Visit, visit.Order.Id, visit.Id,
                 cancellationToken);
 
-            //回访成功后,写入回访记录信息
             if (_appOptions.Value.IsZiGong == true)
             {
+                //回访成功后,写入回访记录信息
                 await _orderVisitApplication.AddOrderVisitRecordAsync(new OrderVisitRecordDto()
                 {
                     No = visit.No,
@@ -1408,6 +1409,39 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                     EmployeeId = visit.EmployeeId,
                     VisitTime = visit.VisitTime
                 }, cancellationToken);
+
+                //回访成功后结果不满意发送甄别提醒短信
+                var isOpenSendEndSms = _systemSettingCacheManager.IsSendDissatisfiedScreenSms;
+                if (isOpenSendEndSms)
+                {
+                    try
+                    {
+                        if (first.VisitOrgCode != OrgSeedData.CenterId &&
+                            (first.OrgProcessingResults.Value == "不满意" || first.OrgProcessingResults.Value == "非常不满意"))
+                        {
+                            var orderVisit = await _orderVisitRepository.Queryable().FirstAsync(x => x.Id == dto.Id, cancellationToken);
+                            if (string.IsNullOrEmpty(orderVisit.Employee.PhoneNo) == false)
+                            {
+                                var messageDto = new Share.Dtos.Push.MessageDto
+                                {
+                                    PushBusiness = EPushBusiness.DissatisfiedScreen,
+                                    ExternalId = first.VisitId,
+                                    OrderId = visit.Order.Id,
+                                    PushPlatform = EPushPlatform.Sms,
+                                    Remark = visit.Order.Title,
+                                    Name = orderVisit.Employee.Name,
+                                    TemplateCode = "1020",
+                                    Params = new List<string>() { visit.Order.No },
+                                    TelNumber = orderVisit.Employee.PhoneNo,
+                                };
+                                await _mediator.Publish(new PushMessageNotify(messageDto), cancellationToken);
+                            }
+                        }
+                    }
+                    catch (Exception)
+                    {
+                    }
+                }
             }
         }
     }

+ 3 - 0
src/Hotline.Share/Enums/Push/EPushBusiness.cs

@@ -90,4 +90,7 @@ public enum EPushBusiness
 
     [Description("甄别完成")]
     ScreenEnd=14,
+
+    [Description("不满意甄别短信")]
+    DissatisfiedScreen = 15,
 }

+ 2 - 0
src/Hotline/Caching/Interfaces/ISystemSettingCacheManager.cs

@@ -110,5 +110,7 @@ namespace Hotline.Caching.Interfaces
         /// 是否不推送呼出的无文件的通话记录
         /// </summary>
         bool IsNoPushCallNativeOutNoFile { get; }
+
+        bool IsSendDissatisfiedScreenSms { get; }
     }
 }

+ 4 - 2
src/Hotline/Caching/Services/SystemSettingCacheManager.cs

@@ -41,7 +41,7 @@ namespace Hotline.Caching.Services
             _cacheSystemSetting.Remove(code);
         }
 
-        public T GetOrDefault<T>(string? id, string code, string name, T defaultValue, string remark) 
+        public T GetOrDefault<T>(string? id, string code, string name, T defaultValue, string remark)
         {
             var value = defaultValue.ToString();
             try
@@ -109,7 +109,7 @@ namespace Hotline.Caching.Services
         /// 保存回访详情时发送延迟消息同步通话记录
         /// 如果回访通话记录有多条, 需要关联通话时长最长的那条
         /// </summary>
-        public int VisitCallDelaySecond => 
+        public int VisitCallDelaySecond =>
             GetOrDefault(null, SettingConstants.VisitCallDelaySecond, "回访通话记录同步延时时间(秒)", 60, "保存回访详情时发送延迟消息同步通话记录,如果回访通话记录有多条, 需要关联通话时长最长的那条");
 
         public bool AutomaticPublishOrder =>
@@ -209,5 +209,7 @@ namespace Hotline.Caching.Services
         /// 是否不推送呼出的无文件的通话记录(true: 不推送, false: 推送)
         /// </summary>
         public bool IsNoPushCallNativeOutNoFile => GetOrDefault("08dd23d1-5c5b-4262-8c99-8c83710723ea", SettingConstants.IsNoPushCallNativeOutNoFile, "是否不推送呼出的无文件的通话记录(true: 不推送, false: 推送)", true, "是否不推送呼出的无文件的通话记录(true: 不推送, false: 推送)");
+
+        public bool IsSendDissatisfiedScreenSms => GetOrDefault("08db29ad-9b54-44ca-8d4d-35c032748040", SettingConstants.IsSendDissatisfiedScreenSms, "回访不满意是否发送甄别短信", true, "true:发送;false:不发送");
     }
 }

+ 12 - 2
src/Hotline/Orders/OrderVisitDomainService.cs

@@ -17,6 +17,10 @@ using Microsoft.Extensions.Options;
 using Hotline.Settings;
 using System.Text.RegularExpressions;
 using System.Threading;
+using Hotline.Caching.Services;
+using Hotline.Push.Notifies;
+using Hotline.Share.Enums.Push;
+using MediatR;
 
 namespace Hotline.Orders;
 public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependency
@@ -32,6 +36,8 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
     private readonly ISettingOrderVisitSmsReplyRuleRepository _settingOrderVisitSmsReplyRuleRepository;
     private readonly ISystemLogRepository _logRepository;
     private readonly IRepository<OrderVisitRecord> _orderVisitRecordRepository;
+    private readonly ISystemSettingCacheManager _systemSettingCacheManager;
+    private readonly IMediator _mediator;
 
     public OrderVisitDomainService(IRepository<OrderVisitDetail> orderVisitDetailRepository,
         ILogger<OrderVisitDomainService> logger,
@@ -42,7 +48,9 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
         IOptionsSnapshot<AppConfiguration> appOptions,
         ISettingOrderVisitSmsReplyRuleRepository settingOrderVisitSmsReplyRuleRepository,
         ISystemLogRepository logRepository,
-        IRepository<OrderVisitRecord> orderVisitRecordRepository)
+        IRepository<OrderVisitRecord> orderVisitRecordRepository,
+        ISystemSettingCacheManager systemSettingCacheManager,
+        IMediator mediator)
     {
         _orderVisitDetailRepository = orderVisitDetailRepository;
         _logger = logger;
@@ -55,6 +63,8 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
         _settingOrderVisitSmsReplyRuleRepository = settingOrderVisitSmsReplyRuleRepository;
         _logRepository = logRepository;
         _orderVisitRecordRepository = orderVisitRecordRepository;
+        _systemSettingCacheManager = systemSettingCacheManager;
+        _mediator = mediator;
     }
 
     /// <summary>
@@ -214,9 +224,9 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
                     ClientGuid = ""
                 }, cancellationToken: CancellationToken.None);
 
-            //回访成功后,写入回访记录信息
             if (_appOptions.Value.IsZiGong == true)
             {
+                //回访成功后,写入回访记录信息
                 await _orderVisitRecordRepository.AddAsync(new()
                 {
                     No = orderVisit.No,

+ 5 - 0
src/Hotline/Settings/SettingConstants.cs

@@ -738,5 +738,10 @@ namespace Hotline.Settings
         /// 是否开启特殊号码功能
         /// </summary>
         public const string IsOpenSpecialPhone = "IsOpenSpecialPhone";
+
+        /// <summary>
+        /// 回访不满意是否发送甄别短信
+        /// </summary>
+        public const string IsSendDissatisfiedScreenSms = "IsSendDissatisfiedScreenSms";
     }
 }