示例#1
0
        private AccountInfo RefreshUserInfo(string userName)
        {
            string  key         = userName.ToUpper();
            DataRow accountInfo = this.m_IAccountStorage.GetAccountInfo(userName);

            if (accountInfo != null)
            {
                AccountInfo       info;
                List <FriendInfo> list    = new List <FriendInfo>();
                List <FriendInfo> list2   = new List <FriendInfo>();
                FriendInfo        creator = null;
                foreach (DataRow row2 in this.m_IAccountStorage.GetFriends(userName))
                {
                    string     name      = row2["Name"] as string;
                    DateTime   renewTime = (DateTime)row2["RenewTime"];
                    FriendInfo item      = new FriendInfo(name, renewTime, Convert.ToInt64(row2["Relationship"]), Convert.ToInt64(row2["Type"]));
                    list.Add(item);
                    long num = Convert.ToInt64(row2["Relationship"]);
                    if ((num <= 3L) && (num >= 2L))
                    {
                        switch (((int)num))
                        {
                        case 2:
                            list2.Add(item);
                            break;

                        case 3:
                            list2.Add(item);
                            creator = item;
                            break;
                        }
                    }
                }
                if (this.m_UserInfoCache.ContainsKey(key))
                {
                    info = this.m_UserInfoCache[key] as AccountInfo;
                    info.Reset(accountInfo["Name"] as string, accountInfo["NickName"] as string, Convert.ToInt64(accountInfo["Key"]), Convert.ToInt64(accountInfo["Type"]), this.m_IAccountStorage.GetUserRoles(userName), list.ToArray(), (Convert.ToInt64(accountInfo["Type"]) == 1L) ? list2.ToArray() : null, creator, accountInfo["EMail"] as string, accountInfo["InviteCode"] as string, Convert.ToInt64(accountInfo["AcceptStrangerIM"]) != 0L, Convert.ToInt64(accountInfo["MsgFileLimit"]), Convert.ToInt64(accountInfo["MsgImageLimit"]), Convert.ToInt64(accountInfo["DiskSize"]), Convert.ToInt64(accountInfo["IsTemp"]), (DateTime)accountInfo["RegisterTime"], accountInfo["HomePage"] as string, accountInfo["Password"] as string, accountInfo);
                    return(info);
                }
                info = new AccountInfo(accountInfo["Name"] as string, accountInfo["NickName"] as string, Convert.ToInt64(accountInfo["Key"]), Convert.ToInt64(accountInfo["Type"]), this.m_IAccountStorage.GetUserRoles(userName), list.ToArray(), (Convert.ToInt64(accountInfo["Type"]) == 1L) ? list2.ToArray() : null, creator, accountInfo["EMail"] as string, accountInfo["InviteCode"] as string, Convert.ToInt64(accountInfo["AcceptStrangerIM"]) != 0L, Convert.ToInt64(accountInfo["MsgFileLimit"]), Convert.ToInt64(accountInfo["MsgImageLimit"]), Convert.ToInt64(accountInfo["DiskSize"]), Convert.ToInt64(accountInfo["IsTemp"]), (DateTime)accountInfo["RegisterTime"], accountInfo["HomePage"] as string, accountInfo["Password"] as string, accountInfo);
                if (this.m_List.Count >= 2)
                {
                    AccountInfo info4 = this.m_List.First.Value;
                    this.m_UserInfoCache.Remove(info4.Name.ToUpper());
                    this.m_UserInfoCacheByID.Remove(info4.ID);
                    this.m_List.RemoveFirst();
                }
                this.m_UserInfoCache[key]         = info;
                this.m_UserInfoCacheByID[info.ID] = info;
                this.m_List.AddLast(info.ListNode);
                return(info);
            }
            return(null);
        }
示例#2
0
        private void GetFriends()
        {
            lock (m_FriendsLock)
            {
                if (m_Friends == null)
                {
                    List<FriendInfo> friends = new List<FriendInfo>(), managers = new List<FriendInfo>();
                    FriendInfo creator = null;
                    foreach (DataRow row in AccountImpl.Instance.GetFriends(m_Name))
                    {
                        string name = row["Name"] as string;
                        DateTime renewTime = (DateTime)row["RenewTime"];
                        FriendInfo fi = new FriendInfo(name, Convert.ToInt32(row["ID"]), Convert.ToInt32(row["Relationship"]), Convert.ToInt32(row["Type"]));
                        friends.Add(fi);
                        switch (Convert.ToInt32(row["Relationship"]))
                        {
                        case 2:
                            managers.Add(fi);
                            break;
                        case 3:
                            managers.Add(fi);
                            creator = fi;
                            break;
                        }
                    }

                    m_Friends = friends.ToArray();

                    m_FriendIndex = new Dictionary<int, FriendInfo>();
                    foreach (FriendInfo friend in friends)
                    {
                        m_FriendIndex.Add(friend.ID, friend);
                    }

                    m_Managers = new Hashtable();
                    if (m_Type != 1)
                    {
                        foreach (FriendInfo friend in managers)
                        {
                            m_Managers.Add(friend.Name.ToUpper(), friend);
                        }
                    }
                }
            }
        }
示例#3
0
        public void Reset(DataRow data)
        {
            lock (m_Lock)
            {
                m_Name = Convert.ToString(data["Name"]);
                m_NickName = Convert.ToString(data["NickName"]);
                m_ID = Convert.ToInt32(data["ID"]);
                m_Type = Convert.ToInt32(data["Type"]);
                m_EMail = Convert.ToString(data["EMail"]);
                m_HeadIMG = Convert.ToString(data["HeadIMG"]);
                m_Remark = Convert.ToString(data["Remark"]);
                m_Tel = Convert.ToString(data["Tel"]);
                m_Mobile = Convert.ToString(data["Mobile"]);
                m_IsDeleted = (Convert.ToInt32(data["IsDeleted"]) == 1);
                m_SubType = Convert.ToInt32(data["SubType"]);
                m_AcceptStrangerIM = Convert.ToInt32(data["AcceptStrangerIM"]) != 0;
                m_IMFileLimit = Convert.ToInt32(data["MsgFileLimit"]);
                m_IMImageLimit = Convert.ToInt32(data["MsgImageLimit"]);
                m_IsTemp = (Convert.ToInt32(data["IsTemp"]) != 0);
                m_IsAdmin = (Convert.ToInt32(data["IsAdmin"]) != 0);
                m_HomePage = Convert.ToString(data["HomePage"]);
                m_DiskSize = Convert.ToInt32(data["DiskSize"]);
                m_RegisterTime = Convert.ToDateTime(data["RegisterTime"]);
                m_Creator = (m_Type == 0 ? null : new FriendInfo(Convert.ToString(data["Creator"]), Convert.ToInt32(data["CreatorID"]), 3, 0));
            }

            lock (m_FriendsLock)
            {
                m_FriendIndex = null;
                m_Managers = null;
                m_Friends = null;
            }
        }
示例#4
0
 public AccountInfo(string name, string nickname, long id, long type, string[] roles, FriendInfo[] friends, FriendInfo[] managers, FriendInfo creator, string email, string inviteCode, bool acceptStrangerIM, long imf_limite, long imimage_limit, long diskSize, long isTemp, DateTime registerTime, string homePage, string pwd, DataRow data)
 {
     this._detailsJson = new Details(this);
     this.m_ListNode   = new LinkedListNode <AccountInfo>(this);
     this.Reset(name, nickname, id, type, roles, friends, managers, creator, email, inviteCode, acceptStrangerIM, imf_limite, imimage_limit, diskSize, isTemp, registerTime, homePage, pwd, data);
 }
示例#5
0
 public void Reset(string name, string nickname, long id, long type, string[] roles, FriendInfo[] friends, FriendInfo[] managers, FriendInfo creator, string email, string inviteCode, bool acceptStrangerIM, long imf_limite, long imimage_limit, long diskSize, long isTemp, DateTime registerTime, string homePage, string pwd, DataRow data)
 {
     lock (this.m_Lock)
     {
         this.m_FriendIndex = new Hashtable();
         this.m_Managers    = new Hashtable();
         this.m_Name        = name;
         this.m_NickName    = nickname;
         this.m_ID          = id;
         this.m_Type        = type;
         this.m_Roles       = roles;
         this.m_Friends     = friends;
         this.m_Creator     = creator;
         this.m_EMail       = email;
         this.m_InviteCode  = inviteCode;
         if (data["HeadIMG"] != null)
         {
             this.m_HeadIMG = data["HeadIMG"].ToString();
         }
         else
         {
             this.m_HeadIMG = "";
         }
         if (data["Remark"] != null)
         {
             this.m_Remark = data["Remark"].ToString();
         }
         else
         {
             this.m_Remark = "这个人很懒,什么都没留下.";
         }
         if (data.Table.Columns.Contains("ParentId") && (data["ParentId"] != null))
         {
             this.m_ParentId = data["ParentId"].ToString();
         }
         if (data.Table.Columns.Contains("DType") && (data["DType"] != null))
         {
             this.m_DType = data["DType"].ToString();
         }
         this.m_Password = pwd;
         if (data.Table.Columns.Contains("Phone") && (data["Phone"] != null))
         {
             this.m_Phone = data["Phone"].ToString();
         }
         if (data.Table.Columns.Contains("TelPhone") && (data["TelPhone"] != null))
         {
             this.m_TelPhone = data["TelPhone"].ToString();
         }
         if (data.Table.Columns.Contains("MobilePhone") && (data["MobilePhone"] != null))
         {
             this.m_MobilePhone = data["MobilePhone"].ToString();
         }
         if (data.Table.Columns.Contains("IsExitGroup") && (data["IsExitGroup"] != null))
         {
             this.m_IsExitGroup = Convert.ToInt64(data["IsExitGroup"]) == 1L;
         }
         this.m_AcceptStrangerIM = acceptStrangerIM;
         this.m_IMFileLimit      = imf_limite;
         this.m_IMImageLimit     = imimage_limit;
         this.m_IsTemp           = isTemp != 0L;
         this.m_HomePage         = homePage;
         this.m_DiskSize         = diskSize;
         if (friends != null)
         {
             foreach (FriendInfo info in friends)
             {
                 this.m_FriendIndex.Add(info.Name.ToUpper(), info);
             }
         }
         if (managers != null)
         {
             foreach (FriendInfo info in managers)
             {
                 this.m_Managers.Add(info.Name.ToUpper(), info);
             }
         }
         this.m_RegisterTime = registerTime;
     }
 }