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); }
/// <summary> /// 好友申请审核结果 /// </summary> /// <param name="package">好友审核包</param> internal void PackageDeal(AddFriendAcceptedPackage package) { if (package == null || package.data == null) { return; } var tempApplyList = this.Items.ToList(); if (package.code != 0)//包错误 { //Application.Current.Dispatcher.Invoke(() => //{ if (package.code == 636) { AppData.MainMV.TipMessage = "已经是好友关系了"; UserViewModel userVM = tempApplyList.FirstOrDefault(info => info.ID == package.data.friendId); userVM.IsNeedAccepted = false; var friendApply = SDKClient.SDKClient.Instance.property.FriendApplyList.FirstOrDefault(m => m.userId == package.data.friendId); if (friendApply != null) { friendApply.IsChecked = true; } } else if (package.code == 606) { UserViewModel userVM = tempApplyList.FirstOrDefault(info => info.ID == package.data.friendId); userVM.IsNeedAccepted = false; AppData.MainMV.TipMessage = package.error; var friendApply = SDKClient.SDKClient.Instance.property.FriendApplyList.FirstOrDefault(m => m.userId == package.data.friendId); if (friendApply != null) { friendApply.IsChecked = true; } } else { //_newFriendViewModel.UpdateApplyStatus(package.data.friendId, 0); //IMUI.View.V2.MessageTip.ShowTip("添加好友失败!", IMUI.View.V2.TipTypes.Warning); AppData.MainMV.TipMessage = "添加好友失败!"; } //}); } else { var friendApply = SDKClient.SDKClient.Instance.property.FriendApplyList.FirstOrDefault(m => m.userId == package.data.friendId); if (friendApply != null) { friendApply.IsChecked = true; } //我同意好友申请后的回包处理 if (package.data.userId == AppData.Current.LoginUser.ID) { UserViewModel userVM = tempApplyList.FirstOrDefault(info => info.ID == package.data.friendId); if (userVM != null && userVM.Model is UserModel user) { user.LinkDelType = 0; if (user.LinkType == 1 || user.LinkType == 3) { } else { var friendVM = AppData.MainMV.FriendListVM.AddNewFriend(package.data.friendId); if (friendVM != null && friendVM.Model is UserModel userModel) { userModel.FriendSource = friendApply.friendSource; userModel.SourceGroup = friendApply.sourceGroup; userModel.SourceGroupName = friendApply.sourceGroupName; if (userModel.FriendSource != 0) { friendVM.IsExitFriendSource = true; switch (user.FriendSource) { case (int)ApplyFriendSource.FriendRecommend: friendVM.ApplyFriendContent = "好友推荐"; break; case (int)ApplyFriendSource.Group: friendVM.ApplyFriendContent = "群聊:" + userModel.SourceGroupName; break; case (int)ApplyFriendSource.PhoneNumSearch: friendVM.ApplyFriendContent = "手机号搜索"; break; case (int)ApplyFriendSource.Scan: friendVM.ApplyFriendContent = "扫一扫"; break; case (int)ApplyFriendSource.ShopInvitation: friendVM.ApplyFriendContent = "开店邀请"; break; case (int)ApplyFriendSource.FriendVerification: friendVM.ApplyFriendContent = "朋友验证"; break; case (int)ApplyFriendSource.KeFangNum: friendVM.ApplyFriendContent = "可访号搜索"; break; case (int)ApplyFriendSource.InvitationCard: break; case (int)ApplyFriendSource.Other: break; } } else { friendVM.IsExitFriendSource = false; } } } var attention = AppData.MainMV.AttentionListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.friendId); if (attention != null) { App.Current.Dispatcher.Invoke(() => { AppData.MainMV.AttentionListVM.Items.Remove(attention); }); } //MessageType type; //try //{ // type = (MessageType)Enum.Parse(typeof(MessageType), package.msgType.ToLower()); //} //catch //{ // //Views.MessageBox.ShowBox("收到未知消息类型:" + m.msgType); // continue; //} var chatVM = AppData.MainMV.ChatListVM.GetChat(package.data.friendId); if (chatVM.IsTemporaryChat) { MessageModel msg = new MessageModel() { MsgKey = package.id, SendTime = package.time.Value, IsMine = false, MsgType = MessageType.addfriendaccepted //Target = AppData.Current.LoginUser, }; if (SDKClient.SDKClient.Instance.property.FriendApplyList != null && SDKClient.SDKClient.Instance.property.FriendApplyList.Count > 0) { var tempFriendApply = SDKClient.SDKClient.Instance.property.FriendApplyList.FirstOrDefault(a => a.userId == package.data.friendId); if (tempFriendApply != null) { if (string.IsNullOrEmpty(tempFriendApply.applyRemark)) { msg.MsgType = MessageType.notification; msg.TipMessage = msg.Content = ConstString.BecomeFriendsTip; } else { msg.MsgType = MessageType.notification; msg.Sender = AppData.Current.GetUserModel(package.data.friendId); msg.IsMine = false; msg.Content = ConstString.BecomeFriendsTip; msg.TipMessage = msg.Content; } } } else { msg.MsgType = MessageType.notification; msg.TipMessage = msg.Content = ConstString.BecomeFriendsTip; } chatVM.AddMessage(msg); //if (AppData.MainMV.ChatListVM.SelectedItem == chatVM) //{ // chatVM.AddMessageTipEx("已经成为好友,开始聊天吧", msg.SendTime, msg.MsgKey); // chatVM.AddMessageTipEx("以上为打招呼内容", msg.SendTime, msg.MsgKey); //} //chatVM.cha //chatVM.AddMessageTipEx("已经成为好友,开始聊天吧"); } else { user.IsNotDisturb = user.IsTopMost = false; user.TopMostTime = DateTime.MinValue; } userVM.IsNeedAccepted = false; ThreadPool.QueueUserWorkItem(m => { var obj = SDKClient.SDKClient.Instance.GetFriend(package.data.friendId); if (obj?.data?.item != null && !string.IsNullOrEmpty(obj.data.item.partnerRemark)) { user.DisplayName = obj.data.item.partnerRemark; } }); chatVM.IsTemporaryChat = false; chatVM.CurrentChatType = ChatType.Normal; chatVM.Acitve(); App.Current.Dispatcher.Invoke(() => { AppData.MainMV.ChatListVM.DeleteStrangerItem(chatVM, false); }); var target = tempApplyList.FirstOrDefault(info => info.ID == package.data.friendId); target.IsRead = true; } else { if (package.data.friendId == AppData.Current.LoginUser.ID) { return; } var tempUser = AppData.Current.GetUserModel(package.data.friendId); tempUser.LinkDelType = 0; var friend = AppData.MainMV.FriendListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.friendId); if (friend == null) { AppData.MainMV.FriendListVM.AddNewFriend(package.data.friendId); friend = AppData.MainMV.FriendListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.friendId); if (friend != null) { if (tempUser.LinkType == 1 || tempUser.LinkType == 3) { friend.FirstChar = friend.GroupByChar = ' '; App.Current.Dispatcher.Invoke(() => { AppData.MainMV.FriendListVM.UpdateGroupBy(); }); } } SDKClient.SDKClient.Instance.GetUser(package.data.friendId); var attention = AppData.MainMV.AttentionListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.friendId); if (attention != null) { App.Current.Dispatcher.Invoke(() => { AppData.MainMV.AttentionListVM.Items.Remove(attention); }); } var chartVM = AppData.MainMV.ChatListVM.GetChat(package.data.friendId); if (chartVM.IsTemporaryChat) { MessageModel msg = new MessageModel() { MsgKey = package.id, SendTime = package.time.Value, IsMine = false, MsgType = MessageType.addfriendaccepted //Target = AppData.Current.LoginUser, }; if (SDKClient.SDKClient.Instance.property.FriendApplyList != null && SDKClient.SDKClient.Instance.property.FriendApplyList.Count > 0) { var tempFriendApply = SDKClient.SDKClient.Instance.property.FriendApplyList.FirstOrDefault(a => a.userId == package.data.friendId); if (tempFriendApply != null) { if (string.IsNullOrEmpty(tempFriendApply.applyRemark)) { msg.MsgType = MessageType.notification; msg.TipMessage = msg.Content = ConstString.BecomeFriendsTip; } else { msg.Sender = AppData.Current.GetUserModel(package.data.friendId); msg.IsMine = false; msg.MsgType = MessageType.notification; msg.Content = ConstString.BecomeFriendsTip; msg.TipMessage = ConstString.BecomeFriendsTip; } } } else { msg.MsgType = MessageType.notification; msg.TipMessage = msg.Content = ConstString.BecomeFriendsTip; } chartVM.AddMessage(msg); if (AppData.MainMV.ChatListVM.SelectedItem == chartVM) { chartVM.AddMessageTipEx("以上为打招呼内容", msg.SendTime, msg.MsgKey); //chartVM.AddMessageTipEx("已经成为好友,开始聊天吧", msg.SendTime, msg.MsgKey); } } else { var target = chartVM.Chat.Chat as UserModel; target.IsNotDisturb = target.IsTopMost = false; target.TopMostTime = DateTime.MinValue; } chartVM.IsTemporaryChat = false; chartVM.CurrentChatType = ChatType.Normal; chartVM.Acitve(); App.Current.Dispatcher.Invoke(() => { AppData.MainMV.ChatListVM.DeleteStrangerItem(chartVM, false); }); } } } else//我的申请被对方处理后,得到的回包处理 { UserModel user = AppData.Current.GetUserModel(package.data.userId); if (user.LinkDelType == 2) { if (!IsUpdateRead) { var tempTask = Task.Run(() => { IsUpdateRead = true; SDKClient.SDKClient.Instance.GetContactsList(); }).ContinueWith(t => { IsUpdateRead = false; }); } } user.LinkDelType = 0; var friend = AppData.MainMV.FriendListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.userId); if (friend == null) { AppData.MainMV.FriendListVM.AddNewFriend(package.data.userId); friend = AppData.MainMV.FriendListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.userId); if (friend != null) { if (user.LinkType == 1 || user.LinkType == 3) { friend.FirstChar = friend.GroupByChar = ' '; App.Current.Dispatcher.Invoke(() => { AppData.MainMV.FriendListVM.UpdateGroupBy(); }); } } //SDKClient.SDKClient.Instance.GetUser(package.data.userId); ThreadPool.QueueUserWorkItem(m => { var obj = SDKClient.SDKClient.Instance.GetFriend(package.data.userId); if (user.HeadImgMD5 != obj.data.item.photo) { user.HeadImgMD5 = obj.data.item.photo; IMClient.Helper.ImageHelper.GetFriendFace(obj.data.item.photo, (s) => { user.HeadImg = s; }); } if (obj?.data?.item != null && !string.IsNullOrEmpty(obj.data.item.partnerRemark)) { if (string.IsNullOrEmpty(user.NickName) || user.DisplayName != obj.data.item.partnerRemark) { user.DisplayName = obj.data.item.partnerRemark; user.NickName = obj.data.item.partnerRemark; AppData.MainMV.FriendListVM.UpdateFriendSort(package.data.userId); } } }); var attention = AppData.MainMV.AttentionListVM.Items.ToList().FirstOrDefault(info => info.ID == package.data.userId); if (attention != null) { App.Current.Dispatcher.Invoke(() => { AppData.MainMV.AttentionListVM.Items.Remove(attention); }); } var chartVM = AppData.MainMV.ChatListVM.GetChat(package.data.userId); if (chartVM.IsTemporaryChat) { chartVM.AddMessageTipEx("已经成为好友,开始聊天吧"); //chartVM.IsTemporaryChat = false; } else { var target = chartVM.Chat.Chat as UserModel; target.IsNotDisturb = target.IsTopMost = false; target.TopMostTime = DateTime.MinValue; } chartVM.IsTemporaryChat = false; chartVM.CurrentChatType = ChatType.Normal; chartVM.Acitve(); App.Current.Dispatcher.Invoke(() => { AppData.MainMV.ChatListVM.DeleteStrangerItem(chartVM, false); }); } else { // 不为空实际上,我的好友里有对方,而对方删除了我后重新添加 //此种情况为服务器代发的审核包,不需要处理,即本地实际上不知道对方删除后又加了我 var chartVM = AppData.MainMV.ChatListVM.GetChat(package.data.userId); if (chartVM.IsTemporaryChat) { chartVM.AddMessageTipEx("已经成为好友,开始聊天吧"); } else { var target = chartVM.Chat.Chat as UserModel; target.IsNotDisturb = target.IsTopMost = false; target.TopMostTime = DateTime.MinValue; } chartVM.IsTemporaryChat = false; chartVM.CurrentChatType = ChatType.Normal; App.Current.Dispatcher.Invoke(() => { AppData.MainMV.ChatListVM.DeleteStrangerItem(chartVM, false); }); } var apply = tempApplyList.FirstOrDefault(info => info.ID == package.data.userId); if (apply != null) { apply.IsNeedAccepted = false; apply.IsRead = true; // this.UpdateApplyCount(true); } } } UpdateApplyCount(); App.Current.Dispatcher.Invoke(() => { AppData.MainMV.ChatListVM.ResetSort(); }); }