/// <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); } } } }
/// <summary> /// 类型:方法 /// 名称:GetUserFromAccount /// 作者:taixihuase /// 作用:通过账号名获取用户信息 /// 编写日期:2015/7/12 /// </summary> /// <param name="account"></param> /// <returns></returns> public UserInfo GetUserFromAccount(string account) { if (AccountToUniqueId.ContainsKey(account)) { return(GetUser(AccountToUniqueId[account])); } return(null); }
/// <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); }