|
@@ -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);
|
|
|
}
|
|
|
|
|
|
|