예제 #1
0
        /// <summary>
        /// 类型:方法
        /// 名称:UserOffline
        /// 作者:taixihuase
        /// 作用:登出一个用户信息并移除客户端连接
        /// 编写日期:2015/7/12
        /// </summary>
        /// <param name="guid"></param>
        public void UserOffline(Guid guid)
        {
            lock (this)
            {
                if (GuidToUniqueId.ContainsKey(guid))
                {
                    int uniqueId = GuidToUniqueId[guid];
                    GuidToUniqueId.Remove(guid);

                    if (UniqueIdToUser.ContainsKey(uniqueId))
                    {
                        UserInfo user = GetUser(uniqueId);

                        if (AccountToUniqueId.ContainsKey(user.Account))
                        {
                            AccountToUniqueId.Remove(user.Account);
                        }

                        if (NicknameToUniqueId.ContainsKey(user.Nickname))
                        {
                            NicknameToUniqueId.Remove(user.Nickname);
                        }

                        UniqueIdToUser.Remove(uniqueId);
                    }
                }
            }
        }
예제 #2
0
 /// <summary>
 /// 类型:方法
 /// 名称:GetUniqueIdFromNickName
 /// 作者:taixihuase
 /// 作用:通过昵称获取用户编号,不存在则返回 -1
 /// 编写日期:2015/7/22
 /// </summary>
 /// <param name="nickname"></param>
 /// <returns></returns>
 public int GetUniqueIdFromNickname(string nickname)
 {
     if (NicknameToUniqueId.ContainsKey(nickname))
     {
         return(NicknameToUniqueId[nickname]);
     }
     return(-1);
 }
예제 #3
0
        /// <summary>
        /// 类型:方法
        /// 名称:UserOnline
        /// 作者:taixihuase
        /// 作用:通过接收并添加一个用户信息进行登录
        /// 编写日期:2015/7/12
        /// </summary>
        /// <param name="user"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public UserReturn UserOnline(UserInfo user, string password)
        {
            // 从数据库获取用户信息
            UserReturn userReturn = Server.Data.UserData.GetUserInfo(user, password);

            #region 判断用户登录信息是否正确,正确则尝试登录,错误则直接返回

            if (userReturn.ReturnCode == UserReturn.ReturnCodeType.Default)
            {
                lock (this)
                {
                    // 如果已查得登录信息
                    if (GuidToUniqueId.ContainsKey(user.Guid) || AccountToUniqueId.ContainsKey(user.Account) ||
                        UniqueIdToUser.ContainsKey(user.UniqueId))
                    {
                        userReturn.ReturnCode = RepeatedLogin;
                        userReturn.DebugMessage.Append("重复登录!");
                    }
                    else
                    {
                        // 添加用户信息

                        GuidToUniqueId.Add(user.Guid, user.UniqueId);

                        user.LoginTime = DateTime.Now;
                        user.Status    = Loginning;

                        UniqueIdToUser.Add(user.UniqueId, user);
                        if (!AccountToUniqueId.ContainsKey(user.Account))
                        {
                            AccountToUniqueId.Add(user.Account, user.UniqueId);
                        }
                        if (!NicknameToUniqueId.ContainsKey(user.Nickname))
                        {
                            NicknameToUniqueId.Add(user.Nickname, user.UniqueId);
                        }

                        userReturn.ReturnCode = Success;
                        userReturn.DebugMessage.Append("登录成功!");
                    }
                }
            }

            #endregion

            return(userReturn);
        }