ElasticSearchService.cs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. using System.Threading.Tasks;
  2. using GxPress.Common.Tools;
  3. using GxPress.Repository.Interface;
  4. using GxPress.Repository.Interface.Missive;
  5. using GxPress.Service.Interface.ElasticSearch;
  6. using GxPress.Repository.Interface.Job;
  7. using Datory;
  8. using System.Linq;
  9. using System;
  10. namespace GxPress.Service.Implement.ElasticSearch
  11. {
  12. public class ElasticSearchService : IElasticSearchService
  13. {
  14. private readonly IUserRepository _userRepository;
  15. private readonly INoticeRepository _noticeRepository;
  16. private readonly IChatRecordRepository _chatRecordRepository;
  17. private readonly IArticleRepository _articleRepository;
  18. private readonly IGroupChatRepository _groupChatRepository;
  19. private readonly IMissiveRepository _missiveRepository;
  20. private readonly ITopicRepository _topicRepository;
  21. private readonly IJobRepository _jobRepository;
  22. private readonly IMiddleRepository middleRepository;
  23. private readonly ITopicAddresseeRepository topicAddresseeRepository;
  24. private readonly IGroupRepository groupRepository;
  25. private readonly IOftenContactRepository oftenContactRepository;
  26. public ElasticSearchService(IUserRepository userRepository, INoticeRepository noticeRepository,
  27. IChatRecordRepository chatRecordRepository, IArticleRepository articleRepository, IGroupChatRepository groupChatRepository, IMissiveRepository missiveRepository, ITopicRepository topicRepository, IJobRepository jobRepository, ITopicAddresseeRepository topicAddresseeRepository, IMiddleRepository middleRepository, IGroupRepository groupRepository, IOftenContactRepository oftenContactRepository)
  28. {
  29. _userRepository = userRepository;
  30. _noticeRepository = noticeRepository;
  31. _chatRecordRepository = chatRecordRepository;
  32. _articleRepository = articleRepository;
  33. _groupChatRepository = groupChatRepository;
  34. _missiveRepository = missiveRepository;
  35. _topicRepository = topicRepository;
  36. _jobRepository = jobRepository;
  37. this.topicAddresseeRepository = topicAddresseeRepository;
  38. this.middleRepository = middleRepository;
  39. this.groupRepository = groupRepository;
  40. this.oftenContactRepository = oftenContactRepository;
  41. }
  42. /// <summary>
  43. /// 插入数据
  44. /// </summary>
  45. /// <returns></returns>
  46. public async Task<bool> InsetElasticSearchData(TedeData tedeData)
  47. {
  48. var helper = new ElasticSearchHelper();
  49. await helper.InsetData(tedeData);
  50. return true;
  51. }
  52. /// <summary>
  53. /// 插入数据
  54. /// </summary>
  55. /// <returns></returns>
  56. public async Task<bool> ElasticSearchData()
  57. {
  58. var topicResult = await _topicRepository.ExecuteTopic();
  59. //话题
  60. foreach (var topic in topicResult)
  61. {
  62. TedeData tedeData = new TedeData
  63. {
  64. Name = topic.Name,
  65. AvatarUrl = topic.AvatarUrl,
  66. Content = topic.Content,
  67. CreatedDate = topic.CreatedDate,
  68. Id = topic.Id.ToString(),
  69. GuId = topic.GuId,
  70. SearchType = 2,
  71. Title = topic.Title,
  72. UserId = topic.UserId,
  73. ChatType = 0,
  74. ImId = "",
  75. ToUserId = 0
  76. };
  77. var helper = new ElasticSearchHelper();
  78. await helper.InsetData(tedeData);
  79. }
  80. //修改话题
  81. await topicAddresseeRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Topic.TopicAddressee.Id), topicResult.Select(n => n.TopicAddresseeId)).Set(nameof(Entity.Topic.TopicAddressee.IsUpload), true));
  82. //通知
  83. var noticeResult = await _noticeRepository.ElasticSearchNotice();
  84. foreach (var notice in noticeResult)
  85. {
  86. TedeData tedeData = new TedeData
  87. {
  88. Name = notice.Name,
  89. AvatarUrl = notice.AvatarUrl,
  90. Content = notice.Content,
  91. CreatedDate = notice.CreatedDate,
  92. Id = notice.Id.ToString(),
  93. GuId = notice.GuId,
  94. SearchType = 1,
  95. Title = notice.Title,
  96. UserId = notice.UserId,
  97. ChatType = 0,
  98. ImId = "",
  99. ToUserId = 0
  100. };
  101. var helper = new ElasticSearchHelper();
  102. await helper.InsetData(tedeData);
  103. }
  104. //修改话题
  105. await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), noticeResult.Select(n => n.MiddleId)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
  106. //站内信
  107. var missiveResult = await _missiveRepository.ElasticSearchMissive();
  108. foreach (var missive in missiveResult)
  109. {
  110. TedeData tedeData = new TedeData
  111. {
  112. Name = missive.Name,
  113. AvatarUrl = missive.AvatarUrl,
  114. Content = missive.Content,
  115. CreatedDate = missive.CreatedDate,
  116. Id = missive.Id.ToString(),
  117. GuId = missive.GuId,
  118. SearchType = 5,
  119. Title = missive.Title,
  120. UserId = missive.UserId,
  121. ChatType = 0,
  122. ImId = "",
  123. ToUserId = 0
  124. };
  125. var helper = new ElasticSearchHelper();
  126. await helper.InsetData(tedeData);
  127. }
  128. //修改话题
  129. await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), missiveResult.Select(n => n.MiddleId)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
  130. //小组
  131. var groupResult = await groupRepository.ElasticSearchGroup();
  132. foreach (var group in groupResult)
  133. {
  134. TedeData tedeData = new TedeData
  135. {
  136. Name = group.Name,
  137. AvatarUrl = group.AvatarUrl,
  138. Content = group.Content,
  139. CreatedDate = group.CreatedDate,
  140. Id = group.Id.ToString(),
  141. GuId = group.GuId,
  142. SearchType = 7,
  143. Title = group.Title,
  144. UserId = group.UserId,
  145. ChatType = 0,
  146. ImId = "",
  147. ToUserId = 0
  148. };
  149. var helper = new ElasticSearchHelper();
  150. await helper.InsetData(tedeData);
  151. }
  152. //修改小组
  153. await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), groupResult.Select(n => n.MiddleId)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
  154. //通讯录
  155. var userResult = await _userRepository.ElasticSearchUser();
  156. foreach (var user in userResult)
  157. {
  158. TedeData tedeData = new TedeData
  159. {
  160. Name = user.Name,
  161. AvatarUrl = user.AvatarUrl,
  162. Content = "",
  163. Id = user.Id.ToString(),
  164. GuId = user.GuId,
  165. SearchType = 100,
  166. CreatedDate = DateTime.Now,
  167. ChatType = 0,
  168. ImId = "",
  169. ToUserId = 0
  170. };
  171. var helper = new ElasticSearchHelper();
  172. await helper.InsetData(tedeData);
  173. }
  174. //修改通讯录
  175. await _userRepository.UpdateAsync(Q.WhereIn(nameof(Entity.User.Id), userResult.Select(n => n.Id)).Set(nameof(Entity.User.IsUpload), true));
  176. //聊天群
  177. var groupChatResult = await oftenContactRepository.ElasticSearchGroupChat();
  178. foreach (var groupChat in groupChatResult)
  179. {
  180. TedeData tedeData = new TedeData
  181. {
  182. Name = groupChat.Name,
  183. AvatarUrl = groupChat.AvatarUrl,
  184. Content = "",
  185. Id = groupChat.Id.ToString(),
  186. GuId = groupChat.GuId,
  187. ImId = groupChat.ImId,
  188. CreatedDate = groupChat.CreatedDate,
  189. SearchType = 10,
  190. ChatType = 2
  191. };
  192. var helper = new ElasticSearchHelper();
  193. await helper.InsetData(tedeData);
  194. }
  195. //聊天群
  196. await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), groupChatResult.Select(n => n.Id)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
  197. //聊天
  198. var chatResult = await oftenContactRepository.ElasticSearchChat();
  199. foreach (var chat in chatResult)
  200. {
  201. TedeData tedeData = new TedeData
  202. {
  203. Name = chat.Name,
  204. AvatarUrl = chat.AvatarUrl,
  205. Content = "",
  206. Id = chat.Id.ToString(),
  207. GuId = chat.GuId,
  208. ImId = chat.ImId,
  209. CreatedDate = chat.CreatedDate,
  210. SearchType = 10,
  211. ChatType = 1
  212. };
  213. var helper = new ElasticSearchHelper();
  214. await helper.InsetData(tedeData);
  215. }
  216. //聊天群
  217. await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), chatResult.Select(n => n.Id)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
  218. //聊天页面
  219. return true;
  220. }
  221. }
  222. }