Browse Source

callrecord

Jason 1 năm trước cách đây
mục cha
commit
eb51890abf

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

@@ -324,8 +324,10 @@ public class OrderController : BaseController
 
         _orderVisitedRepository.UpdateNav(visit);
 
+        var orderDto = _mapper.Map<OrderDto>(visit.Order);
+
         //推省上
-        _capPublisher.Publish(EventNames.HotlineOrderVisited, new PublishVisitDto() { No = visit.No, VisitType = visit.VisitType, VisitName = visit.Employee.Name , VisitTime = visit.VisitTime, VisitRemark = "", AreaCode = visit.Order.AreaCode!, SubjectResultSatify = first.OrgProcessingResults, FirstSatisfaction = new IdName(visit.Order.FirstVisitResultCode!,visit.Order.FirstVisitResult!), ClientGuid="" });
+        _capPublisher.Publish(EventNames.HotlineOrderVisited, new PublishVisitDto() { Order = orderDto, No = visit.No, VisitType = visit.VisitType, VisitName = visit.Employee.Name , VisitTime = visit.VisitTime, VisitRemark = "", AreaCode = visit.Order.AreaCode!, SubjectResultSatify = first.OrgProcessingResults, FirstSatisfaction = new IdName(visit.Order.FirstVisitResultCode!,visit.Order.FirstVisitResult!), ClientGuid="" });
     }
 
     #endregion

+ 1 - 1
src/Hotline.Api/Controllers/SysController.cs

@@ -265,7 +265,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        [Permission(EPermission.AddDicData)]
+        [Permission(EPermission.AddDicData)] 
         [HttpPost("add-dicdata")]
         public async Task AddDicData([FromBody] AddDicDataDto dto)
         {

+ 19 - 0
src/Hotline.Repository.SqlSugar/CallCenter/WexCallRecordRepository.cs

@@ -0,0 +1,19 @@
+using Hotline.CallCenter.Calls;
+using Hotline.Repository.SqlSugar.DataPermissions;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Dependency;
+
+namespace Hotline.Repository.SqlSugar.CallCenter
+{
+    public class WexCallRecordRepository : BaseRepository<WexCallRecord>, IWexCallRecordRepository, IScopeDependency
+    {
+        public WexCallRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+        {
+        }
+    }
+}

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -537,6 +537,11 @@ namespace Hotline.Share.Dtos.Order
 
     public class PublishVisitDto
     {
+        /// <summary>
+        /// 工单对象
+        /// </summary>
+        public OrderDto Order { get; set; }
+
         /// <summary>
         /// 服务工单编号
         /// </summary>

+ 47 - 0
src/Hotline/Caching/Services/CallRecordManager.cs

@@ -0,0 +1,47 @@
+using Hotline.CallCenter.Calls;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using SqlSugar;
+
+namespace Hotline.Caching.Services
+{
+    public class CallRecordManager : BackgroundService
+    {
+        private readonly IServiceScopeFactory _serviceScopeFactory;
+
+        public CallRecordManager(IServiceScopeFactory serviceScopeFactory)
+        {
+            _serviceScopeFactory = serviceScopeFactory;
+        }
+
+
+
+        protected override Task ExecuteAsync(CancellationToken stoppingToken)
+        {
+            //20秒扫描一次威尔信数据库
+            //using var sc = _serviceScopeFactory.CreateScope();
+            //var _logger = sc.ServiceProvider.GetService<ILogger<CallRecordManager>>();
+            //var time = TimeSpan.FromSeconds(20);
+            //while(!stoppingToken.IsCancellationRequested)
+            //{
+            //    using var scope = _serviceScopeFactory.CreateScope();
+            //    var _wexCallRecordRepository = scope.ServiceProvider.GetService<IWexCallRecordRepository>();
+            //}
+            throw new NotImplementedException();
+        }
+
+
+        public class WexRecord
+        {
+            [SugarColumn(ColumnName = "CallID")]
+            public string CallId { get; set; }
+
+            [SugarColumn(ColumnName = "CallType")]
+            public string CallType { get; set; }
+
+            
+        }
+    }
+}

+ 9 - 0
src/Hotline/CallCenter/Calls/IWexCallRecordRepository.cs

@@ -0,0 +1,9 @@
+using XF.Domain.Repository;
+
+namespace Hotline.CallCenter.Calls
+{
+    public interface IWexCallRecordRepository : IRepository<WexCallRecord>
+    {
+
+    }
+}

+ 123 - 0
src/Hotline/CallCenter/Calls/WexCallRecord.cs

@@ -0,0 +1,123 @@
+using Hotline.Share.Enums.CallCenter;
+using SqlSugar;
+using XF.Domain.Repository;
+
+namespace Hotline.CallCenter.Calls
+{
+    public class WexCallRecord:CreationEntity
+    {
+        /// <summary>
+        /// 电话方向
+        /// </summary>
+        public ECallDirection Direction { get; set; }
+
+        /// <summary>
+        /// 应答分机号
+        /// </summary>
+        [SugarColumn(IsNullable = true)]
+        public string TelNo { get; set; }
+
+        /// <summary>
+        /// 工号
+        /// </summary>
+        [SugarColumn(IsNullable = true)]
+        public string StaffNo { get; set; }
+
+        /// <summary>
+        /// 主叫
+        /// </summary>
+        public string CPN { get; set; }
+
+        /// <summary>
+        /// 被叫
+        /// </summary>
+        public string CDPN { get; set; }
+
+        /// <summary>
+        /// 号码归属地
+        /// </summary>
+        [SugarColumn(IsNullable = true)]
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 进入IVR时间
+        /// </summary>
+        public DateTime? InIvrTime { get; set; }
+
+
+        /// <summary>
+        /// 离开 IVR时间
+        /// </summary>
+        public DateTime? OutIvrTime { get; set; }
+
+
+        /// <summary>
+        /// 进入队列时间
+        /// </summary>
+        public DateTime? InQueueTime { get; set; }
+
+        
+        /// <summary>
+        /// 离开队列时间
+        /// </summary>
+        public DateTime? OutQueueTime { get; set; }
+
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        public DateTime BeginTime { get; set; }
+
+        /// <summary>
+        /// 振铃时间
+        /// </summary>
+        public DateTime? RingTime { get; set; }
+
+        /// <summary>
+        /// 振铃时长
+        /// </summary>
+        public int RingTimes { get; set; }
+
+        /// <summary>
+        /// 接听时间
+        /// </summary>
+        public DateTime? AnsweredTime { get; set; }
+
+        /// <summary>
+        /// 挂断时间
+        /// </summary>
+        public DateTime? ByeTime { get; set; }
+
+        /// <summary>
+        /// 通话时长
+        /// </summary>
+        public int TalkTime { get; set; }
+
+        /// <summary>
+        /// 录音播放路径
+        /// </summary>
+        public string RecordUrl { get; set; }
+
+        /// <summary>
+        /// 录音相对路径
+        /// </summary>
+        public string SourceRecord { get; set; }
+
+        /// <summary>
+        /// 通话结果
+        /// </summary>
+        public EOnState OnState { get; set; }
+
+
+        /// <summary>
+        /// 挂断方
+        /// </summary>
+        public EEndBy EndBy { get; set; }
+
+
+        /// <summary>
+        /// 评价结果
+        /// </summary>
+        public string EvaluateResult { get; set; }
+
+    }
+}