/// <summary> /// 对象转换为User /// </summary> /// <param name="obj"></param> /// <returns></returns> private WXUser Convert(JObject obj) { WXUser _user = new WXUser(); _user.UserName = obj["UserName"].ToString(); _user.City = obj["City"].ToString(); _user.HeadImgUrl = obj["HeadImgUrl"].ToString(); _user.NickName = obj["NickName"].ToString(); _user.Province = obj["Province"].ToString(); _user.PYQuanPin = obj["PYQuanPin"].ToString(); _user.RemarkName = obj["RemarkName"].ToString(); _user.RemarkPYQuanPin = obj["RemarkPYQuanPin"].ToString(); _user.Sex = obj["Sex"].ToString(); _user.Signature = obj["Signature"].ToString(); return(_user); }
/// <summary> /// 获取联系人昵称 /// </summary> /// <param name="userName"></param> /// <returns></returns> public string GetNickName(string userName) { try { string nickName = string.Empty; var _allUser = getAllUsers(); if (_allUser.ContainsKey(userName)) { nickName = _allUser[userName].NickName; } else { var array = new List <string>(); array.Add(userName); var bat_contact_result = wx.BatGetContact(array); if (bat_contact_result != null) { foreach (JObject bat_contact in bat_contact_result["ContactList"]) { WXUser user = Convert(bat_contact); _allUser.Add(userName, user); nickName = user.NickName; break; } WxSerializable s = new WxSerializable(this._uin, EnumContainer.SerializType.contact); s.Serializable(_allUser); } } return(nickName); } catch (Exception ex) { Tools.WriteLog(ex.ToString()); return(""); } }
/// <summary> /// 初始化联系人 /// </summary> public void InitContact(List <WXUser> partUsers) { var groupNames = new List <string>(); var contact_result = wx.GetContact(); var _allUser = new Dictionary <string, WXUser>(); if (partUsers != null) { foreach (var u in partUsers) { if (!_allUser.ContainsKey(u.UserName)) { _allUser.Add(u.UserName, u); } } } if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user = Convert(contact); if (!_allUser.ContainsKey(user.UserName)) { _allUser.Add(user.UserName, user); } } } foreach (var u in _allUser) { if (u.Key.Contains("@@")) { groupNames.Add(u.Key); } } //获取所有群内联系人信息 var bat_contact_result = wx.BatGetContact(groupNames); if (bat_contact_result != null) { var dic = new Dictionary <string, WxGroup>(); foreach (JObject bat_contact in bat_contact_result["ContactList"]) { //群号 var roomID = bat_contact["EncryChatRoomId"].ToString(); //群用户名 var userName = bat_contact["UserName"].ToString(); var nickName = bat_contact["NickName"].ToString(); var userNameArray = new List <GroupWxUser>(); foreach (JObject c in bat_contact["MemberList"]) { var m_username = c["UserName"].ToString(); var m_displayName = c["DisplayName"].ToString(); var m_nickName = c["NickName"].ToString(); var m_attrStatus = c["AttrStatus"].ToString(); if (string.IsNullOrEmpty(m_displayName)) { m_displayName = m_nickName; } userNameArray.Add(new GroupWxUser() { UserName = m_username, NickName = m_nickName, DisplayName = m_displayName, AttrStatus = m_attrStatus }); } WxGroup g = new WxGroup() { UserName = userName, MemberUserNames = userNameArray, NickName = nickName, RoomID = roomID }; dic.Add(userName, g); } WxSerializable s_g = new WxSerializable(this._uin, EnumContainer.SerializType.curr_group_user); s_g.Serializable(dic); //序列化 所有群内成员 } WxSerializable s = new WxSerializable(this._uin, EnumContainer.SerializType.contact); s.Serializable(_allUser); //序列化 所有联系人 }