//登录 func (this UserModule) Login(userName string, session *link.Session) { onlineUser := module.Cache.GetOnlineUserByUserName(userName) if onlineUser != nil { if onlineUser.Session.Id() != session.Id() { //当前在线,但是连接不同,其他客户端连接,需通知当前客户端下线 module.SendOtherLogin(onlineUser.Session) //替换Session module.Cache.RemoveOnlineUser(onlineUser.Session.Id()) //登录成功处理 success := loginSuccess(session, onlineUser.UserName, onlineUser.UserID) if success { module.SendLoginResult(onlineUser.UserID, session) } else { module.SendLoginResult(0, session) } } } else { cacheDbUser := redisProxy.GetDBUserByUserName(userName) if cacheDbUser != nil { this.UserLoginHandle(session, cacheDbUser.Name, cacheDbUser.ID) } else { dbProxy.UserLogin(session.Id(), userName) } } }
//用户DB登录返回 func (this UserModule) UserLoginHandle(session *link.Session, userName string, userID uint64) { if userID == 0 { module.SendLoginResult(0, session) } else { //登录成功处理 success := loginSuccess(session, userName, userID) if success { module.SendLoginResult(userID, session) } else { module.SendLoginResult(0, session) } } }