using System.Threading.Tasks; using GxPress.Auth; using GxPress.Repository.Interface; using GxPress.Request.App.OftenContact; using GxPress.Result.App.OftenContact; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using GxPress.Service.Interface.OftenContact; using System.Collections.Generic; using GxPress.Result.Chat; using GxPress.Service.Interface.Chat; namespace GxPress.Api.AppControllers { /// <summary> /// 好友 /// </summary> [Route("api/web/often-contact")] [ApiController] [Authorize] public partial class WebOftenContactController : ControllerBase { private readonly ILogger<OftenContactController> _logger; private readonly IOftenContactRepository _repository; private readonly ILoginContext _loginContext; private readonly IOftenContactService _oftenContactService; private readonly IChatSearchService chatSearchService; public WebOftenContactController(ILogger<OftenContactController> logger, IOftenContactRepository repository, ILoginContext loginContext, IOftenContactService oftenContactService, IChatSearchService chatSearchService) { _logger = logger; _repository = repository; _loginContext = loginContext; _oftenContactService = oftenContactService; this.chatSearchService = chatSearchService; } /// <summary> /// 根据文件ID获取用户和下面的数据 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("list")] public async Task<IEnumerable<OftenContactInfo>> GetOftenContactsAsync(OftenContactSearchRequest request) { request.UserId = _loginContext.AccountId; return await _oftenContactService.GetOftenContacts(request); } /// <summary> /// 获取聊天界面和验证最新时间 /// </summary> /// <param name="individualGroupId"></param> /// <returns></returns> [HttpGet("list/{individualGroupId}")] public async Task<OftenContactInfoGenericResult> GetOftenContactInfoGenericResult(int individualGroupId) { var request = new OftenContactSearchRequest() { UserId = _loginContext.AccountId, IndividualGroupId = individualGroupId }; return await _oftenContactService.GetOftenContactInfoGenericResult(request); } /// <summary> /// 根据文件ID获取用户和下面的数据 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("all-list")] public async Task<IEnumerable<OftenContactInfo>> GetOftenContactAllAsync(OftenContactSearchRequest request) { request.UserId = _loginContext.AccountId; return await _oftenContactService.GetOftenContactsAll(request); } /// <summary> /// 添加 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("add")] public async Task<OftenContactDto> Insert(OftenContactInRequest request) { var result = new OftenContactDto(); result = await _oftenContactService.InsertAsync(request, _loginContext.AccountId); return result; } /// <summary> /// /// 移除文件夹关系 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("remove")] public async Task<bool> RemoveOftenContact(OftenContactDeRequest request) { return await _repository.RemoveOftenContactAsync(request); } /// <summary> /// 设置置顶 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("is-top")] public async Task<bool> SetOftenContactIsTop(OftenContactDeRequest request) { return await _repository.SetOftenContactIsTopAsync(request); } /// <summary> /// 移动到文件夹 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("move")] public async Task<bool> MoveOftenContactToIndividualGroup(OftenContactUpRequest request) { return await _repository.MoveOftenContactToIndividualGroupAsync(request); } /// <summary> /// 删除聊天界面 /// </summary> /// <param name="oftenContactIds"></param> /// <returns></returns> [HttpPost("delete")] public async Task<bool> DeleteAsync(OftenContactsDeRequest oftenContactIds) { return await _repository.DeleteAsync(oftenContactIds.OftenContactIds); } /// <summary> /// 搜索单聊 /// </summary> /// <param name="keyWord"></param> /// <returns></returns> [HttpGet("search/{keyWord}")] public async Task<IEnumerable<ChatSearchResult>> GetChatSearchAsync(string keyWord) { var result = new List<ChatSearchResult>(); //搜索文件夹 result.AddRange(await chatSearchService.GetChatFolderNameSearchAsync(keyWord, _loginContext.AccountId)); //群聊 result.AddRange(await chatSearchService.GetGroupChatNameSearchAsync(keyWord, _loginContext.AccountId)); //单聊 result.AddRange(await chatSearchService.GetChatSearchAsync(keyWord, _loginContext.AccountId)); //好友 result.AddRange(await chatSearchService.GetFriendUserInfoResult(keyWord, _loginContext.AccountId)); return result; } } }