//更新用户最后登录时间 func UpdateUserLastLoginTime(identification uint64, userID uint64, time int64) { msg := dbProto.MarshalProtoMsg(identification, &dbProto.DB_User_UpdateLastLoginTimeC2S{ UserID: protos.Uint64(userID), Time: protos.Int64(time), }) sendDBMsgToServer(msg) }
//用户登录 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 userLogin(session *link.Session, protoMsg dbProto.ProtoMsg) { rev_msg := protoMsg.Body.(*dbProto.DB_User_LoginC2S) sendProtoMsg := &dbProto.DB_User_LoginS2C{} dbUser, _ := module_db.GetUserByUserName(rev_msg.GetName()) if dbUser != nil { redisProxy.SetDBUser(dbUser) sendProtoMsg.ID = protos.Uint64(dbUser.ID) sendProtoMsg.Name = protos.String(dbUser.Name) } send_msg := dbProto.MarshalProtoMsg(protoMsg.Identification, sendProtoMsg) sendDBMsgToClient(session, send_msg) }
//更新用户最后登录时间 func UpdateUserLastLoginTime(dbUser *DBUserModel) { userIDStr := strconv.FormatUint(dbUser.ID, 10) userLastLoginTime := strconv.FormatInt(dbUser.LastLoginTime, 10) //更新内存 userKey := DB_User_Key + userIDStr data, _ := json.Marshal(dbUser) client.Set(userKey, data) //单独设置用户的最后登录时间,清理用户缓存数据使用 client.Hset(DB_UserLastLoginTime_Key, userIDStr, []byte(userLastLoginTime)) //更新DB msg := dbProto.MarshalProtoMsg(0, &dbProto.DB_User_UpdateLastLoginTimeC2S{ UserID: protos.Uint64(dbUser.ID), Time: protos.Int64(dbUser.LastLoginTime), }) PushDBWriteMsg(msg) }
//用户登录使用 func UserLogin(identification uint64, userName string) { msg := dbProto.MarshalProtoMsg(identification, &dbProto.DB_User_LoginC2S{ Name: protos.String(userName), }) sendDBMsgToServer(msg) }