[O] Ongeki: Generalize user entity

pull/134/head
Azalea 2025-03-26 18:25:25 -04:00
parent 42ffea41ab
commit 7320a982f6
1 changed files with 117 additions and 268 deletions

View File

@ -4,136 +4,17 @@ import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.annotation.JsonPropertyOrder import com.fasterxml.jackson.annotation.JsonPropertyOrder
import com.fasterxml.jackson.databind.annotation.JsonSerialize import com.fasterxml.jackson.databind.annotation.JsonSerialize
import icu.samnyan.aqua.net.games.IGenericGamePlaylog import icu.samnyan.aqua.net.games.*
import icu.samnyan.aqua.net.games.IGenericUserMusic
import icu.samnyan.aqua.net.games.IUserData
import icu.samnyan.aqua.sega.general.model.Card import icu.samnyan.aqua.sega.general.model.Card
import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer
import jakarta.persistence.* import jakarta.persistence.*
@Entity(name = "OngekiUserActivity") @MappedSuperclass
@Table( class OngekiUserEntity : BaseEntity(), IUserEntity<UserData> {
name = "ongeki_user_activity",
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "kind", "activity_id"])]
)
@JsonPropertyOrder("kind", "id", "sortNumber", "param1", "param2", "param3", "param4")
class UserActivity(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var kind = 0
@JsonProperty("id")
@Column(name = "activity_id")
var activityId = 0
var sortNumber = 0
var param1 = 0
var param2 = 0
var param3 = 0
var param4 = 0
}
@Entity(name = "OngekiUserBoss")
@Table(name = "ongeki_user_boss")
class UserBoss(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var musicId = 0
var damage = 0
@JsonProperty("isClear")
var isClear = false
var eventId = 0
}
@Entity(name = "OngekiUserCard")
@Table(name = "ongeki_user_card")
class UserCard {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne
@JoinColumn(name = "user_id") @JoinColumn(name = "user_id")
var user: UserData = UserData() override var user: UserData = UserData()
var cardId = -1
var digitalStock = 1
var analogStock = 0
var level = 0
var maxLevel = 10
var exp = 0
var printCount = 0
var useCount = 0
@JsonProperty("isNew")
var isNew = true
var kaikaDate = "0000-00-00 00:00:00.0"
var choKaikaDate = "0000-00-00 00:00:00.0"
var skillId = 0
@JsonProperty("isAcquired")
var isAcquired = true
var created = "0000-00-00 00:00:00.0"
constructor(userData: UserData) {
this.user = userData
}
constructor(userData: UserData, cardId: Int, skillId: Int, created: String) {
this.user = userData
this.cardId = cardId
this.skillId = skillId
this.created = created
}
}
@Entity(name = "OngekiUserChapter")
@Table(name = "ongeki_user_chapter")
class UserChapter(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var chapterId = 0
var jewelCount = 0
var lastPlayMusicCategory = 0
var lastPlayMusicId = 0
var lastPlayMusicLevel = 0
@JsonProperty("isStoryWatched")
var isStoryWatched = false
@JsonProperty("isClear")
var isClear = false
var skipTiming1 = 0
var skipTiming2 = 0
}
@Entity(name = "OngekiUserCharacter")
@Table(name = "ongeki_user_character")
class UserCharacter(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var characterId = 0
var costumeId = 0
var attachmentId = 0
var playCount = 0
var intimateLevel = 0
var intimateCount = 0
var intimateCountRewarded = 0
var intimateCountDate: String = ""
@JsonProperty("isNew")
var isNew = false
} }
@ -217,30 +98,112 @@ class UserData : IUserData {
override val totalScore get() = sumTechHighScore override val totalScore get() = sumTechHighScore
} }
@Entity(name = "OngekiUserActivity")
@Table(
name = "ongeki_user_activity",
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "kind", "activity_id"])]
)
@JsonPropertyOrder("kind", "id", "sortNumber", "param1", "param2", "param3", "param4")
class UserActivity: OngekiUserEntity() {
var kind = 0
@JsonProperty("id")
@Column(name = "activity_id")
var activityId = 0
var sortNumber = 0
var param1 = 0
var param2 = 0
var param3 = 0
var param4 = 0
}
@Entity(name = "OngekiUserBoss")
@Table(name = "ongeki_user_boss")
class UserBoss: OngekiUserEntity() {
var musicId = 0
var damage = 0
@JsonProperty("isClear")
var isClear = false
var eventId = 0
}
@Entity(name = "OngekiUserCard")
@Table(name = "ongeki_user_card")
class UserCard(): OngekiUserEntity() {
var cardId = -1
var digitalStock = 1
var analogStock = 0
var level = 0
var maxLevel = 10
var exp = 0
var printCount = 0
var useCount = 0
@JsonProperty("isNew")
var isNew = true
var kaikaDate = "0000-00-00 00:00:00.0"
var choKaikaDate = "0000-00-00 00:00:00.0"
var skillId = 0
@JsonProperty("isAcquired")
var isAcquired = true
var created = "0000-00-00 00:00:00.0"
constructor(userData: UserData) : this() {
this.user = userData
}
constructor(userData: UserData, cardId: Int, skillId: Int, created: String) : this() {
this.user = userData
this.cardId = cardId
this.skillId = skillId
this.created = created
}
}
@Entity(name = "OngekiUserChapter")
@Table(name = "ongeki_user_chapter")
class UserChapter: OngekiUserEntity() {
var chapterId = 0
var jewelCount = 0
var lastPlayMusicCategory = 0
var lastPlayMusicId = 0
var lastPlayMusicLevel = 0
@JsonProperty("isStoryWatched")
var isStoryWatched = false
@JsonProperty("isClear")
var isClear = false
var skipTiming1 = 0
var skipTiming2 = 0
}
@Entity(name = "OngekiUserCharacter")
@Table(name = "ongeki_user_character")
class UserCharacter: OngekiUserEntity() {
var characterId = 0
var costumeId = 0
var attachmentId = 0
var playCount = 0
var intimateLevel = 0
var intimateCount = 0
var intimateCountRewarded = 0
var intimateCountDate: String = ""
@JsonProperty("isNew")
var isNew = false
}
@Entity(name = "OngekiUserDeck") @Entity(name = "OngekiUserDeck")
@Table(name = "ongeki_user_deck") @Table(name = "ongeki_user_deck")
class UserDeck: OngekiUserEntity() {
class UserDeck(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var deckId = 0 var deckId = 0
var cardId1 = 0 var cardId1 = 0
var cardId2 = 0 var cardId2 = 0
var cardId3 = 0 var cardId3 = 0
} }
@Entity(name = "OngekiUserEventMusic") @Entity(name = "OngekiUserEventMusic")
@Table(name = "ongeki_user_event_music") @Table(name = "ongeki_user_event_music")
class UserEventMusic: OngekiUserEntity() {
class UserEventMusic(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var eventId = 0 var eventId = 0
var type = 0 var type = 0
var musicId = 0 var musicId = 0
@ -252,55 +215,26 @@ class UserEventMusic(@field:JoinColumn(name = "user_id") @field:ManyToOne @field
var isTechNewRecord: Boolean = false var isTechNewRecord: Boolean = false
} }
/**
* For chapter event.
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "OngekiUserEventPoint") @Entity(name = "OngekiUserEventPoint")
@Table(name = "ongeki_user_event_point") @Table(name = "ongeki_user_event_point")
class UserEventPoint(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) { class UserEventPoint: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var eventId = 0 var eventId = 0
var point: Long = 0 var point: Long = 0
@JsonProperty("isRankingRewarded") @JsonProperty("isRankingRewarded")
var isRankingRewarded = false var isRankingRewarded = false
} }
/**
* This is for storing some data only use in aqua
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "OngekiUserGeneralData") @Entity(name = "OngekiUserGeneralData")
@Table(name = "ongeki_user_general_data") @Table(name = "ongeki_user_general_data")
class UserGeneralData(var propertyKey: String): OngekiUserEntity() {
class UserGeneralData(
@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData,
var propertyKey: String
) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
@Column(columnDefinition = "TEXT") @Column(columnDefinition = "TEXT")
var propertyValue = "" var propertyValue = ""
} }
@Entity(name = "OngekiUserItem") @Entity(name = "OngekiUserItem")
@Table(name = "ongeki_user_item") @Table(name = "ongeki_user_item")
class UserItem: OngekiUserEntity() {
class UserItem(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var itemKind = 0 var itemKind = 0
var itemId = 0 var itemId = 0
var stock = 0 var stock = 0
@ -308,15 +242,9 @@ class UserItem(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonI
var isValid = false var isValid = false
} }
@Entity(name = "OngekiUserKop") @Entity(name = "OngekiUserKop")
@Table(name = "ongeki_user_kop") @Table(name = "ongeki_user_kop")
class UserKop: OngekiUserEntity() {
class UserKop(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var authKey: String = "" var authKey: String = ""
var kopId = 0 var kopId = 0
var areaId = 0 var areaId = 0
@ -327,29 +255,17 @@ class UserKop(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIg
var isTotalTechNewRecord = false var isTotalTechNewRecord = false
} }
@Entity(name = "OngekiUserLoginBonus") @Entity(name = "OngekiUserLoginBonus")
@Table(name = "ongeki_user_login_bonus") @Table(name = "ongeki_user_login_bonus")
class UserLoginBonus: OngekiUserEntity() {
class UserLoginBonus(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var bonusId = 0 var bonusId = 0
var bonusCount = 0 var bonusCount = 0
var lastUpdateDate: String = "" var lastUpdateDate: String = ""
} }
@Entity(name = "OngekiUserMemoryChapter") @Entity(name = "OngekiUserMemoryChapter")
@Table(name = "ongeki_user_memory_chapter") @Table(name = "ongeki_user_memory_chapter")
class UserMemoryChapter: OngekiUserEntity() {
class UserMemoryChapter(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var chapterId = 0 var chapterId = 0
var jewelCount = 0 var jewelCount = 0
var lastPlayMusicCategory = 0 var lastPlayMusicCategory = 0
@ -369,24 +285,14 @@ class UserMemoryChapter(@field:JoinColumn(name = "user_id") @field:ManyToOne @fi
@Entity(name = "OngekiUserMissionPoint") @Entity(name = "OngekiUserMissionPoint")
@Table(name = "ongeki_user_mission_point") @Table(name = "ongeki_user_mission_point")
class UserMissionPoint(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) { class UserMissionPoint: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var eventId = 0 var eventId = 0
var point: Long = 0 var point: Long = 0
} }
@Entity(name = "OngekiUserMusicDetail") @Entity(name = "OngekiUserMusicDetail")
@Table(name = "ongeki_user_music_detail") @Table(name = "ongeki_user_music_detail")
class UserMusicDetail(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) : class UserMusicDetail: OngekiUserEntity(), IGenericUserMusic {
IGenericUserMusic {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
override var musicId: Int = 0 override var musicId: Int = 0
var level = 0 var level = 0
var playCount = 0 var playCount = 0
@ -410,28 +316,16 @@ class UserMusicDetail(@field:JoinColumn(name = "user_id") @field:ManyToOne @fiel
var isStoryWatched = false var isStoryWatched = false
} }
@Entity(name = "OngekiUserMusicItem") @Entity(name = "OngekiUserMusicItem")
@Table(name = "ongeki_user_music_item") @Table(name = "ongeki_user_music_item")
class UserMusicItem: OngekiUserEntity() {
class UserMusicItem(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var musicId = 0 var musicId = 0
var status = 0 var status = 0
} }
@Entity(name = "OngekiUserOption") @Entity(name = "OngekiUserOption")
@Table(name = "ongeki_user_option") @Table(name = "ongeki_user_option")
class UserOption: OngekiUserEntity() {
class UserOption(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var optionSet = 0 var optionSet = 0
var speed = 0 var speed = 0
var mirror = 0 var mirror = 0
@ -474,10 +368,7 @@ class UserOption(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:Jso
@Entity(name = "OngekiUserPlaylog") @Entity(name = "OngekiUserPlaylog")
@Table(name = "ongeki_user_playlog") @Table(name = "ongeki_user_playlog")
class UserPlaylog : IGenericGamePlaylog { class UserPlaylog : OngekiUserEntity(), IGenericGamePlaylog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = 0
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne
@JoinColumn(name = "user_id") @JoinColumn(name = "user_id")
@ -556,20 +447,9 @@ class UserPlaylog : IGenericGamePlaylog {
override val achievement get() = techScore override val achievement get() = techScore
} }
@Entity(name = "OngekiUserRival") @Entity(name = "OngekiUserRival")
@Table(name = "ongeki_user_rival") @Table(name = "ongeki_user_rival")
class UserRival { class UserRival: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
@ManyToOne
@JsonIgnore
@JoinColumn(name = "user_id")
var user: UserData? = null
@JoinColumn(name = "rival_user_ext_id") @JoinColumn(name = "rival_user_ext_id")
@JsonProperty("rivalUserId") @JsonProperty("rivalUserId")
var rivalUserExtId: Long = 0 var rivalUserExtId: Long = 0
@ -577,23 +457,14 @@ class UserRival {
@Entity(name = "OngekiUserScenario") @Entity(name = "OngekiUserScenario")
@Table(name = "ongeki_user_scenario") @Table(name = "ongeki_user_scenario")
class UserScenario(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) { class UserScenario: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var scenarioId = 0 var scenarioId = 0
var playCount = 0 var playCount = 0
} }
@Entity(name = "OngekiUserStory") @Entity(name = "OngekiUserStory")
@Table(name = "ongeki_user_story") @Table(name = "ongeki_user_story")
class UserStory(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) { class UserStory: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var storyId = 0 var storyId = 0
var lastChapterId = 0 var lastChapterId = 0
var jewelCount = 0 var jewelCount = 0
@ -602,27 +473,17 @@ class UserStory(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:Json
var lastPlayMusicLevel = 0 var lastPlayMusicLevel = 0
} }
@Entity(name = "OngekiUserTechCount") @Entity(name = "OngekiUserTechCount")
@Table(name = "ongeki_user_tech_count") @Table(name = "ongeki_user_tech_count")
class UserTechCount(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) { class UserTechCount: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var levelId = 0 var levelId = 0
var allBreakCount = 0 var allBreakCount = 0
var allBreakPlusCount = 0 var allBreakPlusCount = 0
} }
@Entity(name = "OngekiUserTechEvent") @Entity(name = "OngekiUserTechEvent")
@Table(name = "ongeki_user_tech_event") @Table(name = "ongeki_user_tech_event")
class UserTechEvent(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) { class UserTechEvent: OngekiUserEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var eventId = 0 var eventId = 0
var totalTechScore = 0 var totalTechScore = 0
var totalPlatinumScore = 0 var totalPlatinumScore = 0
@ -633,29 +494,17 @@ class UserTechEvent(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:
var isTotalTechNewRecord = false var isTotalTechNewRecord = false
} }
@Entity(name = "OngekiUserTradeItem") @Entity(name = "OngekiUserTradeItem")
@Table(name = "ongeki_user_trade_item") @Table(name = "ongeki_user_trade_item")
class UserTradeItem: OngekiUserEntity() {
class UserTradeItem(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var chapterId = 0 var chapterId = 0
var tradeItemId = 0 var tradeItemId = 0
var tradeCount = 0 var tradeCount = 0
} }
@Entity(name = "OngekiTrainingRoom") @Entity(name = "OngekiTrainingRoom")
@Table(name = "ongeki_user_training_room") @Table(name = "ongeki_user_training_room")
class UserTrainingRoom: OngekiUserEntity() {
class UserTrainingRoom(@field:JoinColumn(name = "user_id") @field:ManyToOne @field:JsonIgnore var user: UserData) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
var id: Long = 0
var authKey: String = "" var authKey: String = ""
var roomId: Int = 0 var roomId: Int = 0
var cardId: Int = 0 var cardId: Int = 0