//用户登录 func userLogin(session *link.Session, protoMsg protos.ProtoMsg) { rev_msg := protoMsg.Body.(*dbProto.DB_User_LoginC2S) userName := rev_msg.GetName() //先从缓存中读取 dbUser := redisProxy.GetDBUserByUserName(userName) if dbUser == nil { //从数据库中获取 dbUser, _ = dao.GetUserByUserName(userName) //将数据缓存到Redis redisProxy.SetDBUser(dbUser) } //返回消息 sendProtoMsg := &dbProto.DB_User_LoginS2C{} if dbUser != nil { sendProtoMsg.ID = protos.Uint64(dbUser.ID) sendProtoMsg.Name = protos.String(dbUser.Name) } send_msg := dbProto.MarshalProtoMsg(protoMsg.Identification, sendProtoMsg) sendDBMsgToClient(session, send_msg) //更新最后登录时间 if dbUser != nil { dbUser.LastLoginTime = time.Now().Unix() redisProxy.UpdateUserLastLoginTime(dbUser) } }
//获取用户详细信息 func (this UserModule) GetUserInfo(userID uint64, session *link.Session) { onlineUser := module.Cache.GetOnlineUserByUserID(userID) if onlineUser != nil { dbUser := redisProxy.GetDBUser(userID) if dbUser != nil { userModel := NewUserModel(dbUser) module.SendGetUserInfoResult(0, userModel, session) //更新用户最后上线时间,更新内存和数据库 nowTime := time.Now().Unix() redisProxy.UpdateUserLastLoginTime(userID, nowTime) dbProxy.UpdateUserLastLoginTime(session.Id(), userID, nowTime) } else { module.SendGetUserInfoResult(gameProto.User_Not_Exists, nil, session) } } else { module.SendGetUserInfoResult(gameProto.User_Login_Fail, nil, session) } }