Пример #1
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            JoinGroupPackage package = packageInfo as JoinGroupPackage;

            if (packageInfo.code == 0)
            {
                //管理员收到入群申请
                if (packageInfo.from != SDKClient.Instance.property.CurrentAccount.userID.ToString())
                {
                    Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.RecvJoinGroup(packageInfo as JoinGroupPackage));
                    Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.SendMsgtoDB(package));
                }
                else
                {
                    if (package.data.isAccepted)
                    {
                        Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.SendMsgtoDB(package));
                        Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(package));
                    }
                }
            }
            else if (packageInfo.code == (int)Protocol.StatusCode.UserIsGroupMember || packageInfo.code == (int)Protocol.StatusCode.AlreadyCompleted)
            {
                Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(package));
            }

            // Util.Helpers.Async.Run(async () => await DAL.DALJoinGroupHelper.SendMsgtoDB(package));

            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #2
0
        public override void SendCommand(EasyClientBase session, PackageInfo packageinfo)
        {
            AddFriendPackage p = packageinfo as AddFriendPackage;

            Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.InsertOrUpdateItem(p));
            base.SendCommand(session, packageinfo);
        }
Пример #3
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            JoinGroupAcceptedPackage package = packageInfo as JoinGroupAcceptedPackage;

            if (packageInfo.code == 0)
            {
                // Task.Run(async () => await DAL.DALGroupOptionHelper.DeleteGroupMemberListPackage(package.data.groupId));
                //TODO:删除群申请列表中申请记录
                Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(packageInfo as JoinGroupAcceptedPackage));
                //入群通知消息入库
                if (package.data.auditStatus == 1)
                {
                    Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.SendMsgtoDB(package));
                }
            }
            else if (packageInfo.code == (int)Protocol.StatusCode.UserIsGroupMember || packageInfo.code == (int)Protocol.StatusCode.AlreadyCompleted)
            {
                if (!Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(packageInfo as JoinGroupAcceptedPackage)))
                {
                    logger.Error($"删除入群申请记录失败:{package.ToString()}");
                }
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #4
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            DismissGroupPackage package = packageInfo as DismissGroupPackage;

            if (packageInfo.code == 0)
            {
                //群主本人则删除群的聊天记录
                if (package.data.ownerId == SDKClient.Instance.property.CurrentAccount.userID)
                {
                    Util.Helpers.Async.Run(async() => await DAL.DALMessageHelper.DeleteHistoryMsg(package.data.groupId, SDKProperty.chatType.groupChat));
                    //Util.Helpers.Async.Run(async()=>await DAL.DALGroupOptionHelper.DeleteGroupMemberInfo)
                }
                else
                {
                    Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.SendMsgtoDB(package));
                    Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(package.data.groupId)); //删除该群的入群申请列表
                }
                Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.DeleteGroupListPackage());
                //Util.Helpers.Async.Run(async () => await DAL.DALGroupOptionHelper.DeleteGroupMemberListPackage(package.data.groupId));

                // Util.Helpers.Async.Run(async () => await DAL.DALMessageHelper.UpdateMsgIsRead(package.data.groupId, 1));
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #5
0
 public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
 {
     SDKClient.Instance.OnNewDataRecv(packageInfo);
     if (packageInfo.code == 0)
     {
         Util.Helpers.Async.Run(async() => await DAL.DALContactListHelper.DeleteCurrentContactListPackage());
     }
     base.ExecuteCommand(session, packageInfo);
 }
Пример #6
0
 public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
 {
     if (packageInfo.code != 0)
     {
         packageInfo.ErrorLog();
     }
     SDKClient.Instance.OnNewDataRecv(packageInfo);
     base.ExecuteCommand(session, packageInfo);
 }
Пример #7
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            if (packageInfo.code == 0)
            {
                GetGroupMemberPackage package = packageInfo as GetGroupMemberPackage;

                Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.UpdateGroupMemberInfo(package));
            }
            base.ExecuteCommand(session, packageInfo);
        }
Пример #8
0
 public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
 {
     if (packageInfo.code == 0)
     {
         Task.Run(async() => await DAL.DALGroupOptionHelper.DeleteGroupListPackage());
         CreateGroupComponsePackage package = packageInfo as CreateGroupComponsePackage;
         Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.SendMsgtoDB(package));
     }
     SDKClient.Instance.OnNewDataRecv(packageInfo);
     base.ExecuteCommand(session, packageInfo);
 }
Пример #9
0
        public async override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            AddFriendAcceptedPackage package = packageInfo as AddFriendAcceptedPackage;

            //接收加好友
            if (packageInfo.code == 0 || package.code == (int)Protocol.StatusCode.AlreadyBecomeFriend)
            {
                await DAL.DALContactListHelper.DeleteCurrentContactListPackage();

                if (package.data.userId == SDKClient.Instance.property.CurrentAccount.userID)
                {
                    await DAL.DALFriendApplyListHelper.UpdateItemIsChecked(package.data.friendId);

                    await DAL.DALUserInfoHelper.UpdateItemIsChecked(package.data.friendId);

                    await DAL.DALMessageHelper.SendMsgtoDB(package.id, package.from, package.to, "已经是好朋友,开始聊天吧", package.data.friendId, package.data.userId, SDKProperty.MessageType.addfriendaccepted, SDKProperty.MessageState.isRead);

                    await DAL.DALMessageHelper.UpdateMsgSessionTypeToCommon(package.data.friendId);

                    await DAL.DALStrangerOptionHelper.DeleteStranger(package.data.friendId);
                }
                else
                {
                    await DAL.DALFriendApplyListHelper.UpdateItemIsChecked(package.data.userId);

                    await DAL.DALUserInfoHelper.UpdateItemIsChecked(package.data.userId);

                    if (package.data.type != 1)//服务器代发的同意消息,不需要添加提示
                    {
                        await DAL.DALMessageHelper.SendMsgtoDB(package.id, package.from, package.to, "已经是好朋友,开始聊天吧", package.data.userId, package.data.userId, SDKProperty.MessageType.addfriendaccepted, SDKProperty.MessageState.isRead);
                    }
                    await DAL.DALMessageHelper.UpdateMsgSessionTypeToCommon(package.data.userId);

                    await DAL.DALStrangerOptionHelper.DeleteStranger(package.data.userId);
                }
            }
            else if (packageInfo.code == (int)Protocol.StatusCode.AuditFriendApplyError)
            {
                if (package.data.userId == SDKClient.Instance.property.CurrentAccount.userID)
                {
                    await DAL.DALFriendApplyListHelper.DeleteItem(package.data.friendId);
                }
                else
                {
                    await DAL.DALFriendApplyListHelper.DeleteItem(package.data.friendId);
                }
            }


            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #10
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            AddFriendPackage package = packageInfo as AddFriendPackage;

            //收到对方的好友申请
            if (package.code == 0 && package.data.userId != SDKClient.Instance.property.CurrentAccount.userID)
            {
                Util.Helpers.Async.Run(async() => await DAL.DALFriendApplyListHelper.InsertOrUpdateItem(package));
                Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.InsertOrUpdateItem(package));
                SDKClient.Instance.property.FriendApplyList = Util.Helpers.Async.Run(async() => await DAL.DALFriendApplyListHelper.GetFriendApplyList());
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #11
0
 public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
 {
     if (packageInfo.code == 0)
     {
         //收到入群申请
         if (packageInfo.from != SDKClient.Instance.property.CurrentAccount.userID.ToString())
         {
             InviteJoinGroupPackage package = packageInfo as InviteJoinGroupPackage;
             Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.SendMsgtoDB(package));
         }
     }
     SDKClient.Instance.OnNewDataRecv(packageInfo);
     base.ExecuteCommand(session, packageInfo);
 }
Пример #12
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            RequestIpPackage package = packageInfo as RequestIpPackage;

            //收到对方的P2P请求
            if (package.code == 0 && package.from != SDKClient.Instance.property.CurrentAccount.userID.ToString())
            {
                /*建立处理对象
                 * 初始化处理
                 * 回包处理
                 */
            }

            base.ExecuteCommand(session, packageInfo);
        }
Пример #13
0
        public async override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            SetStrangerDoNotDisturbPackage package = packageInfo as SetStrangerDoNotDisturbPackage;

            if (package.code == 0)
            {
                if (package.data.userId == SDKClient.Instance.property.CurrentAccount.userID)
                {
                    await DAL.DALStrangerOptionHelper.SetStrangerdoNotDisturb(package.data.strangerId, package.data.isNotdisturb);
                }
                else
                {
                    await DAL.DALStrangerOptionHelper.SetStrangerdoNotDisturb(package.data.userId, package.data.isNotdisturb);
                }
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #14
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            GetBlackListPackage package = packageInfo as GetBlackListPackage;

            if (package.code == 0 && package.data.total > package.data.max)//继续发送请求
            {
                GetBlackListPackage p = new GetBlackListPackage();
                p.data        = new GetBlackListPackage.Data();
                p.from        = SDKClient.Instance.property.CurrentAccount.userID.ToString();
                p.id          = package.id;
                p.data.userId = SDKClient.Instance.property.CurrentAccount.userID;
                p.data.min    = package.data.max + 1;
                p.data.max    = p.data.min + 100;
                base.SendCommand(session, package);
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #15
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            if (packageInfo.code == 0)
            {
                Util.Helpers.Async.Run(async() => await DAL.DALContactListHelper.DeleteCurrentContactListPackage());
                UpdateFriendSetPackage package = packageInfo as UpdateFriendSetPackage;
                DB.ContactDB           contact = Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.Get(package.data.friendId));

                if (contact != null)
                {
                    if (package.data.setType == (int)UpdateFriendSetPackage.FriendSetOption.设置好友备注)
                    {
                        contact.Remark = package.data.content;
                        Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.UpdateRecord(contact));
                    }
                }
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #16
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            if (packageInfo.code == 0)
            {
                GetUserPackage package = packageInfo as GetUserPackage;
                if (package.data.user != null && package.data.user.userId == SDKClient.Instance.property.CurrentAccount.userID)
                {
                    SDKClient.Instance.property.CurrentAccount.photo    = package.data.user.photo;
                    SDKClient.Instance.property.CurrentAccount.userName = package.data.user.userName;
                    SDKClient.Instance.property.CurrentAccount.Sex      = package.data.user.sex;
                    SDKClient.Instance.property.CurrentAccount.Province = package.data.user.areaAName;
                    SDKClient.Instance.property.CurrentAccount.City     = package.data.user.areaBName;

                    Util.Helpers.Async.Run(async() => await DAL.DALAccount.UpdateAccount(SDKClient.Instance.property.CurrentAccount));
                }
                else
                {
                    if (package.data.user == null)
                    {
                        return;
                    }
                    DB.ContactDB contact = Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.Get(package.data.user.userId));
                    if (contact == null)
                    {
                        contact = new DB.ContactDB();
                    }
                    contact.HeadImgMD5       = package.data.user.photo;
                    contact.NickName         = package.data.user.userName;
                    contact.UserId           = package.data.user.userId;
                    contact.Area             = package.data.user.areaAName + package.data.user.areaBName;
                    contact.Sex              = package.data.user.sex;
                    contact.Mobile           = package.data.user.mobile;
                    contact.KfId             = package.data.user.kfId;
                    contact.haveModifiedKfid = package.data.user.haveModifiedKfid;
                    contact.Remark           = package.data.user.partnerRemark;
                    Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.UpdateRecord(contact));
                }
                SDKClient.Instance.OnNewDataRecv(packageInfo);
            }
            base.ExecuteCommand(session, packageInfo);
        }
Пример #17
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            GetGroupMemberListPackage package = (GetGroupMemberListPackage)packageInfo;

            if (packageInfo.code == 0)
            {
                SDKClient.Instance.OnNewDataRecv(package);
                Util.Helpers.Async.Run(async() =>
                {
                    var items = package.data.items.ToList();
                    var pack  = Util.Helpers.Json.ToJson(items);
                    var md5   = Util.Helpers.Encrypt.Md5By32(pack);
                    var dbobj = await DAL.DALGroupOptionHelper.GetGroupMemberListPackage(package.data.groupId);
                    if (dbobj == null)
                    {
                        DB.groupMemberListDB db      = new DB.groupMemberListDB();
                        db.getGroupMemberListPackage = Util.Helpers.Json.ToJson(package);
                        db.MD5     = md5;
                        db.groupId = package.data.groupId;
                        await SDKProperty.SQLiteConn.InsertAsync(db);
                        await DAL.DALGroupOptionHelper.InsertGroupMemberInfo(package);
                    }
                    else if (dbobj.MD5 == md5)
                    {
                        return;
                    }
                    else
                    {
                        dbobj.getGroupMemberListPackage = Util.Helpers.Json.ToJson(package);
                        dbobj.MD5 = md5;
                        await SDKProperty.SQLiteConn.UpdateAsync(dbobj);
                        //await DAL.DALGroupOptionHelper.DeleteGroupMemberInfo();
                        await DAL.DALGroupOptionHelper.InsertGroupMemberInfo(package);
                    }
                });
            }

            System.Threading.Interlocked.Increment(ref SDKClient.Instance.property.CurrentAccount.curGroupCount);

            base.ExecuteCommand(session, packageInfo);
        }
Пример #18
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            UpdateuserPackage package = packageInfo as UpdateuserPackage;

            if (package.code == 0)
            {
                switch (package.data.updateType)
                {
                case (int)UpdateUserOption.修改昵称:
                    SDKClient.Instance.property.CurrentAccount.userName = package.data.content;

                    break;

                case (int)UpdateUserOption.修改头像:

                    SDKClient.Instance.property.CurrentAccount.photo = package.data.content;


                    break;

                case (int)UpdateUserOption.修改性别:
                    // SDKClient.Instance.property.CurrentAccount.Sex = package.data.content;

                    break;

                case (int)UpdateUserOption.修改生日:

                    break;

                case (int)UpdateUserOption.修改所在地:

                    break;

                default:
                    break;
                }
                Util.Helpers.Async.Run(async() => await DAL.DALAccount.UpdateAccount(SDKClient.Instance.property.CurrentAccount));
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #19
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            UpdateUserSetsInGroupPackage package = packageInfo as UpdateUserSetsInGroupPackage;

            if (packageInfo.code == 0)
            {
                //   Task.Run(async () => await DAL.DALGroupOptionHelper.DeleteGroupMemberListPackage(package.data.groupId));
                Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.DeleteGroupListPackage());
                if (package.data.setType == 1)
                {
                    var member = Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.GetGroupMemberInfo(package.data.userId, package.data.groupId));
                    if (member != null && member.userId != 0)
                    {
                        member.memoInGroup = package.data.content;
                        Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.UpdateGroupMemberInfo(member));
                    }
                }
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #20
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            DeleteFriendPackage package = packageInfo as DeleteFriendPackage;

            if (package.code == 0)
            {
                if (package.from == SDKClient.Instance.property.CurrentAccount.userID.ToString())
                {
                    if (package.data.type == 0)
                    {
                        Util.Helpers.Async.Run(async() => await DAL.DALMessageHelper.DeleteHistoryMsg(package.data.friendId, SDKProperty.chatType.chat));
                    }

                    Util.Helpers.Async.Run(async() => await DAL.DALContactListHelper.DeleteCurrentContactListPackage());
                    Util.Helpers.Async.Run(async() => await DAL.DALUserInfoHelper.DeleteItem(package.data.friendId));
                }
            }

            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #21
0
 public override void SendCommand(EasyClientBase session, PackageInfo packageinfo)
 {
     Util.Helpers.Async.Run(async() =>
     {
         GetGroupPackage p = packageinfo as GetGroupPackage;
         if (p == null)
         {
             return;
         }
         var obj = await DAL.DALGroupOptionHelper.GetGroupInfo(p.data.groupId);
         if (obj == null || string.IsNullOrEmpty(obj.getGroupPackage))
         {
             return;
         }
         else
         {
             GetGroupPackage t = Util.Helpers.Json.ToObject <GetGroupPackage>(obj.getGroupPackage);
             SDKClient.Instance.OnNewDataRecv(t);
         }
     });
     base.SendCommand(session, packageinfo);
 }
Пример #22
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            GetFriendApplyListPackage package = packageInfo as GetFriendApplyListPackage;

            if (packageInfo.code == 0)
            {
                //Util.Helpers.Async.Run(async () =>
                //{
                //    var pack = Util.Helpers.Json.ToJson(package.data);
                //    var md5 = Util.Helpers.Encrypt.Md5By32(pack);
                //    var dbobj = await DAL.DALFriendApplyListHelper.GetFriendApplyList();
                //    if (dbobj == null)
                //    {
                //        DB.friendApplyList db = new DB.friendApplyList();
                //        db.getFriendApplyListPackage = Util.Helpers.Json.ToJson(package);
                //        db.MD5 = md5;
                //        SDKClient.Instance.OnNewDataRecv(packageInfo);
                //        await SDKProperty.SQLiteConn.InsertAsync(db);

                //    }
                //    else if (dbobj.MD5 == md5)
                //    {
                //        return;
                //    }
                //    else
                //    {
                //        dbobj.getFriendApplyListPackage = Util.Helpers.Json.ToJson(package);
                //        dbobj.MD5 = md5;
                //        SDKClient.Instance.OnNewDataRecv(packageInfo);
                //        await SDKProperty.SQLiteConn.UpdateAsync(dbobj);
                //    }
                //});
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);
            base.ExecuteCommand(session, packageInfo);
        }
Пример #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="session"></param>
        /// <param name="packageInfo"></param>
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            ExitGroupPackage package = packageInfo as ExitGroupPackage;

            if (packageInfo.code == 0)
            {
                if (package.data.userIds.Contains(SDKClient.Instance.property.CurrentAccount.userID))//自己退群
                {
                    if (package.data.adminId == 0)
                    {
                        //删除群的聊天记录
                        Util.Helpers.Async.Run(async() => await DAL.DALMessageHelper.DeleteHistoryMsg(package.data.groupId, SDKProperty.chatType.groupChat));
                        Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.DeleteGroupListPackage());
                        //  Util.Helpers.Async.Run(async () => await DAL.DALGroupOptionHelper.DeleteGroupMemberListPackage(package.data.groupId));
                        Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(package.data.groupId)); //删除该群的入群申请列表
                    }
                    else//被T出
                    {
                        Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.SendMsgtoDB(package));
                        Util.Helpers.Async.Run(async() => await DAL.DALMessageHelper.UpdateMsgIsRead(package.data.groupId, 1));
                        Util.Helpers.Async.Run(async() => await DAL.DALJoinGroupHelper.DeleteJoinGroupItem(package.data.groupId)); //删除该群的入群申请列表
                    }
                }
                else
                {
                    if (package.data.adminIds != null && package.data.adminIds.Contains(SDKClient.Instance.property.CurrentAccount.userID))
                    {
                        Util.Helpers.Async.Run(async() => await DAL.DALGroupOptionHelper.SendMsgtoDB(package));
                    }
                }
            }
            SDKClient.Instance.OnNewDataRecv(packageInfo);


            base.ExecuteCommand(session, packageInfo);
        }
Пример #24
0
        public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
        {
            GetOfflineMessageListPackage package = packageInfo as GetOfflineMessageListPackage;
            List <DB.messageDB>          lst     = new List <DB.messageDB>();

            if (packageInfo.code == 0)
            {
                //离线消息入库
                if (package != null)
                {
                    package.RECVLog();
                    string log = Util.Helpers.CodeTimer.Time("ReceiveOffLineMessage", 1, () =>
                    {
                        lst = Util.Helpers.Async.Run(async() => await DAL.DALMessageHelper.ReceiveOffLineMessage(package));

                        if (lst != null)
                        {
                            var noticemsgs_del = lst.Where(m => m.noticeId != 0 && m.msgType == nameof(SDKProperty.MessageType.deletegroupnotice));
                            var noticemsgs_add = lst.Where(m => m.noticeId != 0 && m.msgType == nameof(SDKProperty.MessageType.addgroupnotice));

                            foreach (var item in noticemsgs_add)
                            {
                                if (noticemsgs_del.Any(m => m.noticeId == item.noticeId))
                                {
                                    item.optionRecord += (int)SDKProperty.MessageState.cancel;
                                }
                            }
                            foreach (var item in lst)
                            {
                                var isgroup = item.roomType == 1 ? true : false;
                                IList <MessageEntity> msglst = new List <MessageEntity>();
                                //  if (offlineMessage.context.TryAdd((item.roomId, isgroup), msglst))
                                if (offlineMessage.context.TryAdd(new Tuple <int, bool>(item.roomId, isgroup), msglst))
                                {
                                    MessageEntity messageEntity = new MessageEntity()
                                    {
                                        db = item
                                    };
                                    msglst.Add(messageEntity);
                                }
                                else
                                {
                                    // if (offlineMessage.context.TryGetValue((item.roomId, isgroup), out msglst))
                                    if (offlineMessage.context.TryGetValue(new Tuple <int, bool>(item.roomId, isgroup), out msglst))
                                    {
                                        MessageEntity messageEntity = new MessageEntity()
                                        {
                                            db = item
                                        };
                                        var target = msglst.FirstOrDefault(m => m.MsgId == item.msgId);
                                        if (target == null)
                                        {
                                            msglst.Add(messageEntity);
                                        }
                                        else
                                        {
                                            msglst.Remove(target);
                                            msglst.Add(messageEntity);
                                        }
                                    }
                                }
                            }

                            //  SDKClient.Instance.OnOffLineMessageEventHandle(offlineMessage);
                        }
                    });
                    logger.Info(log);
                }

                if (package.data.count == 1000)//继续发送请求
                {
                    GetOfflineMessageListPackage p = new GetOfflineMessageListPackage();

                    p.data = new GetOfflineMessageListPackage.Data();

                    p.from       = SDKClient.Instance.property.CurrentAccount.userID.ToString();
                    p.id         = package.id;
                    p.data.count = package.data.count;
                    p.data.time  = package.data.time;
                    ThreadPool.QueueUserWorkItem(m =>
                    {
                        // SDKClient.Instance.GetOfflineMessageList(p);
                    });
                    //p.Send(session);

                    PushOfflineMessage(package, lst);
                    //logger.Info("离线消息msg=>ui: " + package.id);
                }
                else
                {
                    Task.Run(() =>
                    {
                        try
                        {
                            PushOfflineMessage(package, lst);


                            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
                            {
                                BinaryFormatter binaryFormatter = new BinaryFormatter();

                                binaryFormatter.Serialize(ms, offlineMessage);
                                ms.Position = 0;
                                object temp = binaryFormatter.Deserialize(ms);
                                SDKClient.Instance.OnOffLineMessageEventHandle((OfflineMessageContext)temp);
                            }
                            offlineMessage.context.Clear();
                            logger.Info("离线消息msg=>ui: " + package.id);
                        }
                        catch (Exception ex)
                        {
                            logger.Error($"PushOfflineMessage 处理出错 error:{ex.Message}; source : {package.ToString()}");
                        }
                        System.Threading.Interlocked.CompareExchange(ref SDKClient.Instance.property.CanHandleMsg, 2, 1);
                        logger.Info("CanHandleMsg 值修改为:2");
                        //foreach (var item in SDKClient.Instance.property.PackageCache)
                        //{
                        //    SDKClient.Instance.OnNewDataRecv(item);
                        //}
                        //发送离线消息已收确认请求
                        GetOfflineMessageListPackage p = new GetOfflineMessageListPackage();
                        p.data       = new GetOfflineMessageListPackage.Data();
                        p.from       = SDKClient.Instance.property.CurrentAccount.userID.ToString();
                        p.id         = package.id;
                        p.data.count = 0;
                        p.data.time  = package.data.time;
                        ThreadPool.QueueUserWorkItem(m =>
                        {
                            // SDKClient.Instance.GetOfflineMessageList(p,false);
                            logger.Info("OfflineMessageList 发送离线消息全部已收确认");
                        });
                    });
                }
            }
            base.ExecuteCommand(session, packageInfo);
        }
Пример #25
0
 public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
 {
     SDKClient.Instance.OnNewDataRecv(packageInfo);
     base.ExecuteCommand(session, packageInfo);
 }
Пример #26
0
 public override void ExecuteCommand(EasyClientBase session, PackageInfo packageInfo)
 {
     base.ExecuteCommand(session, packageInfo);
 }
Пример #27
0
 public override void SendCommand(EasyClientBase session, PackageInfo packageinfo)
 {
     base.SendCommand(session, packageinfo);
     logger.Info($"MessageConfirm-session:{SDKClient.Instance.property.CurrentAccount.Session},id:{packageinfo.id}\r\n{packageinfo.ToString()}");
 }
Пример #28
0
 internal static PackageInfo Send(this PackageInfo info, EasyClientBase easyClientBase)
 {
     Util.Logs.Log.GetLog().Info($"SEND:\tsession:\t{SDKClient.Instance.property.CurrentAccount.Session}:\r\n {Util.Helpers.Json.ToJson(info)}");
     SDKClient.Instance.OnSendCommand(info);
     return(info);
 }
Пример #29
0
 public override void SendCommand(EasyClientBase session, PackageInfo packageinfo)
 {
     base.SendCommand(session, packageinfo);
 }