HomeController.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. using Hotline.CallCenter.BlackLists;
  2. using Hotline.CallCenter.Calls;
  3. using Hotline.CallCenter.Ivrs;
  4. using Hotline.CallCenter.Tels;
  5. using Hotline.KnowledgeBase;
  6. using Hotline.Orders;
  7. using Hotline.Repository.SqlSugar;
  8. using Hotline.Settings;
  9. using Hotline.Share.Dtos.Home;
  10. using Hotline.Users;
  11. using MapsterMapper;
  12. using Microsoft.AspNetCore.Authorization;
  13. using Microsoft.AspNetCore.Mvc;
  14. using SqlSugar;
  15. using StackExchange.Redis;
  16. using XF.Domain.Authentications;
  17. using XF.Domain.Exceptions;
  18. namespace Hotline.Api.Controllers;
  19. /// <summary>
  20. /// 主页相关接口
  21. /// </summary>
  22. public class HomeController : BaseController
  23. {
  24. private readonly ISugarUnitOfWork<HotlineDbContext> _uow;
  25. private readonly ISessionContext _sessionContext;
  26. private readonly ISystemAuthorityRepository _systemAuthorityRepository;
  27. private readonly ISystemMenuRepository _systemMenuRepository;
  28. private readonly IMapper _mapper;
  29. private readonly IUserFastMenuRepository _userFastMenuRepository;
  30. private readonly IUserRepository _userRepository;
  31. public HomeController(
  32. ISugarUnitOfWork<HotlineDbContext> uow,
  33. ISessionContext sessionContext,
  34. ISystemAuthorityRepository systemAuthorityRepository,
  35. ISystemMenuRepository systemMenuRepository,
  36. IMapper mapper,
  37. IUserFastMenuRepository userFastMenuRepository,
  38. IUserRepository userRepository)
  39. {
  40. _uow = uow;
  41. _sessionContext = sessionContext;
  42. _systemAuthorityRepository = systemAuthorityRepository;
  43. _systemMenuRepository = systemMenuRepository;
  44. _mapper = mapper;
  45. _userFastMenuRepository = userFastMenuRepository;
  46. _userRepository = userRepository;
  47. }
  48. #region 开放请求接口
  49. /// <summary>
  50. /// 获取当前用户信息
  51. /// </summary>
  52. /// <returns></returns>
  53. [AllowAnonymous]
  54. [HttpGet("myinfo")]
  55. public async Task<User?> GetMyInfo()
  56. {
  57. if (!string.IsNullOrEmpty(_sessionContext.UserId))
  58. {
  59. return await _userRepository.GetAsync(_sessionContext.UserId);
  60. }
  61. throw UserFriendlyException.SameMessage("无效登录信息");
  62. }
  63. [AllowAnonymous]
  64. [HttpGet("createdb")]
  65. public Task CreateDb()
  66. {
  67. var db = _uow.Db;
  68. db.DbMaintenance.CreateDatabase();
  69. db.CodeFirst.InitTables<Blacklist,Call,CallDetail,CallRecord,TelHold>();
  70. db.CodeFirst.InitTables<Ivr, IvrCategory, Tel, TelGroup, TelRest>();
  71. db.CodeFirst.InitTables<Knowledge, KnowledgeApply, KnowledgePv, KnowledgeStandard, KnowledgeTemp>();
  72. //db.CodeFirst.InitTables<KnowledgeType, Orders.Order, OrderTemporary, OrgUser>();
  73. db.CodeFirst.InitTables<SystemAuthority, SystemButton, SystemDataAuthority, SystemDataTable, SystemMenu>();
  74. db.CodeFirst.InitTables<SystemOrganize, SystemSetting, SystemSettingGroup, UserFastMenu>();
  75. db.CodeFirst.InitTables<User, Work>();
  76. return Task.CompletedTask;
  77. }
  78. /// <summary>
  79. /// 获取可选快捷入口
  80. /// </summary>
  81. /// <returns></returns>
  82. [AllowAnonymous]
  83. [HttpPost("get-fastmenu")]
  84. public async Task<IReadOnlyList<SystemMenu>> GetFastMenuByToken([FromBody] GetFastMenuByTokenDto dto)
  85. {
  86. if (!string.IsNullOrEmpty(_sessionContext.UserId))
  87. {
  88. var roles = _sessionContext.Roles;
  89. return await _systemMenuRepository.GetFastMenu(roles, _sessionContext.UserId, dto.name);
  90. }
  91. throw UserFriendlyException.SameMessage("无效登录信息");
  92. }
  93. /// <summary>
  94. /// 设置快捷入口
  95. /// </summary>
  96. /// <returns></returns>
  97. [AllowAnonymous]
  98. [HttpPost("set-fastmenu")]
  99. public async Task SetFastMenu([FromBody] SetFastMenuDto dto)
  100. {
  101. if (!string.IsNullOrEmpty(_sessionContext.UserId))
  102. {
  103. string userId = _sessionContext.UserId;
  104. var model = await _userFastMenuRepository.GetAsync(x => x.UserId == userId);
  105. if (model is null)
  106. {
  107. var fastmenu = _mapper.Map<UserFastMenu>(dto);
  108. await _userFastMenuRepository.AddAsync(fastmenu);
  109. }
  110. else
  111. {
  112. _mapper.Map(dto, model);
  113. await _userFastMenuRepository.UpdateAsync(model);
  114. }
  115. }
  116. else
  117. {
  118. throw UserFriendlyException.SameMessage("无效登录信息");
  119. }
  120. }
  121. /// <summary>
  122. /// 获取我的快捷入口
  123. /// </summary>
  124. /// <returns></returns>
  125. [AllowAnonymous]
  126. [HttpGet("get-myfastmenu")]
  127. public async Task<IReadOnlyList<SystemMenu>> GetMyFastMenu()
  128. {
  129. if (!string.IsNullOrEmpty(_sessionContext.UserId))
  130. {
  131. var roles = _sessionContext.Roles;
  132. return await _systemMenuRepository.GetMyFastMenu(roles, _sessionContext.UserId);
  133. }
  134. throw UserFriendlyException.SameMessage("无效登录信息");
  135. }
  136. #endregion
  137. #region 菜单权限
  138. /// <summary>
  139. /// 获取当前用户所有菜单
  140. /// </summary>
  141. /// <returns></returns>
  142. [AllowAnonymous]
  143. [HttpGet("get-my-auth-menu")]
  144. public async Task<IReadOnlyList<SystemMenu>> GetUserAuthorityMenuByToken()
  145. {
  146. var roles = _sessionContext.Roles;
  147. return await _systemAuthorityRepository.GetMyMenu(roles);
  148. }
  149. /// <summary>
  150. /// 获取当前用户所有按钮
  151. /// </summary>
  152. /// <returns></returns>
  153. [AllowAnonymous]
  154. [HttpGet("get-my-auth-button")]
  155. public async Task<IReadOnlyList<string>> GetUserAuthorityButtonByToken()
  156. {
  157. var roles = _sessionContext.Roles;
  158. return await _systemAuthorityRepository.GetMyButton(roles);
  159. }
  160. #endregion
  161. }