/// <summary> /// 根据Jid获取昵称 /// </summary> /// <param name="jid"></param> /// <param name="memberCountVisiblity"></param> /// <returns></returns> public static string GetNicknameByJid(string jid, bool memberCountVisiblity = true) { string displayName = ""; if (jid.Length == 5) //系统类型账号 { return(GetSystemNicknameByJid(jid)); //获取系统账号昵称 } else if (jid.Length >= 15) //群组类型账号 { var room = new Room() { jid = jid }.GetByJid(); if (room != null) { displayName = room.name + "(共" + room.userSize + "人)"; } } else//普通用户账号 { var user = new DataOfFriends() { toUserId = jid }.GetByUserId(); if (user != null) { displayName = string.IsNullOrWhiteSpace(user.remarkName) ? user.toNickname : user.remarkName; } } return(displayName);// }
private void Button_Clicktemp(object sender, RoutedEventArgs e) { var friend = new DataOfFriends(); var temp = friend.GetByPage(0); friend.GetByPage(1); }
/// <summary> /// 重置属性 /// </summary> public void InitialProperties() { groupDesc = ""; groupName = ""; SelectedMember.Clear();//清空列表 FriendList.Clear(); EnableCreate = true; Snackbar = new SnackbarMessageQueue(); Task.Run(() => { Task.Delay(100); var friends = new DataOfFriends().GetFriendsList(); //填充好友列表 App.Current.Dispatcher.Invoke(() => { foreach (var item in friends) { if (item.toUserId == "10000") { continue; } FriendList.Add(item.ToMsgListItem()); } }); }); }
/// <summary> /// 显示本地用户详情 /// </summary> /// <param name="userId">UserId</param> private void ShowLocalUserDetial(string userId) { var tmpFri = new DataOfFriends() { toUserId = userId }.GetByUserId(); if (tmpFri != null) { Friend = tmpFri.ToDataOfUserDetial(); Friend.sex = -1; //好友列表中无性别 Friend.birthday = 0; //无生日数据 RemarkName = Friend.remarkName; } var dclient = APIHelper.GetUserDetialAsync(userId);//详情 //LogHelper.log.Info("用户详情GetUserDetial" + userId); dclient.UploadDataCompleted += (s, res) => { if (res.Error == null) { var user = JsonConvert.DeserializeObject <JsonuserDetial>(Encoding.UTF8.GetString(res.Result)); var tmpfriend = user.data.ConvertToDataFriend(); if (tmpfriend != null) { int status = Friend.status; //暂时保存好友关系 Friend = user.data; //显示数据 Friend.status = status; //重新赋值正确好友关系 if (!string.IsNullOrWhiteSpace(user.data._remarkName)) { RemarkName = user.data._remarkName; } else { RemarkName = Friend.friends.remarkName; } var resfriend = new DataOfFriends(); resfriend = user.data.ToDataOfFriend(); //resfriend.status = 2;//设置为朋友 resfriend.AutoInsert(); if (Friend.remarkName != user.data.remarkName) { //刷新 Messenger.Default.Send(new MessageListItem { Jid = user.data.userId, ShowTitle = user.data._remarkName, Avator = Applicate.LocalConfigData.GetDisplayAvatorPath(user.data.userId) }, MainViewNotifactions.UpdateAccountName); } } } else { Snackbar.Enqueue(res.Error.Message); } }; }
/// <summary> /// 显示陌生人详情 /// </summary> /// <param name="userId">UserId</param> private void ShowStrangerDetial(string userId) { var dclient = APIHelper.GetUserDetialAsync(userId);//详情 LogHelper.log.Info("陌生用户GetUserDetial" + userId); dclient.UploadDataCompleted += (s, res) => { var user = JsonConvert.DeserializeObject <JsonuserDetial>(Encoding.UTF8.GetString(res.Result)); var tmpFri = user.data.ConvertToDataFriend(); if (tmpFri != null) { Friend = user.data; var downloads = new List <DownLoadFile>(); downloads.Add(new DownLoadFile() { Jid = userId, Token = userId, Name = user.data.nickname, Type = DownLoadFileType.Image, LocalUrl = Applicate.LocalConfigData.GetDownloadAvatorPath(userId), ShouldDeleteWhileFileExists = true }); //下载头像 HttpDownloader.Download(downloads, (file) => { switch (file.State) { case DownloadState.Successed: App.Current.Dispatcher.Invoke(() => { Friend.userId = file.Jid; }); break; case DownloadState.Error: break; default: break; } }); if (!string.IsNullOrWhiteSpace(user.data._remarkName)) { RemarkName = user.data._remarkName; } else { RemarkName = Friend.remarkName; } var stranger = new DataOfFriends(); stranger = user.data.ToDataOfFriend(); stranger.status = 0; stranger.AutoInsert(); } }; }
public void ShowInfo(string userId) { Friend = new DataOfUserDetial();//清空 //FileUtil.DeleteUserHeadImg(userId); //删除头像 var dbfriend = new DataOfFriends() { toUserId = userId }; //数据库查询对象 if (dbfriend.Exists(userId)) //如果本地存在此账号(无论以何种状态) { dbfriend = dbfriend.GetByUserId(); //获取本地存储用户 IsRemarkNameVisibility = (userId.Length <= 6) ? false : true; //系统号不显示备注 switch (dbfriend.status) { case 2: //如果为好友的话 BtnContent = "发消息"; BtnVisiblity = true; break; case 1: //我单方等待对方验证时 BtnContent = "等待验证.."; BtnVisiblity = true; break; case 0: //如果在本地身份为陌生人时 BtnContent = "添加好友"; BtnVisiblity = true; break; case -1: //如果在黑名单 BtnContent = "移出黑名单"; BtnVisiblity = true; break; case -2: //我方被拉黑 BtnContent = "我已被对方拉黑"; BtnVisiblity = false; break; default: break; } ShowLocalUserDetial(userId);//显示本地好友详情 } else//如果不存在本地 { BtnContent = "添加好友"; BtnVisiblity = true; ShowStrangerDetial(userId);//显示陌生人详情 } }
/// <summary> /// <see cref="DataOfFriends"/>转<see cref="MessageListItem"/> /// </summary> /// <param name="friend"></param> /// <returns></returns> public static MessageListItem ToMsgListItem(this DataOfFriends friend) { var tmpitem = new MessageListItem(); try { tmpitem = new MessageListItem()//实例化一个消息项 { MessageTitle = friend.toNickname, Jid = friend.toUserId, //设置UserId //MessageItemType = ItemType.User,//好友项 ShowTitle = friend.remarkName, //备注名 Avator = Applicate.LocalConfigData.GetDisplayAvatorPath(friend.toUserId), //获取头像 }; } catch (System.Exception ex) { ConsoleLog.Output("ToMsgListItem=-" + ex.Message); } return(tmpitem); }
/// <summary> /// 消息回执 /// </summary> /// <param name="msg"></param> public void MsgReceipt(Messageobject msg) { if (msg.type >= kWCMessageType.FriendRequest && msg.type <= kWCMessageType.CancelBlackFriend) { InVerifingWaiting = false; var mControl = ServiceLocator.Current.GetInstance <MainViewModel>(); var verifyItem = VerifyUserList.FirstOrDefault(v => v.toUserId == msg.toUserId); if (verifyItem == null) { verifyItem = new VerifingFriend() { toNickname = msg.toUserName, toUserId = msg.ToId }; } switch (msg.type) { case kWCMessageType.FriendRequest: //打招呼回执 verifyItem.VerifyStatus = -3; verifyItem.Content = "等待验证中..."; break; case kWCMessageType.RequestAgree: //通过验证回执 verifyItem.VerifyStatus = 1; verifyItem.Content = "我已通过对" + msg.toUserName /*((verifyItem.sex == 0) ? ("他") : ("她")) */ + "的验证"; var tmp = mControl.FriendList.FirstOrDefault(m => m.Jid == msg.toUserId); //mControl.MsgItemMouseDown(tmp); mControl.StartNewChatFromItem(tmp.Clone()); mControl.Snackbar.Enqueue(verifyItem.Content); // //ServiceLocator.Current.GetInstance<MainViewModel>().LoadAllFriendsByApi(); break; case kWCMessageType.RequestRefuse: //回话回执 InProgress = false; //不处于发送状态 DialogShow = false; //关闭对话框 AnswerContnt = ""; //清空文本 SnackBar.Enqueue("回话给" + msg.toUserName + "成功"); break; case kWCMessageType.DeleteFriend: verifyItem.Content = "已删除好友 " + msg.toUserName; verifyItem.toNickname = msg.toUserName; //此处为接收者Name verifyItem.VerifyStatus = -1; break; case kWCMessageType.BlackFriend: verifyItem.Content = "已将好友 " + msg.toUserName + " 拉黑"; verifyItem.toNickname = msg.toUserName; //此处为接收者Name break; case kWCMessageType.RequestFriendDirectly: //直接添加好友 verifyItem.VerifyStatus = 1; verifyItem.Content = "已添加好友" + msg.toUserName /*((verifyItem.sex == 0) ? ("他") : ("她"))*/; if (new DataOfFriends().ExistsLocal(msg.ToId)) //本地数据库有用户 { var dbFri = new DataOfFriends().GetByUserId(msg.ToId); dbFri.UpdateFriendState(msg.ToId, 2); //互为好友 } else { } Messenger.Default.Send(verifyItem.Content, MainViewNotifactions.SnacbarMessage); //提示 break; case kWCMessageType.CancelBlackFriend: var tuser = new DataOfFriends().GetByUserId(msg.toUserId); verifyItem.Content = "已将 " + tuser.toNickname + " 移出黑名单"; verifyItem.VerifyStatus = 1; //互为好友 break; default: break; } //更新最近用户中的内容 Messenger.Default.Send(new MessageListItem { Jid = "10001", MessageItemContent = verifyItem.Content, Avator = Applicate.LocalConfigData.GetDisplayAvatorPath("10001") }, MainViewNotifactions.UpdateRecentItemContent); AddOrUpdateToList(verifyItem); //更新UI verifyItem.InsertOrUpdate(); //存入数据库 verifyItem.Update(); //更新至数据库 } }
/// <summary> /// 收到消息时 /// </summary> /// <param name="msg">收到的新消息</param> public void ProcessNewMessage(Messageobject msg) { if (msg.type >= kWCMessageType.FriendRequest && msg.type <= kWCMessageType.PhoneContactToFriend) { var vItem = new VerifingFriend(); var mControl = ServiceLocator.Current.GetInstance <MainViewModel>(); if (VerifyUserList.FirstOrDefault(v => v.toUserId == msg.fromUserId) != null) { vItem = VerifyUserList.FirstOrDefault(v => v.toUserId == msg.fromUserId); } switch (msg.type) { case kWCMessageType.FriendRequest: vItem.VerifyStatus = -4; //对方添加己方 vItem.StatusTag = "通过验证"; vItem.Content = msg.content; //消息内容 break; case kWCMessageType.RequestAgree: vItem.VerifyStatus = 1; vItem.StatusTag = "已通过验证"; vItem.Content = "验证被" + msg.fromUserName /*((vItem.sex == 0) ? ("他") : ("她"))*/ + "通过了"; //mControl.AddToFriendList(msg.FromId);//添加到好友列表 var tmp = new MessageListItem() { Jid = msg.FromId, ShowTitle = msg.fromUserName, MessageTitle = msg.fromUserName, MessageItemType = ItemType.Message, Avator = Applicate.LocalConfigData.GetDisplayAvatorPath(msg.FromId) }; mControl.MsgItemMouseDown(tmp); mControl.StartNewChatFromItem(tmp.Clone()); break; case kWCMessageType.RequestRefuse: //对方回话 //item.StatusTag = ""; vItem.CanAnswer = true; vItem.Content = msg.content; //回话内容 DialogShow = false; AnswerContnt = ""; //清空文本 break; case kWCMessageType.DeleteFriend: //System.Windows.Forms.MessageBox.Show("删除成功"); vItem.Content = msg.fromUserName + " 已删除了我"; vItem.VerifyStatus = 0; break; case kWCMessageType.BlackFriend: vItem.VerifyStatus = 0; vItem.Content = msg.fromUserName + " 拉黑了我"; break; case kWCMessageType.RequestFriendDirectly: vItem.VerifyStatus = 1; //互为好友 vItem.Content = msg.fromUserName + " 添加你为好友"; //消息内容 break; case kWCMessageType.CancelBlackFriend: vItem.Content = msg.fromUserName + " 取消了黑名单"; Messenger.Default.Send(vItem.toUserId, MainViewNotifactions.CancelBlockItem); var tmpFriend = new DataOfFriends(); break; default: break; } //更新最近用户中的内容 Messenger.Default.Send(new MessageListItem { Jid = "10001", MessageItemContent = vItem.Content, Avator = Applicate.LocalConfigData.GetDisplayAvatorPath("10001") }, MainViewNotifactions.UpdateRecentItemContent); vItem.toUserId = msg.fromUserId; //UserId vItem.toNickname = msg.fromUserName; //昵称 vItem.Type = Convert.ToInt32(msg.type); //消息类型 vItem.InsertOrUpdate(); //存入数据库 AddOrUpdateToList(vItem); } }