Browse Source

refactor: QualityController CallApplication

xfe 9 months ago
parent
commit
6fde0f58ae
1 changed files with 74 additions and 19 deletions
  1. 74 19
      src/Hotline.Api/Controllers/QualityController.cs

+ 74 - 19
src/Hotline.Api/Controllers/QualityController.cs

@@ -25,6 +25,9 @@ using Hotline.Ai.Quality;
 using Newtonsoft.Json;
 using Polly;
 using Hotline.Api.Filter;
+using Hotline.Application.CallCenter;
+using Hotline.CallCenter.Configs;
+using Microsoft.Extensions.Options;
 using XF.Domain.Constants;
 
 namespace Hotline.Api.Controllers
@@ -46,6 +49,8 @@ namespace Hotline.Api.Controllers
 		private readonly IAiQualityService _aiQualityService;
 		private readonly ILogger<QualityController> _logger;
 		private readonly ISystemSettingCacheManager _systemSettingCacheManager;
+		private readonly ICallApplication _callApplication;
+		private readonly IOptionsSnapshot<CallCenterConfiguration> _callcenterOptions;
 
 		public QualityController(
 			ISessionContext sessionContext,
@@ -62,8 +67,9 @@ namespace Hotline.Api.Controllers
 			IOrderRepository orderRepository,
 			IAiQualityService aiQualityService,
 			ILogger<QualityController> logger,
-			ISystemSettingCacheManager systemSettingCacheManager
-		)
+			ISystemSettingCacheManager systemSettingCacheManager,
+			ICallApplication callApplication,
+			IOptionsSnapshot<CallCenterConfiguration> callcenterOptions)
 		{
 			_sessionContext = sessionContext;
 			_mapper = mapper;
@@ -80,6 +86,8 @@ namespace Hotline.Api.Controllers
 			_aiQualityService = aiQualityService;
 			_logger = logger;
 			_systemSettingCacheManager = systemSettingCacheManager;
+			_callApplication = callApplication;
+			_callcenterOptions = callcenterOptions;
 		}
 		#region 质检管理
 		/// <summary>
@@ -152,25 +160,72 @@ namespace Hotline.Api.Controllers
 				.Includes(x => x.QualityDetails)
 				.FirstAsync(x => x.Id == id);
 			var qualityDto = _mapper.Map<QualityDto>(quality);
-			if (qualityDto.Order != null) {
-                //var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Order.CallId).FirstAsync(); //由CallAccept改为OtherAccept
-                var call = await _trCallRecordRepository.Queryable().Where(x => x.OtherAccept == qualityDto.Order.CallId).FirstAsync();
-                if (call != null)
-                {
-					qualityDto.Order.RecordingBaseAddress = call.RecordingBaseAddress;
-					qualityDto.Order.RecordingAbsolutePath = call.RecordingAbsolutePath;
-                }
+			// if (qualityDto.Order != null) {
+   //              //var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Order.CallId).FirstAsync(); //由CallAccept改为OtherAccept
+   //              var call = await _trCallRecordRepository.Queryable().Where(x => x.OtherAccept == qualityDto.Order.CallId).FirstAsync();
+   //              if (call != null)
+   //              {
+			// 		qualityDto.Order.RecordingBaseAddress = call.RecordingBaseAddress;
+			// 		qualityDto.Order.RecordingAbsolutePath = call.RecordingAbsolutePath;
+   //              }
+			// }
+			// if (qualityDto.Visit != null)
+			// {
+   //              //var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Visit.CallId).FirstAsync(); //由CallAccept改为OtherAccept
+   //              var call = await _trCallRecordRepository.Queryable().Where(x => x.OtherAccept == qualityDto.Visit.CallId).FirstAsync();
+   //              if (call != null)
+   //              {
+   //                  qualityDto.Visit.RecordingBaseAddress = call.RecordingBaseAddress;
+   //                  qualityDto.Visit.RecordingAbsolutePath = call.RecordingAbsolutePath;
+   //              }
+   //          }
+			
+			if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.TianRun)
+			{
+				if (qualityDto.Order != null) {
+					//var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Order.CallId).FirstAsync(); //由CallAccept改为OtherAccept
+					//var call = await _trCallRecordRepository.Queryable().Where(x => x.OtherAccept == qualityDto.Order.CallId).FirstAsync();
+					var call = await _callApplication.GetTianrunCallAsync(qualityDto.Order.CallId, HttpContext.RequestAborted); 
+					if (call != null)
+					{
+						qualityDto.Order.RecordingBaseAddress = call.RecordingBaseAddress;
+						qualityDto.Order.RecordingAbsolutePath = call.RecordingAbsolutePath;
+					}
+				}
+				if (qualityDto.Visit != null)
+				{
+					//var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Visit.CallId).FirstAsync(); //由CallAccept改为OtherAccept
+					// var call = await _trCallRecordRepository.Queryable().Where(x => x.OtherAccept == qualityDto.Visit.CallId).FirstAsync();
+					var call = await _callApplication.GetTianrunCallAsync(qualityDto.Visit.CallId, HttpContext.RequestAborted);
+					if (call != null)
+					{
+						qualityDto.Visit.RecordingBaseAddress = call.RecordingBaseAddress;
+						qualityDto.Visit.RecordingAbsolutePath = call.RecordingAbsolutePath;
+					}
+				}
 			}
-			if (qualityDto.Visit != null)
+			else if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.XingTang)
 			{
-                //var call = await _trCallRecordRepository.Queryable().Where(x => x.CallAccept == qualityDto.Visit.CallId).FirstAsync(); //由CallAccept改为OtherAccept
-                var call = await _trCallRecordRepository.Queryable().Where(x => x.OtherAccept == qualityDto.Visit.CallId).FirstAsync();
-                if (call != null)
-                {
-                    qualityDto.Visit.RecordingBaseAddress = call.RecordingBaseAddress;
-                    qualityDto.Visit.RecordingAbsolutePath = call.RecordingAbsolutePath;
-                }
-            }
+				if (!string.IsNullOrEmpty(qualityDto?.Order?.CallId))
+				{
+					var call = await _callApplication.GetCallAsync(qualityDto.Order.CallId, HttpContext.RequestAborted); 
+					if (call != null)
+					{
+						qualityDto.Order.RecordingBaseAddress = call.AudioFile;
+						qualityDto.Order.RecordingAbsolutePath = call.AudioFile;
+					}
+				}
+				if (!string.IsNullOrEmpty(qualityDto.Visit.CallId))
+				{
+					var call = await _callApplication.GetCallAsync(qualityDto.Visit.CallId, HttpContext.RequestAborted);
+					if (call != null)
+					{
+						qualityDto.Visit.RecordingBaseAddress = call.AudioFile;
+						qualityDto.Visit.RecordingAbsolutePath = call.AudioFile;
+					}
+				}
+			}
+			
 			return qualityDto;
 		}
 		#endregion