qinchaoyue 3 months ago
parent
commit
607985ef0c

+ 28 - 6
src/Hotline.Application.Tests/Domain/OrderVisitDomainServiceTest.cs

@@ -163,15 +163,34 @@ public class OrderVisitDomainServiceTest : TestBase
                 org.OrgProcessingResults.Value.ShouldBe(orgResuktValue);
 
                 // 验证跟新工单上的字段是否成功
-                orderEntity.OrgProcessingResults.ShouldNotBeNull();
-                orderEntity.OrgProcessingResults.Key.ShouldBe(orgResuktKey);
-                orderEntity.OrgProcessingResults.Value.ShouldBe(orgResuktValue);
+                if (new string[] { "4", "5", "不满意", "非常不满意" }.Contains(content) == false)
+                {
+                    orderEntity.OrgProcessingResults.ShouldNotBeNull();
+                    orderEntity.OrgProcessingResults.Key.ShouldBe(orgResuktKey);
+                    orderEntity.OrgProcessingResults.Value.ShouldBe(orgResuktValue);
+                }
 
                 org.OrgHandledAttitude.ShouldNotBeNull();
                 org.OrgHandledAttitude.Key.ShouldBe(orgResuktKey);
                 org.OrgHandledAttitude.Value.ShouldBe(orgResuktValue);
                 return Task.CompletedTask;
             });
+        await _orderVisitDetailRepository.Queryable()
+          .Where(m => m.VisitId == visit.Id && m.VisitTarget == EVisitTarget.Seat)
+          .FirstAsync()
+          .Then(seat =>
+          {
+              // 验证跟新工单上的字段是否成功
+              if (new string[] { "4", "5", "不满意", "非常不满意" }.Contains(content) == true)
+              {
+                  seat.SeatEvaluate.ShouldNotBe(ESeatEvaluate.NoSatisfied);
+                  seat.SeatEvaluate.ShouldNotBe(ESeatEvaluate.VeryNoSatisfied);
+                  seat.VoiceEvaluate.ShouldNotBe(EVoiceEvaluate.NoSatisfied);
+                  seat.VoiceEvaluate.ShouldNotBe(EVoiceEvaluate.VeryNoSatisfied);
+              }
+
+              return Task.CompletedTask;
+          });
     }
 
     [Theory]
@@ -180,7 +199,9 @@ public class OrderVisitDomainServiceTest : TestBase
     [InlineData("3", "一般", "Visited", "Normal", "Normal", "满意|4")]
     [InlineData("4", "不满意", "SMSUnsatisfied", "NoSatisfied", "NoSatisfied", "不满意|2")]
     [InlineData("5", "非常不满意", "SMSUnsatisfied", "NoSatisfied", "VeryNoSatisfied", "不满意|2")]
-    [InlineData("默认满意", "默认满意", "Visited", "DefaultSatisfied", "DefaultSatisfied", "默认满意|0")]
+    [InlineData("默认满意", "超过48小时自动回访", "Visited", "DefaultSatisfied", "DefaultSatisfied", "默认满意|0")]
+    [InlineData("0", "超过48小时自动回访", "Visited", "DefaultSatisfied", "DefaultSatisfied", "默认满意|0")]
+    [InlineData("1非常满意", "非常满意", "Visited", "VerySatisfied", "VerySatisfied", "非常满意|5")]
     public void GetVisitEvaluateByReplyTxt_Test(string replyTxt, string assertReplyTxt, string visitState, string seatEvaluate, string voiceEvaluate, string kv)
     {
         var smsReply = _orderVisitDomainService.GetVisitEvaluateByReplyTxt(replyTxt);
@@ -209,9 +230,10 @@ public class OrderVisitDomainServiceTest : TestBase
         IEnumerable<SettingOrderVisitSmsReplyRule> entities = [
             new () {AppScope = "ZiGong", ReplyRegular = "1", VisitContent = "非常满意", VisitState = EVisitState.Visited, SeatEvaluate = ESeatEvaluate.VerySatisfied,VoiceEvaluate = EVoiceEvaluate.VerySatisfied,OrgProcessingResults=5, OrgHandledAttitude = 5 },
             new () {AppScope = "ZiGong", ReplyRegular = "2", VisitContent = "满意", VisitState = EVisitState.Visited, SeatEvaluate = ESeatEvaluate.Satisfied,VoiceEvaluate = EVoiceEvaluate.Satisfied,OrgProcessingResults=4, OrgHandledAttitude = 4 },
-            new () {AppScope = "ZiGong", ReplyRegular = "3", VisitContent = "一般", VisitState = EVisitState.Visited, SeatEvaluate = ESeatEvaluate.Normal,VoiceEvaluate = EVoiceEvaluate.Normal,OrgProcessingResults=3, OrgHandledAttitude = 3 },
+            new () {AppScope = "ZiGong", ReplyRegular = "3", VisitContent = "一般", VisitState = EVisitState.Visited, SeatEvaluate = ESeatEvaluate.Normal,VoiceEvaluate = EVoiceEvaluate.Normal,OrgProcessingResults= 4, OrgHandledAttitude = 4 },
             new () {AppScope = "ZiGong", ReplyRegular = "4", VisitContent = "不满意", VisitState = EVisitState.SMSUnsatisfied, SeatEvaluate = ESeatEvaluate.NoSatisfied,VoiceEvaluate = EVoiceEvaluate.NoSatisfied,OrgProcessingResults=2, OrgHandledAttitude = 2 },
-            new () {AppScope = "ZiGong", ReplyRegular = "5", VisitContent = "非常不满意", VisitState = EVisitState.SMSUnsatisfied, SeatEvaluate = ESeatEvaluate.NoSatisfied,VoiceEvaluate = EVoiceEvaluate.VeryNoSatisfied,OrgProcessingResults=2, OrgHandledAttitude = 2 }
+            new () {AppScope = "ZiGong", ReplyRegular = "5", VisitContent = "非常不满意", VisitState = EVisitState.SMSUnsatisfied, SeatEvaluate = ESeatEvaluate.NoSatisfied,VoiceEvaluate = EVoiceEvaluate.VeryNoSatisfied,OrgProcessingResults=2, OrgHandledAttitude = 2 },
+            new () {AppScope = "ZiGong", ReplyRegular = "默认满意", VisitContent = "超过48小时自动回访", VisitState = EVisitState.Visited, SeatEvaluate = ESeatEvaluate.DefaultSatisfied,VoiceEvaluate = EVoiceEvaluate.DefaultSatisfied,OrgProcessingResults=0, OrgHandledAttitude = 0 }
             ];
 
         foreach (var item in entities)

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

@@ -110,7 +110,7 @@
         }
     },
     "DatabaseConfiguration": {
-        "ApplyDbMigrations": true,
+        "ApplyDbMigrations": false,
         "ApplySeed": false
     },
     "MqConfiguration": {

+ 4 - 0
src/Hotline.Application/Mappers/MapperConfigs.cs

@@ -42,6 +42,10 @@ namespace Hotline.Application.Mappers
                 .Map(s => s.Key, d => d.DicDataValue)
                 .Map(s => s.Value, d => d.DicDataName);
 
+            config.ForType<SystemDicDataOutDto, Kv>()
+                .Map(s => s.Key, d => d.DicDataValue)
+                .Map(s => s.Value, d => d.DicDataName);
+
             config.ForType<Message, ReceiveMessageNotify>()
                 .Map(m => m.NotifyDto, d => d);
 

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

@@ -76,17 +76,9 @@ public class OrderVisitDomainService : IOrderVisitDomainService, IScopeDependenc
     {
         var replyToEnumMap = _settingOrderVisitSmsReplyRuleRepository.GetByAppScope(_appOptions.Value.AppScope);
         if (replyToEnumMap.IsNullOrEmpty()) throw new UserFriendlyException("系统未配置短信回访规则");
-
         replyTxt = replyTxt.Trim();
-        foreach (var smsRule in replyToEnumMap)
-        {
-            var success = new Regex(smsRule.ReplyRegular).IsMatch(replyTxt);
-            if (success)
-            {
-                return smsRule;
-            }
-        }
-        throw new UserFriendlyException($"用户回复内容异常; replyTxt: {replyTxt}");
+        return replyToEnumMap.FirstOrDefault(m => new Regex(m.ReplyRegular).IsMatch(replyTxt)) 
+            ?? throw new UserFriendlyException($"用户回复内容异常; replyTxt: {replyTxt}");
     }
 
     /// <summary>

+ 1 - 1
src/Hotline/Settings/SettingOrderVisitSmsReplyRule.cs

@@ -83,6 +83,6 @@ public class SettingOrderVisitSmsReplyRule : FullStateEntity
     public Kv? GetOrgProcessingResults(IReadOnlyCollection<SystemDicDataOutDto> visitSatisfaction)
     {
         if (OrgProcessingResults == null) return null;
-        return visitSatisfaction.First(m => m.DicDataValue == OrgHandledAttitude.ToString()).Adapt<Kv>();
+        return visitSatisfaction.First(m => m.DicDataValue == OrgProcessingResults.ToString()).Adapt<Kv>();
     }
 }