AdminVerifyService.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using AutoMapper;
  5. using Datory;
  6. using GxPress.Common.Tools;
  7. using GxPress.Entity;
  8. using GxPress.EnumConst;
  9. using GxPress.Repository.Interface;
  10. using GxPress.Repository.Interface.AdminVerify;
  11. using GxPress.Repository.Interface.Friends;
  12. using GxPress.Request.AddressBookGroupUser;
  13. using GxPress.Request.App.GroupUser;
  14. using GxPress.Result.App.AdminVerify;
  15. using GxPress.Service.Interface;
  16. using GxPress.Service.Interface.AdminVerify;
  17. using GxPress.Service.Interface.Group;
  18. using GxPress.Service.Interface.Middle;
  19. namespace GxPress.Service.Implement.AdminVerify
  20. {
  21. public partial class AdminVerifyService : IAdminVerifyService
  22. {
  23. private readonly IAdminVerifyRepository _adminVerifyRepository;
  24. private readonly IUserRepository _userRepository;
  25. private readonly IDepartmentRepository _departmentRepository;
  26. private readonly IGroupChatRepository _groupChatRepository;
  27. private readonly IGroupChatUserService _groupChatUserService;
  28. private readonly IGroupService _groupService;
  29. private readonly IMiddleService _middleService;
  30. private readonly IGroupRepository _groupRepository;
  31. private readonly IGroupUserRepository _groupUserRepository;
  32. private readonly IGroupChatUserRepository _groupChatUserRepository;
  33. private readonly IMapper _mapper;
  34. private readonly IFriendsRepository friendsRepository;
  35. private readonly IAddressBookGroupUserRepository addressBookGroupUserRepository;
  36. public AdminVerifyService(IAdminVerifyRepository adminVerifyRepository, IUserRepository userRepository,
  37. IDepartmentRepository departmentRepository, IGroupChatRepository groupChatRepository,
  38. IGroupService groupService, IMiddleService middleService, IGroupChatUserService groupChatUserService,
  39. IGroupRepository groupRepository, IMapper mapper, IGroupUserRepository groupUserRepository, IGroupChatUserRepository groupChatUserRepository, IFriendsRepository friendsRepository, IAddressBookGroupUserRepository addressBookGroupUserRepository)
  40. {
  41. _adminVerifyRepository = adminVerifyRepository;
  42. _userRepository = userRepository;
  43. _departmentRepository = departmentRepository;
  44. _groupChatRepository = groupChatRepository;
  45. _groupService = groupService;
  46. _middleService = middleService;
  47. _groupChatUserService = groupChatUserService;
  48. _groupRepository = groupRepository;
  49. _mapper = mapper;
  50. _groupUserRepository = groupUserRepository;
  51. _groupChatUserRepository = groupChatUserRepository;
  52. this.friendsRepository = friendsRepository;
  53. this.addressBookGroupUserRepository = addressBookGroupUserRepository;
  54. }
  55. /// <summary>
  56. /// 清空
  57. /// </summary>
  58. /// <param name="userId"></param>
  59. /// <returns></returns>
  60. public async Task<bool> DeleteAllAsync(int userId)
  61. {
  62. return await _adminVerifyRepository.DeleteAllAsync(userId);
  63. }
  64. /// <summary>
  65. /// 修改状态
  66. /// </summary>
  67. /// <param name="id"></param>
  68. /// <param name="disposeTyeConst"></param>
  69. /// <returns></returns>
  70. public async Task<bool> UpdateAsync(int id, AdminVerifyTypeConst disposeTyeConst)
  71. {
  72. var adminVerify = await GetAsync(id);
  73. if (disposeTyeConst == AdminVerifyTypeConst.Approve)
  74. {
  75. //小组
  76. if (adminVerify.VerifyType == GroupTypeConst.Group)
  77. {
  78. var request = new GroupUserInRequest();
  79. request.GroupId = adminVerify.SourceId;
  80. //添加用户
  81. if (adminVerify.SourceType == 2)
  82. request.UserIds.Add(adminVerify.AdminId);
  83. else
  84. request.UserIds.Add(adminVerify.UserId);
  85. await _groupService.AddUsersAsync(request);
  86. }
  87. //好友
  88. if (adminVerify.VerifyType == GroupTypeConst.Friends)
  89. {
  90. //加入好友
  91. await friendsRepository.AddAsync(new Friends
  92. {
  93. UserId = adminVerify.UserId,
  94. FriendsUserId = adminVerify.AdminId,
  95. AddressBookGroupId = adminVerify.AddressBookGroupId
  96. });
  97. //添加自建分组
  98. if (adminVerify.AddressBookGroupId > 0)
  99. {
  100. await addressBookGroupUserRepository.InsertAsync(new AddressBookGroupUserInRequest
  101. {
  102. AddressBookGroupId = adminVerify.AddressBookGroupId,
  103. UserId = new List<int> { adminVerify.AdminId }
  104. });
  105. }
  106. //自己好友
  107. //加入好友
  108. await friendsRepository.AddAsync(new Friends
  109. {
  110. UserId = adminVerify.AdminId,
  111. FriendsUserId = adminVerify.UserId,
  112. AddressBookGroupId = 0
  113. });
  114. }
  115. }
  116. //修改状态
  117. await _adminVerifyRepository.UpdateAsync(Q.Where(nameof(Entity.AdminVerify.Id), id).Set(nameof(Entity.AdminVerify.DisposeType), disposeTyeConst.GetHashCode()));
  118. return true;
  119. }
  120. /// <summary>
  121. /// 获取详情
  122. /// </summary>
  123. /// <param name="id"></param>
  124. /// <returns></returns>
  125. public async Task<Entity.AdminVerify> GetAsync(int id)
  126. {
  127. return await _adminVerifyRepository.GetAsync(id);
  128. }
  129. /// <summary>
  130. /// 根据用户查询
  131. /// </summary>
  132. /// <param name="userId"></param>
  133. /// <returns></returns>
  134. public async Task<IEnumerable<AdminVerifySearchResult>> GetAllAsync(int userId)
  135. {
  136. var user = await _userRepository.GetAsync(userId);
  137. var adminVerify = await _adminVerifyRepository.GetAllAsync(Q.Where(nameof(Entity.AdminVerify.AdminId), userId).OrderByDesc(nameof(Entity.AdminVerify.CreatedDate)));
  138. var result = adminVerify.Select(n => _mapper.Map<AdminVerifySearchResult>(n));
  139. var adminVerifySearchResults = result as AdminVerifySearchResult[] ?? result.ToArray();
  140. foreach (var item in adminVerifySearchResults)
  141. {
  142. item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
  143. //是否小组
  144. if (item.VerifyType == GroupTypeConst.Group)
  145. {
  146. //获取小组成员
  147. var groupUsers = await _groupUserRepository.GetAllAsync(Q.Where(nameof(GroupUser.GroupId), item.SourceId));
  148. //不在小组
  149. if (groupUsers.All(n => n.UserId != userId))
  150. item.IsVisit = false;
  151. var roleId = new List<int> { 1, 2 };
  152. var groupUsersRole = groupUsers.Where(n => roleId.Contains(n.GroupUserRoleId.GetHashCode()));
  153. //判断是否有操作权限
  154. if (item.SourceType == 1)
  155. {
  156. if (groupUsersRole.Any(n => n.UserId == item.AdminId) && item.DisposeType == 0)
  157. item.IsOperate = true;
  158. else
  159. item.IsOperate = false;
  160. }
  161. else
  162. {
  163. if (groupUsersRole.Any(n => n.UserId == item.AdminId))
  164. item.IsOperate = false;
  165. else if (item.DisposeType == 0)
  166. item.IsOperate = true;
  167. }
  168. }
  169. }
  170. return adminVerifySearchResults;
  171. }
  172. /// <summary>
  173. /// 获取未处理条数
  174. /// </summary>
  175. /// <param name="userId"></param>
  176. /// <returns></returns>
  177. public async Task<int> GetUDisposeCount(int userId)
  178. {
  179. return await _adminVerifyRepository.GetUDisposeCount(userId);
  180. }
  181. }
  182. }