示例#1
0
        /// <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);//
        }
示例#2
0
        private void Button_Clicktemp(object sender, RoutedEventArgs e)
        {
            var friend = new DataOfFriends();
            var temp   = friend.GetByPage(0);

            friend.GetByPage(1);
        }
示例#3
0
 /// <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());
             }
         });
     });
 }
示例#4
0
        /// <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);
                }
            };
        }
示例#5
0
        /// <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();
                }
            };
        }
示例#6
0
        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);//显示陌生人详情
            }
        }
示例#7
0
        /// <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);
        }
示例#8
0
        /// <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();           //更新至数据库
            }
        }
示例#9
0
        /// <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);
            }
        }