/// <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> /// 类型:方法 /// 名称: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); }
/// <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); }