Jason 1 年間 前
コミット
63047c9619

+ 251 - 251
src/Hotline.Application/CallCenter/Calls/CallRecordManager.cs

@@ -1,252 +1,252 @@
-using Hotline.CallCenter.Calls;
-using Hotline.Repository.SqlSugar;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-using Microsoft.Extensions.Logging;
-using SqlSugar;
-
-namespace Hotline.Application.CallCenter
-{
-    public class CallRecordManager : BackgroundService
-    {
-        private readonly IServiceScopeFactory _serviceScopeFactory;
-
-        public CallRecordManager(IServiceScopeFactory serviceScopeFactory, ISugarUnitOfWork<WexDbContext> uowWex)
-        {
-            _serviceScopeFactory = serviceScopeFactory;
-        }
-
-
-        //TODO
-        protected override async 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>();
-                var _uowWex = scope.ServiceProvider.GetService<ISugarUnitOfWork<WexDbContext>>();
-                var wexRes = _uowWex?.Db.Ado.SqlQuery<WexRecord>("select * from view_telinfo_full where IsSynch=@IsSynch and IsOk = @IsOk and CallType<>'会议' ", new { IsSynch = 0, IsOk = 1 });
-                if (wexRes != null)
-                {
-                    foreach (var item in wexRes)
-                    {
-                        var wexCallRecord = new WexCallRecord();
-                        wexCallRecord.CallId = item.CallId;
-                        //呼叫方向
-                        switch (item.CallType)
-                        {
-                            case "外呼":
-                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.Out;
-                                break;
-                            case "来电":
-                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
-                                break;
-                            case "中继":
-                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
-                                break;
-                            case "留言":
-                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
-                                break;
-                            case "黑名单":
-                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
-                                break;
-                            default:
-                                break;
-                        }
-                        if (wexCallRecord.Direction == Share.Enums.CallCenter.ECallDirection.Out)
-                        {
-                            wexCallRecord.CPN = item.TelPhone;
-                            wexCallRecord.CDPN = item.TrunkNum;
-                        }
-                        else
-                        {
-                            wexCallRecord.CPN = item.TrunkNum;
-                            wexCallRecord.CDPN = item.TelPhone;
-                        }
-                        wexCallRecord.StaffNo = item.GongHao;
-                        wexCallRecord.TelNo = item.FenJi;
-                        wexCallRecord.AreaName = item.AreaName;
-                        wexCallRecord.InIvrTime = item.BeginIvrTime;
-                        wexCallRecord.OutIvrTime = item.EndIvrTime;
-                        wexCallRecord.InQueueTime = item.BeginQueueTime;
-                        wexCallRecord.OutQueueTime = item.EndQueueTime;
-                        wexCallRecord.BeginTime = item.CallTime;
-                        wexCallRecord.BeginRingTime = item.BeginRingTime;
-                        wexCallRecord.EndRingTime = item.EndRingTime;
-                        wexCallRecord.RingTimes = int.Parse(item.RingTimes);
-                        wexCallRecord.AnsweredTime = item.BeginTalking;
-                        wexCallRecord.ByeTime = item.EndTalking;
-                        wexCallRecord.TalkTime = int.Parse(item.TalkLength);
-                        wexCallRecord.RecordUrl = item.RecordUrl;
-                        wexCallRecord.RecordName = item.RecordName;
-                        wexCallRecord.SourceRecord = item.SourceRecord;
-                        wexCallRecord.TrunkLine = item.TrunkNum;
-                        switch (item.NoAnswerResult)
-                        {
-                            case "客户先挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "外呼挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "员工先挂机":
-                                if (wexCallRecord.Direction == Share.Enums.CallCenter.ECallDirection.In)
-                                {
-                                    wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.To;
-                                }
-                                else
-                                {
-                                    wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                }
-                                break;
-                            case "坐席振铃挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.To;
-                                break;
-                            case "对端振铃挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "自助语音挂机":
-                                //TODO 确定不了是自动挂机 还是来电挂机(默认为来电挂机)
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "排队挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "中继转接挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "来电挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "开始转人工挂机":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "电话广播":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            case "播放工号":
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                            default:
-                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
-                                break;
-                        }
-                        switch (item.Result)
-                        {
-                            case "成功":
-                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.On;
-                                break;
-                            case "失败":
-                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.NoOn;
-                                break;
-                            case "接听":
-                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.On;
-                                break;
-                            case "未接":
-                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.NoOn;
-                                break;
-                            default:
-                                break;
-                        }
-                        wexCallRecord.Result = item.Result;
-                        wexCallRecord.EvaluateResult = item.AssessName;
-
-                        var id = await _wexCallRecordRepository.AddAsync(wexCallRecord);
-                        if (!string.IsNullOrEmpty(id))
-                        {
-                            //执行更新已下载数据
-                            _uowWex?.Db.Ado.ExecuteCommand("update telinfo set IsSynch=1 where GUID=@CallId", new { CallId = wexCallRecord.CallId });
-                        }
-                    }
-                }
-                else
-                {
-                    await Task.Delay(time, stoppingToken);
-                }
-            }
-        }
-
-
-        public class WexRecord
-        {
-            [SugarColumn(ColumnName = "CallID")]
-            public string CallId { get; set; }
-
-            [SugarColumn(ColumnName = "CallType")]
-            public string CallType { get; set; }
-
-            [SugarColumn(ColumnName = "Telphone")]
-            public string TelPhone { get; set; }
-
-            [SugarColumn(ColumnName = "TrunkLinePhone")]
-            public string TrunkNum { get; set; }
-
-            [SugarColumn(ColumnName = "GongHao")]
-            public string GongHao { get; set; }
-
-            [SugarColumn(ColumnName = "FenJi")]
-            public string FenJi { get; set; }
-
-            [SugarColumn(ColumnName = "AreaName")]
-            public string AreaName { get; set; }
-
-            [SugarColumn(ColumnName = "BeginIvrTime")]
-            public DateTime? BeginIvrTime { get; set; }
-
-            [SugarColumn(ColumnName = "EndIvrTime")]
-            public DateTime? EndIvrTime { get; set; }
-
-            [SugarColumn(ColumnName = "BeginQueueTime")]
-            public DateTime? BeginQueueTime { get; set; }
-
-            [SugarColumn(ColumnName = "EndQueueTime")]
-            public DateTime? EndQueueTime { get; set; }
-
-            [SugarColumn(ColumnName = "BeginRingTime")]
-            public DateTime? BeginRingTime { get; set; }
-
-            [SugarColumn(ColumnName = "EndRingTime")]
-            public DateTime? EndRingTime { get; set; }
-
-            [SugarColumn(ColumnName = "RingTimes")]
-            public string RingTimes { get; set; }
-
-            [SugarColumn(ColumnName = "CallTime")]
-            public DateTime? CallTime { get; set; }
-
-            [SugarColumn(ColumnName = "BeginTalking")]
-            public DateTime? BeginTalking { get; set; }
-
-            [SugarColumn(ColumnName = "EndTalking")]
-            public DateTime? EndTalking { get; set; }
-
-            /// <summary>
-            /// 通话时长
-            /// </summary>
-            [SugarColumn(ColumnName = "TalkLenth")]
-            public string TalkLength { get; set; }
-
-            [SugarColumn(ColumnName = "RecordUrl")]
-            public string RecordUrl { get; set; }
-
-            [SugarColumn(ColumnName = "RecordName")]
-            public string RecordName { get; set; }
-
-            [SugarColumn(ColumnName = "SourceRecord")]
-            public string SourceRecord { get; set; }
-
-            [SugarColumn(ColumnName = "noAnswerResult")]
-            public string NoAnswerResult { get; set; }
-
-            [SugarColumn(ColumnName = "Result")]
-            public string Result { get; set; }
+//using Hotline.CallCenter.Calls;
+//using Hotline.Repository.SqlSugar;
+//using Microsoft.Extensions.DependencyInjection;
+//using Microsoft.Extensions.Hosting;
+//using Microsoft.Extensions.Logging;
+//using SqlSugar;
+
+//namespace Hotline.Application.CallCenter
+//{
+//    public class CallRecordManager : BackgroundService
+//    {
+//        private readonly IServiceScopeFactory _serviceScopeFactory;
+
+//        public CallRecordManager(IServiceScopeFactory serviceScopeFactory, ISugarUnitOfWork<WexDbContext> uowWex)
+//        {
+//            _serviceScopeFactory = serviceScopeFactory;
+//        }
+
+
+//        //TODO
+//        protected override async 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>();
+//                var _uowWex = scope.ServiceProvider.GetService<ISugarUnitOfWork<WexDbContext>>();
+//                var wexRes = _uowWex?.Db.Ado.SqlQuery<WexRecord>("select * from view_telinfo_full where IsSynch=@IsSynch and IsOk = @IsOk and CallType<>'会议' ", new { IsSynch = 0, IsOk = 1 });
+//                if (wexRes != null)
+//                {
+//                    foreach (var item in wexRes)
+//                    {
+//                        var wexCallRecord = new WexCallRecord();
+//                        wexCallRecord.CallId = item.CallId;
+//                        //呼叫方向
+//                        switch (item.CallType)
+//                        {
+//                            case "外呼":
+//                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.Out;
+//                                break;
+//                            case "来电":
+//                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
+//                                break;
+//                            case "中继":
+//                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
+//                                break;
+//                            case "留言":
+//                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
+//                                break;
+//                            case "黑名单":
+//                                wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
+//                                break;
+//                            default:
+//                                break;
+//                        }
+//                        if (wexCallRecord.Direction == Share.Enums.CallCenter.ECallDirection.Out)
+//                        {
+//                            wexCallRecord.CPN = item.TelPhone;
+//                            wexCallRecord.CDPN = item.TrunkNum;
+//                        }
+//                        else
+//                        {
+//                            wexCallRecord.CPN = item.TrunkNum;
+//                            wexCallRecord.CDPN = item.TelPhone;
+//                        }
+//                        wexCallRecord.StaffNo = item.GongHao;
+//                        wexCallRecord.TelNo = item.FenJi;
+//                        wexCallRecord.AreaName = item.AreaName;
+//                        wexCallRecord.InIvrTime = item.BeginIvrTime;
+//                        wexCallRecord.OutIvrTime = item.EndIvrTime;
+//                        wexCallRecord.InQueueTime = item.BeginQueueTime;
+//                        wexCallRecord.OutQueueTime = item.EndQueueTime;
+//                        wexCallRecord.BeginTime = item.CallTime;
+//                        wexCallRecord.BeginRingTime = item.BeginRingTime;
+//                        wexCallRecord.EndRingTime = item.EndRingTime;
+//                        wexCallRecord.RingTimes = int.Parse(item.RingTimes);
+//                        wexCallRecord.AnsweredTime = item.BeginTalking;
+//                        wexCallRecord.ByeTime = item.EndTalking;
+//                        wexCallRecord.TalkTime = int.Parse(item.TalkLength);
+//                        wexCallRecord.RecordUrl = item.RecordUrl;
+//                        wexCallRecord.RecordName = item.RecordName;
+//                        wexCallRecord.SourceRecord = item.SourceRecord;
+//                        wexCallRecord.TrunkLine = item.TrunkNum;
+//                        switch (item.NoAnswerResult)
+//                        {
+//                            case "客户先挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "外呼挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "员工先挂机":
+//                                if (wexCallRecord.Direction == Share.Enums.CallCenter.ECallDirection.In)
+//                                {
+//                                    wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.To;
+//                                }
+//                                else
+//                                {
+//                                    wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                }
+//                                break;
+//                            case "坐席振铃挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.To;
+//                                break;
+//                            case "对端振铃挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "自助语音挂机":
+//                                //TODO 确定不了是自动挂机 还是来电挂机(默认为来电挂机)
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "排队挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "中继转接挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "来电挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "开始转人工挂机":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "电话广播":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            case "播放工号":
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                            default:
+//                                wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
+//                                break;
+//                        }
+//                        switch (item.Result)
+//                        {
+//                            case "成功":
+//                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.On;
+//                                break;
+//                            case "失败":
+//                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.NoOn;
+//                                break;
+//                            case "接听":
+//                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.On;
+//                                break;
+//                            case "未接":
+//                                wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.NoOn;
+//                                break;
+//                            default:
+//                                break;
+//                        }
+//                        wexCallRecord.Result = item.Result;
+//                        wexCallRecord.EvaluateResult = item.AssessName;
+
+//                        var id = await _wexCallRecordRepository.AddAsync(wexCallRecord);
+//                        if (!string.IsNullOrEmpty(id))
+//                        {
+//                            //执行更新已下载数据
+//                            _uowWex?.Db.Ado.ExecuteCommand("update telinfo set IsSynch=1 where GUID=@CallId", new { CallId = wexCallRecord.CallId });
+//                        }
+//                    }
+//                }
+//                else
+//                {
+//                    await Task.Delay(time, stoppingToken);
+//                }
+//            }
+//        }
+
+
+//        public class WexRecord
+//        {
+//            [SugarColumn(ColumnName = "CallID")]
+//            public string CallId { get; set; }
+
+//            [SugarColumn(ColumnName = "CallType")]
+//            public string CallType { get; set; }
+
+//            [SugarColumn(ColumnName = "Telphone")]
+//            public string TelPhone { get; set; }
+
+//            [SugarColumn(ColumnName = "TrunkLinePhone")]
+//            public string TrunkNum { get; set; }
+
+//            [SugarColumn(ColumnName = "GongHao")]
+//            public string GongHao { get; set; }
+
+//            [SugarColumn(ColumnName = "FenJi")]
+//            public string FenJi { get; set; }
+
+//            [SugarColumn(ColumnName = "AreaName")]
+//            public string AreaName { get; set; }
+
+//            [SugarColumn(ColumnName = "BeginIvrTime")]
+//            public DateTime? BeginIvrTime { get; set; }
+
+//            [SugarColumn(ColumnName = "EndIvrTime")]
+//            public DateTime? EndIvrTime { get; set; }
+
+//            [SugarColumn(ColumnName = "BeginQueueTime")]
+//            public DateTime? BeginQueueTime { get; set; }
+
+//            [SugarColumn(ColumnName = "EndQueueTime")]
+//            public DateTime? EndQueueTime { get; set; }
+
+//            [SugarColumn(ColumnName = "BeginRingTime")]
+//            public DateTime? BeginRingTime { get; set; }
+
+//            [SugarColumn(ColumnName = "EndRingTime")]
+//            public DateTime? EndRingTime { get; set; }
+
+//            [SugarColumn(ColumnName = "RingTimes")]
+//            public string RingTimes { get; set; }
+
+//            [SugarColumn(ColumnName = "CallTime")]
+//            public DateTime? CallTime { get; set; }
+
+//            [SugarColumn(ColumnName = "BeginTalking")]
+//            public DateTime? BeginTalking { get; set; }
+
+//            [SugarColumn(ColumnName = "EndTalking")]
+//            public DateTime? EndTalking { get; set; }
+
+//            /// <summary>
+//            /// 通话时长
+//            /// </summary>
+//            [SugarColumn(ColumnName = "TalkLenth")]
+//            public string TalkLength { get; set; }
+
+//            [SugarColumn(ColumnName = "RecordUrl")]
+//            public string RecordUrl { get; set; }
+
+//            [SugarColumn(ColumnName = "RecordName")]
+//            public string RecordName { get; set; }
+
+//            [SugarColumn(ColumnName = "SourceRecord")]
+//            public string SourceRecord { get; set; }
+
+//            [SugarColumn(ColumnName = "noAnswerResult")]
+//            public string NoAnswerResult { get; set; }
+
+//            [SugarColumn(ColumnName = "Result")]
+//            public string Result { get; set; }
 
-            [SugarColumn(ColumnName = "AssessName")]
-            public string AssessName { get; set; }
-        }
-    }
-}
+//            [SugarColumn(ColumnName = "AssessName")]
+//            public string AssessName { get; set; }
+//        }
+//    }
+//}

+ 18 - 3
src/Hotline/Settings/TimeLimits/TimeLimitDomainService.cs

@@ -1,4 +1,5 @@
 using Hotline.Share.Dtos.Settings;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Settings;
 using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
@@ -18,12 +19,26 @@ namespace Hotline.Settings.TimeLimits
 
             //初始化常量
             timeSettingList = new List<CalcTimeSetting>();
-            CalcTimeSetting setting1 = new CalcTimeSetting() { BugCode = "", BusName = "", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            CalcTimeSetting setting1 = new CalcTimeSetting() { BugCode = "", BusName = "咨询", TimeType = ETimeType.WorkDay, TimeValue = 3 };
             timeSettingList.Add(setting1);
-            CalcTimeSetting setting2 = new CalcTimeSetting() { BugCode = "", BusName = "", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            CalcTimeSetting setting2 = new CalcTimeSetting() { BugCode = "", BusName = "举报", TimeType = ETimeType.WorkDay, TimeValue = 3 };
             timeSettingList.Add(setting2);
-            CalcTimeSetting setting3 = new CalcTimeSetting() { BugCode = "", BusName = "", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            CalcTimeSetting setting3 = new CalcTimeSetting() { BugCode = "", BusName = "投诉", TimeType = ETimeType.WorkDay, TimeValue = 5 };
             timeSettingList.Add(setting3);
+            CalcTimeSetting setting4 = new CalcTimeSetting() { BugCode = "", BusName = "求助", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            timeSettingList.Add(setting4);
+            CalcTimeSetting setting5 = new CalcTimeSetting() { BugCode = "", BusName = "建议", TimeType = ETimeType.WorkDay, TimeValue = 3 };
+            timeSettingList.Add(setting5);
+            CalcTimeSetting setting6 = new CalcTimeSetting() { BugCode = "", BusName = "意见", TimeType = ETimeType.WorkDay, TimeValue = 3 };
+            timeSettingList.Add(setting6);
+            CalcTimeSetting setting7 = new CalcTimeSetting() { BugCode = "", BusName = "惠民帮助", TimeType = ETimeType.WorkDay, TimeValue = 3 };
+            timeSettingList.Add(setting7);
+            CalcTimeSetting setting8 = new CalcTimeSetting() { BugCode = "", BusName = "大气污染举报", TimeType = ETimeType.WorkDay, TimeValue = 5 };
+            timeSettingList.Add(setting8);
+            CalcTimeSetting setting9 = new CalcTimeSetting() { BugCode = "", BusName = "表扬", TimeType = ETimeType.WorkDay, TimeValue = 3 };
+            timeSettingList.Add(setting9);
+            CalcTimeSetting setting10 = new CalcTimeSetting() { BugCode = "", BusName = "其他", TimeType = ETimeType.WorkDay, TimeValue = 3 };
+            timeSettingList.Add(setting10);
         }
 
         public async Task<string> AddAsync(TimeLimit model, CancellationToken cancellationToken)