[O] Todo :(

pull/99/head^2
Azalea 2025-01-04 20:14:38 -05:00
parent 01a064f1ab
commit 9197b3ca93
5 changed files with 64 additions and 65 deletions

View File

@ -6,11 +6,8 @@ import icu.samnyan.aqua.sega.chusan.ChusanController
import icu.samnyan.aqua.sega.chusan.ChusanData
import icu.samnyan.aqua.sega.chusan.model.request.UserCMissionResp
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
import icu.samnyan.aqua.sega.chusan.model.userdata.UserLoginBonus
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating
import java.time.LocalDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
@Suppress("UNCHECKED_CAST")
@ -240,51 +237,51 @@ fun ChusanController.chusanInit() {
// TODO: Test login bonus
"GameLogin" {
fun process() {
val u = db.userData.findByCard_ExtId(uid)() ?: return
db.userData.save(u.apply { lastLoginDate = LocalDateTime.now() })
if (!props.loginBonusEnable) return
val bonusList = db.gameLoginBonusPresets.findLoginBonusPresets(1, 1)
bonusList.forEach { preset ->
// Check if a user already has some progress and if not, add the login bonus entry
val bonus = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id)()
?: UserLoginBonus(1, uid.int, preset.id).let { db.userLoginBonus.save(it) }
if (bonus.isFinished) return@forEach
// last login is 24 hours+ ago
if (bonus.lastUpdateDate.toEpochSecond(ZoneOffset.ofHours(0)) <
(LocalDateTime.now().minusHours(24).toEpochSecond(ZoneOffset.ofHours(0)))
) {
var bCount = bonus.bonusCount + 1
val lastUpdate = LocalDateTime.now()
val allLoginBonus = db.gameLoginBonus.findGameLoginBonus(1, preset.id)
.ifEmpty { return@forEach }
val maxNeededDays = allLoginBonus[0].needLoginDayCount
// if all items are redeemed, then don't show the login bonuses.
var finished = false
if (bCount > maxNeededDays) {
if (preset.id < 3000) bCount = 1
else finished = true
}
db.gameLoginBonus.findByRequiredDays(1, preset.id, bCount)()?.let {
db.userItem.save(UserItem(6, it.presentId, it.itemNum).apply { user = u })
}
val toSave = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id)()
?: UserLoginBonus().apply { user = uid.int; presetId = preset.id; version = 1 }
db.userLoginBonus.save(toSave.apply {
bonusCount = bCount
lastUpdateDate = lastUpdate
isWatched = false
isFinished = finished
})
}
}
}
process()
// fun process() {
// val u = db.userData.findByCard_ExtId(uid)() ?: return
// db.userData.save(u.apply { lastLoginDate = LocalDateTime.now() })
//
// if (!props.loginBonusEnable) return
// val bonusList = db.gameLoginBonusPresets.findLoginBonusPresets(1, 1)
//
// bonusList.forEach { preset ->
// // Check if a user already has some progress and if not, add the login bonus entry
// val bonus = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id)()
// ?: UserLoginBonus(1, uid.int, preset.id).let { db.userLoginBonus.save(it) }
// if (bonus.isFinished) return@forEach
//
// // last login is 24 hours+ ago
// if (bonus.lastUpdateDate.toEpochSecond(ZoneOffset.ofHours(0)) <
// (LocalDateTime.now().minusHours(24).toEpochSecond(ZoneOffset.ofHours(0)))
// ) {
// var bCount = bonus.bonusCount + 1
// val lastUpdate = LocalDateTime.now()
// val allLoginBonus = db.gameLoginBonus.findGameLoginBonus(1, preset.id)
// .ifEmpty { return@forEach }
// val maxNeededDays = allLoginBonus[0].needLoginDayCount
//
// // if all items are redeemed, then don't show the login bonuses.
// var finished = false
// if (bCount > maxNeededDays) {
// if (preset.id < 3000) bCount = 1
// else finished = true
// }
// db.gameLoginBonus.findByRequiredDays(1, preset.id, bCount)()?.let {
// db.userItem.save(UserItem(6, it.presentId, it.itemNum).apply { user = u })
// }
// val toSave = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id)()
// ?: UserLoginBonus().apply { user = uid.int; presetId = preset.id; version = 1 }
//
// db.userLoginBonus.save(toSave.apply {
// bonusCount = bCount
// lastUpdateDate = lastUpdate
// isWatched = false
// isFinished = finished
// })
// }
// }
// }
// process()
"""{"returnCode":"1"}"""
}

View File

@ -3,10 +3,12 @@ package icu.samnyan.aqua.sega.chusan.handler
import ext.*
import icu.samnyan.aqua.sega.chusan.ChusanController
import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserAll
import icu.samnyan.aqua.sega.chusan.model.userdata.*
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCMission
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCMissionProgress
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharge
import icu.samnyan.aqua.sega.chusan.model.userdata.UserGeneralData
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating
import java.nio.charset.StandardCharsets
import java.time.LocalDateTime
@Suppress("UNCHECKED_CAST")
fun ChusanController.upsertApiInit() {
@ -99,17 +101,17 @@ fun ChusanController.upsertApiInit() {
id = db.userDuel.findByUserAndDuelId(u, duelId)?.id ?: 0 }) }
// Need testing
userLoginBonusList?.let { list ->
db.userLoginBonus.saveAll(list.distinctBy { it["presetId"] as String }.map {
val id = it["presetId"]!!.int
(db.userLoginBonus.findLoginBonus(uid.int, 1, id)() ?: UserLoginBonus()).apply {
user = u.id.toInt()
presetId = id
lastUpdateDate = LocalDateTime.now()
isWatched = true
}
})
}
// userLoginBonusList?.let { list ->
// db.userLoginBonus.saveAll(list.distinctBy { it["presetId"] as String }.map {
// val id = it["presetId"]!!.int
// (db.userLoginBonus.findLoginBonus(uid.int, 1, id)() ?: UserLoginBonus()).apply {
// user = u.id.toInt()
// presetId = id
// lastUpdateDate = LocalDateTime.now()
// isWatched = true
// }
// })
// }
req.userCMissionList?.forEach { d ->
(db.userCMission.findByUser_Card_ExtIdAndMissionId(uid, d.missionId)()

View File

@ -5,7 +5,6 @@ package icu.samnyan.aqua.sega.chusan.model
import icu.samnyan.aqua.net.games.GenericPlaylogRepo
import icu.samnyan.aqua.net.games.GenericUserDataRepo
import icu.samnyan.aqua.net.games.IUserRepo
import icu.samnyan.aqua.sega.chusan.model.gamedata.*
import icu.samnyan.aqua.sega.chusan.model.userdata.*
import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable
@ -37,7 +36,7 @@ interface Chu3UserLoginBonusRepo : JpaRepository<UserLoginBonus, Long> {
value = "select * from chusan_user_login_bonus where user = ?1 and version = ?2 and preset_id = ?3 limit 1",
nativeQuery = true
)
fun findLoginBonus(userId: Int, version: Int, presetId: Int): Optional<UserLoginBonus>
fun findLoginBonus(userId: Int, version: Int, presetId: Long): Optional<UserLoginBonus>
}
interface Chu3UserActivityRepo : Chu3UserLinked<UserActivity> {
@ -144,7 +143,7 @@ interface Chu3GameGachaCardRepo : JpaRepository<GameGachaCard, Long> {
interface Chu3GameGachaRepo : JpaRepository<GameGacha, Long>
interface Chu3GameLoginBonusPresetsRepo : JpaRepository<GameLoginBonusPreset, Int> {
interface Chu3GameLoginBonusPresetsRepo : JpaRepository<GameLoginBonusPreset, Long> {
@Query(
value = "select * from chusan_game_login_bonus_preset where version = ?1 and is_enabled = ?2",
nativeQuery = true

View File

@ -1,7 +1,7 @@
package icu.samnyan.aqua.sega.chusan.model.request
import com.fasterxml.jackson.annotation.JsonProperty
import icu.samnyan.aqua.sega.chusan.model.gamedata.GameGachaCard
import icu.samnyan.aqua.sega.chusan.model.GameGachaCard
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData
import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem

View File

@ -10,6 +10,7 @@ import java.time.LocalDateTime
@Table(name = "chusan_user_login_bonus")
class UserLoginBonus(
var version: Int = 0,
// TODO: Fix this (should be User linked)
var user: Int = 0,
var presetId: Int = 0,
var bonusCount: Int = 0,