[+] Some API endpoints for bot query

pull/50/head
Clansty 2024-08-02 08:51:24 +08:00
parent f7c842774b
commit 9a6e9c4660
No known key found for this signature in database
GPG Key ID: 3A6BE8BAF2EDE134
2 changed files with 51 additions and 0 deletions

View File

@ -41,6 +41,55 @@ class Maimai2(
genericUserSummary(card, ratingComposition)
}
@API("user-rating")
suspend fun userRating(@RP username: Str) = us.cardByName(username) { card ->
val extra = repos.userGeneralData.findByUser_Card_ExtId(card.extId)
.associate { it.propertyKey to it.propertyValue }
val b35Str = extra["recent_rating"] ?: (400 - "No rating found")
val b15Str = extra["recent_rating_new"] ?: (400 - "No rating found")
val b35 = b35Str.split(',').map { it.split(':') }
val b15 = b15Str.split(',').map { it.split(':') }
val musicIdList = listOf(
b35.map { it[0].toInt() },
b15.map { it[0].toInt() },
).flatten()
val userMusicList = repos.userMusicDetail.findByUser_Card_ExtIdAndMusicIdIn(card.extId, musicIdList)
// Dont leak extId
mapOf(
"best35" to b35,
"best15" to b15,
"musicList" to userMusicList,
)
}
@API("user-name-plate")
suspend fun userNamePlate(@RP username: Str) = us.cardByName(username) { card ->
val userData = repos.userData.findByCardExtId(card.extId).orElse(null) ?: (404 - "User not found")
mapOf(
"iconId" to userData.iconId,
"plateId" to userData.plateId,
"titleId" to userData.titleId,
"classRank" to userData.classRank,
"playerRating" to userData.playerRating,
"userName" to userData.userName,
"courseRank" to userData.courseRank,
)
}
@API("user-favorite")
suspend fun userFavorite(@RP username: Str) = us.cardByName(username) { card ->
repos.userFavorite.findByUser_Card_ExtId(card.extId)
}
@API("user-music-from-list")
suspend fun userMusicFromList(@RP username: Str, @RB musicList: List<Int>) = us.cardByName(username) { card ->
repos.userMusicDetail.findByUser_Card_ExtIdAndMusicIdIn(card.extId, musicList)
}
@PostMapping("change-name")
suspend fun changeName(@RP token: String, @RP newName: String) = us.jwt.auth(token) { u ->
val newNameFull = toFullWidth(newName)

View File

@ -94,6 +94,8 @@ interface Mai2UserMusicDetailRepo : Mai2UserLinked<Mai2UserMusicDetail> {
fun findByUser_Card_ExtIdAndMusicId(userId: Long, id: Int): List<Mai2UserMusicDetail>
fun findByUserAndMusicIdAndLevel(user: Mai2UserDetail, musicId: Int, level: Int): Optional<Mai2UserMusicDetail>
fun findByUser_Card_ExtIdAndMusicIdIn(userId: Long, musicId: List<Int>): List<Mai2UserMusicDetail>
}
interface Mai2UserOptionRepo : Mai2UserLinked<Mai2UserOption>