IPPbxController.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. using Hotline.Application.CallCenter.Calls;
  2. using Hotline.Caching.Interfaces;
  3. using Hotline.CallCenter.Calls;
  4. using Hotline.Permissions;
  5. using Hotline.Settings;
  6. using Hotline.Share.Dtos.TrCallCenter;
  7. using Hotline.Users;
  8. using MapsterMapper;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Mvc;
  11. using System.Text.Json;
  12. using Tr.Sdk;
  13. using Tr.Sdk.Blacklist;
  14. using Tr.Sdk.Tels;
  15. using XF.Domain.Authentications;
  16. using XF.Domain.Filters;
  17. using XF.Domain.Repository;
  18. namespace Hotline.Api.Controllers
  19. {
  20. public class IPPbxController:BaseController
  21. {
  22. private readonly ITrClient _trClient;
  23. private readonly IMapper _mapper;
  24. private readonly IUserDomainService _userDomainService;
  25. private readonly ISessionContext _sessionContext;
  26. private readonly IRepository<TrCallRecord> _trCallRecordRepository;
  27. private readonly ITrApplication _trApplication;
  28. private readonly IRepository<TrCallEvaluate> _trCallEvaluate;
  29. private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
  30. private readonly ILogger<IPPbxController> _logger;
  31. public IPPbxController(ITrClient trClient,IMapper mapper,IUserDomainService userDomainService,ISessionContext sessionContext,IRepository<TrCallRecord> trCallRecordRepository,ITrApplication trApplication,IRepository<TrCallEvaluate> trCallRecord,ISystemDicDataCacheManager systemDicDataCacheManager,ILogger<IPPbxController> logger)
  32. {
  33. _trClient = trClient;
  34. _mapper = mapper;
  35. _userDomainService = userDomainService;
  36. _sessionContext = sessionContext;
  37. _trCallRecordRepository = trCallRecordRepository;
  38. _trApplication = trApplication;
  39. _trCallEvaluate = trCallRecord;
  40. _systemDicDataCacheManager = systemDicDataCacheManager;
  41. _logger = logger;
  42. }
  43. #region 添添呼
  44. #region 分机
  45. /// <summary>
  46. /// 查询所有分机
  47. /// </summary>
  48. /// <returns></returns>
  49. [HttpGet("query-tels")]
  50. public async Task<IReadOnlyList<TrTelDto>> TrQueryTels()
  51. {
  52. var tels = await _trClient.QueryTelsAsync(new QueryTelRequest() { }, HttpContext.RequestAborted);
  53. return _mapper.Map<IReadOnlyList<TrTelDto>>(tels);
  54. }
  55. #endregion
  56. #region 黑白名单
  57. /// <summary>
  58. /// 新增黑白名单
  59. /// </summary>
  60. /// <param name="dto"></param>
  61. /// <returns></returns>
  62. [Permission(EPermission.AddBlackList)]
  63. [HttpPost("add-blacklist")]
  64. public async Task AddBlacklist([FromBody]TrAddBlacklistDto dto)
  65. {
  66. await _trClient.AddBlacklistAsync(new AddBlacklistRequest() { Phone = dto.Phone, SpecialFlag = dto.SpecialFlag }, HttpContext.RequestAborted);
  67. }
  68. /// <summary>
  69. /// 删除黑白名单
  70. /// </summary>
  71. /// <param name="dto"></param>
  72. /// <returns></returns>
  73. [Permission(EPermission.RemoveBlacklist)]
  74. [HttpPost("remove-blacklist")]
  75. public async Task DelBlacklist([FromBody]TrDelBlacklistDto dto)
  76. {
  77. await _trClient.DelBlacklistAsync(new DelBlacklistRequest() { Phone = dto.Phone, SpecialFlag = dto.SpecialFlag }, HttpContext.RequestAborted);
  78. }
  79. /// <summary>
  80. /// 查询黑白名单
  81. /// </summary>
  82. /// <returns></returns>
  83. [Permission(EPermission.QueryPagedBlack)]
  84. [HttpGet("query-blacklist")]
  85. public async Task<IReadOnlyList<TrQueryBlacklistResponseDto>> QueryBlacklist([FromQuery]TrQueryBlacklistDto dto)
  86. {
  87. var blacklist = await _trClient.QueryBlacklistAsync(new QueryBlacklistRequest() { Phone = dto.Phone, SpecialFlag = dto.SpecialFlag }, HttpContext.RequestAborted);
  88. return _mapper.Map<IReadOnlyList<TrQueryBlacklistResponseDto>>(blacklist);
  89. }
  90. #endregion
  91. #region 签入后调用
  92. /// <summary>
  93. /// 上班
  94. /// </summary>
  95. /// <param name="dto"></param>
  96. /// <returns></returns>
  97. [Permission(EPermission.OnDuty)]
  98. [HttpPost("on-duty")]
  99. public async Task<TrOnDutyResponseDto> OnDuty([FromBody] TrOnDutyDto dto)
  100. {
  101. //return await _userDomainService.TrOnDutyAsync(_sessionContext.RequiredUserId,dto.TelNo, HttpContext.RequestAborted);
  102. return await _trApplication.OnSign(_sessionContext.RequiredUserId, dto.TelNo, HttpContext.RequestAborted);
  103. }
  104. /// <summary>
  105. /// 下班
  106. /// </summary>
  107. /// <returns></returns>
  108. [Permission(EPermission.OffDuty)]
  109. [HttpPost("off-duty")]
  110. public async Task OffDuty()
  111. {
  112. await _userDomainService.TrOffDutyAsync(_sessionContext.RequiredUserId, HttpContext.RequestAborted);
  113. }
  114. #endregion
  115. #region 添添呼小休
  116. /// <summary>
  117. /// 小休页面基础数据
  118. /// </summary>
  119. /// <returns></returns>
  120. [HttpGet("rest/basedata")]
  121. public async Task<object> RestBasePaegData()
  122. {
  123. var rsp = new
  124. {
  125. RestReason = _systemDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.RestReason)
  126. };
  127. return rsp;
  128. }
  129. #endregion
  130. #region 通话记录
  131. /// <summary>
  132. /// 接收通话记录
  133. /// </summary>
  134. /// <param name="dto"></param>
  135. /// <returns></returns>
  136. [AllowAnonymous]
  137. [HttpPost("receivecallrecord")]
  138. public async Task<OpenResponse> ReceiveCallRecord([FromBody]ReceiveCallRecordDto dto)
  139. {
  140. var model = _mapper.Map<TrCallRecord>(dto);
  141. await _trCallRecordRepository.AddAsync(model, HttpContext.RequestAborted);
  142. return OpenResponse.Ok("success");
  143. }
  144. /// <summary>
  145. /// 接受通话语音评价
  146. /// </summary>
  147. /// <param name="dto"></param>
  148. /// <returns></returns>
  149. [AllowAnonymous]
  150. [HttpPost("receivecallevaluate")]
  151. public async Task<OpenResponse> ReceiveCallEvaluate([FromBody]ReceiveCallEvaluateDto dto)
  152. {
  153. var model = _mapper.Map<TrCallEvaluate>(dto);
  154. await _trCallEvaluate.AddAsync(model, HttpContext.RequestAborted);
  155. return OpenResponse.Ok("success");
  156. }
  157. #endregion
  158. #endregion
  159. }
  160. }