Dun.Jason hai 1 ano
pai
achega
dc67bb86b2

+ 20 - 3
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -1,5 +1,6 @@
 using Hotline.Application.CallCenter.Calls;
 using Hotline.Caching.Interfaces;
+using Hotline.Caching.Services;
 using Hotline.CallCenter.Calls;
 using Hotline.Orders;
 using Hotline.Permissions;
@@ -38,8 +39,9 @@ namespace Hotline.Api.Controllers
         private readonly ILogger<IPPbxController> _logger;
         private readonly IOrderRepository _orderRepository;
         private readonly IRepository<OrderVisit> _orderVisitRepository;
+        private readonly IUserCacheManager _userCacheManager;
 
-        public IPPbxController(ITrClient trClient,IMapper mapper,IUserDomainService userDomainService,ISessionContext sessionContext,IRepository<TrCallRecord> trCallRecordRepository,ITrApplication trApplication,IRepository<TrCallEvaluate> trCallRecord,ISystemDicDataCacheManager systemDicDataCacheManager,ILogger<IPPbxController> logger,IOrderRepository orderRepository,IRepository<OrderVisit> orderVisitRepository)
+        public IPPbxController(ITrClient trClient,IMapper mapper,IUserDomainService userDomainService,ISessionContext sessionContext,IRepository<TrCallRecord> trCallRecordRepository,ITrApplication trApplication,IRepository<TrCallEvaluate> trCallRecord,ISystemDicDataCacheManager systemDicDataCacheManager,ILogger<IPPbxController> logger,IOrderRepository orderRepository,IRepository<OrderVisit> orderVisitRepository, IUserCacheManager userCacheManager)
         {
             _trClient = trClient;
             _mapper = mapper;
@@ -52,6 +54,7 @@ namespace Hotline.Api.Controllers
             _logger = logger;
             _orderRepository = orderRepository;
             _orderVisitRepository = orderVisitRepository;
+            _userCacheManager = userCacheManager;
         }
 
         #region 添添呼
@@ -204,8 +207,22 @@ namespace Hotline.Api.Controllers
                 TimeSpan tsbegin = new TimeSpan(model.BeginQueueTime.Value.Ticks);
                 model.QueueTims = Convert.ToInt32(tsend.Subtract(tsbegin).TotalSeconds);
             }
-            
-
+            //获取分机号
+            if (model.CallDirection == ECallDirection.In)
+            {
+                model.TelNo = model.CDPN;
+            }
+            else
+            {
+                model.TelNo = model.CPN;
+            }
+            //获取用户
+            var work = await _userCacheManager.GetWorkByTelNoLast(model.TelNo);
+            if (work!=null)
+            {
+                model.UserId = work.UserId;
+                model.UserName = work.UserName;
+            }
             await _trCallRecordRepository.AddAsync(model, HttpContext.RequestAborted);
             return OpenResponse.Ok("success");
         }

+ 6 - 0
src/Hotline.Share/Dtos/Ai/AiDto.cs

@@ -6,6 +6,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.Ai
 {
@@ -78,6 +79,9 @@ namespace Hotline.Share.Dtos.Ai
         public DateTime EndTime { get; set; }
 
         public EAiOrderVisitTaskState TaskState { get; set; }
+
+        public string TaskStateText => TaskState.GetDescription();
+
         /// <summary>
         /// 批次上报结果ID
         /// </summary>
@@ -147,6 +151,8 @@ namespace Hotline.Share.Dtos.Ai
 
         public EAiOrderVisitState AiOrderVisitState { get; set; }
 
+        public string AiOrderVisitStateText => AiOrderVisitState.GetDescription();
+
         /// <summary>
         /// 批此上传成功后任务ID
         /// </summary>

+ 7 - 0
src/Hotline/Caching/Interfaces/IUserCacheManager.cs

@@ -4,6 +4,13 @@ namespace Hotline.Caching.Interfaces
 {
     public interface IUserCacheManager
     {
+        /// <summary>
+        ///  查询分机最近的工作记录
+        /// </summary>
+        /// <param name="telNo"></param>
+        /// <returns></returns>
+        Task<Work> GetWorkByTelNoLast(string telNo);
+
         /// <summary>
         /// 查询用户当前工作记录
         /// </summary>

+ 10 - 0
src/Hotline/Caching/Services/UserCacheManager.cs

@@ -20,6 +20,16 @@ public class UserCacheManager : IUserCacheManager, IScopeDependency
         _workRepository = workRepository;
     }
 
+    /// <summary>
+    /// 查询分机最近的工作记录
+    /// </summary>
+    /// <param name="telNo"></param>
+    /// <returns></returns>
+    public async Task<Work?> GetWorkByTelNoLast(string telNo)
+    {
+        return await _workRepository.Queryable().OrderByDescending(x => x.CreationTime).FirstAsync(x => x.TelNo == telNo);
+    }
+
     /// <summary>
     /// 查询用户当前工作记录
     /// </summary>

+ 6 - 0
src/Hotline/CallCenter/Calls/TrCallRecord.cs

@@ -40,6 +40,12 @@ namespace Hotline.CallCenter.Calls
         /// </summary>
         public string CDPN { get; set; }
         /// <summary>
+        /// 分机号
+        /// </summary>
+        public string TelNo { get; set; }
+        public string UserId { get; set; }
+        public string UserName { get; set; }
+        /// <summary>
         /// 通话录音绝对路径
         /// </summary>
         public string? RecordingFileName { get; set; }