Beispiel #1
0
        /// <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();
            }
        }
Beispiel #2
0
        /// <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();
                }
            }
        }