mirror of https://github.com/hykilpikonna/AquaDX
[O] Todo :(
parent
01a064f1ab
commit
9197b3ca93
|
@ -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"}"""
|
||||
}
|
||||
|
|
|
@ -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)()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue