Quellcode durchsuchen

新增批量语音回访任务功能及相关调整

新增 AddTaskBatchVoiceVisitAsync 方法,支持批量新增语音回访任务,调整任务生成逻辑,基于查询数据构建任务项。修改 BatchVoiceVisitRequest 数据结构,删除 VoiceVisitRequests,新增 VisitIds 属性。更新 BatchVoiceVisitRequestValidator 校验规则,改为校验 VisitIds 非空,移除对 VoiceVisitRequests 的子规则校验。
xf vor 2 Wochen
Ursprung
Commit
b7ba605855

+ 14 - 4
src/Hotline.Application/OrderApp/OrderVisitApp/OrderVisitApplication.cs

@@ -113,20 +113,30 @@ public class OrderVisitApplication : IOrderVisitApplication, IScopeDependency
     /// <returns></returns>
     public async Task AddTaskBatchVoiceVisitAsync(BatchVoiceVisitRequest request, CancellationToken cancellation)
     {
+        var visits = await _orderVisitRepository.Queryable()
+            .Includes(d => d.Order)
+            .Where(d => request.VisitIds.Contains(d.Id)
+                        && !string.IsNullOrEmpty(d.Order.Contact))
+            .ToListAsync(cancellation);
+
         var taskId = await _apptaskDomainService.AddAsync(new AddApptaskRequest
         {
             TaskType = ETaskType.VoiceVisit,
             TryLimit = 10,
-            ApptaskItems = request.VoiceVisitRequests.Select(d => new AddApptaskItemRequest
+            ApptaskItems = visits.Select(d => new AddApptaskItemRequest
             {
-                BusinessId = d.VisitId,
-                TaskParams = d
+                BusinessId = d.Id,
+                TaskParams = new VoiceVisitRequest
+                {
+                    VisitId = d.Id,
+                    PhoneNo = d.Order.Contact!
+                }
             }).ToList()
         }, cancellation);
 
         if (!string.IsNullOrEmpty(taskId))
         {
-            var visitIds = request.VoiceVisitRequests.Select(d => d.VisitId).ToList();
+            var visitIds = visits.Select(d => d.Id).ToList();
             await _orderVisitRepository.Updateable()
                   .SetColumns(d => new OrderVisit
                   {

+ 1 - 1
src/Hotline.Share/Dtos/Order/OrderVisit/BatchVoiceVisitRequest.cs

@@ -9,6 +9,6 @@ namespace Hotline.Share.Dtos.Order.OrderVisit
     public class BatchVoiceVisitRequest
     {
         public string? Name { get; set; }
-        public List<VoiceVisitRequest> VoiceVisitRequests { get; set; }
+        public List<string> VisitIds { get; set; }
     }
 }

+ 1 - 11
src/Hotline/Validators/Order/OrderVisit/BatchVoiceVisitRequestValidator.cs

@@ -12,20 +12,10 @@ namespace Hotline.Validators.Order.OrderVisit
     {
         public BatchVoiceVisitRequestValidator()
         {
-            RuleFor(d => d.VoiceVisitRequests)
+            RuleFor(d => d.VisitIds)
                 .Cascade(CascadeMode.Stop)
                 .NotEmpty()
                 .WithMessage("请选择待回访数据");
-
-            RuleForEach(d => d.VoiceVisitRequests)
-                .Cascade(CascadeMode.Stop)
-                .NotEmpty()
-                .ChildRules(req =>
-                {
-                    req.RuleFor(d => d.VisitId).NotEmpty().WithMessage("无效回访编号");
-                    req.RuleFor(d => d.PhoneNo).NotEmpty().WithMessage("无效回访号码");
-                })
-                .WithMessage("无效回访参数");
         }
     }
 }