GroupChatUserController.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using GxPress.Auth;
  4. using GxPress.Common.Exceptions;
  5. using GxPress.Common.Tools;
  6. using GxPress.Repository.Interface;
  7. using GxPress.Request.GroupChatUser;
  8. using GxPress.Result.GroupChatUser;
  9. using GxPress.Service.Interface;
  10. using Microsoft.AspNetCore.Authorization;
  11. using Microsoft.AspNetCore.Mvc;
  12. namespace GxPress.Api.AppControllers
  13. {
  14. /// <summary>
  15. /// 群聊组员
  16. /// </summary>
  17. [Route("api/app/group-chat-user")]
  18. [ApiController]
  19. [Authorize]
  20. public class GroupChatUserController : ControllerBase
  21. {
  22. private readonly IGroupChatUserRepository _groupChatUserRepository;
  23. private readonly IGroupChatUserService _groupChatUserService;
  24. private readonly IGroupChatRepository _groupChatRepository;
  25. private readonly IOftenContactRepository _oftenContactRepository;
  26. private readonly ILoginContext _loginContext;
  27. public GroupChatUserController(IGroupChatUserRepository groupChatUserRepository,
  28. IGroupChatUserService groupChatUserService, IGroupChatRepository groupChatRepository,
  29. ILoginContext loginContext, IOftenContactRepository oftenContactRepository)
  30. {
  31. _groupChatUserRepository = groupChatUserRepository;
  32. _groupChatUserService = groupChatUserService;
  33. _groupChatRepository = groupChatRepository;
  34. _loginContext = loginContext;
  35. _oftenContactRepository = oftenContactRepository;
  36. }
  37. /// <summary>
  38. /// 添加
  39. /// </summary>
  40. /// <param name="request"></param>
  41. /// <returns></returns>
  42. [HttpPost("add")]
  43. public async Task<bool> Insert(GroupChatUserInRequest request)
  44. {
  45. return await _groupChatUserRepository.InsertAsync(request);
  46. }
  47. /// <summary>
  48. /// 修改
  49. /// </summary>
  50. /// <param name="request"></param>
  51. /// <returns></returns>
  52. [HttpPost("update")]
  53. public async Task<bool> Update(GroupChatUserUpRequest request)
  54. {
  55. return await _groupChatUserRepository.UpdateAsync(request);
  56. }
  57. /// <summary>
  58. /// 根据群ID查询群
  59. /// </summary>
  60. /// <param name="request"></param>
  61. /// <returns></returns>
  62. [HttpPost("group-chat-user-search")]
  63. public async Task<GroupChatUserByGroupChatIdResultList> GetGroupChatUserByGroupChatId(
  64. GroupChatUserSearchRequest request)
  65. {
  66. var userId = _loginContext.AccountId;
  67. var groupChat = await _groupChatRepository.GetGroupChatByImIdAsync(request.GroupChatImId);
  68. if (groupChat == null)
  69. throw new BusinessException("群不存在!");
  70. var result = new GroupChatUserByGroupChatIdResultList
  71. {
  72. GroupChat = groupChat,
  73. Item = await _groupChatUserRepository.GetGroupChatUserByGroupChatIdAsync(request)
  74. };
  75. //判断是否是管理员
  76. result.GroupChat.IsAdmin = result.GroupChat.UserId == _loginContext.AccountId;
  77. //result.GroupChat.AvatarUrl = StringUtils.AddDomainMin(result.GroupChat.AvatarUrl);
  78. //result.GroupChat.QRCoder = StringUtils.AddDomain(result.GroupChat.QRCoder);
  79. result.IsAdmin = result.GroupChat.UserId == _loginContext.AccountId;
  80. result.IsUser = result.Item.Any(n => n.UserId == userId);
  81. result.IsTop = await _oftenContactRepository.GetIsTopAsync(userId, groupChat.GroupChatImId);
  82. var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest
  83. {
  84. UserId = userId,
  85. GroupChatId = groupChat.Id
  86. };
  87. result.IsDisturb = await _groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest);
  88. return result;
  89. }
  90. /// <summary>
  91. /// 根据群GUID查询群
  92. /// </summary>
  93. /// <param name="guid"></param>
  94. /// <returns></returns>
  95. [HttpGet("{guid}")]
  96. public async Task<GroupChatUserByGroupChatIdResultList> GetGroupChatUserByGroupChatGuid(string guid)
  97. {
  98. var userId = _loginContext.AccountId;
  99. var groupChatUserSearchRequest = new GroupChatUserSearchRequest();
  100. var groupChat = await _groupChatRepository.GetGroupChatByGuidAsync(guid);
  101. if (groupChat == null)
  102. throw new BusinessException("群不存在!");
  103. groupChatUserSearchRequest.GroupChatImId = groupChat.GroupChatImId;
  104. var result = new GroupChatUserByGroupChatIdResultList
  105. {
  106. GroupChat = groupChat,
  107. Item = await _groupChatUserRepository.GetGroupChatUserByGroupChatIdAsync(groupChatUserSearchRequest)
  108. };
  109. //判断是否是管理员
  110. result.GroupChat.IsAdmin = result.GroupChat.UserId == _loginContext.AccountId;
  111. result.GroupChat.AvatarUrl = StringUtils.AddDomainMin(result.GroupChat.AvatarUrl);
  112. result.GroupChat.QRCoder = StringUtils.AddDomain(result.GroupChat.QRCoder);
  113. result.IsAdmin = result.GroupChat.UserId == _loginContext.AccountId;
  114. result.IsUser = result.Item.Any(n => n.UserId == userId);
  115. result.IsTop = await _oftenContactRepository.GetIsTopAsync(userId, groupChat.GroupChatImId);
  116. var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest
  117. {
  118. UserId = userId,
  119. GroupChatId = groupChat.Id
  120. };
  121. result.IsDisturb = await _groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest);
  122. return result;
  123. }
  124. /// <summary>
  125. /// 是否免打扰
  126. /// </summary>
  127. /// <param name="request"></param>
  128. /// <returns></returns>
  129. [HttpPost("up-is-disturb")]
  130. public async Task<bool> UpIsDisturb(GroupChatUserIsDisturbRequest request)
  131. {
  132. request.UserId = _loginContext.AccountId;
  133. return await _groupChatUserRepository.UpIsDisturbAsync(request);
  134. }
  135. /// <summary>
  136. /// 是否置顶
  137. /// </summary>
  138. /// <param name="request"></param>
  139. /// <returns></returns>
  140. [HttpPost("up-is-top")]
  141. public async Task<bool> UpIsTop(GroupChatUserIsTopRequest request)
  142. {
  143. request.UserId = _loginContext.AccountId;
  144. return await _groupChatUserRepository.UpIsTopAsync(request);
  145. }
  146. }
  147. }