/// <summary> /// 发送消息 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <MessageLogDto> SendMessage(MessageLogInput input) { // 获取消息接收者 var receiver = await _userManager.GetUserByIdAsync(input.ReceiverUserId); try { var entity = input.MapTo <MessageLog>(); // 添加租户Id entity.TenantId = AbpSession.TenantId; var message = await _messageManager.SendMessage(entity); // 获取当前在线用户 var clients = UserClients.Values .Where(c => (c.UserId == receiver.Id && c.TenantId == receiver.TenantId)); var dto = message.MapTo <MessageLogDto>(); foreach (var client in clients) { await Clients.Client(client.ConnectionId).SendAsync("getMessage", dto); } return(dto); } catch (UserFriendlyException ex) { Logger.Warn("Could not send chat message to user: " + input.ReceiverUserId); Logger.Warn(ex.ToString(), ex); return(null); } }
/// <summary> /// 读消息 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task ReadMessage(MessageLogInput input) { await _messageManager.ReadMessage(input.ReceiverUserId, input.CreatorUserId); }