فهرست منبع

完成测试 短信回填回访记录

qinchaoyue 7 ماه پیش
والد
کامیت
ed69ea2dc8

+ 20 - 5
src/Hotline.Application.Tests/Repository/OrderVisitRepositoryTest.cs

@@ -9,33 +9,48 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using XF.Domain.Repository;
 
 namespace Hotline.Application.Tests.Repository;
 public class OrderVisitRepositoryTest
 {
     private readonly IOrderVisitRepository _orderVisitRepository;
+    private readonly IRepository<OrderVisitDetail> _orderVisitDetailRepository;
 
-    public OrderVisitRepositoryTest(IOrderVisitRepository orderVisitRepository)
+    public OrderVisitRepositoryTest(IOrderVisitRepository orderVisitRepository, IRepository<OrderVisitDetail> orderVisitDetailRepository)
     {
         _orderVisitRepository = orderVisitRepository;
+        _orderVisitDetailRepository = orderVisitDetailRepository;
     }
 
     [Theory]
-    [InlineData("4", "SMSUnsatisfied")]
-    [InlineData("1", "Visited")]
-    public async Task UpdateSmsReply_Test(string content, string visitState)
+    [InlineData("4", "SMSUnsatisfied", "不满意")]
+    [InlineData("1", "Visited", "非常满意")]
+    public async Task UpdateSmsReply_Test(string content, string visitState, string orgResuktValue)
     {
         var visit = await _orderVisitRepository.Queryable()
             .Where(m => m.VisitState == EVisitState.SMSVisiting)
             .OrderByDescending(m => m.CreationTime)
             .FirstAsync();
 
-        var dto = new PushReceiveMessageDto { ExternalId = visit.Id , IsSmsReply = true, SmsReplyContent = content };
+        var dto = new PushReceiveMessageDto { ExternalId = visit.Id, IsSmsReply = true, SmsReplyContent = content };
         var message = new Message();
         await _orderVisitRepository.UpdateSmsReplyAsync(dto, message);
         visit = _orderVisitRepository.Get(visit.Id);
         visit.VisitState.ShouldBe(visitState.ToEnum<EVisitState>());
+        visit.NowEvaluate.Key.ShouldBe(content);
+        visit.NowEvaluate.Value.ShouldBe(orgResuktValue);
+
         if (content == "4" || content == "5")
             visit.VisitType.ShouldBeNull();
+
+        var org = await _orderVisitDetailRepository.Queryable()
+            .Where(m => m.VisitId == visit.Id && m.VisitTarget == EVisitTarget.Org)
+            .FirstAsync();
+        org.OrgProcessingResults.Key.ShouldBe(content);
+        org.OrgProcessingResults.Value.ShouldBe(orgResuktValue);
+        org.OrgHandledAttitude.Key.ShouldBe(content);
+        org.OrgHandledAttitude.Value.ShouldBe(orgResuktValue);
+
     }
 }

+ 1 - 10
src/Hotline.Application.Tests/appsettings.Development.json

@@ -1,13 +1,4 @@
 {
-    "SenparcWeixinSetting": {
-        "IsDebug": true,
-
-        //小程序
-        "WxOpenAppId": "#{WxOpenAppId}#",
-        "WxOpenAppSecret": "#{WxOpenAppSecret}#",
-        "WxOpenToken": "#{WxOpenToken}#",
-        "WxOpenEncodingAESKey": "#{WxOpenEncodingAESKey}#"
-    },
     "AllowedHosts": "*",
     "AppConfiguration": {
         "AppScope": "ZiGong",
@@ -119,7 +110,7 @@
             "UserName": "dev",
             "Password": "123456",
             "HostName": "110.188.24.182",
-            "VirtualHost": "fwt-master"
+            "VirtualHost": "fwt-unit-test"
         }
     },
     //"SmsAccountInfo": {

+ 2 - 0
src/Hotline.Repository.SqlSugar/Orders/OrderVisitRepository.cs

@@ -52,6 +52,8 @@ public class OrderVisitRepository : BaseRepository<OrderVisit>, IOrderVisitRepos
         var replySplit = result.Split("|");
         if (new string[] { "4", "5" }.Contains(replyTxt))
         {
+            // “短信不满意待回访”状态下,由其他方式再次进行回访,回访方式需更新为最新的回访方式
+            // 故在此至为空
             orderVisit.VisitType = null;
         }
         orderVisit.NowEvaluate = new Share.Dtos.Kv(replyTxt, replySplit[0]);

+ 22 - 0
src/Hotline.Share/Tools/TaskExtensions.cs

@@ -0,0 +1,22 @@
+namespace XF.Domain.Repository.Extensions;
+public static class TaskExtensions
+{
+    /// <summary>
+    /// 为 Task<T> 类型的扩展方法,如果实体不为 null,则执行指定的操作。
+    /// </summary>
+    /// <typeparam name="T">实体的类型</typeparam>
+    /// <param name="task">Task 实例</param>
+    /// <param name="action">要执行的操作</param>
+    /// <returns>Task 返回自身</returns>
+    public static async Task Then<T>(this Task<T> task, Action<T> action)
+    {
+        // 等待任务完成并获取结果
+        var result = await task;
+
+        // 如果结果不为 null,则执行传入的操作
+        if (result != null)
+        {
+            action(result);
+        }
+    }
+}