mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-09-28 09:47:55 +03:00
[+] Use data jsons instead of db
This commit is contained in:
@@ -2,47 +2,30 @@ package icu.samnyan.aqua.sega.chusan.model
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import icu.samnyan.aqua.net.games.BaseEntity
|
||||
import jakarta.persistence.*
|
||||
import java.time.LocalDateTime
|
||||
|
||||
|
||||
// BaseEntity does not expose id to json, but IdExposedEntity does
|
||||
@MappedSuperclass
|
||||
class IdExposedEntity {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameCharge")
|
||||
@Table(name = "chusan_game_charge")
|
||||
class GameCharge: BaseEntity() {
|
||||
class GameCharge {
|
||||
var orderId = 0
|
||||
|
||||
@Column(unique = true)
|
||||
var chargeId = 0
|
||||
var price = 0
|
||||
var startDate: LocalDateTime? = null
|
||||
var endDate: LocalDateTime? = null
|
||||
var startDate: LocalDateTime? = LocalDateTime.of(2019, 1, 1, 0, 0, 0)
|
||||
var endDate: LocalDateTime? = LocalDateTime.of(2099, 1, 1, 0, 0, 0)
|
||||
var salePrice = 0
|
||||
var saleStartDate: LocalDateTime? = null
|
||||
var saleEndDate: LocalDateTime? = null
|
||||
var saleStartDate: LocalDateTime? = LocalDateTime.of(2019, 1, 1, 0, 0, 0)
|
||||
var saleEndDate: LocalDateTime? = LocalDateTime.of(2099, 1, 1, 0, 0, 0)
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameEvent")
|
||||
@Table(name = "chusan_game_event")
|
||||
class GameEvent: IdExposedEntity() {
|
||||
class GameEvent {
|
||||
var id: Long = 0
|
||||
val type = 0
|
||||
val startDate: LocalDateTime? = null
|
||||
val endDate: LocalDateTime? = null
|
||||
val startDate: LocalDateTime? = LocalDateTime.of(2019, 1, 1, 0, 0, 0)
|
||||
val endDate: LocalDateTime? = LocalDateTime.of(2099, 1, 1, 0, 0, 0)
|
||||
|
||||
@JsonIgnore
|
||||
val enable = false
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameGacha")
|
||||
@Table(name = "chusan_game_gacha")
|
||||
class GameGacha : IdExposedEntity() {
|
||||
class GameGacha {
|
||||
var gachaId = 0
|
||||
var gachaName: String? = null
|
||||
var type = 0
|
||||
@@ -53,15 +36,14 @@ class GameGacha : IdExposedEntity() {
|
||||
var ceilingCnt = 0
|
||||
var changeRateCnt1 = 0
|
||||
var changeRateCnt2 = 0
|
||||
var startDate: LocalDateTime? = null
|
||||
var endDate: LocalDateTime? = null
|
||||
var noticeStartDate: LocalDateTime? = null
|
||||
var noticeEndDate: LocalDateTime? = null
|
||||
var startDate: LocalDateTime? = LocalDateTime.of(2019, 1, 1, 0, 0, 0)
|
||||
var endDate: LocalDateTime? = LocalDateTime.of(2099, 1, 1, 0, 0, 0)
|
||||
var noticeStartDate: LocalDateTime? = LocalDateTime.of(2019, 1, 1, 0, 0, 0)
|
||||
var noticeEndDate: LocalDateTime? = LocalDateTime.of(2099, 1, 1, 0, 0, 0)
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameGachaCard")
|
||||
@Table(name = "chusan_game_gacha_card")
|
||||
class GameGachaCard : IdExposedEntity() {
|
||||
class GameGachaCard {
|
||||
var id: Long = 0
|
||||
var gachaId = 0
|
||||
var cardId = 0
|
||||
var rarity = 0
|
||||
@@ -71,9 +53,8 @@ class GameGachaCard : IdExposedEntity() {
|
||||
var isPickup = false
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameLoginBonus")
|
||||
@Table(name = "chusan_game_login_bonus")
|
||||
class GameLoginBonus : IdExposedEntity() {
|
||||
class GameLoginBonus {
|
||||
var id: Long = 0
|
||||
var version = 0
|
||||
var presetId = 0
|
||||
var loginBonusId = 0
|
||||
@@ -85,19 +66,17 @@ class GameLoginBonus : IdExposedEntity() {
|
||||
var loginBonusCategoryType = 0
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameLoginBonusPreset")
|
||||
@Table(name = "chusan_game_login_bonus_preset")
|
||||
class GameLoginBonusPreset : IdExposedEntity() {
|
||||
class GameLoginBonusPreset {
|
||||
var id: Long = 0
|
||||
var version = 0
|
||||
var presetName: String? = null
|
||||
var isEnabled = false
|
||||
}
|
||||
|
||||
@Entity(name = "ChusanGameLinkedVerse")
|
||||
@Table(name = "chusan_game_linked_verse")
|
||||
class GameLinkedVerse: IdExposedEntity() {
|
||||
class GameLinkedVerse {
|
||||
var id: Long = 0
|
||||
var musicId = 0
|
||||
var name: String? = null
|
||||
var startDate: LocalDateTime? = null
|
||||
var endDate: LocalDateTime? = null
|
||||
var startDate: LocalDateTime? = LocalDateTime.of(2019, 1, 1, 0, 0, 0)
|
||||
var endDate: LocalDateTime? = LocalDateTime.of(2099, 1, 1, 0, 0, 0)
|
||||
}
|
||||
@@ -13,7 +13,8 @@ import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.data.jpa.repository.Query
|
||||
import org.springframework.data.repository.NoRepositoryBean
|
||||
import org.springframework.stereotype.Component
|
||||
import java.util.*
|
||||
import icu.samnyan.aqua.sega.util.GameDataService
|
||||
import icu.samnyan.aqua.sega.util.StaticRepo
|
||||
|
||||
|
||||
@NoRepositoryBean
|
||||
@@ -147,44 +148,23 @@ interface Chu3UserChallengeRepo : Chu3UserLinked<Chu3UserChallenge> {
|
||||
fun findByUserAndUnlockChallengeId(user: Chu3UserData, unlockChallengeId: Int): Chu3UserChallenge?
|
||||
}
|
||||
|
||||
interface Chu3GameChargeRepo : JpaRepository<GameCharge, Long>
|
||||
|
||||
interface Chu3GameEventRepo : JpaRepository<GameEvent, Int> {
|
||||
fun findByEnable(enable: Boolean): List<GameEvent>
|
||||
}
|
||||
|
||||
interface Chu3GameGachaCardRepo : JpaRepository<GameGachaCard, Long> {
|
||||
fun findAllByGachaId(gachaId: Int): List<GameGachaCard>
|
||||
}
|
||||
|
||||
interface Chu3GameGachaRepo : JpaRepository<GameGacha, Long>
|
||||
|
||||
interface Chu3GameLoginBonusPresetsRepo : JpaRepository<GameLoginBonusPreset, Long> {
|
||||
@Query(
|
||||
value = "select * from chusan_game_login_bonus_preset where version = ?1 and is_enabled = ?2",
|
||||
nativeQuery = true
|
||||
)
|
||||
fun findLoginBonusPresets(version: Int, isEnabled: Int): List<GameLoginBonusPreset>
|
||||
}
|
||||
|
||||
interface Chu3GameLoginBonusRepo : JpaRepository<GameLoginBonus, Int> {
|
||||
@Query(
|
||||
value = "select * from chusan_game_login_bonus where version = ?1 and preset_id = ?2 order by need_login_day_count desc",
|
||||
nativeQuery = true
|
||||
)
|
||||
fun findGameLoginBonus(version: Int, presetId: Int): List<GameLoginBonus>
|
||||
|
||||
@Query(
|
||||
value = "select * from chusan_game_login_bonus where version = ?1 and preset_id = ?2 and need_login_day_count = ?3 limit 1",
|
||||
nativeQuery = true
|
||||
)
|
||||
fun findByRequiredDays(version: Int, presetId: Int, requiredDays: Int): GameLoginBonus?
|
||||
}
|
||||
|
||||
interface Chu3UserRegionsRepo: Chu3UserLinked<UserRegions> {
|
||||
fun findByUserAndRegionId(user: Chu3UserData, regionId: Int): UserRegions?
|
||||
}
|
||||
|
||||
class Chu3GameGachaCardRepo(data: List<GameGachaCard>) : StaticRepo<GameGachaCard, Long>(data, { it.id }) {
|
||||
fun findAllByGachaId(gachaId: Int) = data.filter { it.gachaId == gachaId }
|
||||
}
|
||||
|
||||
class Chu3GameLoginBonusPresetsRepo(data: List<GameLoginBonusPreset>) : StaticRepo<GameLoginBonusPreset, Long>(data, { it.id }) {
|
||||
fun findLoginBonusPresets(version: Int, isEnabled: Int) = data.filter { it.version == version && it.isEnabled == (isEnabled == 1) }
|
||||
}
|
||||
|
||||
class Chu3GameLoginBonusRepo(data: List<GameLoginBonus>) : StaticRepo<GameLoginBonus, Long>(data, { it.id }) {
|
||||
fun findGameLoginBonus(version: Int, presetId: Int) = data.filter { it.version == version && it.presetId == presetId }.sortedByDescending { it.needLoginDayCount }
|
||||
fun findByRequiredDays(version: Int, presetId: Int, requiredDays: Int) = data.find { it.version == version && it.presetId == presetId && it.needLoginDayCount == requiredDays }
|
||||
}
|
||||
|
||||
@Component
|
||||
class Chu3Repos(
|
||||
val userLoginBonus: Chu3UserLoginBonusRepo,
|
||||
@@ -209,11 +189,13 @@ class Chu3Repos(
|
||||
val userMisc: Chu3UserMiscRepo,
|
||||
val userChallenge: Chu3UserChallengeRepo,
|
||||
val userLinkedVerse: Chu3UserLinkedVerseRepo,
|
||||
val gameCharge: Chu3GameChargeRepo,
|
||||
val gameEvent: Chu3GameEventRepo,
|
||||
val gameGachaCard: Chu3GameGachaCardRepo,
|
||||
val gameGacha: Chu3GameGachaRepo,
|
||||
val gameLoginBonusPresets: Chu3GameLoginBonusPresetsRepo,
|
||||
val gameLoginBonus: Chu3GameLoginBonusRepo,
|
||||
val gameLinkedVerse: Chu3GameLinkedVerseRepo
|
||||
)
|
||||
val gameData: GameDataService
|
||||
) {
|
||||
val gameCharge = StaticRepo(gameData.chu3GameCharges) { it.orderId.toLong() }
|
||||
val gameEvent = StaticRepo(gameData.chu3GameEvents) { it.id }
|
||||
val gameGachaCard = Chu3GameGachaCardRepo(gameData.chu3GameGachaCards)
|
||||
val gameGacha = StaticRepo(gameData.chu3GameGachas) { it.gachaId.toLong() }
|
||||
val gameLoginBonusPresets = Chu3GameLoginBonusPresetsRepo(gameData.chu3GameLoginBonusPresets)
|
||||
val gameLoginBonus = Chu3GameLoginBonusRepo(gameData.chu3GameLoginBonuses)
|
||||
val gameLinkedVerse = StaticRepo(gameData.chu3GameLinkedVerses) { it.id }
|
||||
}
|
||||
|
||||
@@ -1,43 +1,32 @@
|
||||
package icu.samnyan.aqua.sega.maimai2.model
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||
import icu.samnyan.aqua.net.games.BaseEntity
|
||||
import jakarta.persistence.Column
|
||||
import jakarta.persistence.Entity
|
||||
import jakarta.persistence.Table
|
||||
|
||||
@Entity
|
||||
@Table(name = "maimai2_game_event")
|
||||
class Mai2GameEvent : BaseEntity() {
|
||||
class Mai2GameEvent {
|
||||
@JsonIgnore(false)
|
||||
override var id = 0L
|
||||
var id = 0L
|
||||
|
||||
var type = 0
|
||||
var startDate: String? = null
|
||||
var endDate: String? = null
|
||||
var startDate: String? = "2019-01-01 00:00:00.000000"
|
||||
var endDate: String? = "2099-01-01 00:00:00.000000"
|
||||
|
||||
@JsonIgnore
|
||||
var enable = false
|
||||
var disableArea = ""
|
||||
}
|
||||
|
||||
@Entity
|
||||
@Table(name = "maimai2_game_charge")
|
||||
class Mai2GameCharge : BaseEntity() {
|
||||
@Column(unique = true)
|
||||
class Mai2GameCharge {
|
||||
var chargeId = 0L
|
||||
val orderId = 0L
|
||||
val price = 0
|
||||
val startDate: String? = null
|
||||
val endDate: String? = null
|
||||
var orderId = 0L
|
||||
var price = 0
|
||||
var startDate: String? = "2019-01-01 00:00:00.000000"
|
||||
var endDate: String? = "2099-01-01 00:00:00.000000"
|
||||
}
|
||||
|
||||
@Entity
|
||||
@Table(name = "maimai2_game_selling_card")
|
||||
class Mai2GameSellingCard : BaseEntity() {
|
||||
class Mai2GameSellingCard {
|
||||
var cardId = 0L
|
||||
var startDate: String? = null
|
||||
var endDate: String? = null
|
||||
var noticeStartDate: String? = null
|
||||
var noticeEndDate: String? = null
|
||||
var startDate: String? = "2019-01-01 00:00:00.000000"
|
||||
var endDate: String? = "2099-01-01 00:00:00.000000"
|
||||
var noticeStartDate: String? = "2019-01-01 00:00:00.000000"
|
||||
var noticeEndDate: String? = "2099-01-01 00:00:00.000000"
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@ import org.springframework.data.jpa.repository.Modifying
|
||||
import org.springframework.data.repository.NoRepositoryBean
|
||||
import org.springframework.stereotype.Component
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import icu.samnyan.aqua.sega.util.GameDataService
|
||||
import icu.samnyan.aqua.sega.util.StaticRepo
|
||||
import java.util.*
|
||||
|
||||
@NoRepositoryBean
|
||||
@@ -117,14 +119,6 @@ interface MAi2UserIntimateRepo : Mai2UserLinked<Mai2UserIntimate> {
|
||||
fun findByUserAndPartnerId(user: Mai2UserDetail, partnerId: Int): Mai2UserIntimate?
|
||||
}
|
||||
|
||||
interface Mai2GameChargeRepo : JpaRepository<Mai2GameCharge, Long>
|
||||
|
||||
interface Mai2GameEventRepo : JpaRepository<Mai2GameEvent, Int> {
|
||||
fun findByEnable(enable: Boolean): List<Mai2GameEvent>
|
||||
}
|
||||
|
||||
interface Mai2GameSellingCardRepo : JpaRepository<Mai2GameSellingCard, Long>
|
||||
|
||||
interface Mai2UserRegionsRepo: Mai2UserLinked<UserRegions> {
|
||||
fun findByUserAndRegionId(user: Mai2UserDetail, regionId: Int): UserRegions?
|
||||
}
|
||||
@@ -152,8 +146,10 @@ class Mai2Repos(
|
||||
val userUdemae: Mai2UserUdemaeRepo,
|
||||
val userKaleidx: MAi2UserKaleidxRepo,
|
||||
val userIntimate: MAi2UserIntimateRepo,
|
||||
val gameCharge: Mai2GameChargeRepo,
|
||||
val gameEvent: Mai2GameEventRepo,
|
||||
val gameSellingCard: Mai2GameSellingCardRepo,
|
||||
val userRegions: Mai2UserRegionsRepo,
|
||||
)
|
||||
gameData: GameDataService
|
||||
) {
|
||||
val gameCharge = StaticRepo(gameData.mai2Charges) { it.orderId }
|
||||
val gameEvent = StaticRepo(gameData.mai2Events) { it.id }
|
||||
val gameSellingCard = StaticRepo(gameData.mai2SellingCards) { it.cardId }
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.data.jpa.repository.Query
|
||||
import org.springframework.data.repository.NoRepositoryBean
|
||||
import org.springframework.stereotype.Component
|
||||
import icu.samnyan.aqua.sega.util.GameDataService
|
||||
import icu.samnyan.aqua.sega.util.StaticRepo
|
||||
import java.util.*
|
||||
|
||||
|
||||
@@ -149,15 +151,12 @@ interface OgkUserRegionsRepo: OngekiUserLinked<UserRegions> {
|
||||
fun findByUserAndRegionId(user: UserData, regionId: Int): UserRegions?
|
||||
}
|
||||
|
||||
interface OgkGameGachaCardRepo : JpaRepository<GameGachaCard, Long> {
|
||||
fun findAllByGachaId(gachaId: Long): List<GameGachaCard>
|
||||
|
||||
@Query("SELECT g FROM OngekiGameGachaCard g WHERE g.gachaId = :gachaId OR g.gachaId = 1112")
|
||||
fun findAllByGachaIdAndPermanent(gachaId: Long): List<GameGachaCard>
|
||||
class OngekiGameGachaCardRepo(data: List<GameGachaCard>) : StaticRepo<GameGachaCard, Long>(data, { it.cardId }) {
|
||||
private val gachaMap by lazy { data.groupBy { it.gachaId } }
|
||||
fun findAllByGachaId(gachaId: Long) = gachaMap[gachaId] ?: emptyList()
|
||||
fun findAllByGachaIdAndPermanent(gachaId: Long) = (gachaMap[gachaId] ?: emptyList()) + (gachaMap[1112L] ?: emptyList())
|
||||
}
|
||||
|
||||
interface OgkGameGachaRepo : JpaRepository<GameGacha, Long>
|
||||
|
||||
interface OgkUserGachaRepo : OngekiUserLinked<UserGacha> {
|
||||
fun findByUserAndGachaId(user: UserData, gachaId: Long): UserGacha?
|
||||
}
|
||||
@@ -166,14 +165,6 @@ interface OgkUserGachaRepo : OngekiUserLinked<UserGacha> {
|
||||
interface OgkUserEventMapRepo : OngekiUserLinked<UserEventMap>
|
||||
interface OgkUserSkinRepo : OngekiUserLinked<UserSkin>
|
||||
|
||||
interface OgkGameCardRepo : JpaRepository<GameCard, Long>
|
||||
interface OgkGameCharaRepo : JpaRepository<GameChara, Long>
|
||||
interface OgkGameEventRepo : JpaRepository<GameEvent, Long>
|
||||
interface OgkGameMusicRepo : JpaRepository<GameMusic, Long>
|
||||
interface OgkGamePointRepo : JpaRepository<GamePoint, Long>
|
||||
interface OgkGamePresentRepo : JpaRepository<GamePresent, Long>
|
||||
interface OgkGameRewardRepo : JpaRepository<GameReward, Long>
|
||||
interface OgkGameSkillRepo : JpaRepository<GameSkill, Long>
|
||||
|
||||
@Component
|
||||
class OngekiUserRepos(
|
||||
@@ -211,17 +202,19 @@ class OngekiUserRepos(
|
||||
|
||||
@Component
|
||||
class OngekiGameRepos(
|
||||
val card: OgkGameCardRepo,
|
||||
val chara: OgkGameCharaRepo,
|
||||
val event: OgkGameEventRepo,
|
||||
val music: OgkGameMusicRepo,
|
||||
val point: OgkGamePointRepo,
|
||||
val present: OgkGamePresentRepo,
|
||||
val reward: OgkGameRewardRepo,
|
||||
val skill: OgkGameSkillRepo,
|
||||
val gachaCard: OgkGameGachaCardRepo,
|
||||
val gacha:OgkGameGachaRepo
|
||||
)
|
||||
val gameData: GameDataService
|
||||
) {
|
||||
val card = StaticRepo(gameData.ogkGameCards) { it.cardId }
|
||||
val chara = StaticRepo(gameData.ogkGameCharas) { it.modelId }
|
||||
val event = StaticRepo(gameData.ogkGameEvents) { it.id }
|
||||
val music = StaticRepo(gameData.ogkGameMusics) { it.id }
|
||||
val point = StaticRepo(gameData.ogkGamePoints) { it.id }
|
||||
val present = StaticRepo(gameData.ogkGamePresents) { it.id }
|
||||
val reward = StaticRepo(gameData.ogkGameRewards) { it.id }
|
||||
val skill = StaticRepo(gameData.ogkGameSkills) { it.id }
|
||||
val gachaCard = OngekiGameGachaCardRepo(gameData.ogkGameGachaCards)
|
||||
val gacha = StaticRepo(gameData.ogkGameGachas) { it.gachaId }
|
||||
}
|
||||
|
||||
@Component
|
||||
class OngekiRepos(
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
package icu.samnyan.aqua.sega.ongeki.model
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import jakarta.persistence.*
|
||||
|
||||
@Entity(name = "OngekiGameCard")
|
||||
@Table(name = "ongeki_game_card")
|
||||
class GameCard {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
var cardId: Long = 0
|
||||
var name: String = ""
|
||||
var nickName: String = ""
|
||||
var attribute: String = ""
|
||||
@@ -24,30 +19,17 @@ class GameCard {
|
||||
var version: String = ""
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGameChara")
|
||||
@Table(name = "ongeki_game_chara")
|
||||
class GameChara {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
var name: String = ""
|
||||
var cv: String = ""
|
||||
var modelId = 0
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGameEvent")
|
||||
@Table(name = "ongeki_game_event")
|
||||
class GameEvent {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGameMusic")
|
||||
@Table(name = "ongeki_game_music")
|
||||
class GameMusic {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
var name: String = ""
|
||||
var sortName: String = ""
|
||||
@@ -62,26 +44,15 @@ class GameMusic {
|
||||
var level4: String = ""
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGamePoint")
|
||||
@Table(name = "ongeki_game_point", uniqueConstraints = [UniqueConstraint(columnNames = ["type"])])
|
||||
class GamePoint {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@JsonIgnore
|
||||
var id: Long = 0
|
||||
@Enumerated(EnumType.ORDINAL)
|
||||
var type: OgkGpProductID = OgkGpProductID.A_Credit1
|
||||
var cost: Int = 0
|
||||
val startDate = "2000-01-01 05:00:00.0"
|
||||
val endDate = "2099-01-01 05:00:00.0"
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGamePresent")
|
||||
@Table(name = "ongeki_game_present")
|
||||
class GamePresent {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
var presentName: String = ""
|
||||
var rewardId: Int = 0 // count
|
||||
@@ -91,33 +62,20 @@ class GamePresent {
|
||||
val endDate = "2099-01-01 05:00:00.0"
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGameReward")
|
||||
@Table(name = "ongeki_game_reward")
|
||||
class GameReward {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
|
||||
@Enumerated(EnumType.ORDINAL)
|
||||
var itemKind: OgkItemType = OgkItemType.None
|
||||
var itemId = 0
|
||||
}
|
||||
|
||||
|
||||
@Entity(name = "OngekiGameSkill")
|
||||
@Table(name = "ongeki_game_skill")
|
||||
class GameSkill {
|
||||
@Id
|
||||
var id: Long = 0
|
||||
var name: String = ""
|
||||
var category: String = ""
|
||||
var info: String = ""
|
||||
}
|
||||
|
||||
@Entity(name = "OngekiGameGachaCard")
|
||||
@Table(name = "ongeki_game_gacha_card")
|
||||
class GameGachaCard {
|
||||
@Id
|
||||
var cardId: Long = 0
|
||||
var gachaId: Long = 0
|
||||
var rarity: Int = 0
|
||||
@@ -130,10 +88,7 @@ class GameGachaCard {
|
||||
var isSelect: Boolean = false
|
||||
}
|
||||
|
||||
@Entity(name = "OngekiGameGacha")
|
||||
@Table(name = "ongeki_game_gacha")
|
||||
class GameGacha {
|
||||
@Id
|
||||
var gachaId: Long = 0
|
||||
var gachaName: String = ""
|
||||
var type: Int = 0
|
||||
@@ -142,11 +97,11 @@ class GameGacha {
|
||||
var ceilingCnt: Int = 0
|
||||
var changeRateCnt1: Int = 0
|
||||
var changeRateCnt2: Int = 0
|
||||
var startDate: String = ""
|
||||
var endDate: String = ""
|
||||
var noticeStartDate: String = ""
|
||||
var noticeEndDate: String = ""
|
||||
var convertEndDate: String = ""
|
||||
var startDate: String = "2020-01-01 00:00:00"
|
||||
var endDate: String = "2099-01-01 00:00:00"
|
||||
var noticeStartDate: String = "2020-01-01 00:00:00"
|
||||
var noticeEndDate: String = "2099-01-01 00:00:00"
|
||||
var convertEndDate: String = "2099-01-01 00:00:00"
|
||||
|
||||
@JsonProperty("isCeiling")
|
||||
var isCeiling: Boolean = false
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
package icu.samnyan.aqua.sega.util
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference
|
||||
import ext.logger
|
||||
import ext.toJson
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameCharge as Chu3GameCharge
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameEvent as Chu3GameEvent
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameGacha as Chu3GameGacha
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameGachaCard as Chu3GameGachaCard
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameLinkedVerse as Chu3GameLinkedVerse
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameLoginBonus as Chu3GameLoginBonus
|
||||
import icu.samnyan.aqua.sega.chusan.model.GameLoginBonusPreset as Chu3GameLoginBonusPreset
|
||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2GameCharge
|
||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2GameEvent
|
||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2GameSellingCard
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameCard as OgkGameCard
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameChara as OgkGameChara
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameEvent as OgkGameEvent
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameGacha as OgkGameGacha
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameGachaCard as OgkGameGachaCard
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameMusic as OgkGameMusic
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GamePoint as OgkGamePoint
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GamePresent as OgkGamePresent
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameReward as OgkGameReward
|
||||
import icu.samnyan.aqua.sega.ongeki.model.GameSkill as OgkGameSkill
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.stereotype.Service
|
||||
import java.io.File
|
||||
|
||||
@Service
|
||||
class GameDataService() {
|
||||
companion object {
|
||||
val log = logger()
|
||||
val mapper = BasicMapper()
|
||||
|
||||
inline fun <reified T> load(game: String, file: String): List<T> {
|
||||
val f = File("data/game/$game/$file")
|
||||
if (f.exists()) return mapper.read(f.readText(), object : TypeReference<List<T>>() {})
|
||||
|
||||
// Try load from resources
|
||||
val resPath = "/data/game/$game/$file"
|
||||
val resStream = GameDataService::class.java.getResourceAsStream(resPath)
|
||||
if (resStream != null) {
|
||||
log.info("Loading game data from internal resources: $resPath")
|
||||
return mapper.read(resStream.bufferedReader().use { it.readText() }, object : TypeReference<List<T>>() {})
|
||||
}
|
||||
|
||||
log.warn("Game data file $f or resource $resPath not found, using empty list")
|
||||
return emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
// maimai2
|
||||
lateinit var mai2Events: List<Mai2GameEvent>
|
||||
lateinit var mai2Charges: List<Mai2GameCharge>
|
||||
lateinit var mai2SellingCards: List<Mai2GameSellingCard>
|
||||
|
||||
// chusan
|
||||
lateinit var chu3GameLinkedVerses: List<Chu3GameLinkedVerse>
|
||||
lateinit var chu3GameCharges: List<Chu3GameCharge>
|
||||
lateinit var chu3GameEvents: List<Chu3GameEvent>
|
||||
lateinit var chu3GameGachaCards: List<Chu3GameGachaCard>
|
||||
lateinit var chu3GameGachas: List<Chu3GameGacha>
|
||||
lateinit var chu3GameLoginBonusPresets: List<Chu3GameLoginBonusPreset>
|
||||
lateinit var chu3GameLoginBonuses: List<Chu3GameLoginBonus>
|
||||
|
||||
// ongeki
|
||||
lateinit var ogkGameCards: List<OgkGameCard>
|
||||
lateinit var ogkGameCharas: List<OgkGameChara>
|
||||
lateinit var ogkGameEvents: List<OgkGameEvent>
|
||||
lateinit var ogkGameMusics: List<OgkGameMusic>
|
||||
lateinit var ogkGamePoints: List<OgkGamePoint>
|
||||
lateinit var ogkGamePresents: List<OgkGamePresent>
|
||||
lateinit var ogkGameRewards: List<OgkGameReward>
|
||||
lateinit var ogkGameSkills: List<OgkGameSkill>
|
||||
lateinit var ogkGameGachaCards: List<OgkGameGachaCard>
|
||||
lateinit var ogkGameGachas: List<OgkGameGacha>
|
||||
|
||||
init {
|
||||
load()
|
||||
}
|
||||
|
||||
fun load() {
|
||||
mai2Events = load("maimai2", "game_event.json")
|
||||
mai2Charges = load("maimai2", "game_charge.json")
|
||||
mai2SellingCards = load("maimai2", "game_selling_card.json")
|
||||
|
||||
chu3GameLinkedVerses = load("chusan", "game_linked_verse.json")
|
||||
chu3GameCharges = load("chusan", "game_charge.json")
|
||||
chu3GameEvents = load("chusan", "game_event.json")
|
||||
chu3GameGachaCards = load("chusan", "game_gacha_card.json")
|
||||
chu3GameGachas = load("chusan", "game_gacha.json")
|
||||
chu3GameLoginBonusPresets = load("chusan", "game_login_bonus_preset.json")
|
||||
chu3GameLoginBonuses = load("chusan", "game_login_bonus.json")
|
||||
|
||||
ogkGameCards = load("ongeki", "game_card.json")
|
||||
ogkGameCharas = load("ongeki", "game_chara.json")
|
||||
ogkGameEvents = load("ongeki", "game_event.json")
|
||||
ogkGameMusics = load("ongeki", "game_music.json")
|
||||
ogkGamePoints = load("ongeki", "game_point.json")
|
||||
ogkGamePresents = load("ongeki", "game_present.json")
|
||||
ogkGameRewards = load("ongeki", "game_reward.json")
|
||||
ogkGameSkills = load("ongeki", "game_skill.json")
|
||||
ogkGameGachaCards = load("ongeki", "game_gacha_card.json")
|
||||
ogkGameGachas = load("ongeki", "game_gacha.json")
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
GameDataService().let {
|
||||
it.load()
|
||||
println(it.mai2Events[0].toJson())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package icu.samnyan.aqua.sega.util
|
||||
|
||||
import java.lang.reflect.Field
|
||||
import java.util.*
|
||||
|
||||
open class StaticRepo<T : Any, ID>(val data: List<T>, val idGetter: (T) -> ID) {
|
||||
fun findAll(): List<T> = data
|
||||
private val idMap by lazy { data.associateBy { idGetter(it) } }
|
||||
fun findById(id: ID): Optional<T> = Optional.ofNullable(idMap[id])
|
||||
|
||||
private val enableField by lazy {
|
||||
data.firstOrNull()?.let { obj ->
|
||||
var cls: Class<*>? = obj::class.java
|
||||
var f: Field? = null
|
||||
while (cls != null && f == null) {
|
||||
f = cls.declaredFields.find { it.name == "enable" || it.name == "isEnabled" }
|
||||
cls = cls.superclass
|
||||
}
|
||||
f?.apply { isAccessible = true }
|
||||
}
|
||||
}
|
||||
|
||||
private val enableMap by lazy { data.groupBy { enableField?.get(it) as? Boolean } }
|
||||
|
||||
fun findByEnable(enable: Boolean): List<T> = enableMap[enable] ?: emptyList()
|
||||
}
|
||||
Reference in New Issue
Block a user