Parcourir la source

增加延迟获取回访通话记录消息

qinchaoyue il y a 5 mois
Parent
commit
1351cbfb95

+ 2 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -1041,7 +1041,8 @@ public class OrderController : BaseController
             await _capPublisher.PublishDelayAsync(TimeSpan.FromSeconds(seconds), EventNames.VisitCallDelay, dto, cancellationToken: HttpContext.RequestAborted);
         }
 
-        dto.CallId = await _callApplication.GetOrSetCallIdAsync(dto.CallId, HttpContext.RequestAborted);
+        if (dto.CallId != null)
+            dto.CallId = await _callApplication.GetOrSetCallIdAsync(dto.CallId, HttpContext.RequestAborted);
         await _orderApplication.SaveOrderVisit(dto, HttpContext.RequestAborted);
     }
 

+ 17 - 1
src/Hotline.Application.Tests/Application/DefaultCallApplicationTest.cs

@@ -2,7 +2,9 @@
 using Hotline.Application.CallCenter;
 using Hotline.Identity.Accounts;
 using Hotline.Identity.Roles;
+using Hotline.Orders;
 using Hotline.Share.Dtos.CallCenter;
+using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.CallCenter;
 using Hotline.Users;
 using Microsoft.Extensions.DependencyInjection;
@@ -14,10 +16,12 @@ namespace Hotline.Application.Tests.Application;
 public class DefaultCallApplicationTest
 {
     private readonly XingTangCallApplication _defaultCallApplication;
+    private readonly IOrderVisitRepository _orderVisitRepository;
 
-    public DefaultCallApplicationTest(XingTangCallApplication defaultCallApplication)
+    public DefaultCallApplicationTest(XingTangCallApplication defaultCallApplication, IOrderVisitRepository orderVisitRepository)
     {
         _defaultCallApplication = defaultCallApplication;
+        _orderVisitRepository = orderVisitRepository;
     }
 
     [Fact]
@@ -70,4 +74,16 @@ public class DefaultCallApplicationTest
         result = await _defaultCallApplication.GetCallAsync("2024062419085100943CTI", CancellationToken.None);
         result.ShouldNotBeNull();
     }
+
+    [Fact]
+    public async Task OrderVisitRelevanceCallId_Test()
+    {
+        var inDto = new VisitDto();
+        inDto.CallId = "202411141932330603100751FLOW";
+        inDto.Id = "08dd046b-b3b3-4ccf-8a15-09133d27dce0";
+        await _defaultCallApplication.OrderVisitRelevanceCallIdAsync(inDto, CancellationToken.None);
+
+        var visit = await _orderVisitRepository.GetAsync(inDto.Id);
+        visit.CallId.ShouldBe("01JCN757M8F3Z9JJPZ0VBSNQPJ");
+    }
 }