TestController.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. using Dapr;
  2. using Hotline.Application.TimeLimits;
  3. using Hotline.CallCenter.BlackLists;
  4. using Hotline.CallCenter.Devices;
  5. using Hotline.CallCenter.Ivrs;
  6. using Hotline.FlowEngine.Definitions;
  7. using Hotline.FlowEngine.Workflows;
  8. using Hotline.Identity.Accounts;
  9. using Hotline.Identity.Roles;
  10. using Hotline.Realtimes;
  11. using Hotline.Repository.SqlSugar;
  12. using Hotline.Share.Dtos.Realtime;
  13. using Hotline.Share.Dtos.Settings;
  14. using Hotline.Share.Enums.Settings;
  15. using Hotline.Users;
  16. using MediatR;
  17. using Microsoft.AspNetCore.Authorization;
  18. using Microsoft.AspNetCore.Mvc;
  19. using Microsoft.Extensions.Options;
  20. using NewRock.Sdk;
  21. using NewRock.Sdk.Security;
  22. using SqlSugar;
  23. using XF.Domain.Authentications;
  24. using XF.Domain.Cache;
  25. using XF.Domain.Entities;
  26. using XF.Domain.Exceptions;
  27. namespace Hotline.Api.Controllers;
  28. /// <summary>
  29. ///
  30. /// </summary>
  31. public class TestController : BaseController
  32. {
  33. private readonly ILogger<TestController> _logger;
  34. private readonly IAuthorizeGenerator _authorizeGenerator;
  35. private readonly IOptionsSnapshot<DeviceConfigs> _options;
  36. private readonly ISessionContext _sessionContext;
  37. private readonly IUserRepository _userRepository;
  38. private readonly ITypedCache<User> _cache;
  39. private readonly IRealtimeService _realtimeService;
  40. private readonly IBlacklistDomainService _blacklistDomainService;
  41. private readonly IIvrDomainService _ivrDomainService;
  42. private readonly ISugarUnitOfWork<HotlineDbContext> _uow;
  43. private readonly IRoleRepository _roleRepository;
  44. private readonly IMediator _mediator;
  45. private readonly ITimeLimitApplication _timeLimitApplication;
  46. //private readonly ITypedCache<List<User>> _cache;
  47. //private readonly ICacheManager<User> _cache;
  48. /// <summary>
  49. ///
  50. /// </summary>
  51. /// <param name="client"></param>
  52. /// <param name="logger"></param>
  53. /// <param name="authorizeGenerator"></param>
  54. /// <param name="options"></param>
  55. /// <param name="sessionContext"></param>
  56. /// <param name="userRepository"></param>
  57. /// <param name="cache"></param>
  58. /// <param name="realtimeService"></param>
  59. /// <param name="blacklistDomainService"></param>
  60. /// <param name="ivrDomainService"></param>
  61. public TestController(
  62. INewRockClient client,
  63. ILogger<TestController> logger,
  64. IAuthorizeGenerator authorizeGenerator,
  65. IOptionsSnapshot<DeviceConfigs> options,
  66. ISessionContext sessionContext,
  67. IUserRepository userRepository,
  68. //ICacheManager<User> cache
  69. //ITypedCache<List<User>> cache
  70. ITypedCache<User> cache,
  71. IRealtimeService realtimeService,
  72. IBlacklistDomainService blacklistDomainService,
  73. IIvrDomainService ivrDomainService,
  74. ISugarUnitOfWork<HotlineDbContext> uow,
  75. IRoleRepository roleRepository,
  76. IMediator mediator,
  77. ITimeLimitApplication timeLimitApplication
  78. )
  79. {
  80. _logger = logger;
  81. _authorizeGenerator = authorizeGenerator;
  82. _options = options;
  83. _sessionContext = sessionContext;
  84. _userRepository = userRepository;
  85. _cache = cache;
  86. _realtimeService = realtimeService;
  87. _blacklistDomainService = blacklistDomainService;
  88. _ivrDomainService = ivrDomainService;
  89. _uow = uow;
  90. _roleRepository = roleRepository;
  91. _mediator = mediator;
  92. _timeLimitApplication = timeLimitApplication;
  93. }
  94. [AllowAnonymous]
  95. [HttpGet("pgsql")]
  96. public async Task<string> Pgsql()
  97. {
  98. var role = new Role
  99. {
  100. Name = "test_role",
  101. DisplayName = "test_role_display",
  102. ClientId = "test"
  103. };
  104. return await _roleRepository.AddAsync(role, HttpContext.RequestAborted);
  105. }
  106. [AllowAnonymous]
  107. [HttpGet("roles")]
  108. public async Task<List<Role>> GetRoles()
  109. {
  110. var a = await _roleRepository.Queryable()
  111. //.Where(d => !d.IsDeleted)
  112. .ToListAsync();
  113. //var a = await db.Queryable<Role>().ToListAsync();
  114. var b = await _roleRepository.Queryable(includeDeleted: true).ToListAsync();
  115. return a;
  116. }
  117. [AllowAnonymous]
  118. [HttpGet("testtime")]
  119. public async Task<TimeResult> TestTime(DateTime beginTime, ETimeType timeType, int timeValue)
  120. {
  121. return _timeLimitApplication.CalcEndTime(beginTime, timeType, timeValue);
  122. }
  123. //[AllowAnonymous]
  124. [HttpGet("hash")]
  125. public async Task Hash()
  126. {
  127. var s = _sessionContext;
  128. }
  129. /// <summary>
  130. /// signalR测试(method: Ring)
  131. /// </summary>
  132. /// <returns></returns>
  133. [HttpGet("ring")]
  134. public async Task RingTest()
  135. {
  136. await _realtimeService.RingAsync(_sessionContext.RequiredUserId, new RingDto { Id = new Guid().ToString(), From = _sessionContext.Phone ?? "未知号码", To = "12345" }, HttpContext.RequestAborted);
  137. }
  138. /// <summary>
  139. /// signalR测试(method: Answered)
  140. /// </summary>
  141. /// <returns></returns>
  142. [HttpGet("answered")]
  143. public async Task AnsweredTest()
  144. {
  145. await _realtimeService.AnsweredAsync(_sessionContext.RequiredUserId, new AnsweredDto() { Id = new Guid().ToString(), From = _sessionContext.Phone ?? "未知号码", To = "12345" }, HttpContext.RequestAborted);
  146. }
  147. /// <summary>
  148. /// signalR测试(method: Bye)
  149. /// </summary>
  150. /// <returns></returns>
  151. [HttpGet("bye")]
  152. public async Task ByeTest()
  153. {
  154. await _realtimeService.ByeAsync(_sessionContext.RequiredUserId, new ByeDto() { Id = new Guid().ToString() }, HttpContext.RequestAborted);
  155. }
  156. /// <summary>
  157. ///
  158. /// </summary>
  159. /// <returns></returns>
  160. [AllowAnonymous]
  161. [HttpGet("t2")]
  162. public async Task GetVoiceEndAnswerAsyncTest()
  163. {
  164. //var answer = await _ivrDomainService.GetVoiceEndAnswerAsync("3", HttpContext.RequestAborted);
  165. //Console.WriteLine(answer.Content);
  166. throw new UserFriendlyException(2001, "test");
  167. }
  168. [AllowAnonymous]
  169. [HttpGet("wfdefine")]
  170. public async Task GetWorkflowDefine()
  171. {
  172. }
  173. [AllowAnonymous]
  174. [Topic("pubsub", "test")]
  175. [HttpPost("t3")]
  176. public Task<int> TestDaprPubsub(int data)
  177. {
  178. _logger.LogDebug("receive dapr event, params: {0}", data);
  179. return Task.FromResult(data);
  180. }
  181. }