[+] Mai2 add endpoints to get and set login bonus

pull/119/head
Clansty 2025-02-16 22:37:04 +08:00
parent 7431e58f70
commit 7427609bee
No known key found for this signature in database
GPG Key ID: 3A6BE8BAF2EDE134
1 changed files with 32 additions and 0 deletions

View File

@ -6,6 +6,7 @@ import icu.samnyan.aqua.net.games.*
import icu.samnyan.aqua.net.utils.*
import icu.samnyan.aqua.sega.maimai2.model.*
import icu.samnyan.aqua.sega.maimai2.model.userdata.*
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RestController
import java.util.*
@ -34,6 +35,8 @@ class Maimai2(
"titleId" to { u, v -> u.titleId = v.int() },
"frameId" to { u, v -> u.frameId = v.int() },
"partnerId" to { u, v -> u.partnerId = v.int() },
"charaSlot" to { u, v -> u.charaSlot = v.split(',').map { it.int() } },
"charaLockSlot" to { u, v -> u.charaLockSlot = v.split(',').map { it.int() } },
)
}
override val gettableFields: Set<String> = setOf("lastGameId", "lastRomVersion", "classRank", "playerRating", "courseRank")
@ -109,6 +112,35 @@ class Maimai2(
mapOf("newName" to newNameFull)
}
@GetMapping("get-login-bonus")
suspend fun getLoginBonus(@RP token: String) = us.jwt.auth(token) { u ->
us.cardByName(u.username) { card ->
repos.userLoginBonus.findByUser_Card_ExtId(card.extId)
}
}
@PostMapping("set-current-login-bonus")
suspend fun setCurrentLoginBonus(@RP token: String, @RP bonusId: Int) = us.jwt.auth(token) { u ->
us.cardByName(u.username) { card ->
val loginBonus = repos.userLoginBonus.findByUser_Card_ExtId(card.extId).mut
for (bonus in loginBonus) {
bonus.isCurrent = bonus.bonusId == bonusId
}
// if no bonus.bonusId == bonusId in loginBonus
if (loginBonus.none { it.bonusId == bonusId }) {
// create one
val newBonus = Mai2UserLoginBonus().apply {
user = repos.userData.findByCardExtId(card.extId).orElse(null) ?: (404 - "User not found")
this.bonusId = bonusId
isCurrent = true
}
loginBonus.add(newBonus)
}
repos.userLoginBonus.saveAll(loginBonus)
}
SUCCESS
}
@PostMapping("set-rival")
suspend fun setRival(@RP token: String, @RP rivalUserName: String, @RP isAdd: Boolean) = us.jwt.auth(token) { u ->
us.cardByName(u.username) { myCard ->