[+] Card summary

pull/14/head
Azalea 2024-02-20 02:01:15 -05:00
parent cd8677a26d
commit 91913da205
1 changed files with 92 additions and 0 deletions

View File

@ -0,0 +1,92 @@
package icu.samnyan.aqua.net
import ext.RP
import ext.Str
import ext.async
import ext.minus
import icu.samnyan.aqua.net.components.JWT
import icu.samnyan.aqua.net.db.AquaNetUserRepo
import icu.samnyan.aqua.sega.general.model.Card
import icu.samnyan.aqua.sega.general.service.CardService
import org.springframework.stereotype.Service
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import kotlin.jvm.optionals.getOrNull
@RestController
@RequestMapping("/api/v2/card")
class CardController(
val userRepo: AquaNetUserRepo,
val jwt: JWT,
val cardService: CardService,
val cardSummary: CardSummary,
) {
@RequestMapping("/summary")
suspend fun summary(@RP cardId: Str): Any
{
val card = cardService.tryLookup(cardId) ?: (404 - "Card not found")
// Lookup data for each game
return mapOf(
"id" to card.extId,
"accessCode" to card.luid,
"registerTime" to card.registerTime,
"accessTime" to card.accessTime,
"summary" to cardSummary.getSummary(card),
)
}
}
@Service
class CardSummary(
val maimai: icu.samnyan.aqua.sega.maimai.dao.userdata.UserDataRepository,
val maimai2: icu.samnyan.aqua.sega.maimai2.dao.userdata.UserDataRepository,
val chusan: icu.samnyan.aqua.sega.chusan.dao.userdata.UserDataRepository,
val chunithm: icu.samnyan.aqua.sega.chunithm.dao.userdata.UserDataRepository,
val ongeki: icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository,
val diva: icu.samnyan.aqua.sega.diva.dao.userdata.PlayerProfileRepository,
) {
suspend fun getSummary(card: Card) = async { mapOf(
"maimai" to maimai.findByCard_ExtId(card.extId).getOrNull()?.let {
mapOf(
"name" to it.userName,
"rating" to it.playerRating,
"lastLogin" to it.lastPlayDate,
)
},
"maimai2" to maimai2.findByCard_ExtId(card.extId).getOrNull()?.let {
mapOf(
"name" to it.userName,
"rating" to it.playerRating,
"lastLogin" to it.lastPlayDate,
)
},
"chusan" to chusan.findByCard_ExtId(card.extId).getOrNull()?.let {
mapOf(
"name" to it.userName,
"rating" to it.playerRating,
"lastLogin" to it.lastPlayDate,
)
},
"chunithm" to chunithm.findByCard_ExtId(card.extId).getOrNull()?.let {
mapOf(
"name" to it.userName,
"rating" to it.playerRating,
"lastLogin" to it.lastPlayDate,
)
},
"ongeki" to ongeki.findByCard_ExtId(card.extId).getOrNull()?.let {
mapOf(
"name" to it.userName,
"rating" to it.playerRating,
"lastLogin" to it.lastPlayDate,
)
},
"diva" to diva.findByPdId(card.extId.toInt()).getOrNull()?.let {
mapOf(
"name" to it.playerName,
"rating" to it.level,
)
},
) }
}