mirror of https://github.com/hykilpikonna/AquaDX
[+] Ongeki export
parent
d5b4e1ca14
commit
67d2e52fbc
|
@ -237,6 +237,7 @@ fun Str.path() = Path.of(this)
|
|||
operator fun Path.div(part: Str) = resolve(part)
|
||||
operator fun File.div(fileName: Str) = File(this, fileName)
|
||||
fun Str.ensureEndingSlash() = if (endsWith('/')) this else "$this/"
|
||||
fun Str.ensureNoEndingSlash() = if (endsWith('/')) dropLast(1) else this
|
||||
|
||||
fun <T: Any> T.logger() = LoggerFactory.getLogger(this::class.java)
|
||||
|
||||
|
|
|
@ -7,12 +7,12 @@ data class Chu3DataExport(
|
|||
override var gameId: String = "SDHD",
|
||||
override var userData: Chu3UserData,
|
||||
var userGameOption: UserGameOption,
|
||||
var userActivityList: List<UserActivity>,
|
||||
var userActivityList: List<Chu3UserActivity>,
|
||||
var userCharacterList: List<UserCharacter>,
|
||||
var userChargeList: List<UserCharge>,
|
||||
var userCourseList: List<UserCourse>,
|
||||
var userDuelList: List<UserDuel>,
|
||||
var userItemList: List<UserItem>,
|
||||
var userItemList: List<Chu3UserItem>,
|
||||
var userMapList: List<UserMap>,
|
||||
var userMusicDetailList: List<UserMusicDetail>,
|
||||
var userPlaylogList: List<UserPlaylog>,
|
||||
|
|
|
@ -17,13 +17,13 @@ import java.util.List;
|
|||
public class ChuniDataImport {
|
||||
private String gameId;
|
||||
private ExternalUserData userData;
|
||||
private List<UserActivity> userActivityList;
|
||||
private List<Chu3UserActivity> userActivityList;
|
||||
private List<UserCharacter> userCharacterList;
|
||||
private List<UserCharge> userChargeList;
|
||||
private List<UserCourse> userCourseList;
|
||||
private List<UserDuel> userDuelList;
|
||||
private UserGameOption userGameOption;
|
||||
private List<UserItem> userItemList;
|
||||
private List<Chu3UserItem> userItemList;
|
||||
private List<UserMap> userMapList;
|
||||
private List<UserMusicDetail> userMusicDetailList;
|
||||
private List<UserPlaylog> userPlaylogList;
|
||||
|
|
|
@ -31,10 +31,10 @@ class Chu3Import(
|
|||
artemisRenames = mapOf(
|
||||
"chuni_item_character" to ImportClass(UserCharacter::class),
|
||||
"chuni_item_duel" to ImportClass(UserDuel::class),
|
||||
"chuni_item_item" to ImportClass(UserItem::class, mapOf("isValid" to "valid")),
|
||||
"chuni_item_item" to ImportClass(Chu3UserItem::class, mapOf("isValid" to "valid")),
|
||||
// "chuni_item_login_bonus" to ImportClass(UserLoginBonus::class, mapOf("isWatched" to "watched")),
|
||||
"chuni_item_map_area" to ImportClass(UserMap::class),
|
||||
"chuni_profile_activity" to ImportClass(UserActivity::class, mapOf("activityId" to "id")),
|
||||
"chuni_profile_activity" to ImportClass(Chu3UserActivity::class, mapOf("activityId" to "id")),
|
||||
"chuni_profile_charge" to ImportClass(UserCharge::class),
|
||||
"chuni_profile_data" to ImportClass(Chu3UserData::class, mapOf("user" to null, "version" to null, "isNetMember" to null)),
|
||||
"chuni_profile_option" to ImportClass(UserGameOption::class, mapOf("version" to null)),
|
||||
|
|
|
@ -47,6 +47,7 @@ class AllNetClient(val dns: String, val keychip: String, val game: String, val v
|
|||
fun findDataBroker(log: (String) -> Unit) = when (game) {
|
||||
"SDHD" -> ChusanDataBroker(this, log)
|
||||
"SDEZ", "SDGA" -> MaimaiDataBroker(this, log)
|
||||
"SDDT" -> OngekiDataBroker(this, log)
|
||||
else -> throw IllegalArgumentException("Unsupported game: $game")
|
||||
}
|
||||
}
|
|
@ -2,13 +2,15 @@ package icu.samnyan.aqua.net.transfer
|
|||
|
||||
import ext.*
|
||||
import icu.samnyan.aqua.sega.chusan.model.request.Chu3UserAll
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserActivity
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserActivity
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
|
||||
import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UserAll
|
||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserFavorite
|
||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserItem
|
||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail
|
||||
import icu.samnyan.aqua.sega.ongeki.model.request.UpsertUserAll
|
||||
import icu.samnyan.aqua.sega.ongeki.model.userdata.UserItem
|
||||
import icu.samnyan.aqua.sega.util.jackson.BasicMapper
|
||||
import icu.samnyan.aqua.sega.util.jackson.IMapper
|
||||
import icu.samnyan.aqua.sega.util.jackson.StringMapper
|
||||
|
@ -70,13 +72,10 @@ class ChusanDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker(
|
|||
userGameOption = ls("GetUserOptionApi".get("userGameOption", userId))
|
||||
userCharacterList = "GetUserCharacterApi".get("userCharacterList", paged)
|
||||
userActivityList = (1..5).flatMap {
|
||||
"GetUserActivityApi".get<List<UserActivity>>("userActivityList", userId + mapOf("kind" to it))
|
||||
"GetUserActivityApi".get<List<Chu3UserActivity>>("userActivityList", userId + mapOf("kind" to it))
|
||||
}
|
||||
userItemList = (1..12).flatMap {
|
||||
"GetUserItemApi".get<List<UserItem>>(
|
||||
"userItemList",
|
||||
userId + mapOf("nextIndex" to 10000000000 * it, "maxCount" to 10000000)
|
||||
)
|
||||
"GetUserItemApi".get<List<Chu3UserItem>>("userItemList", paged + mapOf("nextIndex" to 10000000000 * it))
|
||||
}
|
||||
userRecentRatingList = "GetUserRecentRatingApi".get("userRecentRatingList", userId)
|
||||
userMusicDetailList = "GetUserMusicApi".get<List<UserMusicWrapper>>("userMusicList", paged)
|
||||
|
@ -125,5 +124,45 @@ class MaimaiDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker(
|
|||
// TODO: userFavoriteMusicList
|
||||
}.toJson()
|
||||
}
|
||||
}
|
||||
|
||||
class OngekiDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker(allNet, log) {
|
||||
override val mapper = BasicMapper()
|
||||
override val url by lazy { allNet.gameUrl.ensureNoEndingSlash() }
|
||||
|
||||
override fun pull(): String {
|
||||
val (userId, paged) = prePull()
|
||||
|
||||
return UpsertUserAll().apply {
|
||||
userData = ls("GetUserDataApi".get("userData", userId))
|
||||
userOption = ls("GetUserOptionApi".get("userOption", userId))
|
||||
userMusicItemList = "GetUserMusicItemApi".get("userMusicItemList", paged)
|
||||
userBossList = "GetUserBossApi".get("userBossList", userId)
|
||||
userMusicDetailList = "GetUserMusicApi".get("userMusicList", paged)
|
||||
userTechCountList = "GetUserTechCountApi".get("userTechCountList", userId)
|
||||
userCardList = "GetUserCardApi".get("userCardList", paged)
|
||||
userCharacterList = "GetUserCharacterApi".get("userCharacterList", paged)
|
||||
userStoryList = "GetUserStoryApi".get("userStoryList", userId)
|
||||
userChapterList = "GetUserChapterApi".get("userChapterList", userId)
|
||||
userMemoryChapterList = "GetUserMemoryChapterApi".get("userMemoryChapterList", userId)
|
||||
userDeckList = "GetUserDeckByKeyApi".get("userDeckList", userId + mapOf("authKey" to ""))
|
||||
userTrainingRoomList = "GetUserTrainingRoomByKeyApi".get("userTrainingRoomList", userId + mapOf("authKey" to ""))
|
||||
userActivityList = "GetUserActivityApi".get("userActivityList", userId + mapOf("kind" to 1))
|
||||
userRatinglogList = "GetUserRatinglogApi".get("userRatinglogList", userId)
|
||||
userRecentRatingList = "GetUserRecentRatingApi".get("userRecentRatingList", userId)
|
||||
userItemList = ls(2, 3, 4, 8, 9, 11, 12, 13, 14, 15, 16, 17, 19, 20).flatMap {
|
||||
"GetUserItemApi".get<List<UserItem>>("userItemList", paged + mapOf("nextIndex" to 10000000000 * it))
|
||||
}
|
||||
userEventPointList = "GetUserEventPointApi".get("userEventPointList", userId)
|
||||
userMissionPointList = "GetUserMissionPointApi".get("userMissionPointList", userId)
|
||||
userLoginBonusList = "GetUserLoginBonusApi".get("userLoginBonusList", userId)
|
||||
userScenarioList = "GetUserScenarioApi".get("userScenarioList", userId)
|
||||
userTradeItemList = "GetUserTradeItemApi".get("userTradeItemList", userId + mapOf("startChapterId" to 0, "endChapterId" to 99999))
|
||||
userEventMusicList = "GetUserEventMusicApi".get("userEventMusicList", userId)
|
||||
userTechEventList = "GetUserTechEventRankingApi".get("userTechEventRankingList", userId)
|
||||
userKopList = "GetUserKopApi".get("userKopList", userId)
|
||||
}.toJson()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -5,7 +5,7 @@ import icu.samnyan.aqua.sega.allnet.TokenChecker
|
|||
import icu.samnyan.aqua.sega.chusan.ChusanController
|
||||
import icu.samnyan.aqua.sega.chusan.ChusanData
|
||||
import icu.samnyan.aqua.sega.chusan.model.request.UserCMissionResp
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
|
||||
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
@ -179,7 +179,7 @@ fun ChusanController.chusanInit() {
|
|||
db.userData.findByCard_ExtId(uid)()?.card?.aquaUser?.gameOptions?.let {
|
||||
if (it.chusanInfinitePenguins && kind == 5) {
|
||||
items.removeAll { it.itemId in penguins }
|
||||
items.addAll(penguins.map { UserItem(kind, it, 999, true) })
|
||||
items.addAll(penguins.map { Chu3UserItem(kind, it, 999, true) })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import icu.samnyan.aqua.sega.chusan.ChusanController
|
|||
import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserGacha
|
||||
import icu.samnyan.aqua.sega.chusan.model.request.UserEmoney
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
||||
import java.time.LocalDateTime
|
||||
|
||||
fun ChusanController.cmApiInit() {
|
||||
|
@ -76,7 +76,7 @@ fun ChusanController.cmApiInit() {
|
|||
|
||||
"CMUpsertUserPrintSubtract" api@ {
|
||||
val userCardPrintState = cmMapper.convert<UserCardPrintState>(parsing { data["userCardPrintState"]!! })
|
||||
val userItemList = cmMapper.convert<List<UserItem>>(parsing { data["userItemList"]!! })
|
||||
val userItemList = cmMapper.convert<List<Chu3UserItem>>(parsing { data["userItemList"]!! })
|
||||
|
||||
val u = db.userData.findByCard_ExtId(uid)() ?: return@api null
|
||||
|
||||
|
|
|
@ -40,11 +40,11 @@ interface Chu3UserLoginBonusRepo : JpaRepository<UserLoginBonus, Long> {
|
|||
fun findLoginBonus(userId: Int, version: Int, presetId: Long): Optional<UserLoginBonus>
|
||||
}
|
||||
|
||||
interface Chu3UserActivityRepo : Chu3UserLinked<UserActivity> {
|
||||
fun findTopByUserAndActivityIdAndKindOrderByIdDesc(user: Chu3UserData, activityId: Int, kind: Int): Optional<UserActivity>
|
||||
fun findByUserAndActivityIdAndKind(user: Chu3UserData, activityId: Int, kind: Int): UserActivity?
|
||||
interface Chu3UserActivityRepo : Chu3UserLinked<Chu3UserActivity> {
|
||||
fun findTopByUserAndActivityIdAndKindOrderByIdDesc(user: Chu3UserData, activityId: Int, kind: Int): Optional<Chu3UserActivity>
|
||||
fun findByUserAndActivityIdAndKind(user: Chu3UserData, activityId: Int, kind: Int): Chu3UserActivity?
|
||||
|
||||
fun findAllByUser_Card_ExtIdAndKind(extId: Long, kind: Int): List<UserActivity>
|
||||
fun findAllByUser_Card_ExtIdAndKind(extId: Long, kind: Int): List<Chu3UserActivity>
|
||||
}
|
||||
|
||||
interface Chu3UserCardPrintStateRepo : Chu3UserLinked<UserCardPrintState> {
|
||||
|
@ -89,14 +89,14 @@ interface Chu3UserGeneralDataRepo : Chu3UserLinked<UserGeneralData> {
|
|||
fun findByUser_Card_ExtIdAndPropertyKey(extId: Long, key: String): Optional<UserGeneralData>
|
||||
}
|
||||
|
||||
interface Chu3UserItemRepo : Chu3UserLinked<UserItem> {
|
||||
fun findAllByUser(user: Chu3UserData): List<UserItem>
|
||||
fun findTopByUserAndItemIdAndItemKindOrderByIdDesc(user: Chu3UserData, itemId: Int, itemKind: Int): Optional<UserItem>
|
||||
fun findByUserAndItemIdAndItemKind(user: Chu3UserData, itemId: Int, itemKind: Int): UserItem?
|
||||
interface Chu3UserItemRepo : Chu3UserLinked<Chu3UserItem> {
|
||||
fun findAllByUser(user: Chu3UserData): List<Chu3UserItem>
|
||||
fun findTopByUserAndItemIdAndItemKindOrderByIdDesc(user: Chu3UserData, itemId: Int, itemKind: Int): Optional<Chu3UserItem>
|
||||
fun findByUserAndItemIdAndItemKind(user: Chu3UserData, itemId: Int, itemKind: Int): Chu3UserItem?
|
||||
|
||||
fun findAllByUser_Card_ExtIdAndItemKind(extId: Long, itemKind: Int, pageable: Pageable): Page<UserItem>
|
||||
fun findAllByUser_Card_ExtIdAndItemKind(extId: Long, itemKind: Int, pageable: Pageable): Page<Chu3UserItem>
|
||||
|
||||
fun findAllByUser_Card_ExtIdAndItemKind(extId: Long, itemKind: Int): List<UserItem>
|
||||
fun findAllByUser_Card_ExtIdAndItemKind(extId: Long, itemKind: Int): List<Chu3UserItem>
|
||||
}
|
||||
|
||||
interface Chu3UserMapRepo : Chu3UserLinked<UserMap> {
|
||||
|
|
|
@ -41,9 +41,9 @@ class Chu3UserAll(
|
|||
var userData: List<Chu3UserData>? = null,
|
||||
var userGameOption: List<UserGameOption>? = null,
|
||||
var userCharacterList: List<UserCharacter>? = null,
|
||||
var userItemList: List<UserItem>? = null,
|
||||
var userItemList: List<Chu3UserItem>? = null,
|
||||
var userMusicDetailList: List<UserMusicDetail>? = null,
|
||||
var userActivityList: List<UserActivity>? = null,
|
||||
var userActivityList: List<Chu3UserActivity>? = null,
|
||||
var userRecentRatingList: List<UserRecentRating>? = null,
|
||||
var userPlaylogList: List<UserPlaylog>? = null,
|
||||
var userChargeList: List<UserCharge>? = null,
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
|
|||
import icu.samnyan.aqua.sega.chusan.model.GameGachaCard
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
|
||||
import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserItem
|
||||
import java.io.Serializable
|
||||
|
||||
class UpsertUserGacha : Serializable {
|
||||
|
@ -13,7 +13,7 @@ class UpsertUserGacha : Serializable {
|
|||
var userCharacterList: List<Any>? = null
|
||||
var userCardList: List<Any>? = null
|
||||
var gameGachaCardList: List<GameGachaCard>? = null
|
||||
var userItemList: List<UserItem>? = null
|
||||
var userItemList: List<Chu3UserItem>? = null
|
||||
|
||||
@JsonProperty("isNewCharacterList")
|
||||
var isNewCharacterList: String? = null
|
||||
|
|
|
@ -8,7 +8,7 @@ import jakarta.persistence.UniqueConstraint
|
|||
|
||||
@Entity(name = "ChusanUserActivity")
|
||||
@Table(name = "chusan_user_activity", uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "kind", "activity_id"])])
|
||||
class UserActivity : Chu3UserEntity() {
|
||||
class Chu3UserActivity : Chu3UserEntity() {
|
||||
var kind = 0
|
||||
@JsonProperty("id")
|
||||
@Column(name = "activity_id")
|
|
@ -7,7 +7,7 @@ import jakarta.persistence.UniqueConstraint
|
|||
|
||||
@Entity(name = "ChusanUserItem")
|
||||
@Table(name = "chusan_user_item", uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "item_id", "item_kind"])])
|
||||
class UserItem(
|
||||
class Chu3UserItem(
|
||||
var itemKind: Int = 0,
|
||||
var itemId: Int = 0,
|
||||
var stock: Int = 1,
|
Loading…
Reference in New Issue