From 9197b3ca930501185f5db8ee238132f34daa9b0c Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:14:38 -0500 Subject: [PATCH] [O] Todo :( --- .../aqua/sega/chusan/handler/ChusanApis.kt | 93 +++++++++---------- .../sega/chusan/handler/ChusanUpsertApis.kt | 28 +++--- .../aqua/sega/chusan/model/Chu3Repos.kt | 5 +- .../chusan/model/request/UpsertUserGacha.kt | 2 +- .../chusan/model/userdata/UserLoginBonus.kt | 1 + 5 files changed, 64 insertions(+), 65 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index d0544720..030b6299 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -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"}""" } diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt index 03f6a2e5..e5c7f58d 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt @@ -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)() diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt index 23f7c946..cc080c63 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt @@ -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 { 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 + fun findLoginBonus(userId: Int, version: Int, presetId: Long): Optional } interface Chu3UserActivityRepo : Chu3UserLinked { @@ -144,7 +143,7 @@ interface Chu3GameGachaCardRepo : JpaRepository { interface Chu3GameGachaRepo : JpaRepository -interface Chu3GameLoginBonusPresetsRepo : JpaRepository { +interface Chu3GameLoginBonusPresetsRepo : JpaRepository { @Query( value = "select * from chusan_game_login_bonus_preset where version = ?1 and is_enabled = ?2", nativeQuery = true diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt index 0a5dd488..92c3ab39 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt @@ -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 diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserLoginBonus.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserLoginBonus.kt index f95489ef..996da40f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserLoginBonus.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserLoginBonus.kt @@ -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,