浏览代码

话务管理——未接通

libin 5 天之前
父节点
当前提交
f205452a34

+ 5 - 4
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -762,8 +762,7 @@ namespace Hotline.Api.Controllers
         [HttpGet("calls/call-list")]
         public async Task<PagedDto<TrCallDto>> GetCallList([FromQuery] GetCallListDto dto)
         {
-            var isCallBindOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsCallBindOrder).SettingValue[0]);
-            var (total, items) = await _callRecordRepository.GetCallList(dto, isCallBindOrder)
+            var (total, items) = await _callRecordRepository.GetCallList(dto)
                 .ToPagedListAsync(dto.PageIndex, dto.PageSize);
             return new PagedDto<TrCallDto>(total, _mapper.Map<IReadOnlyList<TrCallDto>>(items));
         }
@@ -777,7 +776,7 @@ namespace Hotline.Api.Controllers
         [LogFilterAlpha("导出日志")]
         public async Task<FileStreamResult> GetCallListExport([FromBody] ExportExcelDto<GetCallListDto> dto)
         {
-            var query = _callRecordRepository.GetCallList(dto.QueryDto, false);
+            var query = _callRecordRepository.GetCallList(dto.QueryDto);
             List<TrCallRecord> data;
             if (dto.IsExportAll)
             {
@@ -822,12 +821,14 @@ namespace Hotline.Api.Controllers
         [HttpGet("calls/basedata")]
         public async Task<object> CallBaseData()
         {
+            var isCallBindOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsCallBindOrder).SettingValue[0]);
             return new
             {
                 OnState = EnumExts.GetDescriptions<EOnState>(),
                 CallDirection = EnumExts.GetDescriptions<ECallDirection>(),
                 EndBy = EnumExts.GetDescriptions<EEndBy>(),
-                PhoneTypes = EnumExts.GetDescriptions<EPhoneTypes>()
+                PhoneTypes = EnumExts.GetDescriptions<EPhoneTypes>(),
+                IsCallBindOrder = isCallBindOrder
             };
         }
 

+ 11 - 13
src/Hotline.Repository.SqlSugar/CallCenter/TrCallRecordRepository.cs

@@ -6,6 +6,7 @@ using Hotline.Share.Dtos.CallCenter;
 using Hotline.Share.Dtos.TrCallCenter;
 using Hotline.Share.Enums.CallCenter;
 using SqlSugar;
+using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 using static System.Runtime.InteropServices.JavaScript.JSType;
 
@@ -13,8 +14,15 @@ namespace Hotline.Repository.SqlSugar.CallCenter
 {
     public class TrCallRecordRepository : BaseRepository<TrCallRecord>, ITrCallRecordRepository, IScopeDependency
     {
-        public TrCallRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder, IServiceProvider serviceProvider) : base(uow, dataPermissionFilterBuilder, serviceProvider)
+        private readonly ISessionContext _sessionContext;
+
+        public TrCallRecordRepository(
+            ISugarUnitOfWork<HotlineDbContext> uow,
+            IDataPermissionFilterBuilder dataPermissionFilterBuilder,
+            IServiceProvider serviceProvider,
+            ISessionContext sessionContext) : base(uow, dataPermissionFilterBuilder, serviceProvider)
         {
+            _sessionContext = sessionContext;
         }
 
         public async Task<List<BiCallDto>> GetQueryCalls(DateTime beginDate, DateTime endDate, string? Line)
@@ -241,7 +249,7 @@ namespace Hotline.Repository.SqlSugar.CallCenter
         }
 
 
-        public ISugarQueryable<TrCallRecord> GetCallList(GetCallListDto dto, bool bindOrder)
+        public ISugarQueryable<TrCallRecord> GetCallList(GetCallListDto dto)
         {
             return Db.Queryable<TrCallRecord>()
                  .Includes(x => x.Order)
@@ -252,42 +260,32 @@ namespace Hotline.Repository.SqlSugar.CallCenter
                  .WhereIF(dto.CallDirection != null, x => x.CallDirection == dto.CallDirection)
                  .WhereIF(dto.OnState != null, x => x.OnState == dto.OnState)
                  .WhereIF(dto.EndBy != null, x => x.EndBy == dto.EndBy)
-
                  .WhereIF(dto.BeginIvrTimeStart.HasValue, x => x.BeginIvrTime >= dto.BeginIvrTimeStart)
                  .WhereIF(dto.BeginIvrTimeEnd.HasValue, x => x.BeginIvrTime <= dto.BeginIvrTimeEnd)
-
                  .WhereIF(dto.EndIvrTimeStart.HasValue, x => x.EndIvrTime >= dto.EndIvrTimeStart)
                  .WhereIF(dto.EndIvrTimeEnd.HasValue, x => x.EndIvrTime <= dto.EndIvrTimeEnd)
-
                  .WhereIF(dto.BeginQueueTimeStart.HasValue, x => x.BeginQueueTime >= dto.BeginQueueTimeEnd)
                  .WhereIF(dto.BeginQueueTimeEnd.HasValue, x => x.BeginQueueTime <= dto.BeginQueueTimeEnd)
-
                  .WhereIF(dto.EndQueueTimeStart.HasValue, x => x.EndQueueTime >= dto.EndQueueTimeStart)
                  .WhereIF(dto.EndQueueTimeEnd.HasValue, x => x.EndQueueTime <= dto.EndQueueTimeEnd)
-
                  .WhereIF(dto.AnsweredTimeStart.HasValue, x => x.AnsweredTime >= dto.AnsweredTimeStart)
                  .WhereIF(dto.AnsweredTimeEnd.HasValue, x => x.AnsweredTime <= dto.AnsweredTimeEnd)
-
                  .WhereIF(dto.OverTimeStart.HasValue, x => x.OverTime >= dto.OverTimeStart)
                  .WhereIF(dto.OverTimeEnd.HasValue, x => x.OverTime <= dto.OverTimeEnd)
-
                  .WhereIF(dto.BeginRingTimeStart.HasValue, x => x.BeginRingTime >= dto.BeginRingTimeStart)
                  .WhereIF(dto.BeginRingTimeEnd.HasValue, x => x.BeginRingTime <= dto.BeginRingTimeEnd)
-
                  .WhereIF(dto.EndRingTimeStart.HasValue, x => x.EndRingTimg >= dto.EndRingTimeStart)
                  .WhereIF(dto.EndRingTimeEnd.HasValue, x => x.EndRingTimg <= dto.EndRingTimeEnd)
-
                  .WhereIF(dto.CallTimeStart.HasValue, x => x.CreatedTime >= dto.CallTimeStart)
                  .WhereIF(dto.CallTimeEnd.HasValue, x => x.CreatedTime <= dto.CallTimeEnd)
-
                  .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), x => x.Order.No.Contains(dto.OrderNo))
                  .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Order.Title.Contains(dto.Title))
                  .WhereIF(!string.IsNullOrEmpty(dto.Gateway), x => x.Gateway.Contains(dto.Gateway))
                  .WhereIF(dto.IsSensitiveWord.HasValue && dto.IsSensitiveWord == true, d => d.Sensitive != null && SqlFunc.JsonArrayLength(d.Sensitive) > 0)
                  .WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord), d => SqlFunc.JsonArrayAny(d.Sensitive, dto.SensitiveWord))
                  .WhereIF(dto.IsAiAnswered == true, x => string.IsNullOrEmpty(x.UserId) == true && x.BeginIvrTime.HasValue && x.EndIvrTime.HasValue)
-
                  .WhereIF(dto.PhoneTypes != null, x => x.PhoneTypes == dto.PhoneTypes)
+                 .WhereIF(dto.QuerySelf.HasValue && dto.QuerySelf == true, x => x.UserId == _sessionContext.UserId)
                  .OrderByDescending(x => x.CreatedTime);
         }
 

+ 6 - 1
src/Hotline.Share/Dtos/TrCallCenter/TrTelDao.cs

@@ -577,6 +577,11 @@ namespace Hotline.Share.Dtos.TrCallCenter
         /// 敏感词
         /// </summary>
         public string? SensitiveWord { get; set; }
+
+        /// <summary>
+        /// 是否自己的通话记录
+        /// </summary>
+        public bool? QuerySelf { get; set; }
     }
 
 
@@ -715,7 +720,7 @@ namespace Hotline.Share.Dtos.TrCallCenter
         /// <summary>
         /// 允许关联工单
         /// </summary>
-        public bool? IsBindOrder { get; set; }
+        public bool? IsBindOrder => !string.IsNullOrEmpty(UserId) && Order == null ? true : false;
 
         #region 自定义字段
         /// <summary>

+ 1 - 1
src/Hotline/CallCenter/Calls/ITrCallRecordRepository.cs

@@ -33,7 +33,7 @@ namespace Hotline.CallCenter.Calls
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        ISugarQueryable<TrCallRecord> GetCallList(GetCallListDto dto, bool bindOrder);
+        ISugarQueryable<TrCallRecord> GetCallList(GetCallListDto dto);
 
         /// <summary>
         /// 话务日期统计明细