mirror of
https://github.com/MewoLab/AquaDX.git
synced 2025-10-25 20:12:39 +00:00
add mai2 fields
This commit is contained in:
parent
ac6cbb9dd3
commit
11dbe849cf
@ -84,13 +84,11 @@ abstract class ImportController<ExportModel: IExportClass<UserModel>, UserModel:
|
|||||||
gameId = game
|
gameId = game
|
||||||
userData = userDataRepo.findByCard(u.ghostCard) ?: (404 - "User not found")
|
userData = userDataRepo.findByCard(u.ghostCard) ?: (404 - "User not found")
|
||||||
exportRepos.forEach { (f, u) ->
|
exportRepos.forEach { (f, u) ->
|
||||||
val customExporter = customExporters[f]
|
if (f returns List::class) f.set(this, u.findByUser(userData))
|
||||||
if (customExporter != null) {
|
else u.findSingleByUser(userData)()?.let { f.set(this, it) }
|
||||||
customExporter(userData, options)?.let { f.set(this, it) }
|
}
|
||||||
} else {
|
customExporters.forEach { (f, exporter) ->
|
||||||
if (f returns List::class) f.set(this, u.findByUser(userData))
|
exporter(userData, options)?.let { f.set(this, it) }
|
||||||
else u.findSingleByUser(userData)()?.let { f.set(this, it) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,8 +104,9 @@ abstract class ImportController<ExportModel: IExportClass<UserModel>, UserModel:
|
|||||||
val export = json.parseJackson(exportClass.java)
|
val export = json.parseJackson(exportClass.java)
|
||||||
if (!export.gameId.equals(game, true)) 400 - "Invalid game ID"
|
if (!export.gameId.equals(game, true)) 400 - "Invalid game ID"
|
||||||
|
|
||||||
val lists = listRepos.toList().filter { (f, _) -> f !in customImporters }.associate { (f, r) -> r to f.get(export) as List<IUserEntity<UserModel>> }.vNotNull()
|
val lists = listRepos.toList().associate { (f, r) -> r to f.get(export) as List<IUserEntity<UserModel>> }.vNotNull()
|
||||||
val singles = singleRepos.toList().filter { (f, _) -> f !in customImporters }.associate { (f, r) -> r to f.get(export) as IUserEntity<UserModel> }.vNotNull()
|
val singles = singleRepos.toList().associate { (f, r) -> r to f.get(export) as IUserEntity<UserModel> }.vNotNull()
|
||||||
|
var repoFieldMap = exportRepos.toList().associate { (f, r) -> r to f }
|
||||||
|
|
||||||
// Validate new user data
|
// Validate new user data
|
||||||
// Check that all ids are 0 (this should be true since all ids are @JsonIgnore)
|
// Check that all ids are 0 (this should be true since all ids are @JsonIgnore)
|
||||||
|
|||||||
@ -24,7 +24,7 @@ class Mai2Import(
|
|||||||
it.name.replace("List", "").lowercase()
|
it.name.replace("List", "").lowercase()
|
||||||
},
|
},
|
||||||
exportRepos = Maimai2DataExport::class.vars()
|
exportRepos = Maimai2DataExport::class.vars()
|
||||||
.filter { f -> f.name !in setOf("gameId", "userData") }
|
.filter { f -> f.name !in setOf("gameId", "userData", "userPlaylogList", "userFavoriteMusicList") }
|
||||||
.associateWith { field ->
|
.associateWith { field ->
|
||||||
val repoName = when (field.name) {
|
val repoName = when (field.name) {
|
||||||
"userKaleidxScopeList" -> "userKaleidx"
|
"userKaleidxScopeList" -> "userKaleidx"
|
||||||
@ -70,14 +70,18 @@ class Mai2Import(
|
|||||||
}
|
}
|
||||||
) as Map<kotlin.reflect.KMutableProperty1<Maimai2DataExport, Any>, (Mai2UserDetail, ExportOptions) -> Any?>,
|
) as Map<kotlin.reflect.KMutableProperty1<Maimai2DataExport, Any>, (Mai2UserDetail, ExportOptions) -> Any?>,
|
||||||
customImporters = mapOf(
|
customImporters = mapOf(
|
||||||
|
Maimai2DataExport::userPlaylogList to { export: Maimai2DataExport, user: Mai2UserDetail ->
|
||||||
|
repos.userPlaylog.saveAll(export.userPlaylogList.map { it.apply { it.user = user } })
|
||||||
|
},
|
||||||
Maimai2DataExport::userFavoriteMusicList to { export: Maimai2DataExport, user: Mai2UserDetail ->
|
Maimai2DataExport::userFavoriteMusicList to { export: Maimai2DataExport, user: Mai2UserDetail ->
|
||||||
val favoriteMusicList = export.userFavoriteMusicList
|
val favoriteMusicList = export.userFavoriteMusicList
|
||||||
if (favoriteMusicList.isNotEmpty()) {
|
if (favoriteMusicList.isNotEmpty()) {
|
||||||
val key = "favorite_music"
|
val key = "favorite_music"
|
||||||
|
// This field always imports as incremental, since the userGeneralData field (for backwards compatibility) is processed before this
|
||||||
val data = repos.userGeneralData.findByUserAndPropertyKey(user, key).orElse(null)
|
val data = repos.userGeneralData.findByUserAndPropertyKey(user, key).orElse(null)
|
||||||
?: Mai2UserGeneralData().apply { this.user = user; propertyKey = key }
|
?: Mai2UserGeneralData().apply { this.user = user; propertyKey = key }
|
||||||
repos.userGeneralData.save(data.apply {
|
repos.userGeneralData.save(data.apply {
|
||||||
propertyValue = favoriteMusicList.map { it.id }.joinToString(",")
|
propertyValue = favoriteMusicList.sortedBy { it.orderId }.map { it.id }.joinToString(",")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -88,30 +92,25 @@ class Mai2Import(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class Maimai2DataExport(
|
data class Maimai2DataExport(
|
||||||
override var userData: Mai2UserDetail,
|
override var userData: Mai2UserDetail = Mai2UserDetail(),
|
||||||
var userExtend: Mai2UserExtend,
|
var userExtend: Mai2UserExtend = Mai2UserExtend(),
|
||||||
var userOption: Mai2UserOption,
|
var userOption: Mai2UserOption = Mai2UserOption(),
|
||||||
var userUdemae: Mai2UserUdemae,
|
var userUdemae: Mai2UserUdemae = Mai2UserUdemae(),
|
||||||
var mapEncountNpcList: List<Mai2MapEncountNpc>,
|
var mapEncountNpcList: List<Mai2MapEncountNpc> = mutableListOf(),
|
||||||
var userActList: List<Mai2UserAct>,
|
var userActList: List<Mai2UserAct> = mutableListOf(),
|
||||||
var userCharacterList: List<Mai2UserCharacter>,
|
var userCharacterList: List<Mai2UserCharacter> = mutableListOf(),
|
||||||
var userChargeList: List<Mai2UserCharge>,
|
var userChargeList: List<Mai2UserCharge> = mutableListOf(),
|
||||||
var userCourseList: List<Mai2UserCourse>,
|
var userCourseList: List<Mai2UserCourse> = mutableListOf(),
|
||||||
var userFavoriteList: List<Mai2UserFavorite>,
|
var userFavoriteList: List<Mai2UserFavorite> = mutableListOf(),
|
||||||
var userFriendSeasonRankingList: List<Mai2UserFriendSeasonRanking>,
|
var userFriendSeasonRankingList: List<Mai2UserFriendSeasonRanking> = mutableListOf(),
|
||||||
var userGeneralDataList: List<Mai2UserGeneralData>,
|
var userGeneralDataList: List<Mai2UserGeneralData> = mutableListOf(),
|
||||||
var userItemList: List<Mai2UserItem>,
|
var userItemList: List<Mai2UserItem> = mutableListOf(),
|
||||||
var userLoginBonusList: List<Mai2UserLoginBonus>,
|
var userLoginBonusList: List<Mai2UserLoginBonus> = mutableListOf(),
|
||||||
var userMapList: List<Mai2UserMap>,
|
var userMapList: List<Mai2UserMap> = mutableListOf(),
|
||||||
var userMusicDetailList: List<Mai2UserMusicDetail>,
|
var userMusicDetailList: List<Mai2UserMusicDetail> = mutableListOf(),
|
||||||
var userIntimateList: List<Mai2UserIntimate>,
|
var userIntimateList: List<Mai2UserIntimate> = mutableListOf(),
|
||||||
var userFavoriteMusicList: List<Mai2UserFavoriteItem>,
|
var userFavoriteMusicList: List<Mai2UserFavoriteItem> = mutableListOf(),
|
||||||
var userKaleidxScopeList: List<Mai2UserKaleidx>,
|
var userKaleidxScopeList: List<Mai2UserKaleidx> = mutableListOf(),
|
||||||
var userPlaylogList: List<Mai2UserPlaylog>,
|
var userPlaylogList: List<Mai2UserPlaylog> = mutableListOf(),
|
||||||
override var gameId: String = "SDEZ",
|
override var gameId: String = "SDEZ",
|
||||||
): IExportClass<Mai2UserDetail> {
|
): IExportClass<Mai2UserDetail>
|
||||||
constructor() : this(Mai2UserDetail(), Mai2UserExtend(), Mai2UserOption(), Mai2UserUdemae(),
|
|
||||||
mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(),
|
|
||||||
mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(),
|
|
||||||
mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf())
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user