Browse Source

query-telstate

Dun.Jason 10 months ago
parent
commit
7629626701

+ 31 - 1
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.IdentityModel.Tokens;
 using Newtonsoft.Json;
+using SqlSugar;
 using Tr.Sdk;
 using Tr.Sdk.Blacklist;
 using Tr.Sdk.Tels;
@@ -124,7 +125,36 @@ namespace Hotline.Api.Controllers
         public async Task<IReadOnlyList<TrTelStateDto>> TrQueryTelState([FromQuery] string? state)
         {
             var tels = await _trClient.QueryTelStateAsync(new QueryTelStateRequest() { State = state }, HttpContext.RequestAborted);
-            return _mapper.Map<IReadOnlyList<TrTelStateDto>>(tels.AgentList);
+            var workList = _userCacheManager.GetWorks();
+            var query = from tel in tels.AgentList
+                        join works in workList on tel.TelNo equals works.TelNo into workD
+                        from work in workD.DefaultIfEmpty()
+                        select new TrTelStateDto
+                        {
+                            Id = tel.Id,
+                            TelNo =tel.TelNo,
+                            ChannelUUid =tel.ChannelUUid,
+                            TelName =tel.TelName,
+                            Type = tel.Type,
+                            Weight =tel.Weight,
+                            Queue = tel.Queue,
+                            State = tel.State,
+                            OldState = tel.OldState,
+                            Device = tel.Device,
+                            SipIp = tel.SipIp,
+                            PrivateData = tel.PrivateData,
+                            SipState = tel.SipState,
+                            CreatedAt = tel.CreatedAt,
+                            UpdatedAt = tel.UpdatedAt,
+                            CallDirection = tel.CallDirection,
+                            OtherNumber = tel.OtherNumber,
+                            GateWay = tel.GateWay,
+                            AnsweredAt = tel.AnsweredAt,
+                            WorkUserId = (work != null) ? work.UserId: "",
+                            WorkUserName = (work != null) ? work.UserName: "",
+                        };
+            var list = query.OrderBy(x=>x.TelNo).OrderByDescending(x=>x.CreatedAt).ToList();
+            return list;// _mapper.Map<IReadOnlyList<TrTelStateDto>>(tels.AgentList);
         }
 
 

+ 10 - 0
src/Hotline.Share/Dtos/TrCallCenter/TrTelDao.cs

@@ -119,6 +119,16 @@ namespace Hotline.Share.Dtos.TrCallCenter
         /// 接听时间
         /// </summary>
         public string? AnsweredAt { get; set; }
+
+        /// <summary>
+        /// 分机用户名
+        /// </summary>
+        public string? WorkUserName { get; set; }
+
+        /// <summary>
+        /// 分机用户ID
+        /// </summary>
+        public string? WorkUserId { get; set; }
     }