/// <summary> /// 发送消息给个体 /// </summary> /// <param name="receiveMessage"></param> private void IndividualSendMessage(ReceiveMessage receiveMessage) { var user = Users.FirstOrDefault(p => p.UserId.Equals(receiveMessage.ReceiverId)); var senduser = Users.FirstOrDefault(p => p.UserId.Equals(receiveMessage.SenderId)); if (senduser == null) { log.Error(new Exception("未获取到发送用户!")); return; } var sendMessage = new SendMessage(receiveMessage.MessageId, receiveMessage.SenderId, receiveMessage.ReceiverType, receiveMessage.MessageType, receiveMessage.Message); try { var message = user.SendMessageAsync(sendMessage).Result; using (var repository = CreateRepositoryFunc()) { repository.AddUserChatMessage(message); repository.SaveChange(); } } catch (Exception ex) { log.Error(ex); var errorMessage = new SendErrorMessage(Guid.NewGuid(), receiveMessage.SenderId, receiveMessage.ReceiverType, receiveMessage.MessageId , $"消息发送失败!{GetExceptionMessage(ex)}"); senduser.SendMessageAsync(errorMessage).Wait(); } }
/// <summary> /// 发送消息给用户组 /// </summary> /// <param name="receiveMessage"></param> private void GroupSendMessage(ReceiveMessage receiveMessage) { /** * 获取组用户列表 * 排除发消息用户 * 循环发送消息 * */ using (var repository = CreateRepositoryFunc()) { User senduser = Users.FirstOrDefault(p => p.UserId.Equals(receiveMessage.SenderId)); try { var chatGroup = repository.GetChatGroups().FirstOrDefault(p => p.ChatGroupId.Equals(receiveMessage.ReceiverId)); if (chatGroup == null) { var errorMessage = new SendErrorMessage(Guid.NewGuid(), receiveMessage.SenderId, receiveMessage.ReceiverType, receiveMessage.MessageId , $"用户组【{receiveMessage.ReceiverId}】不能存在,消息发送失败!"); senduser.SendMessageAsync(errorMessage).Wait(); return; } var sendMessage = new SendMessage(receiveMessage.MessageId, receiveMessage.SenderId, receiveMessage.ReceiverType, receiveMessage.MessageType, receiveMessage.Message); var chatGroupMessage = chatGroup.SendMessage(senduser, sendMessage); repository.AddChatGroupMessage(chatGroupMessage); foreach (var recevieUser in chatGroupMessage.Users) { if (recevieUser.ChatGroupUser.UserId == senduser.UserId) { continue; } repository.AddChatGroupMessageReceiverUser(recevieUser); var chatGrouUser = Users.FirstOrDefault(p => p.UserId.Equals(recevieUser.ChatGroupUser.UserId)); chatGrouUser.SendMessageAsync(sendMessage).Wait(); } repository.SaveChange(); } catch (Exception ex) { log.Error(ex); var errorMessage = new SendErrorMessage(Guid.NewGuid(), receiveMessage.SenderId, receiveMessage.ReceiverType, receiveMessage.MessageId , $"消息发送失败!{GetExceptionMessage(ex)}"); senduser.SendMessageAsync(errorMessage).Wait(); } } }