/// <summary>
        /// 更新会话
        /// 单聊
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool Single_updateSession(IM_MsgSingle msg)
        {
            var user      = LOGIN_USER;
            var db_result = 0;

            using (var db = new ModelAC())
            {
                var session = db.IM_Chatter.SingleOrDefault(p => p.App_Id == APP_GUID && p.ChatType == IM_ChatType.Single &&
                                                            ((p.Single_A_UserId == msg.From_UserId && p.Single_B_UserId == msg.To_UserId) ||
                                                             (p.Single_A_UserId == msg.To_UserId && p.Single_B_UserId == msg.From_UserId))
                                                            );
                if (session == null)
                {
                    #region 新增会话
                    var newSession = new IM_Chatter()
                    {
                        App_Id          = APP_GUID,
                        ChatType        = IM_ChatType.Single,
                        Single_A_UserId = msg.From_UserId,
                        Single_B_UserId = msg.To_UserId,
                        Group_GroupId   = null,
                    };

                    newSession.IM_ChatterActors.Add(new IM_ChatterActor()
                    {//消息发送者
                        App_Id         = APP_GUID,
                        ChatterId      = newSession.Id,
                        UserId         = msg.From_UserId,
                        Last_MsgId     = msg.Id,
                        UnreadMsgCount = 0,
                        ChatterTime    = DateTime.Now,
                        IsCleared      = false,
                    });

                    newSession.IM_ChatterActors.Add(new IM_ChatterActor()
                    {//消息接收者
                        App_Id         = APP_GUID,
                        ChatterId      = newSession.Id,
                        UserId         = msg.To_UserId,
                        Last_MsgId     = msg.Id,
                        UnreadMsgCount = 1,
                        ChatterTime    = DateTime.Now,
                        IsCleared      = false,
                    });

                    db.IM_Chatter.Add(newSession);
                    db_result = db.SaveChanges();
                    #endregion
                }
                else
                {
                    #region 更新会话
                    foreach (var toActor in session.IM_ChatterActors)
                    {
                        toActor.Last_MsgId = msg.Id;
                        if (toActor.UserId != user.Id)
                        {//消息接收者
                            toActor.UnreadMsgCount += 1;
                        }
                        toActor.ChatterTime = DateTime.Now;
                    }
                    db_result = db.SaveChanges();
                    #endregion
                }
            }

            return(db_result > 0);
        }
        /// <summary>
        /// 更新会话
        /// 群聊
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool Group_updateSession(IM_MsgGroup msg)
        {
            var user = LOGIN_USER;
            //所有群聊成员
            var allMembers = new List <Guid>();
            var db_result  = 0;

            using (var db = new ModelAC())
            {
                allMembers = db.Im_UserGroup.Where(p => p.IM_Group_Id == msg.To_GroupId).Select(p => p.IM_User_Id).ToList();

                var session = db.IM_Chatter.SingleOrDefault(p =>
                                                            p.App_Id == APP_GUID && p.ChatType == IM_ChatType.Group && p.Group_GroupId == msg.To_GroupId);

                if (session == null)
                {
                    #region 新增会话
                    var newSession = new IM_Chatter()
                    {
                        App_Id          = APP_GUID,
                        ChatType        = IM_ChatType.Group,
                        Single_A_UserId = null,
                        Single_B_UserId = null,
                        Group_GroupId   = msg.To_GroupId,
                    };

                    newSession.IM_ChatterActors.Add(new IM_ChatterActor()
                    {//消息发送者
                        App_Id         = APP_GUID,
                        ChatterId      = newSession.Id,
                        UserId         = msg.From_UserId,
                        Last_MsgId     = msg.Id,
                        UnreadMsgCount = 0,
                        ChatterTime    = DateTime.Now,
                        IsCleared      = false,
                    });

                    allMembers.Remove(msg.From_UserId);
                    foreach (var memeberId in allMembers)
                    {//消息接收者
                        newSession.IM_ChatterActors.Add(new IM_ChatterActor()
                        {
                            App_Id         = APP_GUID,
                            ChatterId      = newSession.Id,
                            UserId         = memeberId,
                            Last_MsgId     = msg.Id,
                            UnreadMsgCount = 1,
                            ChatterTime    = DateTime.Now,
                            IsCleared      = false,
                        });
                    }

                    db.IM_Chatter.Add(newSession);
                    db_result = db.SaveChanges();
                    #endregion
                }
                else
                {
                    #region 更新会话
                    List <Guid> oldIM_ChatterActors = session.IM_ChatterActors.Select(p => p.UserId).ToList();
                    List <Guid> expectedList        = allMembers.Except(oldIM_ChatterActors).ToList();

                    foreach (var toActor in session.IM_ChatterActors)
                    {//更新会话参与者
                        toActor.Last_MsgId = msg.Id;
                        if (toActor.UserId != user.Id)
                        {//消息接收者
                            toActor.UnreadMsgCount += 1;
                        }
                        toActor.ChatterTime = DateTime.Now;
                    }

                    if (expectedList.Exists(p => p == msg.From_UserId))
                    {//新增会话参与者-消息发送者
                        expectedList.Remove(msg.From_UserId);

                        session.IM_ChatterActors.Add(new IM_ChatterActor()
                        {
                            App_Id         = APP_GUID,
                            ChatterId      = session.Id,
                            UserId         = msg.From_UserId,
                            Last_MsgId     = msg.Id,
                            UnreadMsgCount = 0,
                            ChatterTime    = DateTime.Now,
                            IsCleared      = false,
                        });
                    }

                    foreach (var memeberId in expectedList)
                    {//新增会话参与者-消息接收者
                        session.IM_ChatterActors.Add(new IM_ChatterActor()
                        {
                            App_Id         = APP_GUID,
                            ChatterId      = session.Id,
                            UserId         = memeberId,
                            Last_MsgId     = msg.Id,
                            UnreadMsgCount = 1,
                            ChatterTime    = DateTime.Now,
                            IsCleared      = false,
                        });
                    }

                    db_result = db.SaveChanges();
                    #endregion
                }
            }

            return(db_result > 0);
        }