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

增加发送回访短信接口

qinchaoyue 7 сар өмнө
parent
commit
871fce18a2

+ 37 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -786,6 +786,8 @@ public class OrderController : BaseController
                 d => d.VisitState == EVisitState.WaitForVisit ||
                       d.VisitState == EVisitState.NoSatisfiedWaitForVisit)
             .WhereIF(dto.VisitState == EVisitStateQuery.Visited, d => d.VisitState == EVisitState.Visited)
+            .WhereIF(dto.VisitState == EVisitStateQuery.SMSUnsatisfied, m => m.VisitState == EVisitState.SMSUnsatisfied)
+            .WhereIF(dto.VisitState == EVisitStateQuery.SMSVisiting, m => m.VisitState == EVisitState.SMSVisiting)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.StartsWith(dto.Keyword!))
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
             .WhereIF(dto.VisitType != null, x => x.VisitType == dto.VisitType)
@@ -798,11 +800,46 @@ public class OrderController : BaseController
             .WhereIF(dto.IsProvince != null && dto.IsProvince == true, d => d.Order.IsProvince == true)
             .WhereIF(dto.IsProvince != null && dto.IsProvince == false, d => d.Order.IsProvince == false)
             .WhereIF(dto.IsEffectiveAiVisit != null, d => d.IsEffectiveAiVisit == dto.IsEffectiveAiVisit)
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), m => m.Order.FromPhone == dto.FromPhone)
+            .WhereIF(dto.Contact.NotNullOrEmpty(), m => m.Order.Contact == dto.Contact)
             .OrderByDescending(x => x.PublishTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderVisitDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDto>>(items));
     }
 
+    /// <summary>
+    /// 发送 回访短信
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("visit/sms")]
+    public async Task<bool> VisitSmsPushAsync([FromBody]List<string> visitIds)
+    {
+        var phoneNumbers = await _orderVisitRepository.Queryable()
+            .Includes(d => d.Order)
+            .Where(d => visitIds.Contains(d.Id))
+            .Select(d => new { d.Id, d.Order.Contact, d.OrderId })
+            .ToListAsync(HttpContext.RequestAborted);
+
+        foreach (var item in phoneNumbers)
+        {
+            var messageDto = new Share.Dtos.Push.MessageDto
+            {
+                PushBusiness = EPushBusiness.OrderAccept,
+                ExternalId = item.Id,
+                OrderId = item.OrderId,
+                PushPlatform = EPushPlatform.Sms,
+                //Content =
+                //  $"温馨提示:您的来电已受理(流水号:{order.No};提取码:{order.Password},可通过网站(http://hotline.12345lm.cn)进行查询,谢谢。【宜宾12345热线平台】)",
+                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), HttpContext.RequestAborted);
+        }
+    }
+
     /// <summary>
     /// 回访查询基础数据
     /// </summary>

+ 24 - 0
src/Hotline.Share/Dtos/Order/OrderVisitDto.cs

@@ -59,6 +59,16 @@ namespace Hotline.Share.Dtos.Order
         /// 是否有效智能回访
         /// </summary>
         public bool? IsEffectiveAiVisit { get; set; }
+
+        /// <summary>
+        /// 来电号码
+        /// </summary>
+        public string? FromPhone { get; set; }
+
+        /// <summary>
+        /// 联系电话
+        /// </summary>
+        public string? Contact { get; set; }
     }
 
     public record QueryOrderPublishStatisticsAllDto : PagedRequest
@@ -477,6 +487,20 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         [Description("未回访")]
         NoVisit = 2,
+
+        /// <summary>
+        /// 短信回访中
+        /// 逻辑需求(Task_317) : 操作了短信回访的工单,在没有短信结果回复前,回访状态需从“待回访”更新为“短信回访中”
+        /// </summary>
+        [Description("短信回访中")]
+        SMSVisiting = 21,
+
+        /// <summary>
+        /// 短信不满意待回访
+        /// 逻辑需求(Task_317) : 若短信回访结果为不满意,回访状态需从“短信回访中”更新为“短信不满意待回访”
+        /// </summary>
+        [Description("短信不满意待回访")]
+        SMSUnsatisfied = 41,
     }
 
     public class OrderVisitSourceChannelDto

+ 14 - 0
src/Hotline.Share/Enums/Order/EVisitState.cs

@@ -21,6 +21,13 @@ namespace Hotline.Share.Enums.Order
         [Description("回访中")]
         Visiting = 20,
 
+        /// <summary>
+        /// 短信回访中
+        /// 逻辑需求(Task_317) : 操作了短信回访的工单,在没有短信结果回复前,回访状态需从“待回访”更新为“短信回访中”
+        /// </summary>
+        [Description("短信回访中")]
+        SMSVisiting = 21,
+
         /// <summary>
         /// 已回访
         /// </summary>
@@ -33,6 +40,13 @@ namespace Hotline.Share.Enums.Order
         [Description("不满意待回访")]
         NoSatisfiedWaitForVisit =40,
 
+        /// <summary>
+        /// 短信不满意待回访
+        /// 逻辑需求(Task_317) : 若短信回访结果为不满意,回访状态需从“短信回访中”更新为“短信不满意待回访”
+        /// </summary>
+        [Description("短信不满意待回访")]
+        SMSUnsatisfied = 41,
+
         /// <summary>
         /// 失效
         /// </summary>