mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-10-07 06:08:03 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f082f4190d | ||
|
|
205f3cc973 | ||
|
|
e86a7b59fd | ||
|
|
a5a1d61050 | ||
|
|
48efafdc44 | ||
|
|
8d4a027d48 | ||
|
|
0985f73753 | ||
|
|
3dbb0095bf | ||
|
|
adaa255dd3 | ||
|
|
fb5ea51d92 | ||
|
|
3497dd2329 | ||
|
|
7e5d75a221 | ||
|
|
afa9564392 | ||
|
|
78b48c0f5c | ||
|
|
fa068b7172 | ||
|
|
a6fad6aa46 | ||
|
|
af136b906d | ||
|
|
e334ada5b4 |
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
trigger: always_on
|
||||||
|
---
|
||||||
|
|
||||||
|
Make sure `./gradlew build` compiles before you say you're done.
|
||||||
Executable → Regular
+18
-171
@@ -1,189 +1,36 @@
|
|||||||
|
|
||||||
import java.time.Instant
|
|
||||||
import java.time.ZoneId
|
|
||||||
import java.time.format.DateTimeFormatter
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
val ktVer = "2.1.10"
|
kotlin("jvm") version "2.1.10" apply false
|
||||||
|
kotlin("plugin.spring") version "2.1.10" apply false
|
||||||
java
|
kotlin("plugin.jpa") version "2.1.10" apply false
|
||||||
kotlin("jvm") version ktVer
|
kotlin("plugin.serialization") version "2.1.10" apply false
|
||||||
kotlin("plugin.spring") version ktVer
|
kotlin("plugin.allopen") version "2.1.10" apply false
|
||||||
kotlin("plugin.jpa") version ktVer
|
id("org.springframework.boot") version "3.2.3" apply false
|
||||||
kotlin("plugin.serialization") version ktVer
|
id("io.spring.dependency-management") version "1.1.4" apply false
|
||||||
kotlin("plugin.allopen") version ktVer
|
|
||||||
kotlin("kapt") version ktVer
|
|
||||||
id("org.springframework.boot") version "3.2.3"
|
|
||||||
id("com.github.ben-manes.versions") version "0.51.0"
|
id("com.github.ben-manes.versions") version "0.51.0"
|
||||||
id("org.hibernate.orm") version "6.4.4.Final"
|
|
||||||
application
|
|
||||||
}
|
}
|
||||||
|
|
||||||
apply(plugin = "io.spring.dependency-management")
|
allprojects {
|
||||||
|
group = "icu.samnyan.aqua"
|
||||||
|
version = "1.0.0"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// Spring boot
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-security")
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-web") {
|
|
||||||
exclude(group = "org.springframework.boot", module = "spring-boot-starter-tomcat")
|
|
||||||
}
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-jetty")
|
|
||||||
implementation("io.netty:netty-all")
|
|
||||||
implementation("org.apache.commons:commons-lang3:3.14.0")
|
|
||||||
implementation("org.apache.httpcomponents.client5:httpclient5")
|
|
||||||
implementation("org.flywaydb:flyway-core:10.10.0")
|
|
||||||
implementation("org.flywaydb:flyway-mysql:10.10.0")
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test") {
|
|
||||||
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
|
|
||||||
}
|
|
||||||
testImplementation("org.springframework.security:spring-security-test")
|
|
||||||
implementation("net.logstash.logback:logstash-logback-encoder:7.4")
|
|
||||||
|
|
||||||
// Metrics
|
|
||||||
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
|
||||||
implementation("io.micrometer:micrometer-registry-prometheus")
|
|
||||||
|
|
||||||
// Database
|
|
||||||
runtimeOnly("org.mariadb.jdbc:mariadb-java-client:3.3.3")
|
|
||||||
runtimeOnly("org.xerial:sqlite-jdbc:3.45.2.0")
|
|
||||||
implementation("org.hibernate.orm:hibernate-core:6.4.4.Final")
|
|
||||||
implementation("org.hibernate.orm:hibernate-community-dialects:6.4.4.Final")
|
|
||||||
implementation("io.github.openfeign.querydsl:querydsl-jpa:6.10.1")
|
|
||||||
kapt("io.github.openfeign.querydsl:querydsl-apt:6.10.1:jpa")
|
|
||||||
|
|
||||||
// JSR305 for nullable
|
|
||||||
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
|
||||||
|
|
||||||
// =============================
|
|
||||||
// AquaNet Specific Dependencies
|
|
||||||
// =============================
|
|
||||||
|
|
||||||
// Network
|
|
||||||
implementation("io.ktor:ktor-client-core:3.0.3")
|
|
||||||
implementation("io.ktor:ktor-client-cio:3.0.3")
|
|
||||||
implementation("io.ktor:ktor-client-content-negotiation:3.0.3")
|
|
||||||
implementation("io.ktor:ktor-client-encoding:3.0.3")
|
|
||||||
implementation("io.ktor:ktor-serialization-kotlinx-json:3.0.3")
|
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
|
||||||
|
|
||||||
// Somehow these are needed for ktor even though they're not in the documentation
|
|
||||||
runtimeOnly("org.reactivestreams:reactive-streams:1.0.4")
|
|
||||||
runtimeOnly("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.8.0")
|
|
||||||
|
|
||||||
// Email
|
|
||||||
implementation("org.simplejavamail:simple-java-mail:8.6.3")
|
|
||||||
implementation("org.simplejavamail:spring-module:8.6.3")
|
|
||||||
|
|
||||||
// GeoIP
|
|
||||||
implementation("com.maxmind.geoip2:geoip2:4.2.0")
|
|
||||||
|
|
||||||
// JWT Authentication
|
|
||||||
implementation("io.jsonwebtoken:jjwt-api:0.12.5")
|
|
||||||
runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.5")
|
|
||||||
runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.12.5")
|
|
||||||
|
|
||||||
// Content validation
|
|
||||||
implementation("org.apache.tika:tika-core:2.9.1")
|
|
||||||
|
|
||||||
// Import: DateTime Parsing
|
|
||||||
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0")
|
|
||||||
|
|
||||||
// Serialization
|
|
||||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
|
||||||
|
|
||||||
// Testing
|
|
||||||
testImplementation("io.kotest:kotest-runner-junit5-jvm:5.8.1")
|
|
||||||
testImplementation("io.kotest:kotest-assertions-core")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "icu.samnya"
|
subprojects {
|
||||||
version = "1.0.0"
|
apply(plugin = "org.jetbrains.kotlin.jvm")
|
||||||
description = "AquaDX Arcade Server"
|
|
||||||
java.sourceCompatibility = JavaVersion.VERSION_21
|
|
||||||
|
|
||||||
kotlin {
|
// Use configure to access the extension safely in subprojects
|
||||||
|
configure<org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension> {
|
||||||
jvmToolchain(21)
|
jvmToolchain(21)
|
||||||
}
|
}
|
||||||
|
|
||||||
springBoot {
|
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
||||||
mainClass.set("icu.samnyan.aqua.EntryKt")
|
compilerOptions {
|
||||||
}
|
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21)
|
||||||
|
freeCompilerArgs.add("-Xjsr305=strict")
|
||||||
application {
|
|
||||||
mainClass = "icu.samnyan.aqua.EntryKt"
|
|
||||||
}
|
|
||||||
|
|
||||||
hibernate {
|
|
||||||
enhancement {
|
|
||||||
enableLazyInitialization = true
|
|
||||||
enableAssociationManagement = false
|
|
||||||
enableExtendedEnhancement = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kapt {
|
|
||||||
includeCompileClasspath = false
|
|
||||||
keepJavacAnnotationProcessors = true
|
|
||||||
}
|
|
||||||
|
|
||||||
allOpen {
|
|
||||||
annotation("jakarta.persistence.Entity")
|
|
||||||
annotation("jakarta.persistence.MappedSuperclass")
|
|
||||||
annotation("jakarta.persistence.Embeddable")
|
|
||||||
}
|
|
||||||
|
|
||||||
val buildTime: String by extra(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z").withZone(ZoneId.of("UTC")).format(Instant.now()))
|
|
||||||
|
|
||||||
tasks.processResources {
|
|
||||||
filesMatching("**/application.properties") {
|
|
||||||
expand(project.properties)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.test {
|
|
||||||
enabled = project.hasProperty("runTests")
|
|
||||||
useJUnitPlatform()
|
|
||||||
jvmArgs("-Dkotest.assertions.collection.print.size=100")
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType<JavaCompile> {
|
|
||||||
options.encoding = "UTF-8"
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType<Javadoc> {
|
|
||||||
options.encoding = "UTF-8"
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.getByName<Jar>("jar") {
|
|
||||||
enabled = false
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main {
|
|
||||||
java.srcDir("${layout.buildDirectory.get()}/generated/source/kapt/main")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val copyDependencies by tasks.registering(Copy::class) {
|
|
||||||
from(configurations.runtimeClasspath)
|
|
||||||
into("${layout.buildDirectory.get()}/libs/lib")
|
|
||||||
}
|
|
||||||
|
|
||||||
val packageThin by tasks.registering(Jar::class) {
|
|
||||||
group = "build"
|
|
||||||
from(sourceSets.main.get().output)
|
|
||||||
manifest {
|
|
||||||
attributes(
|
|
||||||
"Main-Class" to "icu.samnyan.aqua.EntryKt",
|
|
||||||
"Class-Path" to configurations.runtimeClasspath.get().files.joinToString(" ") { "lib/${it.name}" }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
||||||
dependsOn(copyDependencies)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
kotlin("plugin.serialization")
|
||||||
|
id("application")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":shared"))
|
||||||
|
|
||||||
|
// Network
|
||||||
|
implementation("io.ktor:ktor-client-core:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-client-cio:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-client-content-negotiation:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-serialization-kotlinx-json:3.0.3")
|
||||||
|
|
||||||
|
// Serialization
|
||||||
|
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||||
|
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0")
|
||||||
|
|
||||||
|
// Testing
|
||||||
|
testImplementation("io.kotest:kotest-runner-junit5-jvm:5.8.1")
|
||||||
|
}
|
||||||
|
|
||||||
|
application {
|
||||||
|
mainClass = "icu.samnyan.aqua.comet.EntryKt"
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
FROM archlinux:latest
|
FROM archlinux:latest
|
||||||
|
|
||||||
RUN pacman -Syu --noconfirm \
|
RUN pacman -Syu --noconfirm \
|
||||||
&& pacman -S --noconfirm openssh sudo jdk21-openjdk wget which procps-ng zsh git curlie micro ripgrep python3 exa \
|
&& pacman -S --noconfirm openssh sudo jdk21-openjdk wget which procps-ng zsh git curlie micro ripgrep python3 exa diffutils \
|
||||||
&& rm -rf /var/cache/pacman/pkg/* \
|
&& rm -rf /var/cache/pacman/pkg/* \
|
||||||
&& mkdir -p /var/run/sshd \
|
&& mkdir -p /var/run/sshd \
|
||||||
&& chsh -s /bin/zsh root \
|
&& chsh -s /bin/zsh root \
|
||||||
|
|||||||
@@ -0,0 +1,168 @@
|
|||||||
|
import java.time.ZonedDateTime
|
||||||
|
import java.time.ZoneId
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
val ktVer = "2.1.10"
|
||||||
|
|
||||||
|
java
|
||||||
|
kotlin("jvm") version ktVer
|
||||||
|
kotlin("plugin.spring") version ktVer
|
||||||
|
kotlin("plugin.jpa") version ktVer
|
||||||
|
kotlin("plugin.serialization") version ktVer
|
||||||
|
kotlin("plugin.allopen") version ktVer
|
||||||
|
id("org.springframework.boot") version "3.2.3"
|
||||||
|
id("io.spring.dependency-management") version "1.1.4"
|
||||||
|
id("com.github.ben-manes.versions") version "0.51.0"
|
||||||
|
id("org.hibernate.orm") version "6.4.4.Final"
|
||||||
|
application
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":shared"))
|
||||||
|
|
||||||
|
// Spring boot
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-security")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-web") {
|
||||||
|
exclude(group = "org.springframework.boot", module = "spring-boot-starter-tomcat")
|
||||||
|
}
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-jetty")
|
||||||
|
implementation("io.netty:netty-all")
|
||||||
|
implementation("org.apache.commons:commons-lang3:3.14.0")
|
||||||
|
implementation("org.apache.httpcomponents.client5:httpclient5")
|
||||||
|
implementation("org.flywaydb:flyway-core:10.10.0")
|
||||||
|
implementation("org.flywaydb:flyway-mysql:10.10.0")
|
||||||
|
testImplementation("org.springframework.boot:spring-boot-starter-test") {
|
||||||
|
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
|
||||||
|
}
|
||||||
|
testImplementation("org.springframework.security:spring-security-test")
|
||||||
|
implementation("net.logstash.logback:logstash-logback-encoder:7.4")
|
||||||
|
|
||||||
|
// Metrics
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-actuator")
|
||||||
|
implementation("io.micrometer:micrometer-registry-prometheus")
|
||||||
|
|
||||||
|
// Database
|
||||||
|
runtimeOnly("org.mariadb.jdbc:mariadb-java-client:3.3.3")
|
||||||
|
runtimeOnly("org.xerial:sqlite-jdbc:3.45.2.0")
|
||||||
|
implementation("org.hibernate.orm:hibernate-core:6.4.4.Final")
|
||||||
|
implementation("org.hibernate.orm:hibernate-community-dialects:6.4.4.Final")
|
||||||
|
// JSR305 for nullable
|
||||||
|
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
||||||
|
|
||||||
|
// Network
|
||||||
|
implementation("io.ktor:ktor-client-core:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-client-cio:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-client-content-negotiation:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-client-encoding:3.0.3")
|
||||||
|
implementation("io.ktor:ktor-serialization-kotlinx-json:3.0.3")
|
||||||
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||||
|
|
||||||
|
runtimeOnly("org.reactivestreams:reactive-streams:1.0.4")
|
||||||
|
runtimeOnly("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.8.0")
|
||||||
|
|
||||||
|
// Email
|
||||||
|
implementation("org.simplejavamail:simple-java-mail:8.6.3")
|
||||||
|
implementation("org.simplejavamail:spring-module:8.6.3")
|
||||||
|
|
||||||
|
// GeoIP
|
||||||
|
implementation("com.maxmind.geoip2:geoip2:4.2.0")
|
||||||
|
|
||||||
|
// JWT Authentication
|
||||||
|
implementation("io.jsonwebtoken:jjwt-api:0.12.5")
|
||||||
|
runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.5")
|
||||||
|
runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.12.5")
|
||||||
|
|
||||||
|
// Content validation
|
||||||
|
implementation("org.apache.tika:tika-core:2.9.1")
|
||||||
|
|
||||||
|
// Import: DateTime Parsing
|
||||||
|
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0")
|
||||||
|
|
||||||
|
// Serialization
|
||||||
|
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||||
|
|
||||||
|
// Testing
|
||||||
|
testImplementation("io.kotest:kotest-runner-junit5-jvm:5.8.1")
|
||||||
|
testImplementation("io.kotest:kotest-assertions-core")
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "icu.samnyan.aqua"
|
||||||
|
version = "1.0.0"
|
||||||
|
description = "AquaDX Planet Server"
|
||||||
|
java.sourceCompatibility = JavaVersion.VERSION_21
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvmToolchain(21)
|
||||||
|
}
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
mainClass.set("icu.samnyan.aqua.EntryKt")
|
||||||
|
}
|
||||||
|
|
||||||
|
application {
|
||||||
|
mainClass = "icu.samnyan.aqua.EntryKt"
|
||||||
|
}
|
||||||
|
|
||||||
|
hibernate {
|
||||||
|
enhancement {
|
||||||
|
enableLazyInitialization = true
|
||||||
|
enableAssociationManagement = false
|
||||||
|
enableExtendedEnhancement = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
allOpen {
|
||||||
|
annotation("jakarta.persistence.Entity")
|
||||||
|
annotation("jakarta.persistence.MappedSuperclass")
|
||||||
|
annotation("jakarta.persistence.Embeddable")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.processResources {
|
||||||
|
val buildTime = ZonedDateTime.now(ZoneId.of("UTC"))
|
||||||
|
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z"))
|
||||||
|
|
||||||
|
inputs.property("buildTime", buildTime)
|
||||||
|
inputs.property("version", project.version)
|
||||||
|
filesMatching("**/application.properties") {
|
||||||
|
expand(mapOf("project" to project, "buildTime" to buildTime, "version" to project.version, "ext" to mapOf("buildTime" to buildTime)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.test {
|
||||||
|
enabled = false
|
||||||
|
useJUnitPlatform()
|
||||||
|
jvmArgs("-Dkotest.assertions.collection.print.size=100")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21)
|
||||||
|
freeCompilerArgs.add("-Xjsr305=strict")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<Jar>("jar") {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
val copyDependencies by tasks.registering(Copy::class) {
|
||||||
|
from(configurations.runtimeClasspath)
|
||||||
|
into("${layout.buildDirectory.get()}/libs/lib")
|
||||||
|
}
|
||||||
|
|
||||||
|
val packageThin by tasks.registering(Jar::class) {
|
||||||
|
group = "build"
|
||||||
|
from(sourceSets.main.get().output)
|
||||||
|
manifest {
|
||||||
|
attributes(
|
||||||
|
"Main-Class" to "icu.samnyan.aqua.EntryKt",
|
||||||
|
"Class-Path" to configurations.runtimeClasspath.get().files.joinToString(" ") { "lib/${it.name}" }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||||
|
dependsOn(copyDependencies)
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package icu.samnyan.aqua
|
package aquadx
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.aimedb.AimeDbServer
|
import aquadx.sega.aimedb.AimeDbServer
|
||||||
import icu.samnyan.aqua.spring.AutoChecker
|
import aquadx.spring.AutoChecker
|
||||||
import org.springframework.boot.SpringApplication
|
import org.springframework.boot.SpringApplication
|
||||||
import org.springframework.boot.ansi.AnsiOutput
|
import org.springframework.boot.ansi.AnsiOutput
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||||
+8
-8
@@ -1,13 +1,13 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3Repos
|
import aquadx.sega.chusan.model.Chu3Repos
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.model.CardStatus
|
import aquadx.sega.general.model.CardStatus
|
||||||
import icu.samnyan.aqua.sega.general.model.sensitiveInfo
|
import aquadx.sega.general.model.sensitiveInfo
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos
|
import aquadx.sega.maimai2.model.Mai2Repos
|
||||||
import jakarta.transaction.Transactional
|
import jakarta.transaction.Transactional
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
+15
-15
@@ -1,20 +1,20 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.components.JWT
|
import aquadx.net.components.JWT
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.GenericUserDataRepo
|
import aquadx.net.games.GenericUserDataRepo
|
||||||
import icu.samnyan.aqua.net.games.IUserData
|
import aquadx.net.games.IUserData
|
||||||
import icu.samnyan.aqua.net.utils.AquaNetProps
|
import aquadx.net.utils.AquaNetProps
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo
|
import aquadx.sega.chusan.model.Chu3UserDataRepo
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerProfileRepository
|
import aquadx.sega.diva.PlayerProfileRepository
|
||||||
import icu.samnyan.aqua.sega.general.dao.CardRepository
|
import aquadx.sega.general.dao.CardRepository
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo
|
import aquadx.sega.maimai2.model.Mai2UserDataRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo
|
import aquadx.sega.ongeki.OgkUserDataRepo
|
||||||
import icu.samnyan.aqua.sega.wacca.model.db.WcUserRepo
|
import aquadx.sega.wacca.model.db.WcUserRepo
|
||||||
import jakarta.persistence.EntityManager
|
import jakarta.persistence.EntityManager
|
||||||
import org.springframework.scheduling.annotation.Scheduled
|
import org.springframework.scheduling.annotation.Scheduled
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
+25
-25
@@ -1,25 +1,25 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.components.EmailProperties
|
import aquadx.net.components.EmailProperties
|
||||||
import icu.samnyan.aqua.net.components.JWT
|
import aquadx.net.components.JWT
|
||||||
import icu.samnyan.aqua.net.db.AquaGameOptions
|
import aquadx.net.db.AquaGameOptions
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUser
|
import aquadx.net.db.AquaNetUser
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.ExportOptions
|
import aquadx.net.games.ExportOptions
|
||||||
import icu.samnyan.aqua.net.games.GenericUserDataRepo
|
import aquadx.net.games.GenericUserDataRepo
|
||||||
import icu.samnyan.aqua.net.games.IUserData
|
import aquadx.net.games.IUserData
|
||||||
import icu.samnyan.aqua.net.games.mai2.Mai2Import
|
import aquadx.net.games.mai2.Mai2Import
|
||||||
import icu.samnyan.aqua.net.utils.ApiException
|
import aquadx.net.utils.ApiException
|
||||||
import icu.samnyan.aqua.net.utils.PathProps
|
import aquadx.net.utils.PathProps
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo
|
import aquadx.sega.chusan.model.Chu3UserDataRepo
|
||||||
import icu.samnyan.aqua.sega.general.dao.CardRepository
|
import aquadx.sega.general.dao.CardRepository
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo
|
import aquadx.sega.maimai2.model.Mai2UserDataRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo
|
import aquadx.sega.ongeki.OgkUserDataRepo
|
||||||
import icu.samnyan.aqua.sega.wacca.model.db.WcUserRepo
|
import aquadx.sega.wacca.model.db.WcUserRepo
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import org.springframework.transaction.PlatformTransactionManager
|
import org.springframework.transaction.PlatformTransactionManager
|
||||||
@@ -33,8 +33,8 @@ import java.util.concurrent.CompletableFuture
|
|||||||
import kotlin.io.path.getLastModifiedTime
|
import kotlin.io.path.getLastModifiedTime
|
||||||
import kotlin.io.path.isRegularFile
|
import kotlin.io.path.isRegularFile
|
||||||
import kotlin.io.path.writeBytes
|
import kotlin.io.path.writeBytes
|
||||||
import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPlaylogHandler as Mai2UploadUserPlaylogHandler
|
import aquadx.sega.maimai2.handler.UploadUserPlaylogHandler as Mai2UploadUserPlaylogHandler
|
||||||
import icu.samnyan.aqua.sega.maimai2.handler.UpsertUserAllHandler as Mai2UpsertUserAllHandler
|
import aquadx.sega.maimai2.handler.UpsertUserAllHandler as Mai2UpsertUserAllHandler
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConfigurationProperties(prefix = "aqua-net.fedy")
|
@ConfigurationProperties(prefix = "aqua-net.fedy")
|
||||||
@@ -179,14 +179,14 @@ class Fedy(
|
|||||||
val card = cardRepo.findByExtId(req.extId)
|
val card = cardRepo.findByExtId(req.extId)
|
||||||
?: (404 - "Card with extId ${req.extId} not found")
|
?: (404 - "Card with extId ${req.extId} not found")
|
||||||
val cardTimestamp = cardService.getCardTimestamp(card, req.game)
|
val cardTimestamp = cardService.getCardTimestamp(card, req.game)
|
||||||
if (cardTimestamp.updatedAt.toEpochMilli() == req.updatedAtMs) return@handleFedy DataPullRes(error = null, result = null) // No changes
|
if (cardTimestamp.updatedAt == req.updatedAtMs) return@handleFedy DataPullRes(error = null, result = null) // No changes
|
||||||
val isRebased = req.createdAtMs > 0 && cardTimestamp.createdAt.toEpochMilli() > req.createdAtMs
|
val isRebased = req.createdAtMs > 0 && cardTimestamp.createdAt > req.createdAtMs
|
||||||
val exportOptions = if (!isRebased) { req.exportOptions } else { req.exportOptions.copy(playlogAfter = null) }
|
val exportOptions = if (!isRebased) { req.exportOptions } else { req.exportOptions.copy(playlogAfter = null) }
|
||||||
{
|
{
|
||||||
DataPullRes(result = DataPullResult(data = when (req.game) {
|
DataPullRes(result = DataPullResult(data = when (req.game) {
|
||||||
"mai2" -> mai2Import.export(card, exportOptions)
|
"mai2" -> mai2Import.export(card, exportOptions)
|
||||||
else -> 406 - "Unsupported game"
|
else -> 406 - "Unsupported game"
|
||||||
}, createdAtMs = cardTimestamp.createdAt.toEpochMilli(), updatedAtMs = cardTimestamp.updatedAt.toEpochMilli(), isRebased = isRebased))
|
}, createdAtMs = cardTimestamp.createdAt, updatedAtMs = cardTimestamp.updatedAt, isRebased = isRebased))
|
||||||
} caught { DataPullRes(error = it) }
|
} caught { DataPullRes(error = it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
+5
-5
@@ -1,12 +1,12 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.JACKSON
|
import ext.JACKSON
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import ext.parse
|
import ext.parse
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUserRepo
|
import aquadx.net.db.AquaNetUserRepo
|
||||||
import icu.samnyan.aqua.sega.general.dao.CardRepository
|
import aquadx.sega.general.dao.CardRepository
|
||||||
import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository
|
import aquadx.sega.general.dao.PropertyEntryRepository
|
||||||
import icu.samnyan.aqua.sega.general.model.PropertyEntry
|
import aquadx.sega.general.model.PropertyEntry
|
||||||
import jakarta.annotation.PostConstruct
|
import jakarta.annotation.PostConstruct
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package aquadx.net
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.stereotype.Repository
|
||||||
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
interface SafetyRepo : JpaRepository<Safety, Long> {
|
||||||
|
fun findBySafetyId(safetyId: String): Safety?
|
||||||
|
}
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class AquaNetSafetyService(val safetyRepo: SafetyRepo) {
|
||||||
|
fun isSafe(safetyId: String): Boolean {
|
||||||
|
val safety = safetyRepo.findBySafetyId(safetyId)
|
||||||
|
return safety == null || safety.status == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isSafeBatch(safetyIds: List<String>): List<Boolean> {
|
||||||
|
return safetyIds.map { isSafe(it) }
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
-5
@@ -1,10 +1,10 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.db.AquaGameOptions
|
import aquadx.net.db.AquaGameOptions
|
||||||
import icu.samnyan.aqua.net.db.AquaGameOptionsRepo
|
import aquadx.net.db.AquaGameOptionsRepo
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUserRepo
|
import aquadx.net.db.AquaNetUserRepo
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import kotlin.reflect.full.findAnnotation
|
import kotlin.reflect.full.findAnnotation
|
||||||
import kotlin.reflect.jvm.jvmErasure
|
import kotlin.reflect.jvm.jvmErasure
|
||||||
+10
-10
@@ -1,15 +1,15 @@
|
|||||||
package icu.samnyan.aqua.net
|
package aquadx.net
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.components.*
|
import aquadx.net.components.*
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUserRepo
|
import aquadx.net.db.AquaNetUserRepo
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.db.EmailConfirmationRepo
|
import aquadx.net.db.EmailConfirmationRepo
|
||||||
import icu.samnyan.aqua.net.db.ResetPasswordRepo
|
import aquadx.net.db.ResetPasswordRepo
|
||||||
import icu.samnyan.aqua.net.utils.PathProps
|
import aquadx.net.utils.PathProps
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.general.dao.CardRepository
|
import aquadx.sega.general.dao.CardRepository
|
||||||
import icu.samnyan.aqua.sega.general.model.CardStatus
|
import aquadx.sega.general.model.CardStatus
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder
|
import org.springframework.security.crypto.password.PasswordEncoder
|
||||||
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.net.components
|
package aquadx.net.components
|
||||||
|
|
||||||
import ext.Bool
|
import ext.Bool
|
||||||
import ext.Str
|
import ext.Str
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.net.db.*
|
import aquadx.net.db.*
|
||||||
import org.simplejavamail.api.mailer.Mailer
|
import org.simplejavamail.api.mailer.Mailer
|
||||||
import org.simplejavamail.email.EmailBuilder
|
import org.simplejavamail.email.EmailBuilder
|
||||||
import org.simplejavamail.springsupport.SimpleJavaMailSpringSupport
|
import org.simplejavamail.springsupport.SimpleJavaMailSpringSupport
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.components
|
package aquadx.net.components
|
||||||
|
|
||||||
import com.maxmind.geoip2.DatabaseReader
|
import com.maxmind.geoip2.DatabaseReader
|
||||||
import com.maxmind.geoip2.exception.AddressNotFoundException
|
import com.maxmind.geoip2.exception.AddressNotFoundException
|
||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.net.components
|
package aquadx.net.components
|
||||||
|
|
||||||
import ext.Str
|
import ext.Str
|
||||||
import ext.minus
|
import ext.minus
|
||||||
import icu.samnyan.aqua.net.db.*
|
import aquadx.net.db.*
|
||||||
import io.jsonwebtoken.JwtParser
|
import io.jsonwebtoken.JwtParser
|
||||||
import io.jsonwebtoken.Jwts
|
import io.jsonwebtoken.Jwts
|
||||||
import io.jsonwebtoken.security.Keys
|
import io.jsonwebtoken.security.Keys
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.components
|
package aquadx.net.components
|
||||||
|
|
||||||
import ext.Bool
|
import ext.Bool
|
||||||
import ext.HTTP
|
import ext.HTTP
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package aquadx.net.db
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
interface EmailConfirmationRepo : JpaRepository<EmailConfirmation, Long> {
|
||||||
|
fun findByToken(token: String): EmailConfirmation?
|
||||||
|
fun findByAquaNetUserAuId(auId: Long): List<EmailConfirmation>
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package aquadx.net.db
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
interface ResetPasswordRepo : JpaRepository<ResetPassword, Long> {
|
||||||
|
fun findByToken(token: String): ResetPassword?
|
||||||
|
fun findByAquaNetUserAuId(auId: Long): List<ResetPassword>
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package aquadx.net.db
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
|
||||||
|
// Entity AquaGameOptions is now in :shared
|
||||||
|
|
||||||
|
interface AquaGameOptionsRepo : JpaRepository<AquaGameOptions, Long>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package aquadx.net.db
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
interface SessionTokenRepo : JpaRepository<SessionToken, String> {
|
||||||
|
fun findByToken(token: String): SessionToken?
|
||||||
|
fun findByAquaNetUserAuId(auId: Long): List<SessionToken>
|
||||||
|
}
|
||||||
+12
-100
@@ -1,105 +1,24 @@
|
|||||||
package icu.samnyan.aqua.net.db
|
package aquadx.net.db
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.UserRegistrar.Companion.cardExtIdEnd
|
import aquadx.net.UserRegistrar.Companion.cardExtIdEnd
|
||||||
import icu.samnyan.aqua.net.UserRegistrar.Companion.cardExtIdStart
|
import aquadx.net.UserRegistrar.Companion.cardExtIdStart
|
||||||
import icu.samnyan.aqua.net.components.JWT
|
import aquadx.net.components.JWT
|
||||||
import icu.samnyan.aqua.sega.allnet.AllNetProps
|
import aquadx.sega.allnet.AllNetProps
|
||||||
import icu.samnyan.aqua.sega.allnet.KeyChipRepo
|
import aquadx.sega.allnet.KeyChipRepo
|
||||||
import icu.samnyan.aqua.sega.allnet.KeychipSession
|
import aquadx.sega.general.GameMusicPopularity
|
||||||
import icu.samnyan.aqua.sega.general.GameMusicPopularity
|
import aquadx.sega.general.dao.CardRepository
|
||||||
import icu.samnyan.aqua.sega.general.dao.CardRepository
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.service.CardService
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
|
||||||
import jakarta.persistence.*
|
import jakarta.persistence.*
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder
|
import org.springframework.security.crypto.password.PasswordEncoder
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import java.io.Serializable
|
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import kotlin.jvm.optionals.getOrNull
|
|
||||||
import kotlin.reflect.KFunction
|
|
||||||
import kotlin.reflect.KMutableProperty
|
import kotlin.reflect.KMutableProperty
|
||||||
import kotlin.reflect.full.functions
|
import kotlin.reflect.full.functions
|
||||||
|
|
||||||
@Entity
|
// Entity AquaNetUser and SettingField are now in :shared
|
||||||
class AquaNetUser(
|
|
||||||
@JsonIgnore
|
|
||||||
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
var auId: Long = 0,
|
|
||||||
|
|
||||||
@Column(nullable = false, unique = true, length = 32)
|
|
||||||
var username: String = "",
|
|
||||||
|
|
||||||
// Login credentials
|
|
||||||
@Column(nullable = false, unique = true)
|
|
||||||
var email: String = "",
|
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
@Column(nullable = false)
|
|
||||||
var pwHash: String = "",
|
|
||||||
|
|
||||||
@Column(nullable = true, length = 32)
|
|
||||||
var displayName: String = "",
|
|
||||||
|
|
||||||
// Country code at most 3 characters
|
|
||||||
@Column(length = 3)
|
|
||||||
var country: String = "",
|
|
||||||
|
|
||||||
// Region code at most 2 characters
|
|
||||||
@Column(length = 2)
|
|
||||||
var region: String = "",
|
|
||||||
|
|
||||||
// Last login time
|
|
||||||
var lastLogin: Long = 0L,
|
|
||||||
|
|
||||||
// Registration time
|
|
||||||
var regTime: Long = 0L,
|
|
||||||
|
|
||||||
// Profile fields
|
|
||||||
var profileLocation: String? = "",
|
|
||||||
var profileBio: String? = "",
|
|
||||||
var profilePicture: String? = "",
|
|
||||||
var optOutOfLeaderboard: Boolean = false,
|
|
||||||
|
|
||||||
// Email confirmation
|
|
||||||
var emailConfirmed: Boolean = false,
|
|
||||||
|
|
||||||
@OneToOne(cascade = [CascadeType.ALL])
|
|
||||||
@JoinColumn(name = "ghostCard", unique = true, nullable = false)
|
|
||||||
var ghostCard: Card = Card(),
|
|
||||||
|
|
||||||
// One user can have multiple cards
|
|
||||||
@OneToMany(mappedBy = "aquaUser", cascade = [CascadeType.ALL])
|
|
||||||
var cards: MutableList<Card> = mutableListOf(),
|
|
||||||
|
|
||||||
// Each user can have one keychip (if the user owns a cabinet)
|
|
||||||
@JsonIgnore
|
|
||||||
@Column(nullable = true, length = 32, unique = true)
|
|
||||||
var keychip: Str? = null,
|
|
||||||
|
|
||||||
// Each user's keychip can have multiple sessions
|
|
||||||
@JsonIgnore
|
|
||||||
@OneToMany(mappedBy = "user", cascade = [CascadeType.ALL])
|
|
||||||
var keychipSessions: MutableList<KeychipSession> = mutableListOf(),
|
|
||||||
|
|
||||||
@OneToOne(cascade = [CascadeType.ALL])
|
|
||||||
@JoinColumn(name = "gameOptions", unique = true, nullable = true)
|
|
||||||
var gameOptions: AquaGameOptions? = null,
|
|
||||||
) : Serializable {
|
|
||||||
val computedName get() = displayName.ifEmpty { username }
|
|
||||||
|
|
||||||
val publicFields get() = mapOf(
|
|
||||||
"username" to username,
|
|
||||||
"displayName" to displayName,
|
|
||||||
"country" to country,
|
|
||||||
"regTime" to regTime,
|
|
||||||
"profileLocation" to profileLocation,
|
|
||||||
"profileBio" to profileBio,
|
|
||||||
"profilePicture" to profilePicture,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
interface AquaNetUserRepo : JpaRepository<AquaNetUser, Long> {
|
interface AquaNetUserRepo : JpaRepository<AquaNetUser, Long> {
|
||||||
fun findByAuId(auId: Long): AquaNetUser?
|
fun findByAuId(auId: Long): AquaNetUser?
|
||||||
@@ -109,15 +28,8 @@ interface AquaNetUserRepo : JpaRepository<AquaNetUser, Long> {
|
|||||||
fun findByGhostCardExtId(extId: Long): AquaNetUser?
|
fun findByGhostCardExtId(extId: Long): AquaNetUser?
|
||||||
}
|
}
|
||||||
|
|
||||||
data class SettingField(
|
|
||||||
val name: Str,
|
|
||||||
val checker: KFunction<*>,
|
|
||||||
val setter: KMutableProperty.Setter<*>,
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is a validator for user fields. It will return the parsed value if the field is valid, or
|
* User services (formerly inside AquaNetUser.kt in the monolithic setup).
|
||||||
* throw an ApiException if the field is invalid.
|
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
class AquaUserServices(
|
class AquaUserServices(
|
||||||
+6
-6
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.net.games
|
package aquadx.net.games
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.BotProps
|
import aquadx.net.BotProps
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import jakarta.annotation.PostConstruct
|
import jakarta.annotation.PostConstruct
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.games
|
package aquadx.net.games
|
||||||
|
|
||||||
import ext.isoDate
|
import ext.isoDate
|
||||||
import ext.minus
|
import ext.minus
|
||||||
+8
-8
@@ -1,13 +1,13 @@
|
|||||||
package icu.samnyan.aqua.net.games
|
package aquadx.net.games
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.Fedy
|
import aquadx.net.Fedy
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUser
|
import aquadx.net.db.AquaNetUser
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.utils.AquaNetProps
|
import aquadx.net.utils.AquaNetProps
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
import org.springframework.context.annotation.Lazy
|
import org.springframework.context.annotation.Lazy
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.games
|
package aquadx.net.games
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParser
|
import com.fasterxml.jackson.core.JsonParser
|
||||||
import com.fasterxml.jackson.databind.DeserializationContext
|
import com.fasterxml.jackson.databind.DeserializationContext
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package aquadx.net.games
|
||||||
|
|
||||||
|
import aquadx.sega.general.model.Card
|
||||||
|
import org.springframework.data.domain.Page
|
||||||
|
import org.springframework.data.domain.Pageable
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.data.jpa.repository.Query
|
||||||
|
import org.springframework.data.repository.NoRepositoryBean
|
||||||
|
|
||||||
|
@NoRepositoryBean
|
||||||
|
interface GenericUserDataRepo<T : IUserData> : JpaRepository<T, Long> {
|
||||||
|
fun findByCard(card: Card): T?
|
||||||
|
fun findByCard_ExtId(extId: Long): T?
|
||||||
|
|
||||||
|
@Query("select e from #{'#'}{#entityName} e where e.card.rankingBanned = false")
|
||||||
|
fun findAllNonBanned(): List<T>
|
||||||
|
}
|
||||||
|
|
||||||
|
@NoRepositoryBean
|
||||||
|
interface GenericPlaylogRepo<T: IGenericGamePlaylog> : JpaRepository<T, Long> {
|
||||||
|
fun findByUserCardExtId(extId: Long): List<T>
|
||||||
|
fun findByUserCardExtId(extId: Long, page: Pageable): Page<T>
|
||||||
|
}
|
||||||
|
|
||||||
|
@NoRepositoryBean
|
||||||
|
interface GenericUserMusicRepo<T: IGenericUserMusic> : JpaRepository<T, Long> {
|
||||||
|
fun findByUserCardExtId(extId: Long): List<T>
|
||||||
|
fun findByUser_Card_ExtIdAndMusicIdIn(userId: Long, musicId: List<Int>): List<T>
|
||||||
|
}
|
||||||
+7
-7
@@ -1,14 +1,14 @@
|
|||||||
package icu.samnyan.aqua.net.games.chu3
|
package aquadx.net.games.chu3
|
||||||
|
|
||||||
import ext.API
|
import ext.API
|
||||||
import ext.returns
|
import ext.returns
|
||||||
import ext.vars
|
import ext.vars
|
||||||
import icu.samnyan.aqua.net.games.IExportClass
|
import aquadx.net.games.IExportClass
|
||||||
import icu.samnyan.aqua.net.games.ImportClass
|
import aquadx.net.games.ImportClass
|
||||||
import icu.samnyan.aqua.net.games.ImportController
|
import aquadx.net.games.ImportController
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3Repos
|
import aquadx.sega.chusan.model.Chu3Repos
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3UserLinked
|
import aquadx.sega.chusan.model.Chu3UserLinked
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.*
|
import aquadx.sega.chusan.model.userdata.*
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import kotlin.reflect.full.declaredMembers
|
import kotlin.reflect.full.declaredMembers
|
||||||
|
|
||||||
+10
-10
@@ -1,15 +1,15 @@
|
|||||||
package icu.samnyan.aqua.net.games.chu3
|
package aquadx.net.games.chu3
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.*
|
import aquadx.net.games.*
|
||||||
import icu.samnyan.aqua.net.utils.chu3Scores
|
import aquadx.net.utils.chu3Scores
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3Repos
|
import aquadx.sega.chusan.model.Chu3Repos
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo
|
import aquadx.sega.chusan.model.Chu3UserDataRepo
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3UserMusicDetailRepo
|
import aquadx.sega.chusan.model.Chu3UserMusicDetailRepo
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3UserPlaylogRepo
|
import aquadx.sega.chusan.model.Chu3UserPlaylogRepo
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData
|
import aquadx.sega.chusan.model.userdata.Chu3UserData
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserGameOption
|
import aquadx.sega.chusan.model.userdata.UserGameOption
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import kotlin.jvm.optionals.getOrNull
|
import kotlin.jvm.optionals.getOrNull
|
||||||
import kotlin.reflect.KMutableProperty1
|
import kotlin.reflect.KMutableProperty1
|
||||||
+9
-9
@@ -1,16 +1,16 @@
|
|||||||
package icu.samnyan.aqua.net.games.mai2
|
package aquadx.net.games.mai2
|
||||||
|
|
||||||
import ext.API
|
import ext.API
|
||||||
import ext.returns
|
import ext.returns
|
||||||
import ext.vars
|
import ext.vars
|
||||||
import icu.samnyan.aqua.net.games.ExportOptions
|
import aquadx.net.games.ExportOptions
|
||||||
import icu.samnyan.aqua.net.games.IExportClass
|
import aquadx.net.games.IExportClass
|
||||||
import icu.samnyan.aqua.net.games.ImportClass
|
import aquadx.net.games.ImportClass
|
||||||
import icu.samnyan.aqua.net.games.ImportController
|
import aquadx.net.games.ImportController
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos
|
import aquadx.sega.maimai2.model.Mai2Repos
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserLinked
|
import aquadx.sega.maimai2.model.Mai2UserLinked
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UserFavoriteItem
|
import aquadx.sega.maimai2.model.request.Mai2UserFavoriteItem
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.*
|
import aquadx.sega.maimai2.model.userdata.*
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import kotlin.reflect.full.declaredMembers
|
import kotlin.reflect.full.declaredMembers
|
||||||
|
|
||||||
+6
-6
@@ -1,14 +1,14 @@
|
|||||||
package icu.samnyan.aqua.net.games.mai2
|
package aquadx.net.games.mai2
|
||||||
|
|
||||||
import ext.API
|
import ext.API
|
||||||
import ext.RB
|
import ext.RB
|
||||||
import ext.RP
|
import ext.RP
|
||||||
import ext.minus
|
import ext.minus
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos
|
import aquadx.sega.maimai2.model.Mai2Repos
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail
|
import aquadx.sega.maimai2.model.userdata.Mai2UserMusicDetail
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
|
|
||||||
+14
-14
@@ -1,19 +1,19 @@
|
|||||||
package icu.samnyan.aqua.net.games.mai2
|
package aquadx.net.games.mai2
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.*
|
import aquadx.net.games.*
|
||||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
import aquadx.net.utils.SUCCESS
|
||||||
import icu.samnyan.aqua.net.utils.mai2Scores
|
import aquadx.net.utils.mai2Scores
|
||||||
import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPhotoHandler
|
import aquadx.sega.maimai2.handler.UploadUserPhotoHandler
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos
|
import aquadx.sega.maimai2.model.Mai2Repos
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo
|
import aquadx.sega.maimai2.model.Mai2UserDataRepo
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserMusicDetailRepo
|
import aquadx.sega.maimai2.model.Mai2UserMusicDetailRepo
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.Mai2UserPlaylogRepo
|
import aquadx.sega.maimai2.model.Mai2UserPlaylogRepo
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserDetail
|
import aquadx.sega.maimai2.model.userdata.Mai2UserDetail
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserGeneralData
|
import aquadx.sega.maimai2.model.userdata.Mai2UserGeneralData
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserLoginBonus
|
import aquadx.sega.maimai2.model.userdata.Mai2UserLoginBonus
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserOption
|
import aquadx.sega.maimai2.model.userdata.Mai2UserOption
|
||||||
import org.springframework.http.MediaType
|
import org.springframework.http.MediaType
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
+11
-12
@@ -1,20 +1,19 @@
|
|||||||
package icu.samnyan.aqua.net.games.ongeki
|
package aquadx.net.games.ongeki
|
||||||
|
|
||||||
import ext.API
|
import ext.API
|
||||||
import ext.RP
|
import ext.RP
|
||||||
import ext.minus
|
import ext.minus
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.*
|
import aquadx.net.games.*
|
||||||
import icu.samnyan.aqua.net.utils.ongekiScores
|
import aquadx.net.utils.ongekiScores
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo
|
import aquadx.sega.ongeki.OgkUserDataRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserGeneralDataRepo
|
import aquadx.sega.ongeki.OgkUserGeneralDataRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserMusicDetailRepo
|
import aquadx.sega.ongeki.OgkUserMusicDetailRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserOptionRepo
|
import aquadx.sega.ongeki.OgkUserOptionRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.OgkUserPlaylogRepo
|
import aquadx.sega.ongeki.OgkUserPlaylogRepo
|
||||||
import icu.samnyan.aqua.sega.ongeki.model.UserData
|
import aquadx.sega.ongeki.model.UserData
|
||||||
import icu.samnyan.aqua.sega.ongeki.model.UserOption
|
import aquadx.sega.ongeki.model.UserOption
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import kotlin.jvm.optionals.getOrNull
|
|
||||||
import kotlin.reflect.KMutableProperty1
|
import kotlin.reflect.KMutableProperty1
|
||||||
import kotlin.reflect.full.memberProperties
|
import kotlin.reflect.full.memberProperties
|
||||||
|
|
||||||
+8
-8
@@ -1,16 +1,16 @@
|
|||||||
package icu.samnyan.aqua.net.games.wacca
|
package aquadx.net.games.wacca
|
||||||
|
|
||||||
import ext.API
|
import ext.API
|
||||||
import ext.RP
|
import ext.RP
|
||||||
import ext.isoDate
|
import ext.isoDate
|
||||||
import ext.utc
|
import ext.utc
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.*
|
import aquadx.net.games.*
|
||||||
import icu.samnyan.aqua.net.utils.waccaScores
|
import aquadx.net.utils.waccaScores
|
||||||
import icu.samnyan.aqua.sega.wacca.model.db.WaccaUser
|
import aquadx.sega.wacca.model.db.WaccaUser
|
||||||
import icu.samnyan.aqua.sega.wacca.model.db.WcUserBestScoreRepo
|
import aquadx.sega.wacca.model.db.WcUserBestScoreRepo
|
||||||
import icu.samnyan.aqua.sega.wacca.model.db.WcUserPlayLogRepo
|
import aquadx.sega.wacca.model.db.WcUserPlayLogRepo
|
||||||
import icu.samnyan.aqua.sega.wacca.model.db.WcUserRepo
|
import aquadx.sega.wacca.model.db.WcUserRepo
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
+4
-4
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.net.transfer
|
package aquadx.net.transfer
|
||||||
|
|
||||||
import ext.header
|
import ext.header
|
||||||
import ext.post
|
import ext.post
|
||||||
import ext.request
|
import ext.request
|
||||||
import icu.samnyan.aqua.sega.aimedb.AimeDbClient
|
import aquadx.sega.aimedb.AimeDbClient
|
||||||
import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder
|
import aquadx.sega.allnet.AllNetBillingDecoder
|
||||||
import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder.decodeAllNetResp
|
import aquadx.sega.allnet.AllNetBillingDecoder.decodeAllNetResp
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
|
|
||||||
val keychipPattern = Regex("([A-Z\\d]{4}-[A-Z\\d]{11}|[A-Z\\d]{11})")
|
val keychipPattern = Regex("([A-Z\\d]{4}-[A-Z\\d]{11}|[A-Z\\d]{11})")
|
||||||
+15
-15
@@ -1,19 +1,19 @@
|
|||||||
package icu.samnyan.aqua.net.transfer
|
package aquadx.net.transfer
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.sega.chusan.model.request.Chu3UserAll
|
import aquadx.sega.chusan.model.request.Chu3UserAll
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserActivity
|
import aquadx.sega.chusan.model.userdata.Chu3UserActivity
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
import aquadx.sega.chusan.model.userdata.Chu3UserItem
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
|
import aquadx.sega.chusan.model.userdata.UserMusicDetail
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UserAll
|
import aquadx.sega.maimai2.model.request.Mai2UserAll
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserFavorite
|
import aquadx.sega.maimai2.model.userdata.Mai2UserFavorite
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserItem
|
import aquadx.sega.maimai2.model.userdata.Mai2UserItem
|
||||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail
|
import aquadx.sega.maimai2.model.userdata.Mai2UserMusicDetail
|
||||||
import icu.samnyan.aqua.sega.ongeki.model.OngekiUpsertUserAll
|
import aquadx.sega.ongeki.model.OngekiUpsertUserAll
|
||||||
import icu.samnyan.aqua.sega.ongeki.model.UserItem
|
import aquadx.sega.ongeki.model.UserItem
|
||||||
import icu.samnyan.aqua.sega.util.BasicMapper
|
import aquadx.sega.util.BasicMapper
|
||||||
import icu.samnyan.aqua.sega.util.IMapper
|
import aquadx.sega.util.IMapper
|
||||||
import icu.samnyan.aqua.sega.util.StringMapper
|
import aquadx.sega.util.StringMapper
|
||||||
|
|
||||||
|
|
||||||
abstract class DataBroker(
|
abstract class DataBroker(
|
||||||
@@ -131,7 +131,7 @@ class OngekiDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker(
|
|||||||
override val mapper = BasicMapper()
|
override val mapper = BasicMapper()
|
||||||
override val url by lazy { allNet.gameUrl.ensureNoEndingSlash() }
|
override val url by lazy { allNet.gameUrl.ensureNoEndingSlash() }
|
||||||
|
|
||||||
class UserMusicWrapper(var userMusicDetailList: List<icu.samnyan.aqua.sega.ongeki.model.UserMusicDetail>)
|
class UserMusicWrapper(var userMusicDetailList: List<aquadx.sega.ongeki.model.UserMusicDetail>)
|
||||||
|
|
||||||
override fun pull(): String {
|
override fun pull(): String {
|
||||||
val (userId, paged) = prePull()
|
val (userId, paged) = prePull()
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.transfer
|
package aquadx.net.transfer
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.utils
|
package aquadx.net.utils
|
||||||
|
|
||||||
import jakarta.annotation.PostConstruct
|
import jakarta.annotation.PostConstruct
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
+3
-11
@@ -1,21 +1,13 @@
|
|||||||
package icu.samnyan.aqua.net.utils
|
package aquadx.net.utils
|
||||||
|
|
||||||
import ext.Str
|
|
||||||
import org.slf4j.LoggerFactory
|
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice
|
import org.springframework.web.bind.annotation.ControllerAdvice
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler
|
import org.springframework.web.bind.annotation.ExceptionHandler
|
||||||
|
|
||||||
|
|
||||||
val SUCCESS = ResponseEntity.ok().body(mapOf("status" to "ok"))
|
val SUCCESS: ResponseEntity<Map<String, String>> = ResponseEntity.ok().body(mapOf("status" to "ok"))
|
||||||
|
|
||||||
class ApiException(val code: Int, message: Str) : RuntimeException(message) {
|
fun ApiException.resp(): ResponseEntity<String> = ResponseEntity.status(code).body(message.toString())
|
||||||
companion object {
|
|
||||||
val log = LoggerFactory.getLogger(ApiException::class.java)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun resp() = ResponseEntity.status(code).body(message.toString())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Exception.simpleDescribe(): String = if (this is ApiException) "E${code}" else javaClass.simpleName
|
fun Exception.simpleDescribe(): String = if (this is ApiException) "E${code}" else javaClass.simpleName
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.utils
|
package aquadx.net.utils
|
||||||
|
|
||||||
|
|
||||||
val mai2Scores = listOf(
|
val mai2Scores = listOf(
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.net.utils
|
package aquadx.net.utils
|
||||||
|
|
||||||
import ext.ensureEndingSlash
|
import ext.ensureEndingSlash
|
||||||
import ext.path
|
import ext.path
|
||||||
+6
-6
@@ -1,12 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.aimedb
|
package aquadx.sega.aimedb
|
||||||
|
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import ext.toHex
|
import ext.toHex
|
||||||
import icu.samnyan.aqua.net.Fedy
|
import aquadx.net.Fedy
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.sega.allnet.AllNetProps
|
import aquadx.sega.allnet.AllNetProps
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import io.netty.buffer.ByteBuf
|
import io.netty.buffer.ByteBuf
|
||||||
import io.netty.buffer.ByteBufUtil
|
import io.netty.buffer.ByteBufUtil
|
||||||
import io.netty.buffer.Unpooled
|
import io.netty.buffer.Unpooled
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.aimedb
|
package aquadx.sega.aimedb
|
||||||
|
|
||||||
import ext.minus
|
import ext.minus
|
||||||
import io.netty.buffer.ByteBuf
|
import io.netty.buffer.ByteBuf
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.aimedb
|
package aquadx.sega.aimedb
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf
|
import io.netty.buffer.ByteBuf
|
||||||
import io.netty.channel.ChannelHandlerContext
|
import io.netty.channel.ChannelHandlerContext
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.aimedb
|
package aquadx.sega.aimedb
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf
|
import io.netty.buffer.ByteBuf
|
||||||
import io.netty.channel.ChannelHandlerContext
|
import io.netty.channel.ChannelHandlerContext
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.aimedb
|
package aquadx.sega.aimedb
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf
|
import io.netty.buffer.ByteBuf
|
||||||
import io.netty.buffer.Unpooled.copiedBuffer
|
import io.netty.buffer.Unpooled.copiedBuffer
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.aimedb
|
package aquadx.sega.aimedb
|
||||||
|
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import io.netty.bootstrap.ServerBootstrap
|
import io.netty.bootstrap.ServerBootstrap
|
||||||
+3
-3
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.allnet
|
package aquadx.sega.allnet
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUserRepo
|
import aquadx.net.db.AquaNetUserRepo
|
||||||
import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder.decodeAllNet
|
import aquadx.sega.allnet.AllNetBillingDecoder.decodeAllNet
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.allnet
|
package aquadx.sega.allnet
|
||||||
|
|
||||||
import ext.bodyString
|
import ext.bodyString
|
||||||
import ext.header
|
import ext.header
|
||||||
import icu.samnyan.aqua.sega.util.ZLib
|
import aquadx.sega.util.ZLib
|
||||||
import java.net.http.HttpResponse
|
import java.net.http.HttpResponse
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.text.Charsets.UTF_8
|
import kotlin.text.Charsets.UTF_8
|
||||||
+3
-3
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.allnet
|
package aquadx.sega.allnet
|
||||||
|
|
||||||
import ext.Str
|
import ext.Str
|
||||||
import icu.samnyan.aqua.net.FrontierProps
|
import aquadx.net.FrontierProps
|
||||||
import icu.samnyan.aqua.net.components.GeoIP
|
import aquadx.net.components.GeoIP
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletRequestWrapper
|
import jakarta.servlet.http.HttpServletRequestWrapper
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package aquadx.sega.allnet
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
interface KeyChipRepo : JpaRepository<Keychip, Long> {
|
||||||
|
fun findByKeychipId(keychipId: String): Keychip?
|
||||||
|
fun existsByKeychipId(keychipId: String): Boolean
|
||||||
|
}
|
||||||
+3
-34
@@ -1,48 +1,17 @@
|
|||||||
package icu.samnyan.aqua.sega.allnet
|
package aquadx.sega.allnet
|
||||||
|
|
||||||
import ext.async
|
import ext.async
|
||||||
import icu.samnyan.aqua.net.db.AquaNetUser
|
import aquadx.net.db.AquaNetUser
|
||||||
import jakarta.persistence.*
|
|
||||||
import jakarta.transaction.Transactional
|
import jakarta.transaction.Transactional
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.scheduling.annotation.Scheduled
|
import org.springframework.scheduling.annotation.Scheduled
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import java.security.SecureRandom
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is a one-to-many mapping of keychip to session token.
|
* Repository and Service for KeychipSession (Entity is located in :shared module).
|
||||||
*/
|
*/
|
||||||
@Entity
|
|
||||||
@Table(name = "allnet_keychip_sessions", indexes = [
|
|
||||||
Index(name = "idx_last_use", columnList = "lastUse")
|
|
||||||
])
|
|
||||||
class KeychipSession(
|
|
||||||
@ManyToOne
|
|
||||||
@JoinColumn(name = "au_id")
|
|
||||||
var user: AquaNetUser? = null,
|
|
||||||
|
|
||||||
@Column(length = 4)
|
|
||||||
val gameId: String,
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@Column(length = 32)
|
|
||||||
val token: String = genUrlSafeToken(32),
|
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
var lastUse: Long = System.currentTimeMillis()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
val urlSafeChars = ('a'..'z') + ('A'..'Z') + ('0'..'9') + listOf('-', '_', '.', '~')
|
|
||||||
|
|
||||||
fun genUrlSafeToken(length: Int): String {
|
|
||||||
val random = SecureRandom()
|
|
||||||
return (1..length)
|
|
||||||
.map { urlSafeChars[random.nextInt(urlSafeChars.size)] }
|
|
||||||
.joinToString("")
|
|
||||||
}
|
|
||||||
|
|
||||||
@Repository("KeychipSessionRepo")
|
@Repository("KeychipSessionRepo")
|
||||||
interface KeychipSessionRepo : JpaRepository<KeychipSession, String> {
|
interface KeychipSessionRepo : JpaRepository<KeychipSession, String> {
|
||||||
+3
-3
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.billing
|
package aquadx.sega.billing
|
||||||
|
|
||||||
|
import aquadx.sega.allnet.AllNetBillingDecoder
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import ext.toUrl
|
import ext.toUrl
|
||||||
import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder.decodeBilling
|
|
||||||
import jakarta.annotation.PostConstruct
|
import jakarta.annotation.PostConstruct
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import org.eclipse.jetty.http.HttpVersion
|
import org.eclipse.jetty.http.HttpVersion
|
||||||
@@ -55,7 +55,7 @@ class Billing(
|
|||||||
@PostMapping("/request", produces = ["text/plain"])
|
@PostMapping("/request", produces = ["text/plain"])
|
||||||
fun powerOn(dataStream: InputStream, req: HttpServletRequest?): String {
|
fun powerOn(dataStream: InputStream, req: HttpServletRequest?): String {
|
||||||
val bytes = dataStream.readAllBytes()
|
val bytes = dataStream.readAllBytes()
|
||||||
val reqMap = decodeBilling(bytes)
|
val reqMap = AllNetBillingDecoder.decodeBilling(bytes)
|
||||||
|
|
||||||
logger.info("Billing : $reqMap")
|
logger.info("Billing : $reqMap")
|
||||||
|
|
||||||
+3
-3
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.cardmaker
|
package aquadx.sega.cardmaker
|
||||||
|
|
||||||
|
import aquadx.sega.allnet.TokenChecker
|
||||||
|
import aquadx.sega.util.BasicMapper
|
||||||
import ext.API
|
import ext.API
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import ext.long
|
import ext.long
|
||||||
import ext.parsing
|
import ext.parsing
|
||||||
import icu.samnyan.aqua.sega.allnet.TokenChecker
|
|
||||||
import icu.samnyan.aqua.sega.util.BasicMapper
|
|
||||||
import org.springframework.beans.factory.annotation.Value
|
import org.springframework.beans.factory.annotation.Value
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute
|
import org.springframework.web.bind.annotation.ModelAttribute
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.cardmaker
|
package aquadx.sega.cardmaker
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference
|
import com.fasterxml.jackson.core.type.TypeReference
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
@@ -11,7 +11,7 @@ import java.nio.charset.StandardCharsets
|
|||||||
/**
|
/**
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@RestControllerAdvice(basePackages = ["icu.samnyan.aqua.sega.cardmaker"])
|
@RestControllerAdvice(basePackages = ["aquadx.sega.cardmaker"])
|
||||||
class CardMakerControllerAdvice {
|
class CardMakerControllerAdvice {
|
||||||
val logger = logger()
|
val logger = logger()
|
||||||
val mapper = ObjectMapper()
|
val mapper = ObjectMapper()
|
||||||
+15
-15
@@ -1,19 +1,19 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan
|
package aquadx.sega.chusan
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
import aquadx.net.db.AquaUserServices
|
||||||
import icu.samnyan.aqua.net.games.chu3.Chusan
|
import aquadx.net.games.chu3.Chusan
|
||||||
import icu.samnyan.aqua.net.utils.simpleDescribe
|
import aquadx.net.utils.simpleDescribe
|
||||||
import icu.samnyan.aqua.sega.allnet.TokenChecker
|
import aquadx.sega.allnet.TokenChecker
|
||||||
import icu.samnyan.aqua.sega.chusan.handler.chusanInit
|
import aquadx.sega.chusan.handler.chusanInit
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3Repos
|
import aquadx.sega.chusan.model.Chu3Repos
|
||||||
import icu.samnyan.aqua.sega.general.GameMusicPopularity
|
import aquadx.sega.general.GameMusicPopularity
|
||||||
import icu.samnyan.aqua.sega.general.MeowApi
|
import aquadx.sega.general.MeowApi
|
||||||
import icu.samnyan.aqua.sega.general.RequestContext
|
import aquadx.sega.general.RequestContext
|
||||||
import icu.samnyan.aqua.sega.general.service.CardService
|
import aquadx.sega.general.service.CardService
|
||||||
import icu.samnyan.aqua.sega.util.BasicMapper
|
import aquadx.sega.util.BasicMapper
|
||||||
import icu.samnyan.aqua.sega.util.StringMapper
|
import aquadx.sega.util.StringMapper
|
||||||
import icu.samnyan.aqua.spring.Metrics
|
import aquadx.spring.Metrics
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
@@ -83,7 +83,7 @@ class ChusanController(
|
|||||||
if (api !in setOf("GetUserItemApi", "GetGameEventApi"))
|
if (api !in setOf("GetUserItemApi", "GetGameEventApi"))
|
||||||
log.info("$token : $api > ${it.truncate(500)}")
|
log.info("$token : $api > ${it.truncate(500)}")
|
||||||
}
|
}
|
||||||
}
|
}!!
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Metrics.counter("aquadx_chusan_api_error", "api" to api, "error" to e.simpleDescribe()).increment()
|
Metrics.counter("aquadx_chusan_api_error", "api" to api, "error" to e.simpleDescribe()).increment()
|
||||||
throw e
|
throw e
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan
|
package aquadx.sega.chusan
|
||||||
|
|
||||||
|
|
||||||
object ChusanData {
|
object ChusanData {
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan
|
package aquadx.sega.chusan
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan
|
package aquadx.sega.chusan
|
||||||
|
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.chusan.model.Chu3Repos
|
import aquadx.sega.chusan.model.Chu3Repos
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
|
|
||||||
+9
-9
@@ -1,14 +1,14 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan.handler
|
package aquadx.sega.chusan.handler
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.sega.allnet.TokenChecker
|
import aquadx.sega.allnet.TokenChecker
|
||||||
import icu.samnyan.aqua.sega.chusan.ChusanController
|
import aquadx.sega.chusan.ChusanController
|
||||||
import icu.samnyan.aqua.sega.chusan.ChusanData
|
import aquadx.sega.chusan.ChusanData
|
||||||
import icu.samnyan.aqua.sega.chusan.model.request.UserCMissionResp
|
import aquadx.sega.chusan.model.request.UserCMissionResp
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
import aquadx.sega.chusan.model.userdata.Chu3UserItem
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
|
import aquadx.sega.chusan.model.userdata.UserMusicDetail
|
||||||
import icu.samnyan.aqua.sega.general.model.CardStatus
|
import aquadx.sega.general.model.CardStatus
|
||||||
import icu.samnyan.aqua.sega.general.model.UserRecentRating
|
import aquadx.sega.general.model.UserRecentRating
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
import org.springframework.data.repository.findByIdOrNull
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
+6
-6
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan.handler
|
package aquadx.sega.chusan.handler
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.sega.chusan.ChusanController
|
import aquadx.sega.chusan.ChusanController
|
||||||
import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserGacha
|
import aquadx.sega.chusan.model.request.UpsertUserGacha
|
||||||
import icu.samnyan.aqua.sega.chusan.model.request.UserEmoney
|
import aquadx.sega.chusan.model.request.UserEmoney
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
import aquadx.sega.chusan.model.userdata.Chu3UserItem
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState
|
import aquadx.sega.chusan.model.userdata.UserCardPrintState
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
fun ChusanController.cmApiInit() {
|
fun ChusanController.cmApiInit() {
|
||||||
+4
-4
@@ -1,14 +1,14 @@
|
|||||||
@file:Suppress("UNCHECKED_CAST")
|
@file:Suppress("UNCHECKED_CAST")
|
||||||
|
|
||||||
package icu.samnyan.aqua.sega.chusan.handler
|
package aquadx.sega.chusan.handler
|
||||||
|
|
||||||
import ext.JDict
|
import ext.JDict
|
||||||
import ext.int
|
import ext.int
|
||||||
import ext.millis
|
import ext.millis
|
||||||
import ext.parsing
|
import ext.parsing
|
||||||
import icu.samnyan.aqua.sega.chusan.ChusanController
|
import aquadx.sega.chusan.ChusanController
|
||||||
import icu.samnyan.aqua.sega.chusan.model.request.MatchingWaitState
|
import aquadx.sega.chusan.model.request.MatchingWaitState
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3MatchingMemberReq
|
import aquadx.sega.chusan.model.userdata.Chu3MatchingMemberReq
|
||||||
|
|
||||||
|
|
||||||
fun ChusanController.matchingApiInit() {
|
fun ChusanController.matchingApiInit() {
|
||||||
+6
-6
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.chusan.handler
|
package aquadx.sega.chusan.handler
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import icu.samnyan.aqua.sega.chusan.ChusanController
|
import aquadx.sega.chusan.ChusanController
|
||||||
import icu.samnyan.aqua.sega.chusan.model.request.Chu3UserAll
|
import aquadx.sega.chusan.model.request.Chu3UserAll
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.*
|
import aquadx.sega.chusan.model.userdata.*
|
||||||
import icu.samnyan.aqua.sega.general.model.CardStatus
|
import aquadx.sega.general.model.CardStatus
|
||||||
import icu.samnyan.aqua.sega.general.model.UserRecentRating
|
import aquadx.sega.general.model.UserRecentRating
|
||||||
import kotlinx.serialization.encodeToString
|
import kotlinx.serialization.encodeToString
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
+8
-8
@@ -1,20 +1,20 @@
|
|||||||
@file:Suppress("FunctionName")
|
@file:Suppress("FunctionName")
|
||||||
|
|
||||||
package icu.samnyan.aqua.sega.chusan.model
|
package aquadx.sega.chusan.model
|
||||||
|
|
||||||
import icu.samnyan.aqua.net.games.GenericPlaylogRepo
|
import aquadx.net.games.GenericPlaylogRepo
|
||||||
import icu.samnyan.aqua.net.games.GenericUserDataRepo
|
import aquadx.net.games.GenericUserDataRepo
|
||||||
import icu.samnyan.aqua.net.games.GenericUserMusicRepo
|
import aquadx.net.games.GenericUserMusicRepo
|
||||||
import icu.samnyan.aqua.net.games.IUserRepo
|
import aquadx.net.games.IUserRepo
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.*
|
import aquadx.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
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.data.jpa.repository.Query
|
import org.springframework.data.jpa.repository.Query
|
||||||
import org.springframework.data.repository.NoRepositoryBean
|
import org.springframework.data.repository.NoRepositoryBean
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import icu.samnyan.aqua.sega.util.GameDataService
|
import aquadx.sega.util.GameDataService
|
||||||
import icu.samnyan.aqua.sega.util.StaticRepo
|
import aquadx.sega.util.StaticRepo
|
||||||
|
|
||||||
|
|
||||||
@NoRepositoryBean
|
@NoRepositoryBean
|
||||||
+14
-14
@@ -1,22 +1,22 @@
|
|||||||
package icu.samnyan.aqua.sega.diva
|
package aquadx.sega.diva
|
||||||
|
|
||||||
import ext.JDict
|
import ext.JDict
|
||||||
import ext.MutJDict
|
import ext.MutJDict
|
||||||
import ext.emptyMap
|
import ext.emptyMap
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.handler.AttendHandler
|
import aquadx.sega.diva.handler.AttendHandler
|
||||||
import icu.samnyan.aqua.sega.diva.handler.PingHandler
|
import aquadx.sega.diva.handler.PingHandler
|
||||||
import icu.samnyan.aqua.sega.diva.handler.card.CardProcedureHandler
|
import aquadx.sega.diva.handler.card.CardProcedureHandler
|
||||||
import icu.samnyan.aqua.sega.diva.handler.card.ChangeNameHandler
|
import aquadx.sega.diva.handler.card.ChangeNameHandler
|
||||||
import icu.samnyan.aqua.sega.diva.handler.card.ChangePasswdHandler
|
import aquadx.sega.diva.handler.card.ChangePasswdHandler
|
||||||
import icu.samnyan.aqua.sega.diva.handler.card.RegistrationHandler
|
import aquadx.sega.diva.handler.card.RegistrationHandler
|
||||||
import icu.samnyan.aqua.sega.diva.handler.databank.*
|
import aquadx.sega.diva.handler.databank.*
|
||||||
import icu.samnyan.aqua.sega.diva.handler.ingame.*
|
import aquadx.sega.diva.handler.ingame.*
|
||||||
import icu.samnyan.aqua.sega.diva.handler.user.*
|
import aquadx.sega.diva.handler.user.*
|
||||||
import icu.samnyan.aqua.sega.diva.model.*
|
import aquadx.sega.diva.model.*
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaMapper
|
import aquadx.sega.diva.util.DivaMapper
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaTime
|
import aquadx.sega.diva.util.DivaTime
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import aquadx.sega.diva.util.URIEncoder.encode
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import org.springframework.http.MediaType
|
import org.springframework.http.MediaType
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
+7
-7
@@ -1,12 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva
|
package aquadx.sega.diva
|
||||||
|
|
||||||
import ext.invoke
|
import ext.invoke
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import aquadx.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import aquadx.sega.diva.model.common.Edition
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.gamedata.*
|
import aquadx.sega.diva.model.db.gamedata.*
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.*
|
import aquadx.sega.diva.model.db.userdata.*
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
import aquadx.sega.diva.util.ProfileNotFoundException
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
import aquadx.sega.diva.util.SessionNotFoundException
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.data.jpa.repository.Query
|
import org.springframework.data.jpa.repository.Query
|
||||||
import org.springframework.data.repository.query.Param
|
import org.springframework.data.repository.query.Param
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.sega.diva
|
package aquadx.sega.diva
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.RegistrationRequest
|
import aquadx.sega.diva.model.RegistrationRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerCustomize
|
import aquadx.sega.diva.model.db.userdata.PlayerCustomize
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerModule
|
import aquadx.sega.diva.model.db.userdata.PlayerModule
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerProfile
|
import aquadx.sega.diva.model.db.userdata.PlayerProfile
|
||||||
import org.apache.commons.lang3.StringUtils
|
import org.apache.commons.lang3.StringUtils
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
+5
-5
@@ -1,10 +1,10 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler
|
package aquadx.sega.diva.handler
|
||||||
|
|
||||||
import ext.csv
|
import ext.csv
|
||||||
import icu.samnyan.aqua.sega.diva.model.BaseRequest
|
import aquadx.sega.diva.model.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.PingResponse
|
import aquadx.sega.diva.model.PingResponse
|
||||||
import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository
|
import aquadx.sega.general.dao.PropertyEntryRepository
|
||||||
import icu.samnyan.aqua.sega.general.model.PropertyEntry
|
import aquadx.sega.general.model.PropertyEntry
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
+7
-7
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.card
|
package aquadx.sega.diva.handler.card
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.CardProcedureRequest
|
import aquadx.sega.diva.model.CardProcedureRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.CardProcedureResponse
|
import aquadx.sega.diva.model.CardProcedureResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.StartMode
|
import aquadx.sega.diva.model.common.StartMode
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.GameSession
|
import aquadx.sega.diva.model.db.userdata.GameSession
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.concurrent.ThreadLocalRandom
|
import java.util.concurrent.ThreadLocalRandom
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.card
|
package aquadx.sega.diva.handler.card
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.ChangeNameRequest
|
import aquadx.sega.diva.model.ChangeNameRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.ChangeNameResponse
|
import aquadx.sega.diva.model.ChangeNameResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+6
-6
@@ -1,10 +1,10 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.card
|
package aquadx.sega.diva.handler.card
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.ChangePasswdRequest
|
import aquadx.sega.diva.model.ChangePasswdRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.ChangePasswdResponse
|
import aquadx.sega.diva.model.ChangePasswdResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.PassStat
|
import aquadx.sega.diva.model.common.PassStat
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.card
|
package aquadx.sega.diva.handler.card
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerProfileService
|
import aquadx.sega.diva.PlayerProfileService
|
||||||
import icu.samnyan.aqua.sega.diva.model.RegistrationRequest
|
import aquadx.sega.diva.model.RegistrationRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.RegistrationResponse
|
import aquadx.sega.diva.model.RegistrationResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+6
-6
@@ -1,10 +1,10 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package aquadx.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.BaseRequest
|
import aquadx.sega.diva.model.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.ContestInfoResponse
|
import aquadx.sega.diva.model.ContestInfoResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.gamedata.Contest
|
import aquadx.sega.diva.model.db.gamedata.Contest
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import aquadx.sega.diva.util.URIEncoder.encode
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.function.Consumer
|
import java.util.function.Consumer
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package aquadx.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.FestaRepository
|
import aquadx.sega.diva.FestaRepository
|
||||||
import icu.samnyan.aqua.sega.diva.model.BaseRequest
|
import aquadx.sega.diva.model.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.FestaInfoResponse
|
import aquadx.sega.diva.model.FestaInfoResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.collection.FestaCollection
|
import aquadx.sega.diva.model.common.collection.FestaCollection
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package aquadx.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.BaseRequest
|
import aquadx.sega.diva.model.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.NvRankingResponse
|
import aquadx.sega.diva.model.NvRankingResponse
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+8
-8
@@ -1,13 +1,13 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package aquadx.sega.diva.handler.databank
|
||||||
|
|
||||||
import ext.csv
|
import ext.csv
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.PsRankingRequest
|
import aquadx.sega.diva.model.PsRankingRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.PsRankingResponse
|
import aquadx.sega.diva.model.PsRankingResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import aquadx.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import aquadx.sega.diva.model.common.Edition
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.collection.PsRankingCollection
|
import aquadx.sega.diva.model.common.collection.PsRankingCollection
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import aquadx.sega.diva.util.URIEncoder.encode
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
+7
-7
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package aquadx.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.BaseRequest
|
import aquadx.sega.diva.model.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.PvListResponse
|
import aquadx.sega.diva.model.PvListResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import aquadx.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.gamedata.PvEntry
|
import aquadx.sega.diva.model.db.gamedata.PvEntry
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import aquadx.sega.diva.util.URIEncoder.encode
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package aquadx.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaModuleRepository
|
import aquadx.sega.diva.DivaModuleRepository
|
||||||
import icu.samnyan.aqua.sega.diva.model.BaseRequest
|
import aquadx.sega.diva.model.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.ShopCatalogResponse
|
import aquadx.sega.diva.model.ShopCatalogResponse
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import aquadx.sega.diva.util.URIEncoder.encode
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
+5
-5
@@ -1,10 +1,10 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.invoke
|
import ext.invoke
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.BuyCstmzItmRequest
|
import aquadx.sega.diva.model.BuyCstmzItmRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.BuyCstmzItmResponse
|
import aquadx.sega.diva.model.BuyCstmzItmResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.BuyModuleRequest
|
import aquadx.sega.diva.model.BuyModuleRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.BuyModuleResponse
|
import aquadx.sega.diva.model.BuyModuleResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+10
-10
@@ -1,14 +1,14 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.GetPvPdRequest
|
import aquadx.sega.diva.model.GetPvPdRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.GetPvPdResponse
|
import aquadx.sega.diva.model.GetPvPdResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import aquadx.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import aquadx.sega.diva.model.common.Edition
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvCustomize
|
import aquadx.sega.diva.model.db.userdata.PlayerPvCustomize
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvRecord
|
import aquadx.sega.diva.model.db.userdata.PlayerPvRecord
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaTime
|
import aquadx.sega.diva.util.DivaTime
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import aquadx.sega.diva.util.URIEncoder.encode
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
+6
-6
@@ -1,11 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.csv
|
import ext.csv
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.ShopExitRequest
|
import aquadx.sega.diva.model.ShopExitRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.ShopExitResponse
|
import aquadx.sega.diva.model.ShopExitResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import aquadx.sega.diva.model.common.Result
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvCustomize
|
import aquadx.sega.diva.model.db.userdata.PlayerPvCustomize
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
+7
-7
@@ -1,12 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.StageResultRequest
|
import aquadx.sega.diva.model.StageResultRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.StageResultResponse
|
import aquadx.sega.diva.model.StageResultResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.*
|
import aquadx.sega.diva.model.common.*
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.*
|
import aquadx.sega.diva.model.db.userdata.*
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaCalculator
|
import aquadx.sega.diva.util.DivaCalculator
|
||||||
import org.apache.commons.lang3.StringUtils
|
import org.apache.commons.lang3.StringUtils
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.lang.String
|
import java.lang.String
|
||||||
+3
-3
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.emptyMap
|
import ext.emptyMap
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.StageStartRequest
|
import aquadx.sega.diva.model.StageStartRequest
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+6
-6
@@ -1,12 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package aquadx.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.csv
|
import ext.csv
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.DIVA_BAD
|
import aquadx.sega.diva.DIVA_BAD
|
||||||
import icu.samnyan.aqua.sega.diva.DIVA_OK
|
import aquadx.sega.diva.DIVA_OK
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.StoreSsRequest
|
import aquadx.sega.diva.model.StoreSsRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerScreenShot
|
import aquadx.sega.diva.model.db.userdata.PlayerScreenShot
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.multipart.MultipartFile
|
import org.springframework.web.multipart.MultipartFile
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
+11
-11
@@ -1,15 +1,15 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package aquadx.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DIVA_OK
|
import aquadx.sega.diva.DIVA_OK
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.StageResultRequest
|
import aquadx.sega.diva.model.StageResultRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.ContestBorder
|
import aquadx.sega.diva.model.common.ContestBorder
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import aquadx.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import aquadx.sega.diva.model.common.Edition
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.SortMode
|
import aquadx.sega.diva.model.common.SortMode
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.gamedata.Contest
|
import aquadx.sega.diva.model.db.gamedata.Contest
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerContest
|
import aquadx.sega.diva.model.db.userdata.PlayerContest
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaStringUtils
|
import aquadx.sega.diva.util.DivaStringUtils
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.lang.String
|
import java.lang.String
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package aquadx.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DIVA_OK
|
import aquadx.sega.diva.DIVA_OK
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.PdUnlockRequest
|
import aquadx.sega.diva.model.PdUnlockRequest
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
+7
-7
@@ -1,13 +1,13 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package aquadx.sega.diva.handler.user
|
||||||
|
|
||||||
import ext.invoke
|
import ext.invoke
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.PreStartRequest
|
import aquadx.sega.diva.model.PreStartRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.PreStartResponse
|
import aquadx.sega.diva.model.PreStartResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.PreStartResult
|
import aquadx.sega.diva.model.common.PreStartResult
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.StartMode
|
import aquadx.sega.diva.model.common.StartMode
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.GameSession
|
import aquadx.sega.diva.model.db.userdata.GameSession
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.concurrent.ThreadLocalRandom
|
import java.util.concurrent.ThreadLocalRandom
|
||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package aquadx.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.SpendCreditRequest
|
import aquadx.sega.diva.model.SpendCreditRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.SpendCreditResponse
|
import aquadx.sega.diva.model.SpendCreditResponse
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
+11
-11
@@ -1,15 +1,15 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package aquadx.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaRepos
|
import aquadx.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.StartRequest
|
import aquadx.sega.diva.model.StartRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.StartResponse
|
import aquadx.sega.diva.model.StartResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.*
|
import aquadx.sega.diva.model.common.*
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.collection.ClearTally
|
import aquadx.sega.diva.model.common.collection.ClearTally
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.GameSession
|
import aquadx.sega.diva.model.db.userdata.GameSession
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerContest
|
import aquadx.sega.diva.model.db.userdata.PlayerContest
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerProfile
|
import aquadx.sega.diva.model.db.userdata.PlayerProfile
|
||||||
import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvRecord
|
import aquadx.sega.diva.model.db.userdata.PlayerPvRecord
|
||||||
import icu.samnyan.aqua.sega.diva.util.PvRecordDataException
|
import aquadx.sega.diva.util.PvRecordDataException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.util
|
package aquadx.sega.diva.util
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.json.JsonWriteFeature
|
import com.fasterxml.jackson.core.json.JsonWriteFeature
|
||||||
import com.fasterxml.jackson.core.type.TypeReference
|
import com.fasterxml.jackson.core.type.TypeReference
|
||||||
@@ -8,9 +8,9 @@ import com.fasterxml.jackson.databind.json.JsonMapper
|
|||||||
import com.fasterxml.jackson.databind.module.SimpleModule
|
import com.fasterxml.jackson.databind.module.SimpleModule
|
||||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
|
||||||
import ext.JDict
|
import ext.JDict
|
||||||
import icu.samnyan.aqua.sega.util.BooleanNumberDeserializer
|
import aquadx.sega.util.BooleanNumberDeserializer
|
||||||
import icu.samnyan.aqua.sega.util.BooleanNumberSerializer
|
import aquadx.sega.util.BooleanNumberSerializer
|
||||||
import icu.samnyan.aqua.sega.util.ZonedDateTimeDeserializer
|
import aquadx.sega.util.ZonedDateTimeDeserializer
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.time.ZonedDateTime
|
import java.time.ZonedDateTime
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package aquadx.sega.diva.util
|
||||||
|
|
||||||
|
import aquadx.sega.diva.PlayerPvRecordRepository
|
||||||
|
import aquadx.sega.diva.model.common.Edition
|
||||||
|
import aquadx.sega.diva.model.common.LevelInfo
|
||||||
|
import aquadx.sega.diva.model.db.userdata.PlayerProfile
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class DivaCalculator(private val playerPvRecordRepository: PlayerPvRecordRepository) {
|
||||||
|
fun getLevelInfo(profile: PlayerProfile): LevelInfo {
|
||||||
|
val recordList = playerPvRecordRepository.findByPdIdAndEdition(profile, Edition.ORIGINAL)
|
||||||
|
var totalAttain = 0
|
||||||
|
for (record in recordList) {
|
||||||
|
totalAttain += record.maxAttain
|
||||||
|
}
|
||||||
|
|
||||||
|
val level = totalAttain / 13979
|
||||||
|
val exp = ((totalAttain % 13979) / 13979.0f * 100.0f).roundToInt()
|
||||||
|
|
||||||
|
return LevelInfo(level + 1, exp)
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.util
|
package aquadx.sega.diva.util
|
||||||
|
|
||||||
class PvRecordDataException(message: String?) : RuntimeException(message)
|
class PvRecordDataException(message: String?) : RuntimeException(message)
|
||||||
class SessionNotFoundException : RuntimeException()
|
class SessionNotFoundException : RuntimeException()
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.general
|
package aquadx.sega.general
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException
|
import com.fasterxml.jackson.core.JsonProcessingException
|
||||||
import ext.*
|
import ext.*
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package icu.samnyan.aqua.sega.general
|
package aquadx.sega.general
|
||||||
|
|
||||||
import ext.*
|
import ext.*
|
||||||
import jakarta.persistence.EntityManager
|
import jakarta.persistence.EntityManager
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package icu.samnyan.aqua.sega.general.dao
|
package aquadx.sega.general.dao
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.general.model.Card
|
import aquadx.sega.general.model.Card
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
|
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package icu.samnyan.aqua.sega.general.dao
|
package aquadx.sega.general.dao
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.general.model.PropertyEntry
|
import aquadx.sega.general.model.PropertyEntry
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
import java.util.*
|
import java.util.*
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user