using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Datory; using GxPress.Common.Tools; using GxPress.Request.App.OftenContact; using GxPress.Request.GroupChatUser; using GxPress.Result.App.OftenContact; using System; namespace GxPress.Service.Implement.OftenContact { public partial class OftenContactService { /// /// 获取用户 /// /// /// public async Task> GetOftenContacts(OftenContactSearchRequest request) { //获取文件夹数据 var result = new List(); var data = await _repository.GetContactInfosAsync(request); foreach (var item in data) { if (item.ChatType == 1) { var user = await _userRepository.GetAsync(int.Parse(item.ContactUserId)); if (user == null) continue; item.Name = user.Name; item.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl); item.ImId = user.ImId; item.ToUserId = user.Id; } else if (item.ChatType == 2) { var groupChat = await _groupChatRepository.GetAsync(Q.Where(nameof(Entity.GroupChat.GroupChatImId), item.ContactUserId)); if (groupChat == null) continue; item.Name = groupChat.Name; item.AvatarUrl = StringUtils.AddDomainMin(groupChat.AvatarUrl); item.ImId = groupChat.GroupChatImId; var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest(); groupChatUserIsDisturbRequest.GroupChatId = groupChat.Id; groupChatUserIsDisturbRequest.UserId = item.UserId; item.IsDisturb = await groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest); } else if (item.AttributeValue != GxPress.EnumConst.AttributeValueConst.Folder.GetHashCode()) continue; result.Add(item); } return result; } /// /// 获取聊天界面和验证最新时间 /// /// /// public async Task GetOftenContactInfoGenericResult(OftenContactSearchRequest request) { var result = new OftenContactInfoGenericResult(); result.OftenContactInfos = await GetOftenContacts(request); result.ConfirmationDate = await adminVerifyRepository.GetConfirmationDate(request.UserId); return result; } /// /// 获取用户 /// /// /// public async Task> GetOftenContactsAll(OftenContactSearchRequest request) { //获取文件夹数据 var result = new List(); var data = await _repository.GetContactInfoAllAsync(request); foreach (var oftenContact in data) { if (oftenContact.ChatType == 1) { var user = await _userRepository.GetAsync(int.Parse(oftenContact.ContactUserId)); if (user == null) continue; oftenContact.Name = user.Name; oftenContact.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl); oftenContact.ImId = user.ImId; oftenContact.ToUserId = user.Id; } if (oftenContact.ChatType == 2) { var groupChat = await _groupChatRepository.GetAsync(Q.Where(nameof(Entity.GroupChat.GroupChatImId), oftenContact.ContactUserId)); if (groupChat == null) continue; oftenContact.Name = groupChat.Name; oftenContact.AvatarUrl = StringUtils.AddDomainMin(groupChat.AvatarUrl); oftenContact.ImId = groupChat.GroupChatImId; var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest(); groupChatUserIsDisturbRequest.GroupChatId = groupChat.Id; groupChatUserIsDisturbRequest.UserId = oftenContact.UserId; oftenContact.IsDisturb = await groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest); } } result = data.ToList(); return result; } } }