diff --git a/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt b/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt index 5a58bf66..182d9734 100644 --- a/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt +++ b/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt @@ -1,5 +1,6 @@ package icu.samnyan.aqua.net.utils +import ext.millis import ext.minus import icu.samnyan.aqua.net.db.AquaNetUser import icu.samnyan.aqua.net.games.GenericGameSummary @@ -110,10 +111,18 @@ fun genericUserSummary( ) } +val rankingCache = mutableMapOf>>() + fun genericRanking( userDataRepo: GenericUserDataRepo<*, *>, userPlaylogRepo: GenericPlaylogRepo, ): List { + // Read from cache if we just computed it less than 2 minutes ago + val cacheKey = userPlaylogRepo::class.java.name + rankingCache[cacheKey]?.let { (t, r) -> + if (millis() - t < 120_000) return r + } + // TODO: pagination val users = userDataRepo.findAll().sortedByDescending { it.playerRating } return users.filter { it.card != null }.mapIndexed { i, user -> @@ -129,6 +138,6 @@ fun genericRanking( lastSeen = user.lastPlayDate.toString(), username = user.card!!.aquaUser?.username ?: "" ) - } + }.also { rankingCache[cacheKey] = millis() to it } // Update the cache } diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UserLoginHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UserLoginHandler.kt index 6f5e5207..d4503534 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UserLoginHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UserLoginHandler.kt @@ -1,17 +1,14 @@ package icu.samnyan.aqua.sega.maimai2.handler.impl -import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler import icu.samnyan.aqua.sega.util.jackson.BasicMapper import org.springframework.stereotype.Component -import java.time.LocalDateTime -import kotlin.jvm.optionals.getOrNull /** * @author samnyan (privateamusement@protonmail.com) */ @Component("Maimai2UserLoginHandler") -class UserLoginHandler(mapper: BasicMapper, val cardRepo: CardRepository) : BaseHandler { +class UserLoginHandler(mapper: BasicMapper) : BaseHandler { val resp = mapper.write(mapOf( "returnCode" to 1, "lastLoginDate" to "2020-01-01 00:00:00.0",