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

View File

@ -3,10 +3,12 @@ package icu.samnyan.aqua.sega.chusan.handler
import ext.* import ext.*
import icu.samnyan.aqua.sega.chusan.ChusanController import icu.samnyan.aqua.sega.chusan.ChusanController
import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserAll 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 icu.samnyan.aqua.sega.general.model.response.UserRecentRating
import java.nio.charset.StandardCharsets import java.nio.charset.StandardCharsets
import java.time.LocalDateTime
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
fun ChusanController.upsertApiInit() { fun ChusanController.upsertApiInit() {
@ -99,17 +101,17 @@ fun ChusanController.upsertApiInit() {
id = db.userDuel.findByUserAndDuelId(u, duelId)?.id ?: 0 }) } id = db.userDuel.findByUserAndDuelId(u, duelId)?.id ?: 0 }) }
// Need testing // Need testing
userLoginBonusList?.let { list -> // userLoginBonusList?.let { list ->
db.userLoginBonus.saveAll(list.distinctBy { it["presetId"] as String }.map { // db.userLoginBonus.saveAll(list.distinctBy { it["presetId"] as String }.map {
val id = it["presetId"]!!.int // val id = it["presetId"]!!.int
(db.userLoginBonus.findLoginBonus(uid.int, 1, id)() ?: UserLoginBonus()).apply { // (db.userLoginBonus.findLoginBonus(uid.int, 1, id)() ?: UserLoginBonus()).apply {
user = u.id.toInt() // user = u.id.toInt()
presetId = id // presetId = id
lastUpdateDate = LocalDateTime.now() // lastUpdateDate = LocalDateTime.now()
isWatched = true // isWatched = true
} // }
}) // })
} // }
req.userCMissionList?.forEach { d -> req.userCMissionList?.forEach { d ->
(db.userCMission.findByUser_Card_ExtIdAndMissionId(uid, d.missionId)() (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.GenericPlaylogRepo
import icu.samnyan.aqua.net.games.GenericUserDataRepo import icu.samnyan.aqua.net.games.GenericUserDataRepo
import icu.samnyan.aqua.net.games.IUserRepo import icu.samnyan.aqua.net.games.IUserRepo
import icu.samnyan.aqua.sega.chusan.model.gamedata.*
import icu.samnyan.aqua.sega.chusan.model.userdata.* import icu.samnyan.aqua.sega.chusan.model.userdata.*
import org.springframework.data.domain.Page import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable 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", value = "select * from chusan_user_login_bonus where user = ?1 and version = ?2 and preset_id = ?3 limit 1",
nativeQuery = true 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> { interface Chu3UserActivityRepo : Chu3UserLinked<UserActivity> {
@ -144,7 +143,7 @@ interface Chu3GameGachaCardRepo : JpaRepository<GameGachaCard, Long> {
interface Chu3GameGachaRepo : JpaRepository<GameGacha, Long> interface Chu3GameGachaRepo : JpaRepository<GameGacha, Long>
interface Chu3GameLoginBonusPresetsRepo : JpaRepository<GameLoginBonusPreset, Int> { interface Chu3GameLoginBonusPresetsRepo : JpaRepository<GameLoginBonusPreset, Long> {
@Query( @Query(
value = "select * from chusan_game_login_bonus_preset where version = ?1 and is_enabled = ?2", value = "select * from chusan_game_login_bonus_preset where version = ?1 and is_enabled = ?2",
nativeQuery = true nativeQuery = true

View File

@ -1,7 +1,7 @@
package icu.samnyan.aqua.sega.chusan.model.request package icu.samnyan.aqua.sega.chusan.model.request
import com.fasterxml.jackson.annotation.JsonProperty 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.Chu3UserData
import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem 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") @Table(name = "chusan_user_login_bonus")
class UserLoginBonus( class UserLoginBonus(
var version: Int = 0, var version: Int = 0,
// TODO: Fix this (should be User linked)
var user: Int = 0, var user: Int = 0,
var presetId: Int = 0, var presetId: Int = 0,
var bonusCount: Int = 0, var bonusCount: Int = 0,