mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-02-10 09:17:28 +08:00
[O] Use global db
This commit is contained in:
@@ -27,6 +27,7 @@ class DivaGameRepos(
|
|||||||
@Component
|
@Component
|
||||||
class DivaRepos(
|
class DivaRepos(
|
||||||
val g: DivaGameRepos,
|
val g: DivaGameRepos,
|
||||||
|
val s: DivaServices,
|
||||||
val gameSession: GameSessionRepository,
|
val gameSession: GameSessionRepository,
|
||||||
val playLog: PlayLogRepository,
|
val playLog: PlayLogRepository,
|
||||||
val contest: PlayerContestRepository,
|
val contest: PlayerContestRepository,
|
||||||
63
src/main/java/icu/samnyan/aqua/sega/diva/DivaServices.kt
Normal file
63
src/main/java/icu/samnyan/aqua/sega/diva/DivaServices.kt
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
package icu.samnyan.aqua.sega.diva
|
||||||
|
|
||||||
|
import icu.samnyan.aqua.sega.diva.model.request.card.RegistrationRequest
|
||||||
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerCustomize
|
||||||
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerModule
|
||||||
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile
|
||||||
|
import org.apache.commons.lang3.StringUtils
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
import org.springframework.stereotype.Service
|
||||||
|
import java.math.BigInteger
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class DivaServices(
|
||||||
|
val profile: PlayerProfileService,
|
||||||
|
val module: PlayerModuleService,
|
||||||
|
val customize: PlayerCustomizeService
|
||||||
|
)
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class PlayerModuleService(val repo: PlayerModuleRepository) {
|
||||||
|
fun buy(profile: PlayerProfile, moduleId: Int) = repo.save(PlayerModule(profile, moduleId))
|
||||||
|
|
||||||
|
fun getModuleHaveString(profile: PlayerProfile): String {
|
||||||
|
val moduleList = repo.findByPdId(profile)
|
||||||
|
var module_have = BigInteger("0")
|
||||||
|
for (module in moduleList) {
|
||||||
|
module_have = module_have.or(BigInteger.valueOf(1).shiftLeft(module.moduleId))
|
||||||
|
}
|
||||||
|
println(module_have.toString(2))
|
||||||
|
return StringUtils.leftPad(module_have.toString(16), 250, "0").uppercase(Locale.getDefault())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class PlayerProfileService(val repo: PlayerProfileRepository) {
|
||||||
|
fun findByPdId(pdId: Long): Optional<PlayerProfile> = repo.findByPdId(pdId)
|
||||||
|
|
||||||
|
fun register(request: RegistrationRequest): PlayerProfile {
|
||||||
|
val profile = PlayerProfile()
|
||||||
|
profile.pdId = request.aime_id
|
||||||
|
profile.playerName = request.player_name
|
||||||
|
|
||||||
|
return repo.save(profile)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun save(profile: PlayerProfile) = repo.save(profile)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class PlayerCustomizeService(val repo: PlayerCustomizeRepository) {
|
||||||
|
fun buy(profile: PlayerProfile, customizeId: Int) = repo.save(PlayerCustomize(profile, customizeId))
|
||||||
|
|
||||||
|
fun getModuleHaveString(profile: PlayerProfile): String {
|
||||||
|
val customizeList = repo.findByPdId(profile)
|
||||||
|
var customize_have = BigInteger("0")
|
||||||
|
for (customize in customizeList) {
|
||||||
|
customize_have = customize_have.or(BigInteger.valueOf(1).shiftLeft(customize.customizeId))
|
||||||
|
}
|
||||||
|
return StringUtils.leftPad(customize_have.toString(16), 250, "0")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ package icu.samnyan.aqua.sega.diva.handler.card
|
|||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import icu.samnyan.aqua.sega.diva.model.common.Result
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.card.RegistrationRequest
|
import icu.samnyan.aqua.sega.diva.model.request.card.RegistrationRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.card.RegistrationResponse
|
import icu.samnyan.aqua.sega.diva.model.response.card.RegistrationResponse
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.PlayerProfileService
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package icu.samnyan.aqua.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.ContestRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.gamedata.Contest
|
import icu.samnyan.aqua.sega.diva.model.gamedata.Contest
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.BaseRequest
|
import icu.samnyan.aqua.sega.diva.model.request.BaseRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.databank.ContestInfoResponse
|
import icu.samnyan.aqua.sega.diva.model.response.databank.ContestInfoResponse
|
||||||
@@ -14,9 +14,9 @@ import kotlin.math.max
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class ContestInfoHandler(private val contestRepository: ContestRepository) {
|
class ContestInfoHandler(val db: DivaRepos) {
|
||||||
fun handle(request: BaseRequest): Any {
|
fun handle(request: BaseRequest): Any {
|
||||||
val contestList = contestRepository.findTop8ByEnable(true)
|
val contestList = db.g.contest.findTop8ByEnable(true)
|
||||||
var ci_str = "***"
|
var ci_str = "***"
|
||||||
if (!contestList.isEmpty()) {
|
if (!contestList.isEmpty()) {
|
||||||
val sb = StringBuilder()
|
val sb = StringBuilder()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.databank
|
package icu.samnyan.aqua.sega.diva.handler.databank
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerPvRecordRepository
|
import ext.csv
|
||||||
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.collection.PsRankingCollection
|
import icu.samnyan.aqua.sega.diva.model.common.collection.PsRankingCollection
|
||||||
@@ -10,13 +11,12 @@ import icu.samnyan.aqua.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.*
|
||||||
import java.util.stream.Collectors
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class PsRankingHandler(private val playerPvRecordRepository: PlayerPvRecordRepository) {
|
class PsRankingHandler(val db: DivaRepos) {
|
||||||
fun handle(request: PsRankingRequest): Any {
|
fun handle(request: PsRankingRequest): Any {
|
||||||
var edition = Edition.ORIGINAL
|
var edition = Edition.ORIGINAL
|
||||||
var difficulty = Difficulty.HARD
|
var difficulty = Difficulty.HARD
|
||||||
@@ -33,7 +33,7 @@ class PsRankingHandler(private val playerPvRecordRepository: PlayerPvRecordRepos
|
|||||||
val list = request.rnk_ps_pv_id_lst
|
val list = request.rnk_ps_pv_id_lst
|
||||||
val resultCollections: MutableMap<Int?, PsRankingCollection?> = LinkedHashMap<Int?, PsRankingCollection?>()
|
val resultCollections: MutableMap<Int?, PsRankingCollection?> = LinkedHashMap<Int?, PsRankingCollection?>()
|
||||||
for (i in list) {
|
for (i in list) {
|
||||||
val records = playerPvRecordRepository.findTop3ByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc(
|
val records = db.pvRecord.findTop3ByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc(
|
||||||
i,
|
i,
|
||||||
edition,
|
edition,
|
||||||
difficulty
|
difficulty
|
||||||
@@ -84,16 +84,16 @@ class PsRankingHandler(private val playerPvRecordRepository: PlayerPvRecordRepos
|
|||||||
LocalDateTime.now(),
|
LocalDateTime.now(),
|
||||||
LocalDateTime.now(),
|
LocalDateTime.now(),
|
||||||
request.rnk_ps_idx,
|
request.rnk_ps_idx,
|
||||||
pvIds.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
pvIds.csv,
|
||||||
edition1.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
edition1.csv,
|
||||||
edition2.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
edition2.csv,
|
||||||
edition3.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
edition3.csv,
|
||||||
score1.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
score1.csv,
|
||||||
score2.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
score2.csv,
|
||||||
score3.stream().map<String?> { obj: Int? -> obj.toString() }.collect(Collectors.joining(",")),
|
score3.csv,
|
||||||
name1.stream().map<String?> { obj: String? -> obj.toString() }.collect(Collectors.joining(",")),
|
name1.csv,
|
||||||
name2.stream().map<String?> { obj: String? -> obj.toString() }.collect(Collectors.joining(",")),
|
name2.csv,
|
||||||
name3.stream().map<String?> { obj: String? -> obj.toString() }.collect(Collectors.joining(","))
|
name3.csv
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package icu.samnyan.aqua.sega.diva.handler.ingame
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaCustomizeRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import icu.samnyan.aqua.sega.diva.model.common.Result
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.BuyCstmzItmRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.BuyCstmzItmRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.ingame.BuyCstmzItmResponse
|
import icu.samnyan.aqua.sega.diva.model.response.ingame.BuyCstmzItmResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerCustomizeService
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
@@ -17,20 +14,15 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class BuyCstmzItmHandler(
|
class BuyCstmzItmHandler(val db: DivaRepos) {
|
||||||
private val divaCustomizeRepository: DivaCustomizeRepository,
|
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val playerCustomizeService: PlayerCustomizeService,
|
|
||||||
private val gameSessionRepository: GameSessionRepository
|
|
||||||
) {
|
|
||||||
fun handle(request: BuyCstmzItmRequest): Any {
|
fun handle(request: BuyCstmzItmRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.pd_id).orElseThrow(
|
val profile = db.profile.findByPdId(request.pd_id).orElseThrow(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
|
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow(Supplier { SessionNotFoundException() })
|
.orElseThrow(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
val customizeOptional = divaCustomizeRepository.findById(request.cstmz_itm_id)
|
val customizeOptional = db.g.customize.findById(request.cstmz_itm_id)
|
||||||
|
|
||||||
if (customizeOptional.isEmpty) {
|
if (customizeOptional.isEmpty) {
|
||||||
return BuyCstmzItmResponse(
|
return BuyCstmzItmResponse(
|
||||||
@@ -39,29 +31,27 @@ class BuyCstmzItmHandler(
|
|||||||
"ok",
|
"ok",
|
||||||
Result.FAILED
|
Result.FAILED
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
if (session.vp < customizeOptional.get().price) {
|
|
||||||
return BuyCstmzItmResponse(
|
|
||||||
request.cmd,
|
|
||||||
request.req_id,
|
|
||||||
"ok",
|
|
||||||
Result.FAILED
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
playerCustomizeService.buy(profile, request.cstmz_itm_id)
|
|
||||||
session.vp = session.vp - customizeOptional.get().price
|
|
||||||
gameSessionRepository.save<GameSession?>(session)
|
|
||||||
|
|
||||||
return BuyCstmzItmResponse(
|
|
||||||
request.cmd,
|
|
||||||
request.req_id,
|
|
||||||
"ok",
|
|
||||||
Result.SUCCESS,
|
|
||||||
request.cstmz_itm_id,
|
|
||||||
playerCustomizeService.getModuleHaveString(profile),
|
|
||||||
session.vp
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (session.vp < customizeOptional.get().price) {
|
||||||
|
return BuyCstmzItmResponse(
|
||||||
|
request.cmd,
|
||||||
|
request.req_id,
|
||||||
|
"ok",
|
||||||
|
Result.FAILED
|
||||||
|
)
|
||||||
|
}
|
||||||
|
db.s.customize.buy(profile, request.cstmz_itm_id)
|
||||||
|
session.vp -= customizeOptional.get().price
|
||||||
|
db.gameSession.save<GameSession?>(session)
|
||||||
|
|
||||||
|
return BuyCstmzItmResponse(
|
||||||
|
request.cmd,
|
||||||
|
request.req_id,
|
||||||
|
"ok",
|
||||||
|
Result.SUCCESS,
|
||||||
|
request.cstmz_itm_id,
|
||||||
|
db.s.customize.getModuleHaveString(profile),
|
||||||
|
session.vp
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package icu.samnyan.aqua.sega.diva.handler.ingame
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.DivaModuleRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import icu.samnyan.aqua.sega.diva.model.common.Result
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.BuyModuleRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.BuyModuleRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.ingame.BuyModuleResponse
|
import icu.samnyan.aqua.sega.diva.model.response.ingame.BuyModuleResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerModuleService
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
@@ -17,22 +14,16 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class BuyModuleHandler(
|
class BuyModuleHandler(val db: DivaRepos) {
|
||||||
private val divaModuleRepository: DivaModuleRepository,
|
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val playerModuleService: PlayerModuleService,
|
|
||||||
private val gameSessionRepository: GameSessionRepository
|
|
||||||
) {
|
|
||||||
fun handle(request: BuyModuleRequest): Any {
|
fun handle(request: BuyModuleRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
|
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
val moduleOptional = divaModuleRepository.findById(request.mdl_id)
|
val moduleOptional = db.g.module.findById(request.mdl_id)
|
||||||
|
|
||||||
val response: BuyModuleResponse?
|
|
||||||
if (moduleOptional.isEmpty) {
|
if (moduleOptional.isEmpty) {
|
||||||
return BuyModuleResponse(
|
return BuyModuleResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
@@ -40,29 +31,27 @@ class BuyModuleHandler(
|
|||||||
"ok",
|
"ok",
|
||||||
Result.FAILED
|
Result.FAILED
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
if (session.vp < moduleOptional.get().price) {
|
|
||||||
return BuyModuleResponse(
|
|
||||||
request.cmd,
|
|
||||||
request.req_id,
|
|
||||||
"ok",
|
|
||||||
Result.FAILED
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
playerModuleService.buy(profile, request.mdl_id)
|
|
||||||
session.vp = session.vp - moduleOptional.get().price
|
|
||||||
gameSessionRepository.save<GameSession?>(session)
|
|
||||||
|
|
||||||
return BuyModuleResponse(
|
|
||||||
request.cmd,
|
|
||||||
request.req_id,
|
|
||||||
"ok",
|
|
||||||
Result.SUCCESS,
|
|
||||||
request.mdl_id,
|
|
||||||
playerModuleService.getModuleHaveString(profile),
|
|
||||||
session.vp
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (session.vp < moduleOptional.get().price) {
|
||||||
|
return BuyModuleResponse(
|
||||||
|
request.cmd,
|
||||||
|
request.req_id,
|
||||||
|
"ok",
|
||||||
|
Result.FAILED
|
||||||
|
)
|
||||||
|
}
|
||||||
|
db.s.module.buy(profile, request.mdl_id)
|
||||||
|
session.vp -= moduleOptional.get().price
|
||||||
|
db.gameSession.save<GameSession?>(session)
|
||||||
|
|
||||||
|
return BuyModuleResponse(
|
||||||
|
request.cmd,
|
||||||
|
request.req_id,
|
||||||
|
"ok",
|
||||||
|
Result.SUCCESS,
|
||||||
|
request.mdl_id,
|
||||||
|
db.s.module.getModuleHaveString(profile),
|
||||||
|
session.vp
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package icu.samnyan.aqua.sega.diva.handler.ingame
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerPvCustomizeRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerPvRecordRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.GetPvPdRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.GetPvPdRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.ingame.GetPvPdResponse
|
import icu.samnyan.aqua.sega.diva.model.response.ingame.GetPvPdResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil
|
import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil
|
||||||
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
@@ -19,13 +17,9 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class GetPvPdHandler(
|
class GetPvPdHandler(val db: DivaRepos) {
|
||||||
private val pvRecordRepository: PlayerPvRecordRepository,
|
|
||||||
private val pvCustomizeRepository: PlayerPvCustomizeRepository,
|
|
||||||
private val playerProfileService: PlayerProfileService
|
|
||||||
) {
|
|
||||||
fun handle(request: GetPvPdRequest): Any {
|
fun handle(request: GetPvPdRequest): Any {
|
||||||
val profileO = playerProfileService.findByPdId(request.pd_id)
|
val profileO = db.profile.findByPdId(request.pd_id)
|
||||||
val pd = StringBuilder()
|
val pd = StringBuilder()
|
||||||
|
|
||||||
for (pvId in request.pd_pv_id_lst) {
|
for (pvId in request.pd_pv_id_lst) {
|
||||||
@@ -40,7 +34,7 @@ class GetPvPdHandler(
|
|||||||
val difficulty = Difficulty.fromValue(diff)
|
val difficulty = Difficulty.fromValue(diff)
|
||||||
|
|
||||||
// Myself
|
// Myself
|
||||||
val edition0 = pvRecordRepository.findByPdIdAndPvIdAndEditionAndDifficulty(
|
val edition0 = db.pvRecord.findByPdIdAndPvIdAndEditionAndDifficulty(
|
||||||
profile,
|
profile,
|
||||||
pvId,
|
pvId,
|
||||||
Edition.ORIGINAL,
|
Edition.ORIGINAL,
|
||||||
@@ -48,7 +42,7 @@ class GetPvPdHandler(
|
|||||||
)
|
)
|
||||||
.orElseGet(Supplier { PlayerPvRecord(pvId, Edition.ORIGINAL) })
|
.orElseGet(Supplier { PlayerPvRecord(pvId, Edition.ORIGINAL) })
|
||||||
|
|
||||||
val edition1 = pvRecordRepository.findByPdIdAndPvIdAndEditionAndDifficulty(
|
val edition1 = db.pvRecord.findByPdIdAndPvIdAndEditionAndDifficulty(
|
||||||
profile,
|
profile,
|
||||||
pvId,
|
pvId,
|
||||||
Edition.EXTRA,
|
Edition.EXTRA,
|
||||||
@@ -60,7 +54,7 @@ class GetPvPdHandler(
|
|||||||
val rivalEdition0: PlayerPvRecord?
|
val rivalEdition0: PlayerPvRecord?
|
||||||
val rivalEdition1: PlayerPvRecord?
|
val rivalEdition1: PlayerPvRecord?
|
||||||
if (profile.rivalPdId != -1L) {
|
if (profile.rivalPdId != -1L) {
|
||||||
rivalEdition0 = pvRecordRepository.findByPdId_PdIdAndPvIdAndEditionAndDifficulty(
|
rivalEdition0 = db.pvRecord.findByPdId_PdIdAndPvIdAndEditionAndDifficulty(
|
||||||
profile.rivalPdId,
|
profile.rivalPdId,
|
||||||
pvId,
|
pvId,
|
||||||
Edition.ORIGINAL,
|
Edition.ORIGINAL,
|
||||||
@@ -68,7 +62,7 @@ class GetPvPdHandler(
|
|||||||
)
|
)
|
||||||
.orElseGet(Supplier { PlayerPvRecord(pvId, Edition.ORIGINAL) })
|
.orElseGet(Supplier { PlayerPvRecord(pvId, Edition.ORIGINAL) })
|
||||||
|
|
||||||
rivalEdition1 = pvRecordRepository.findByPdId_PdIdAndPvIdAndEditionAndDifficulty(
|
rivalEdition1 = db.pvRecord.findByPdId_PdIdAndPvIdAndEditionAndDifficulty(
|
||||||
profile.rivalPdId,
|
profile.rivalPdId,
|
||||||
pvId,
|
pvId,
|
||||||
Edition.EXTRA,
|
Edition.EXTRA,
|
||||||
@@ -80,7 +74,7 @@ class GetPvPdHandler(
|
|||||||
rivalEdition1 = PlayerPvRecord(pvId, Edition.EXTRA)
|
rivalEdition1 = PlayerPvRecord(pvId, Edition.EXTRA)
|
||||||
}
|
}
|
||||||
|
|
||||||
val customize = pvCustomizeRepository.findByPdIdAndPvId(profile, pvId)
|
val customize = db.pvCustomize.findByPdIdAndPvId(profile, pvId)
|
||||||
.orElseGet(Supplier { PlayerPvCustomize(profile, pvId) })
|
.orElseGet(Supplier { PlayerPvCustomize(profile, pvId) })
|
||||||
|
|
||||||
val str = getString(
|
val str = getString(
|
||||||
@@ -89,7 +83,6 @@ class GetPvPdHandler(
|
|||||||
rivalEdition0,
|
rivalEdition0,
|
||||||
profile.rivalPdId
|
profile.rivalPdId
|
||||||
) + "," + getString(edition1, customize, rivalEdition1, profile.rivalPdId)
|
) + "," + getString(edition1, customize, rivalEdition1, profile.rivalPdId)
|
||||||
// logger.info(str);
|
|
||||||
pd.append(encode(str)).append(",")
|
pd.append(encode(str)).append(",")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,7 +125,7 @@ class GetPvPdHandler(
|
|||||||
rivalRecord.maxScore + "," +
|
rivalRecord.maxScore + "," +
|
||||||
rivalRecord.maxAttain + "," +
|
rivalRecord.maxAttain + "," +
|
||||||
"-1,-1," +
|
"-1,-1," +
|
||||||
pvRecordRepository.rankByPvIdAndPdIdAndEditionAndDifficulty(
|
db.pvRecord.rankByPvIdAndPdIdAndEditionAndDifficulty(
|
||||||
record.pvId,
|
record.pvId,
|
||||||
record.pdId,
|
record.pdId,
|
||||||
record.edition,
|
record.edition,
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package icu.samnyan.aqua.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.csv
|
import ext.csv
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerPvCustomizeRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Result
|
import icu.samnyan.aqua.sega.diva.model.common.Result
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.ShopExitRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.ShopExitRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.ingame.ShopExitResponse
|
import icu.samnyan.aqua.sega.diva.model.response.ingame.ShopExitResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
@@ -15,14 +14,11 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class ShopExitHandler(
|
class ShopExitHandler(val db: DivaRepos) {
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val pvCustomizeRepository: PlayerPvCustomizeRepository
|
|
||||||
) {
|
|
||||||
fun handle(request: ShopExitRequest): Any {
|
fun handle(request: ShopExitRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
val customize = pvCustomizeRepository.findByPdIdAndPvId(profile, request.ply_pv_id)
|
val customize = db.pvCustomize.findByPdIdAndPvId(profile, request.ply_pv_id)
|
||||||
.orElseGet(Supplier { PlayerPvCustomize(profile, request.ply_pv_id) })
|
.orElseGet(Supplier { PlayerPvCustomize(profile, request.ply_pv_id) })
|
||||||
|
|
||||||
if (request.use_pv_mdl_eqp == 1) {
|
if (request.use_pv_mdl_eqp == 1) {
|
||||||
@@ -39,8 +35,8 @@ class ShopExitHandler(
|
|||||||
profile.commonCustomizeItems = request.c_itm_eqp_cmn_ary.csv
|
profile.commonCustomizeItems = request.c_itm_eqp_cmn_ary.csv
|
||||||
profile.moduleSelectItemFlag = request.ms_itm_flg_cmn_ary.csv
|
profile.moduleSelectItemFlag = request.ms_itm_flg_cmn_ary.csv
|
||||||
|
|
||||||
playerProfileService.save(profile)
|
db.profile.save(profile)
|
||||||
pvCustomizeRepository.save<PlayerPvCustomize?>(customize)
|
db.pvCustomize.save(customize)
|
||||||
return ShopExitResponse(
|
return ShopExitResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
request.req_id,
|
request.req_id,
|
||||||
|
|||||||
@@ -1,21 +1,14 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package icu.samnyan.aqua.sega.diva.handler.ingame
|
||||||
|
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.ContestRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayLogRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerContestRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerCustomizeRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerInventoryRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerPvRecordRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.*
|
import icu.samnyan.aqua.sega.diva.model.common.*
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.StageResultRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.StageResultRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.ingame.StageResultResponse
|
import icu.samnyan.aqua.sega.diva.model.response.ingame.StageResultResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.*
|
import icu.samnyan.aqua.sega.diva.model.userdata.*
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaCalculator
|
import icu.samnyan.aqua.sega.diva.util.DivaCalculator
|
||||||
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
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
|
||||||
@@ -33,26 +26,16 @@ import kotlin.math.max
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class StageResultHandler(
|
class StageResultHandler(val db: DivaRepos, val calc: DivaCalculator) {
|
||||||
private val gameSessionRepository: GameSessionRepository,
|
|
||||||
private val pvRecordRepository: PlayerPvRecordRepository,
|
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val playLogRepository: PlayLogRepository,
|
|
||||||
private val contestRepository: ContestRepository,
|
|
||||||
private val playerContestRepository: PlayerContestRepository,
|
|
||||||
private val playerCustomizeRepository: PlayerCustomizeRepository,
|
|
||||||
private val playerInventoryRepository: PlayerInventoryRepository,
|
|
||||||
private val divaCalculator: DivaCalculator
|
|
||||||
) {
|
|
||||||
private var currentProfile: PlayerProfile? = null
|
private var currentProfile: PlayerProfile? = null
|
||||||
val logger = logger()
|
val logger = logger()
|
||||||
|
|
||||||
fun handle(request: StageResultRequest): Any {
|
fun handle(request: StageResultRequest): Any {
|
||||||
val response: StageResultResponse?
|
val response: StageResultResponse?
|
||||||
if (request.getPd_id() != -1L) {
|
if (request.getPd_id() != -1L) {
|
||||||
val profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
currentProfile = profile
|
currentProfile = profile
|
||||||
@@ -77,7 +60,7 @@ class StageResultHandler(
|
|||||||
val log = getLog(request, profile, stageIndex)
|
val log = getLog(request, profile, stageIndex)
|
||||||
logger.debug("Stage Result Object: {}", log.toString())
|
logger.debug("Stage Result Object: {}", log.toString())
|
||||||
|
|
||||||
val record = pvRecordRepository.findByPdIdAndPvIdAndEditionAndDifficulty(
|
val record = db.pvRecord.findByPdIdAndPvIdAndEditionAndDifficulty(
|
||||||
profile,
|
profile,
|
||||||
log.pvId,
|
log.pvId,
|
||||||
log.edition,
|
log.edition,
|
||||||
@@ -114,7 +97,7 @@ class StageResultHandler(
|
|||||||
session.lastPvId = log.pvId
|
session.lastPvId = log.pvId
|
||||||
session.lastUpdateTime = LocalDateTime.now()
|
session.lastUpdateTime = LocalDateTime.now()
|
||||||
|
|
||||||
val levelInfo = divaCalculator.getLevelInfo(profile)
|
val levelInfo = calc.getLevelInfo(profile)
|
||||||
session.oldLevelNumber = session.levelNumber
|
session.oldLevelNumber = session.levelNumber
|
||||||
session.oldLevelExp = session.levelExp
|
session.oldLevelExp = session.levelExp
|
||||||
session.levelNumber = levelInfo.levelNumber
|
session.levelNumber = levelInfo.levelNumber
|
||||||
@@ -139,10 +122,10 @@ class StageResultHandler(
|
|||||||
contestSpecifier = getContestSpecifier(progress)
|
contestSpecifier = getContestSpecifier(progress)
|
||||||
|
|
||||||
// Check if the contest info exist
|
// Check if the contest info exist
|
||||||
val contestOptional = contestRepository.findById(contestId)
|
val contestOptional = db.g.contest.findById(contestId)
|
||||||
if (contestOptional.isPresent) {
|
if (contestOptional.isPresent) {
|
||||||
val contest = contestOptional.get()
|
val contest = contestOptional.get()
|
||||||
val playerContestOptional = playerContestRepository.findByPdIdAndContestId(profile, contestId)
|
val playerContestOptional = db.contest.findByPdIdAndContestId(profile, contestId)
|
||||||
|
|
||||||
// Contest Entry Reward
|
// Contest Entry Reward
|
||||||
// Check if this is first stage
|
// Check if this is first stage
|
||||||
@@ -209,9 +192,9 @@ class StageResultHandler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pvRecordRepository.save<PlayerPvRecord?>(record)
|
db.pvRecord.save<PlayerPvRecord?>(record)
|
||||||
playLogRepository.save<PlayLog?>(log)
|
db.playLog.save<PlayLog?>(log)
|
||||||
gameSessionRepository.save<GameSession?>(session)
|
db.gameSession.save<GameSession?>(session)
|
||||||
|
|
||||||
|
|
||||||
return StageResultResponse(
|
return StageResultResponse(
|
||||||
@@ -368,7 +351,7 @@ class StageResultHandler(
|
|||||||
borders: Int,
|
borders: Int,
|
||||||
reward: kotlin.String?
|
reward: kotlin.String?
|
||||||
): MutableMap<kotlin.String?, kotlin.String?>? {
|
): MutableMap<kotlin.String?, kotlin.String?>? {
|
||||||
if (currentValue > borders && previousValue < borders) {
|
if (borders in (previousValue + 1)..<currentValue) {
|
||||||
if (StringUtils.isNotBlank(reward)) {
|
if (StringUtils.isNotBlank(reward)) {
|
||||||
val rewardValue: Array<kotlin.String?> =
|
val rewardValue: Array<kotlin.String?> =
|
||||||
reward!!.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
reward!!.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
||||||
@@ -383,7 +366,7 @@ class StageResultHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
"1" -> {
|
"1" -> {
|
||||||
if (playerInventoryRepository.findByPdIdAndTypeAndValue(currentProfile!!, "SKIN", rewardValue[1]!!)
|
if (db.inventory.findByPdIdAndTypeAndValue(currentProfile!!, "SKIN", rewardValue[1]!!)
|
||||||
.isPresent
|
.isPresent
|
||||||
) {
|
) {
|
||||||
result["type"] = "-1"
|
result["type"] = "-1"
|
||||||
@@ -391,7 +374,7 @@ class StageResultHandler(
|
|||||||
result["string1"] = "***"
|
result["string1"] = "***"
|
||||||
result["string2"] = "***"
|
result["string2"] = "***"
|
||||||
} else {
|
} else {
|
||||||
playerInventoryRepository.save<PlayerInventory?>(
|
db.inventory.save<PlayerInventory?>(
|
||||||
PlayerInventory(
|
PlayerInventory(
|
||||||
null,
|
null,
|
||||||
currentProfile,
|
currentProfile,
|
||||||
@@ -407,7 +390,7 @@ class StageResultHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
"2" -> {
|
"2" -> {
|
||||||
if (playerInventoryRepository.findByPdIdAndTypeAndValue(currentProfile!!, "PLATE", rewardValue[1]!!)
|
if (db.inventory.findByPdIdAndTypeAndValue(currentProfile!!, "PLATE", rewardValue[1]!!)
|
||||||
.isPresent
|
.isPresent
|
||||||
) {
|
) {
|
||||||
result.put("type", "-1")
|
result.put("type", "-1")
|
||||||
@@ -415,7 +398,7 @@ class StageResultHandler(
|
|||||||
result.put("string1", "***")
|
result.put("string1", "***")
|
||||||
result.put("string2", "***")
|
result.put("string2", "***")
|
||||||
} else {
|
} else {
|
||||||
playerInventoryRepository.save<PlayerInventory?>(
|
db.inventory.save<PlayerInventory?>(
|
||||||
PlayerInventory(
|
PlayerInventory(
|
||||||
null,
|
null,
|
||||||
currentProfile,
|
currentProfile,
|
||||||
@@ -431,7 +414,7 @@ class StageResultHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
"3" -> {
|
"3" -> {
|
||||||
if (playerCustomizeRepository.findByPdIdAndCustomizeId(currentProfile!!, rewardValue[1]!!.toInt())
|
if (db.customize.findByPdIdAndCustomizeId(currentProfile!!, rewardValue[1]!!.toInt())
|
||||||
.isPresent
|
.isPresent
|
||||||
) {
|
) {
|
||||||
result.put("type", "-1")
|
result.put("type", "-1")
|
||||||
@@ -439,7 +422,7 @@ class StageResultHandler(
|
|||||||
result.put("string1", "***")
|
result.put("string1", "***")
|
||||||
result.put("string2", "***")
|
result.put("string2", "***")
|
||||||
} else {
|
} else {
|
||||||
playerCustomizeRepository.save(
|
db.customize.save(
|
||||||
PlayerCustomize(
|
PlayerCustomize(
|
||||||
currentProfile,
|
currentProfile,
|
||||||
rewardValue[1]!!.toInt()
|
rewardValue[1]!!.toInt()
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.ingame
|
package icu.samnyan.aqua.sega.diva.handler.ingame
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.StageStartRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.StageStartRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
@@ -14,15 +13,12 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class StageStartHandler(
|
class StageStartHandler(val db: DivaRepos) {
|
||||||
private val gameSessionRepository: GameSessionRepository,
|
|
||||||
private val playerProfileService: PlayerProfileService
|
|
||||||
) {
|
|
||||||
fun handle(request: StageStartRequest): Any {
|
fun handle(request: StageStartRequest): Any {
|
||||||
if (request.getPd_id() != -1L) {
|
if (request.getPd_id() != -1L) {
|
||||||
val profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
val stageArr = request.getStg_ply_pv_id()
|
val stageArr = request.getStg_ply_pv_id()
|
||||||
@@ -40,7 +36,7 @@ class StageStartHandler(
|
|||||||
stageIndex = 3
|
stageIndex = 3
|
||||||
}
|
}
|
||||||
session.stageIndex = stageIndex
|
session.stageIndex = stageIndex
|
||||||
gameSessionRepository.save<GameSession?>(session)
|
db.gameSession.save<GameSession?>(session)
|
||||||
}
|
}
|
||||||
|
|
||||||
return BaseResponse(
|
return BaseResponse(
|
||||||
|
|||||||
@@ -2,12 +2,11 @@ package icu.samnyan.aqua.sega.diva.handler.ingame
|
|||||||
|
|
||||||
import ext.csv
|
import ext.csv
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerScreenShotRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.StoreSsRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.StoreSsRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
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
|
||||||
@@ -21,13 +20,10 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class StoreSsHandler(
|
class StoreSsHandler(val db: DivaRepos) {
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val screenShotRepository: PlayerScreenShotRepository
|
|
||||||
) {
|
|
||||||
val logger = logger()
|
val logger = logger()
|
||||||
fun handle(request: StoreSsRequest, file: MultipartFile): Any {
|
fun handle(request: StoreSsRequest, file: MultipartFile): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
|
|
||||||
var response: BaseResponse?
|
var response: BaseResponse?
|
||||||
@@ -43,7 +39,7 @@ class StoreSsHandler(
|
|||||||
request.ss_mdl_id.csv,
|
request.ss_mdl_id.csv,
|
||||||
request.ss_c_itm_id.csv
|
request.ss_c_itm_id.csv
|
||||||
)
|
)
|
||||||
screenShotRepository.save<PlayerScreenShot?>(ss)
|
db.screenShot.save<PlayerScreenShot?>(ss)
|
||||||
|
|
||||||
return BaseResponse(
|
return BaseResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package icu.samnyan.aqua.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.ContestRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerContestRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.ContestBorder
|
import icu.samnyan.aqua.sega.diva.model.common.ContestBorder
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
import icu.samnyan.aqua.sega.diva.model.common.Difficulty
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
import icu.samnyan.aqua.sega.diva.model.common.Edition
|
||||||
@@ -13,8 +9,9 @@ import icu.samnyan.aqua.sega.diva.model.gamedata.Contest
|
|||||||
import icu.samnyan.aqua.sega.diva.model.request.ingame.StageResultRequest
|
import icu.samnyan.aqua.sega.diva.model.request.ingame.StageResultRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerContest
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerContest
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.DivaStringUtils
|
import icu.samnyan.aqua.sega.diva.util.DivaStringUtils
|
||||||
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
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
|
||||||
@@ -27,16 +24,11 @@ import kotlin.math.max
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class EndHandler(
|
class EndHandler(val db: DivaRepos) {
|
||||||
private val contestRepository: ContestRepository,
|
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val playerContestRepository: PlayerContestRepository,
|
|
||||||
private val gameSessionRepository: GameSessionRepository
|
|
||||||
) {
|
|
||||||
fun handle(request: StageResultRequest): Any {
|
fun handle(request: StageResultRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +45,7 @@ class EndHandler(
|
|||||||
profile.sortMode = SortMode.fromValue(request.getSort_kind())
|
profile.sortMode = SortMode.fromValue(request.getSort_kind())
|
||||||
|
|
||||||
if (request.getCr_cid() != -1) {
|
if (request.getCr_cid() != -1) {
|
||||||
val contest = contestRepository.findById(request.getCr_cid()).orElseGet(Supplier { Contest() })
|
val contest = db.g.contest.findById(request.getCr_cid()).orElseGet(Supplier { Contest() })
|
||||||
val currentResultRank = getContestRank(contest, request.getCr_tv())
|
val currentResultRank = getContestRank(contest, request.getCr_tv())
|
||||||
if (request.getCr_if() == 0) {
|
if (request.getCr_if() == 0) {
|
||||||
// Do contest is playing
|
// Do contest is playing
|
||||||
@@ -64,7 +56,7 @@ class EndHandler(
|
|||||||
profile.contestNowPlayingSpecifier = String.join(",", *request.getCr_sp())
|
profile.contestNowPlayingSpecifier = String.join(",", *request.getCr_sp())
|
||||||
} else {
|
} else {
|
||||||
val contestRecord =
|
val contestRecord =
|
||||||
playerContestRepository.findByPdIdAndContestId(profile, request.getCr_cid()).orElseGet(
|
db.contest.findByPdIdAndContestId(profile, request.getCr_cid()).orElseGet(
|
||||||
Supplier { PlayerContest(profile, request.getCr_cid()) })
|
Supplier { PlayerContest(profile, request.getCr_cid()) })
|
||||||
contestRecord.startCount += 1
|
contestRecord.startCount += 1
|
||||||
contestRecord.bestValue = max(contestRecord.bestValue, request.getCr_tv())
|
contestRecord.bestValue = max(contestRecord.bestValue, request.getCr_tv())
|
||||||
@@ -73,7 +65,7 @@ class EndHandler(
|
|||||||
) currentResultRank else contestRecord.resultRank
|
) currentResultRank else contestRecord.resultRank
|
||||||
contestRecord.lastUpdateTime = LocalDateTime.now()
|
contestRecord.lastUpdateTime = LocalDateTime.now()
|
||||||
|
|
||||||
playerContestRepository.save<PlayerContest?>(contestRecord)
|
db.contest.save<PlayerContest?>(contestRecord)
|
||||||
profile.isContestNowPlayingEnable = false
|
profile.isContestNowPlayingEnable = false
|
||||||
profile.contestNowPlayingId = -1
|
profile.contestNowPlayingId = -1
|
||||||
profile.contestNowPlayingResultRank = ContestBorder.NONE
|
profile.contestNowPlayingResultRank = ContestBorder.NONE
|
||||||
@@ -82,9 +74,8 @@ class EndHandler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
playerProfileService.save(profile)
|
db.profile.save(profile)
|
||||||
gameSessionRepository.delete(session)
|
db.gameSession.delete(session)
|
||||||
|
|
||||||
|
|
||||||
return BaseResponse(
|
return BaseResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
|
|||||||
@@ -1,29 +1,22 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package icu.samnyan.aqua.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.user.PdUnlockRequest
|
import icu.samnyan.aqua.sega.diva.model.request.user.PdUnlockRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
import icu.samnyan.aqua.sega.diva.model.response.BaseResponse
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Component
|
@Component
|
||||||
class PdUnlockHandler(
|
class PdUnlockHandler(val db: DivaRepos) {
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val gameSessionRepository: GameSessionRepository
|
|
||||||
) {
|
|
||||||
fun handle(request: PdUnlockRequest): Any {
|
fun handle(request: PdUnlockRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
.orElseThrow<SessionNotFoundException?>(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
gameSessionRepository.delete(session)
|
db.gameSession.delete(session)
|
||||||
|
|
||||||
return BaseResponse(
|
return BaseResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package icu.samnyan.aqua.sega.diva.handler.user
|
||||||
|
|
||||||
import ext.logger
|
import ext.logger
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.PreStartResult
|
import icu.samnyan.aqua.sega.diva.model.common.PreStartResult
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.StartMode
|
import icu.samnyan.aqua.sega.diva.model.common.StartMode
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.user.PreStartRequest
|
import icu.samnyan.aqua.sega.diva.model.request.user.PreStartRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.user.PreStartResponse
|
import icu.samnyan.aqua.sega.diva.model.response.user.PreStartResponse
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
|
||||||
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
|
||||||
@@ -16,13 +15,10 @@ import java.util.concurrent.ThreadLocalRandom
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class PreStartHandler(
|
class PreStartHandler(val db: DivaRepos) {
|
||||||
private val playerProfileService: PlayerProfileService,
|
|
||||||
private val gameSessionRepository: GameSessionRepository
|
|
||||||
) {
|
|
||||||
var logger = logger()
|
var logger = logger()
|
||||||
fun handle(request: PreStartRequest): Any {
|
fun handle(request: PreStartRequest): Any {
|
||||||
val profileOptional = playerProfileService.findByPdId(request.aime_id)
|
val profileOptional = db.profile.findByPdId(request.aime_id)
|
||||||
if (profileOptional.isEmpty) {
|
if (profileOptional.isEmpty) {
|
||||||
return PreStartResponse(
|
return PreStartResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
@@ -33,7 +29,7 @@ class PreStartHandler(
|
|||||||
} else {
|
} else {
|
||||||
val profile = profileOptional.get()
|
val profile = profileOptional.get()
|
||||||
|
|
||||||
val sessionOptional = gameSessionRepository.findByPdId(profile)
|
val sessionOptional = db.gameSession.findByPdId(profile)
|
||||||
if (sessionOptional.isPresent) {
|
if (sessionOptional.isPresent) {
|
||||||
val session = sessionOptional.get()
|
val session = sessionOptional.get()
|
||||||
if (!session.lastUpdateTime
|
if (!session.lastUpdateTime
|
||||||
@@ -46,7 +42,7 @@ class PreStartHandler(
|
|||||||
PreStartResult.ALREADY_PLAYING
|
PreStartResult.ALREADY_PLAYING
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
gameSessionRepository.delete(session)
|
db.gameSession.delete(session)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +62,7 @@ class PreStartHandler(
|
|||||||
profile.vocaloidPoints
|
profile.vocaloidPoints
|
||||||
)
|
)
|
||||||
|
|
||||||
gameSessionRepository.save(session)
|
db.gameSession.save(session)
|
||||||
|
|
||||||
return PreStartResponse(
|
return PreStartResponse(
|
||||||
request.cmd,
|
request.cmd,
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package icu.samnyan.aqua.sega.diva.handler.user
|
||||||
|
|
||||||
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.user.SpendCreditRequest
|
import icu.samnyan.aqua.sega.diva.model.request.user.SpendCreditRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.user.SpendCreditResponse
|
import icu.samnyan.aqua.sega.diva.model.response.user.SpendCreditResponse
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
import icu.samnyan.aqua.sega.diva.PlayerProfileService
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
@@ -11,9 +12,9 @@ import java.util.function.Supplier
|
|||||||
* @author samnyan (privateamusement@protonmail.com)
|
* @author samnyan (privateamusement@protonmail.com)
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
class SpendCreditHandler(private val playerProfileService: PlayerProfileService) {
|
class SpendCreditHandler(val db: DivaRepos) {
|
||||||
fun handle(request: SpendCreditRequest): Any {
|
fun handle(request: SpendCreditRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
val profile = db.profile.findByPdId(request.pd_id).orElseThrow<ProfileNotFoundException?>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
|
|
||||||
return SpendCreditResponse(
|
return SpendCreditResponse(
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.handler.user
|
package icu.samnyan.aqua.sega.diva.handler.user
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.GameSessionRepository
|
import icu.samnyan.aqua.sega.diva.DivaRepos
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerContestRepository
|
import icu.samnyan.aqua.sega.diva.PlayerCustomizeService
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerPvRecordRepository
|
import icu.samnyan.aqua.sega.diva.PlayerModuleService
|
||||||
|
import icu.samnyan.aqua.sega.diva.PlayerProfileService
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.*
|
import icu.samnyan.aqua.sega.diva.model.common.*
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.collection.ClearSet
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.common.collection.ClearTally
|
import icu.samnyan.aqua.sega.diva.model.common.collection.ClearTally
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.user.StartRequest
|
import icu.samnyan.aqua.sega.diva.model.request.user.StartRequest
|
||||||
import icu.samnyan.aqua.sega.diva.model.response.user.StartResponse
|
import icu.samnyan.aqua.sega.diva.model.response.user.StartResponse
|
||||||
@@ -12,9 +12,6 @@ import icu.samnyan.aqua.sega.diva.model.userdata.GameSession
|
|||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerContest
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerContest
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord
|
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerCustomizeService
|
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerModuleService
|
|
||||||
import icu.samnyan.aqua.sega.diva.service.PlayerProfileService
|
|
||||||
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException
|
||||||
import icu.samnyan.aqua.sega.diva.util.PvRecordDataException
|
import icu.samnyan.aqua.sega.diva.util.PvRecordDataException
|
||||||
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException
|
||||||
@@ -31,20 +28,18 @@ import java.util.stream.Collectors
|
|||||||
@Component
|
@Component
|
||||||
class StartHandler(
|
class StartHandler(
|
||||||
private val playerProfileService: PlayerProfileService,
|
private val playerProfileService: PlayerProfileService,
|
||||||
private val gameSessionRepository: GameSessionRepository,
|
|
||||||
private val playerCustomizeService: PlayerCustomizeService,
|
private val playerCustomizeService: PlayerCustomizeService,
|
||||||
private val playerModuleService: PlayerModuleService,
|
private val playerModuleService: PlayerModuleService,
|
||||||
private val playerPvRecordRepository: PlayerPvRecordRepository,
|
val db: DivaRepos
|
||||||
private val playerContestRepository: PlayerContestRepository
|
|
||||||
) {
|
) {
|
||||||
fun handle(request: StartRequest): Any {
|
fun handle(request: StartRequest): Any {
|
||||||
val profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException>(
|
val profile = db.profile.findByPdId(request.getPd_id()).orElseThrow<ProfileNotFoundException>(
|
||||||
Supplier { ProfileNotFoundException() })
|
Supplier { ProfileNotFoundException() })
|
||||||
val session = gameSessionRepository.findByPdId(profile)
|
val session = db.gameSession.findByPdId(profile)
|
||||||
.orElseThrow(Supplier { SessionNotFoundException() })
|
.orElseThrow(Supplier { SessionNotFoundException() })
|
||||||
|
|
||||||
session.startMode = StartMode.START
|
session.startMode = StartMode.START
|
||||||
gameSessionRepository.save<GameSession>(session)
|
db.gameSession.save<GameSession>(session)
|
||||||
|
|
||||||
val module_have = playerModuleService.getModuleHaveString(profile)
|
val module_have = playerModuleService.getModuleHaveString(profile)
|
||||||
val customize_have = playerCustomizeService.getModuleHaveString(profile)
|
val customize_have = playerCustomizeService.getModuleHaveString(profile)
|
||||||
@@ -121,7 +116,7 @@ class StartHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun countClearStatus(profile: PlayerProfile): String {
|
private fun countClearStatus(profile: PlayerProfile): String {
|
||||||
val pvRecordList = playerPvRecordRepository.findByPdId(profile)
|
val pvRecordList = db.pvRecord.findByPdId(profile)
|
||||||
val clearTally = ClearTally()
|
val clearTally = ClearTally()
|
||||||
pvRecordList.forEach(Consumer { x: PlayerPvRecord ->
|
pvRecordList.forEach(Consumer { x: PlayerPvRecord ->
|
||||||
when (x.edition) {
|
when (x.edition) {
|
||||||
@@ -151,14 +146,12 @@ class StartHandler(
|
|||||||
return clearTally.toInternal()
|
return clearTally.toInternal()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDiff(record: PlayerPvRecord, clearTally: ClearTally): ClearSet {
|
private fun getDiff(record: PlayerPvRecord, clearTally: ClearTally) = when (record.difficulty) {
|
||||||
when (record.difficulty) {
|
Difficulty.EASY -> clearTally.easy
|
||||||
Difficulty.EASY -> return clearTally.easy
|
Difficulty.NORMAL -> clearTally.normal
|
||||||
Difficulty.NORMAL -> return clearTally.normal
|
Difficulty.HARD -> clearTally.hard
|
||||||
Difficulty.HARD -> return clearTally.hard
|
Difficulty.EXTREME -> clearTally.extreme
|
||||||
Difficulty.EXTREME -> return clearTally.extreme
|
else -> throw PvRecordDataException("Difficulty data not exist, record id:" + record.id)
|
||||||
else -> throw PvRecordDataException("Difficulty data not exist, record id:" + record.id)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getContestResult(profile: PlayerProfile): MutableMap<String, String> {
|
private fun getContestResult(profile: PlayerProfile): MutableMap<String, String> {
|
||||||
@@ -167,7 +160,7 @@ class StartHandler(
|
|||||||
val cv_rr: MutableList<Int> = LinkedList<Int>()
|
val cv_rr: MutableList<Int> = LinkedList<Int>()
|
||||||
val cv_bv: MutableList<Int> = LinkedList<Int>()
|
val cv_bv: MutableList<Int> = LinkedList<Int>()
|
||||||
val cv_bf: MutableList<Int> = LinkedList<Int>()
|
val cv_bf: MutableList<Int> = LinkedList<Int>()
|
||||||
val contestList = playerContestRepository.findTop4ByPdIdOrderByLastUpdateTimeDesc(profile)
|
val contestList = db.contest.findTop4ByPdIdOrderByLastUpdateTimeDesc(profile)
|
||||||
contestList.forEach(Consumer { x: PlayerContest ->
|
contestList.forEach(Consumer { x: PlayerContest ->
|
||||||
cv_cid.add(x.contestId)
|
cv_cid.add(x.contestId)
|
||||||
cv_sc.add(x.startCount)
|
cv_sc.add(x.startCount)
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.service
|
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerCustomizeRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerCustomize
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile
|
|
||||||
import org.apache.commons.lang3.StringUtils
|
|
||||||
import org.springframework.stereotype.Service
|
|
||||||
import java.math.BigInteger
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
class PlayerCustomizeService(val repo: PlayerCustomizeRepository) {
|
|
||||||
fun buy(profile: PlayerProfile, customizeId: Int) = repo.save(PlayerCustomize(profile, customizeId))
|
|
||||||
|
|
||||||
fun getModuleHaveString(profile: PlayerProfile): String {
|
|
||||||
val customizeList = repo.findByPdId(profile)
|
|
||||||
var customize_have = BigInteger("0")
|
|
||||||
for (customize in customizeList) {
|
|
||||||
customize_have = customize_have.or(BigInteger.valueOf(1).shiftLeft(customize.customizeId))
|
|
||||||
}
|
|
||||||
return StringUtils.leftPad(customize_have.toString(16), 250, "0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.service
|
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerModuleRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerModule
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile
|
|
||||||
import org.apache.commons.lang3.StringUtils
|
|
||||||
import org.springframework.stereotype.Service
|
|
||||||
import java.math.BigInteger
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
class PlayerModuleService(val repo: PlayerModuleRepository) {
|
|
||||||
fun buy(profile: PlayerProfile, moduleId: Int) = repo.save(PlayerModule(profile, moduleId))
|
|
||||||
|
|
||||||
fun getModuleHaveString(profile: PlayerProfile): String {
|
|
||||||
val moduleList = repo.findByPdId(profile)
|
|
||||||
var module_have = BigInteger("0")
|
|
||||||
for (module in moduleList) {
|
|
||||||
module_have = module_have.or(BigInteger.valueOf(1).shiftLeft(module.moduleId))
|
|
||||||
}
|
|
||||||
println(module_have.toString(2))
|
|
||||||
return StringUtils.leftPad(module_have.toString(16), 250, "0").uppercase(Locale.getDefault())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package icu.samnyan.aqua.sega.diva.service
|
|
||||||
|
|
||||||
import icu.samnyan.aqua.sega.diva.PlayerProfileRepository
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.request.card.RegistrationRequest
|
|
||||||
import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile
|
|
||||||
import org.springframework.stereotype.Service
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
class PlayerProfileService(val repo: PlayerProfileRepository) {
|
|
||||||
fun findByPdId(pdId: Long): Optional<PlayerProfile> = repo.findByPdId(pdId)
|
|
||||||
|
|
||||||
fun register(request: RegistrationRequest): PlayerProfile {
|
|
||||||
val profile = PlayerProfile()
|
|
||||||
profile.pdId = request.aime_id
|
|
||||||
profile.playerName = request.player_name
|
|
||||||
|
|
||||||
return repo.save(profile)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun save(profile: PlayerProfile) = repo.save(profile)
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user