using System.Threading.Tasks;
using GxPress.Common.Tools;
using GxPress.Repository.Interface;
using GxPress.Repository.Interface.Missive;
using GxPress.Service.Interface.ElasticSearch;
using GxPress.Repository.Interface.Job;
using Datory;
using System.Linq;
using System;
namespace GxPress.Service.Implement.ElasticSearch
{
public class ElasticSearchService : IElasticSearchService
{
private readonly IUserRepository _userRepository;
private readonly INoticeRepository _noticeRepository;
private readonly IChatRecordRepository _chatRecordRepository;
private readonly IArticleRepository _articleRepository;
private readonly IGroupChatRepository _groupChatRepository;
private readonly IMissiveRepository _missiveRepository;
private readonly ITopicRepository _topicRepository;
private readonly IJobRepository _jobRepository;
private readonly IMiddleRepository middleRepository;
private readonly ITopicAddresseeRepository topicAddresseeRepository;
private readonly IGroupRepository groupRepository;
private readonly IOftenContactRepository oftenContactRepository;
public ElasticSearchService(IUserRepository userRepository, INoticeRepository noticeRepository,
IChatRecordRepository chatRecordRepository, IArticleRepository articleRepository, IGroupChatRepository groupChatRepository, IMissiveRepository missiveRepository, ITopicRepository topicRepository, IJobRepository jobRepository, ITopicAddresseeRepository topicAddresseeRepository, IMiddleRepository middleRepository, IGroupRepository groupRepository, IOftenContactRepository oftenContactRepository)
{
_userRepository = userRepository;
_noticeRepository = noticeRepository;
_chatRecordRepository = chatRecordRepository;
_articleRepository = articleRepository;
_groupChatRepository = groupChatRepository;
_missiveRepository = missiveRepository;
_topicRepository = topicRepository;
_jobRepository = jobRepository;
this.topicAddresseeRepository = topicAddresseeRepository;
this.middleRepository = middleRepository;
this.groupRepository = groupRepository;
this.oftenContactRepository = oftenContactRepository;
}
///
/// 插入数据
///
///
public async Task InsetElasticSearchData(TedeData tedeData)
{
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
return true;
}
///
/// 插入数据
///
///
public async Task ElasticSearchData()
{
var topicResult = await _topicRepository.ExecuteTopic();
//话题
foreach (var topic in topicResult)
{
TedeData tedeData = new TedeData
{
Name = topic.Name,
AvatarUrl = topic.AvatarUrl,
Content = topic.Content,
CreatedDate = topic.CreatedDate,
Id = topic.Id.ToString(),
GuId = topic.GuId,
SearchType = 2,
Title = topic.Title,
UserId = topic.UserId,
ChatType = 0,
ImId = "",
ToUserId = 0
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//修改话题
await topicAddresseeRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Topic.TopicAddressee.Id), topicResult.Select(n => n.TopicAddresseeId)).Set(nameof(Entity.Topic.TopicAddressee.IsUpload), true));
//通知
var noticeResult = await _noticeRepository.ElasticSearchNotice();
foreach (var notice in noticeResult)
{
TedeData tedeData = new TedeData
{
Name = notice.Name,
AvatarUrl = notice.AvatarUrl,
Content = notice.Content,
CreatedDate = notice.CreatedDate,
Id = notice.Id.ToString(),
GuId = notice.GuId,
SearchType = 1,
Title = notice.Title,
UserId = notice.UserId,
ChatType = 0,
ImId = "",
ToUserId = 0
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//修改话题
await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), noticeResult.Select(n => n.MiddleId)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
//站内信
var missiveResult = await _missiveRepository.ElasticSearchMissive();
foreach (var missive in missiveResult)
{
TedeData tedeData = new TedeData
{
Name = missive.Name,
AvatarUrl = missive.AvatarUrl,
Content = missive.Content,
CreatedDate = missive.CreatedDate,
Id = missive.Id.ToString(),
GuId = missive.GuId,
SearchType = 5,
Title = missive.Title,
UserId = missive.UserId,
ChatType = 0,
ImId = "",
ToUserId = 0
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//修改话题
await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), missiveResult.Select(n => n.MiddleId)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
//小组
var groupResult = await groupRepository.ElasticSearchGroup();
foreach (var group in groupResult)
{
TedeData tedeData = new TedeData
{
Name = group.Name,
AvatarUrl = group.AvatarUrl,
Content = group.Content,
CreatedDate = group.CreatedDate,
Id = group.Id.ToString(),
GuId = group.GuId,
SearchType = 7,
Title = group.Title,
UserId = group.UserId,
ChatType = 0,
ImId = "",
ToUserId = 0
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//修改小组
await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), groupResult.Select(n => n.MiddleId)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
//通讯录
var userResult = await _userRepository.ElasticSearchUser();
foreach (var user in userResult)
{
TedeData tedeData = new TedeData
{
Name = user.Name,
AvatarUrl = user.AvatarUrl,
Content = "",
Id = user.Id.ToString(),
GuId = user.GuId,
SearchType = 100,
CreatedDate = DateTime.Now,
ChatType = 0,
ImId = "",
ToUserId = 0
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//修改通讯录
await _userRepository.UpdateAsync(Q.WhereIn(nameof(Entity.User.Id), userResult.Select(n => n.Id)).Set(nameof(Entity.User.IsUpload), true));
//聊天群
var groupChatResult = await oftenContactRepository.ElasticSearchGroupChat();
foreach (var groupChat in groupChatResult)
{
TedeData tedeData = new TedeData
{
Name = groupChat.Name,
AvatarUrl = groupChat.AvatarUrl,
Content = "",
Id = groupChat.Id.ToString(),
GuId = groupChat.GuId,
ImId = groupChat.ImId,
CreatedDate = groupChat.CreatedDate,
SearchType = 10,
ChatType = 2
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//聊天群
await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), groupChatResult.Select(n => n.Id)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
//聊天
var chatResult = await oftenContactRepository.ElasticSearchChat();
foreach (var chat in chatResult)
{
TedeData tedeData = new TedeData
{
Name = chat.Name,
AvatarUrl = chat.AvatarUrl,
Content = "",
Id = chat.Id.ToString(),
GuId = chat.GuId,
ImId = chat.ImId,
CreatedDate = chat.CreatedDate,
SearchType = 10,
ChatType = 1
};
var helper = new ElasticSearchHelper();
await helper.InsetData(tedeData);
}
//聊天群
await middleRepository.UpdateAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), chatResult.Select(n => n.Id)).Set(nameof(Entity.Middle.Middle.IsUpload), true));
//聊天页面
return true;
}
}
}