From 50a9a2bdd042672048ddc254b69744d1dff69098 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Mon, 9 Feb 2026 05:44:42 +0800 Subject: [PATCH] [-] Drop the codebase (#187) Co-authored-by: Raymond --- .gitlab-ci.yml | 25 - README.md | 4 +- build.gradle.kts | 2 - src/main/java/ext/Ext.kt | 4 + src/main/java/icu/samnyan/aqua/net/Bot.kt | 15 +- .../icu/samnyan/aqua/net/CardController.kt | 6 +- src/main/java/icu/samnyan/aqua/net/Fedy.kt | 35 +- .../java/icu/samnyan/aqua/net/Frontier.kt | 2 +- .../java/icu/samnyan/aqua/net/Migrations.kt | 5 +- .../icu/samnyan/aqua/net/UserRegistrar.kt | 6 +- .../icu/samnyan/aqua/net/components/Email.kt | 6 +- .../icu/samnyan/aqua/net/components/JWT.kt | 6 +- .../icu/samnyan/aqua/net/db/AquaNetSession.kt | 2 +- .../icu/samnyan/aqua/net/db/AquaNetUser.kt | 2 +- .../aqua/net/games/GameApiController.kt | 2 +- .../aqua/net/games/ImportController.kt | 8 +- .../java/icu/samnyan/aqua/net/games/Models.kt | 2 +- .../icu/samnyan/aqua/net/games/chu3/Chusan.kt | 9 +- .../samnyan/aqua/net/games/mai2/Mai2Import.kt | 5 +- .../net/games/mai2/Mai2MusicDetailImport.kt | 31 +- .../samnyan/aqua/net/games/mai2/Maimai2.kt | 30 +- .../samnyan/aqua/net/games/ongeki/Ongeki.kt | 5 +- .../icu/samnyan/aqua/net/games/wacca/Wacca.kt | 7 +- .../samnyan/aqua/net/transfer/AllNetClient.kt | 2 +- .../samnyan/aqua/net/transfer/DataBroker.kt | 6 +- .../icu/samnyan/aqua/sega/aimedb/AimeDB.kt | 7 +- .../aqua/sega/aimedb/AimeDbEncryption.kt | 25 +- .../samnyan/aqua/sega/aimedb/AimeDbServer.kt | 2 - .../icu/samnyan/aqua/sega/allnet/AllNet.kt | 4 +- .../sega/cardmaker/CardMakerController.kt | 108 ++++ .../cardmaker/CardMakerControllerAdvice.kt | 31 + .../controller/CardMakerController.java | 56 -- .../controller/CardMakerControllerAdvice.java | 39 -- .../impl/GetClientBookkeepingHandler.java | 45 -- .../handler/impl/GetGameConnectHandler.java | 80 --- .../handler/impl/GetGameSettingHandler.java | 67 -- .../cardmaker/model/response/CodeResp.java | 16 - .../model/response/GetGameSettingResp.java | 21 - .../model/response/data/GameConnect.java | 14 - .../model/response/data/GameSetting.java | 31 - .../controller/ChuniServletController.java | 269 -------- .../ChuniServletControllerAdvice.java | 47 -- .../dao/gamedata/GameCharacterRepository.java | 12 - .../GameCharacterSkillRepository.java | 12 - .../dao/gamedata/GameChargeRepository.java | 12 - .../dao/gamedata/GameEventRepository.java | 16 - .../dao/gamedata/GameMessageRepository.java | 12 - .../dao/gamedata/GameMusicRepository.java | 16 - .../dao/userdata/UserActivityRepository.java | 22 - .../dao/userdata/UserCharacterRepository.java | 27 - .../dao/userdata/UserChargeRepository.java | 19 - .../dao/userdata/UserCourseRepository.java | 23 - .../dao/userdata/UserDataExRepository.java | 19 - .../dao/userdata/UserDataRepository.java | 19 - .../dao/userdata/UserDuelRepository.java | 20 - .../userdata/UserGameOptionExRepository.java | 18 - .../userdata/UserGameOptionRepository.java | 19 - .../userdata/UserGeneralDataRepository.java | 20 - .../dao/userdata/UserItemRepository.java | 26 - .../dao/userdata/UserMapRepository.java | 21 - .../userdata/UserMusicDetailRepository.java | 26 - .../dao/userdata/UserPlaylogRepository.java | 28 - .../handler/impl/GameLoginHandler.java | 43 -- .../handler/impl/GameLogoutHandler.java | 34 - .../handler/impl/GetGameChargeHandler.java | 46 -- .../handler/impl/GetGameEventHandler.java | 50 -- .../handler/impl/GetGameIdlistHandler.java | 47 -- .../handler/impl/GetGameMessageHandler.java | 50 -- .../handler/impl/GetGameRankingHandler.java | 51 -- .../handler/impl/GetGameSaleHandler.java | 47 -- .../handler/impl/GetGameSettingHandler.java | 66 -- .../impl/GetTeamCourseRuleHandler.java | 42 -- .../impl/GetTeamCourseSettingHandler.java | 41 -- .../handler/impl/GetUserActivityHandler.java | 53 -- .../handler/impl/GetUserCharacterHandler.java | 60 -- .../handler/impl/GetUserChargeHandler.java | 50 -- .../handler/impl/GetUserCourseHandler.java | 67 -- .../handler/impl/GetUserDataExHandler.java | 53 -- .../handler/impl/GetUserDataHandler.java | 69 -- .../handler/impl/GetUserDuelHandler.java | 55 -- .../impl/GetUserFavoriteItemHandler.java | 51 -- .../impl/GetUserFavoriteMusicHandler.java | 49 -- .../handler/impl/GetUserItemHandler.java | 67 -- .../impl/GetUserLoginBonusHandler.java | 43 -- .../handler/impl/GetUserMapHandler.java | 51 -- .../handler/impl/GetUserMusicHandler.java | 97 --- .../handler/impl/GetUserOptionExHandler.java | 53 -- .../handler/impl/GetUserOptionHandler.java | 52 -- .../handler/impl/GetUserPreviewHandler.java | 114 ---- .../impl/GetUserRecentRatingHandler.java | 80 --- .../handler/impl/GetUserRegionHandler.java | 46 -- .../handler/impl/GetUserRivalDataHandler.java | 39 -- .../impl/GetUserRivalMusicHandler.java | 41 -- .../handler/impl/GetUserTeamHandler.java | 58 -- .../impl/UpsertClientSettingHandler.java | 42 -- .../handler/impl/UpsertUserAllHandler.java | 343 ---------- .../impl/UpsertUserChargelogHandler.java | 60 -- .../chunithm/model/gamedata/Character.java | 43 -- .../model/gamedata/CharacterSkill.java | 28 - .../sega/chunithm/model/gamedata/Diff.java | 28 - .../chunithm/model/gamedata/GameCharge.java | 46 -- .../chunithm/model/gamedata/GameEvent.java | 37 -- .../chunithm/model/gamedata/GameMessage.java | 35 - .../sega/chunithm/model/gamedata/Genre.java | 33 - .../sega/chunithm/model/gamedata/Level.java | 40 -- .../sega/chunithm/model/gamedata/Music.java | 43 -- .../chunithm/model/requet/ClientSetting.java | 21 - .../model/requet/ClientSettingRequest.java | 12 - .../chunithm/model/requet/UpsertUserAll.java | 88 --- .../chunithm/model/response/CodeResp.java | 15 - .../model/response/GetGameSettingResp.java | 22 - .../model/response/GetUserPreviewResp.java | 40 -- .../model/response/data/AllMusicMapItem.java | 8 - .../model/response/data/GameRanking.java | 16 - .../model/response/data/GameSale.java | 28 - .../model/response/data/GameSetting.java | 26 - .../response/data/UserMusicListItem.java | 19 - .../chunithm/model/userdata/UserActivity.java | 55 -- .../model/userdata/UserCharacter.java | 60 -- .../chunithm/model/userdata/UserCharge.java | 54 -- .../chunithm/model/userdata/UserCourse.java | 74 --- .../chunithm/model/userdata/UserData.java | 188 ------ .../chunithm/model/userdata/UserDataEx.java | 142 ----- .../chunithm/model/userdata/UserDuel.java | 55 -- .../model/userdata/UserGameOption.java | 106 ---- .../model/userdata/UserGameOptionEx.java | 100 --- .../model/userdata/UserGeneralData.java | 44 -- .../chunithm/model/userdata/UserItem.java | 51 -- .../sega/chunithm/model/userdata/UserMap.java | 70 -- .../model/userdata/UserMusicDetail.java | 113 ---- .../chunithm/model/userdata/UserPlaylog.java | 147 ----- .../chunithm/service/GameMusicService.java | 37 -- .../chunithm/service/UserActivityService.java | 44 -- .../service/UserCharacterService.java | 49 -- .../chunithm/service/UserChargeService.java | 39 -- .../chunithm/service/UserCourseService.java | 48 -- .../chunithm/service/UserDataExService.java | 35 - .../chunithm/service/UserDataService.java | 45 -- .../chunithm/service/UserDuelService.java | 40 -- .../service/UserGameOptionExService.java | 35 - .../service/UserGameOptionService.java | 35 - .../service/UserGeneralDataService.java | 34 - .../chunithm/service/UserItemService.java | 51 -- .../sega/chunithm/service/UserMapService.java | 44 -- .../service/UserMusicDetailService.java | 50 -- .../chunithm/service/UserPlaylogService.java | 51 -- .../aqua/sega/chusan/ChusanController.kt | 5 +- .../aqua/sega/chusan/handler/ChusanApis.kt | 38 +- .../aqua/sega/chusan/handler/ChusanCMApis.kt | 10 +- .../sega/chusan/handler/ChusanMatchingApis.kt | 9 - .../sega/chusan/handler/ChusanUpsertApis.kt | 22 +- .../aqua/sega/chusan/model/Chu3Repos.kt | 30 +- .../sega/chusan/model/request/Chu3UserAll.kt | 2 +- .../chusan/model/request/UpsertUserGacha.kt | 2 +- .../chusan/model/userdata/Chu3UserData.kt | 4 +- .../chusan/model/userdata/UserMusicDetail.kt | 2 +- .../samnyan/aqua/sega/diva/DivaController.kt | 181 ++++++ .../icu/samnyan/aqua/sega/diva/DivaRepos.kt | 150 +++++ .../samnyan/aqua/sega/diva/DivaServices.kt | 63 ++ .../sega/diva/controller/DivaController.java | 201 ------ .../diva/controller/DivaControllerAdvice.java | 11 - .../diva/dao/gamedata/ContestRepository.java | 15 - .../dao/gamedata/DivaCustomizeRepository.java | 12 - .../dao/gamedata/DivaModuleRepository.java | 15 - .../diva/dao/gamedata/DivaPvRepository.java | 10 - .../diva/dao/gamedata/FestaRepository.java | 15 - .../diva/dao/gamedata/NgWordsRepository.java | 12 - .../diva/dao/gamedata/PvEntryRepository.java | 16 - .../dao/userdata/GameSessionRepository.java | 16 - .../diva/dao/userdata/PlayLogRepository.java | 15 - .../dao/userdata/PlayerContestRepository.java | 17 - .../userdata/PlayerCustomizeRepository.java | 23 - .../userdata/PlayerInventoryRepository.java | 16 - .../dao/userdata/PlayerModuleRepository.java | 20 - .../dao/userdata/PlayerProfileRepository.java | 16 - .../userdata/PlayerPvCustomizeRepository.java | 18 - .../userdata/PlayerPvRecordRepository.java | 49 -- .../userdata/PlayerScreenShotRepository.java | 16 - .../exception/ProfileNotFoundException.java | 7 - .../diva/exception/PvRecordDataException.java | 10 - .../exception/SessionNotExistException.java | 15 - .../exception/SessionNotFoundException.java | 7 - .../aqua/sega/diva/handler/BaseHandler.java | 37 -- .../aqua/sega/diva/handler/InitHandlers.kt | 77 +++ .../sega/diva/handler/boot/AttendHandler.java | 39 -- .../diva/handler/boot/GameInitHandler.java | 32 - .../handler/card/CardProcedureHandler.java | 101 --- .../diva/handler/card/CardProcedureHandler.kt | 71 +++ .../diva/handler/card/ChangeNameHandler.java | 55 -- .../diva/handler/card/ChangeNameHandler.kt | 30 + .../handler/card/ChangePasswdHandler.java | 54 -- .../diva/handler/card/ChangePasswdHandler.kt | 29 + .../diva/handler/card/InitPasswdHandler.java | 35 - .../handler/card/RegistrationHandler.java | 48 -- .../diva/handler/card/RegistrationHandler.kt | 27 + .../handler/databank/BannerDataHandler.java | 36 -- .../handler/databank/BannerInfoHandler.java | 35 - .../handler/databank/CmPlyInfoHandler.java | 29 - .../handler/databank/ContestInfoHandler.java | 50 -- .../handler/databank/ContestInfoHandler.kt | 33 + .../handler/databank/CstmzItmCtlgHandler.java | 47 -- .../databank/CstmzItmNgMdlListHandler.java | 35 - .../handler/databank/FestaInfoHandler.java | 52 -- .../diva/handler/databank/FestaInfoHandler.kt | 32 + .../diva/handler/databank/NgWordHandler.java | 29 - .../handler/databank/NvRankingHandler.java | 34 - .../diva/handler/databank/NvRankingHandler.kt | 18 + .../handler/databank/PsRankingHandler.java | 109 ---- .../diva/handler/databank/PsRankingHandler.kt | 84 +++ .../handler/databank/PstdHCtrlHandler.java | 35 - .../databank/PstdItemNgLstHandler.java | 36 -- .../handler/databank/PvDefChrLstHandler.java | 35 - .../diva/handler/databank/PvListHandler.java | 73 --- .../diva/handler/databank/PvListHandler.kt | 57 ++ .../handler/databank/PvNgMdlLstHandler.java | 36 -- .../diva/handler/databank/QstInfHandler.java | 37 -- .../handler/databank/RmtWpLstHandler.java | 35 - .../handler/databank/ShopCatalogHandler.java | 45 -- .../handler/databank/ShopCatalogHandler.kt | 23 + .../handler/ingame/BuyCstmzItmHandler.java | 85 --- .../diva/handler/ingame/BuyCstmzItmHandler.kt | 38 ++ .../diva/handler/ingame/BuyModuleHandler.java | 86 --- .../diva/handler/ingame/BuyModuleHandler.kt | 39 ++ .../diva/handler/ingame/GetPvPdHandler.java | 126 ---- .../diva/handler/ingame/GetPvPdHandler.kt | 133 ++++ .../diva/handler/ingame/ShopExitHandler.java | 63 -- .../diva/handler/ingame/ShopExitHandler.kt | 42 ++ .../handler/ingame/StageResultHandler.java | 405 ------------ .../diva/handler/ingame/StageResultHandler.kt | 427 +++++++++++++ .../handler/ingame/StageStartHandler.java | 61 -- .../diva/handler/ingame/StageStartHandler.kt | 37 ++ .../diva/handler/ingame/StoreSsHandler.java | 74 --- .../diva/handler/ingame/StoreSsHandler.kt | 46 ++ .../diva/handler/operation/PingHandler.java | 41 -- .../sega/diva/handler/user/EndHandler.java | 112 ---- .../aqua/sega/diva/handler/user/EndHandler.kt | 83 +++ .../diva/handler/user/PdUnlockHandler.java | 46 -- .../sega/diva/handler/user/PdUnlockHandler.kt | 17 + .../diva/handler/user/PreStartHandler.java | 120 ---- .../sega/diva/handler/user/PreStartHandler.kt | 72 +++ .../diva/handler/user/SpendCreditHandler.java | 45 -- .../diva/handler/user/SpendCreditHandler.kt | 25 + .../sega/diva/handler/user/StartHandler.java | 231 ------- .../sega/diva/handler/user/StartHandler.kt | 168 +++++ .../aqua/sega/diva/model/DivaRequestModels.kt | 142 +++++ .../aqua/sega/diva/model/DivaResponse.kt | 599 ++++++++++++++++++ .../aqua/sega/diva/model/Internalizable.java | 8 - .../aqua/sega/diva/model/Internalizable.kt | 8 + .../sega/diva/model/common/ChallengeKind.java | 35 - .../sega/diva/model/common/ClearResult.java | 36 -- .../aqua/sega/diva/model/common/Const.java | 11 - .../aqua/sega/diva/model/common/Const.kt | 9 + .../sega/diva/model/common/ContestBorder.java | 25 - .../sega/diva/model/common/ContestLeague.java | 25 - .../diva/model/common/ContestNormaType.java | 24 - .../diva/model/common/ContestProgress.java | 20 - .../sega/diva/model/common/ContestProgress.kt | 10 + .../diva/model/common/ContestStageLimit.java | 23 - .../sega/diva/model/common/Difficulty.java | 34 - .../aqua/sega/diva/model/common/Edition.java | 31 - .../sega/diva/model/common/FestaKind.java | 23 - .../sega/diva/model/common/LevelInfo.java | 16 - .../aqua/sega/diva/model/common/LevelInfo.kt | 6 + .../aqua/sega/diva/model/common/PassStat.java | 25 - .../diva/model/common/PreStartResult.java | 27 - .../aqua/sega/diva/model/common/Result.java | 23 - .../aqua/sega/diva/model/common/SortMode.java | 35 - .../aqua/sega/diva/model/common/SortMode.kt | 146 +++++ .../sega/diva/model/common/StartMode.java | 10 - .../sega/diva/model/common/ValueEnum.java | 8 - .../common/attend/DispersalParameter.java | 35 - .../model/common/attend/EtcParameter.java | 61 -- .../common/attend/GameBalanceParameter.java | 104 --- .../common/attend/GameBalanceTrialBid.java | 18 - .../common/attend/GameBalanceTrialBidSet.java | 34 - .../model/common/collection/ClearSet.java | 38 -- .../model/common/collection/ClearTally.java | 49 -- .../model/common/collection/ClearTally.kt | 49 ++ .../common/collection/FestaCollection.java | 79 --- .../common/collection/FestaCollection.kt | 52 ++ .../collection/PsRankingCollection.java | 32 - .../common/collection/PsRankingCollection.kt | 26 + .../sega/diva/model/db/gamedata/Contest.kt | 118 ++++ .../sega/diva/model/db/gamedata/Difficulty.kt | 33 + .../diva/model/db/gamedata/DivaCustomize.kt | 24 + .../sega/diva/model/db/gamedata/DivaModule.kt | 24 + .../aqua/sega/diva/model/db/gamedata/Festa.kt | 30 + .../aqua/sega/diva/model/db/gamedata/Pv.kt | 23 + .../sega/diva/model/db/gamedata/PvEntry.kt | 27 + .../diva/model/db/userdata/GameSession.kt | 64 ++ .../sega/diva/model/db/userdata/PlayLog.kt | 152 +++++ .../diva/model/db/userdata/PlayerContest.kt | 35 + .../diva/model/db/userdata/PlayerCustomize.kt | 26 + .../diva/model/db/userdata/PlayerInventory.kt | 30 + .../diva/model/db/userdata/PlayerModule.kt | 26 + .../diva/model/db/userdata/PlayerProfile.kt | 225 +++++++ .../model/db/userdata/PlayerPvCustomize.kt | 36 ++ .../diva/model/db/userdata/PlayerPvRecord.kt | 58 ++ .../model/db/userdata/PlayerScreenShot.kt | 29 + .../sega/diva/model/gamedata/Contest.java | 153 ----- .../sega/diva/model/gamedata/Difficulty.java | 35 - .../diva/model/gamedata/DivaCustomize.java | 50 -- .../sega/diva/model/gamedata/DivaModule.java | 50 -- .../aqua/sega/diva/model/gamedata/Festa.java | 52 -- .../sega/diva/model/gamedata/NgWords.java | 29 - .../aqua/sega/diva/model/gamedata/Pv.java | 45 -- .../sega/diva/model/gamedata/PvEntry.java | 57 -- .../sega/diva/model/request/BaseRequest.java | 34 - .../sega/diva/model/request/FormRequest.java | 17 - .../model/request/boot/AttendRequest.java | 23 - .../model/request/boot/GameInitRequest.java | 14 - .../request/card/CardProcedureRequest.java | 21 - .../model/request/card/ChangeNameRequest.java | 24 - .../request/card/ChangePasswdRequest.java | 23 - .../request/card/RegistrationRequest.java | 27 - .../request/databank/BannerDataRequest.java | 18 - .../request/databank/PsRankingRequest.java | 19 - .../request/ingame/BuyCstmzItmRequest.java | 22 - .../request/ingame/BuyModuleRequest.java | 22 - .../model/request/ingame/GetPvPdRequest.java | 20 - .../model/request/ingame/ShopExitRequest.java | 28 - .../request/ingame/StageResultRequest.java | 111 ---- .../request/ingame/StageStartRequest.java | 45 -- .../model/request/ingame/StoreSsRequest.java | 25 - .../model/request/user/PdUnlockRequest.java | 19 - .../model/request/user/PreStartRequest.java | 26 - .../request/user/SpendCreditRequest.java | 23 - .../diva/model/request/user/StartRequest.java | 19 - .../diva/model/response/BaseResponse.java | 19 - .../model/response/boot/AttendResponse.java | 27 - .../model/response/boot/GameInitResponse.java | 21 - .../response/card/CardProcedureResponse.java | 48 -- .../response/card/ChangeNameResponse.java | 31 - .../response/card/ChangePasswdResponse.java | 29 - .../response/card/RegistrationResponse.java | 22 - .../response/databank/BannerDataResponse.java | 28 - .../response/databank/BannerInfoResponse.java | 28 - .../databank/ContestInfoResponse.java | 23 - .../databank/CstmzItmCtlgResponse.java | 21 - .../databank/CstmzItmNgMdlListResponse.java | 21 - .../response/databank/FestaInfoResponse.java | 39 -- .../response/databank/NvRankingResponse.java | 27 - .../response/databank/PsRankingResponse.java | 45 -- .../response/databank/PstdHCtrlResponse.java | 21 - .../databank/PstdItemNgLstResponse.java | 23 - .../databank/PvDefChrLstResponse.java | 21 - .../response/databank/PvListResponse.java | 23 - .../response/databank/PvNgMdlLstResponse.java | 21 - .../response/databank/QstInfResponse.java | 23 - .../response/databank/RmtWpLstResponse.java | 21 - .../databank/ShopCatalogResponse.java | 23 - .../response/ingame/BuyCstmzItmResponse.java | 31 - .../response/ingame/BuyModuleResponse.java | 31 - .../response/ingame/GetPvPdResponse.java | 23 - .../response/ingame/ShopExitResponse.java | 20 - .../response/ingame/StageResultResponse.java | 112 ---- .../response/operation/PingResponse.java | 62 -- .../model/response/user/PreStartResponse.java | 73 --- .../response/user/SpendCreditResponse.java | 29 - .../model/response/user/StartResponse.java | 148 ----- .../sega/diva/model/userdata/GameSession.java | 72 --- .../sega/diva/model/userdata/PlayLog.java | 157 ----- .../diva/model/userdata/PlayerContest.java | 50 -- .../diva/model/userdata/PlayerCustomize.java | 37 -- .../diva/model/userdata/PlayerInventory.java | 36 -- .../diva/model/userdata/PlayerModule.java | 37 -- .../diva/model/userdata/PlayerProfile.java | 167 ----- .../model/userdata/PlayerPvCustomize.java | 55 -- .../diva/model/userdata/PlayerPvRecord.java | 70 -- .../diva/model/userdata/PlayerScreenShot.java | 43 -- .../diva/service/PlayerCustomizeService.java | 37 -- .../diva/service/PlayerModuleService.java | 38 -- .../diva/service/PlayerProfileService.java | 37 -- .../aqua/sega/diva/util/DivaCalculator.java | 37 -- .../diva/util/DivaDateTimeSerializer.java | 27 - .../aqua/sega/diva/util/DivaDateTimeUtil.java | 20 - .../aqua/sega/diva/util/DivaMapper.java | 59 -- .../samnyan/aqua/sega/diva/util/DivaMapper.kt | 38 ++ .../aqua/sega/diva/util/DivaStringUtils.java | 24 - .../samnyan/aqua/sega/diva/util/DivaUtils.kt | 57 ++ .../samnyan/aqua/sega/diva/util/Exceptions.kt | 5 + .../aqua/sega/general/GameMusicPopularity.kt | 1 - .../aqua/sega/general/dao/CardRepository.java | 18 - .../aqua/sega/general/dao/CardRepository.kt | 14 + .../general/dao/GameVersionRepository.java | 18 - .../general/dao/PropertyEntryRepository.java | 15 - .../general/dao/PropertyEntryRepository.kt | 14 + .../filter/CompressRequestWrapper.java | 53 -- .../general/filter/CompressRequestWrapper.kt | 24 + .../aqua/sega/general/model/GameVersion.java | 21 - .../sega/general/model/PropertyEntry.java | 37 -- .../aqua/sega/general/model/PropertyEntry.kt | 27 + .../sega/general/model/UserRecentRating.kt | 10 + .../model/response/UserRecentRating.java | 23 - .../aqua/sega/general/service/CardService.kt | 21 +- .../general/service/ClientSettingService.java | 42 -- .../controller/MaimaiServletController.java | 179 ------ .../MaimaiServletControllerAdvice.java | 38 -- .../dao/gamedata/GameEventRepository.java | 17 - .../dao/userdata/UserActivityRepository.java | 20 - .../dao/userdata/UserBossRepository.java | 17 - .../dao/userdata/UserCharacterRepository.java | 21 - .../dao/userdata/UserDataRepository.java | 15 - .../userdata/UserGeneralDataRepository.java | 19 - .../dao/userdata/UserItemRepository.java | 17 - .../userdata/UserMusicDetailRepository.java | 25 - .../dao/userdata/UserOptionRepository.java | 20 - .../dao/userdata/UserPlaylogRepository.java | 13 - .../userdata/UserPresentEventRepository.java | 17 - .../dao/userdata/UserSurvivalRepository.java | 17 - .../dao/userdata/UserWebOptionRepository.java | 20 - .../handler/impl/GetGameEventHandler.java | 49 -- .../handler/impl/GetGameRankingHandler.java | 65 -- .../handler/impl/GetGameSettingHandler.java | 77 --- .../impl/GetTransferFriendHandler.java | 40 -- .../handler/impl/GetUserActivityHandler.java | 50 -- .../handler/impl/GetUserBossHandler.java | 51 -- .../handler/impl/GetUserCharacterHandler.java | 48 -- .../handler/impl/GetUserCourseHandler.java | 48 -- .../handler/impl/GetUserDataHandler.java | 46 -- .../handler/impl/GetUserGradeHandler.java | 58 -- .../handler/impl/GetUserItemHandler.java | 59 -- .../handler/impl/GetUserMusicHandler.java | 73 --- .../handler/impl/GetUserOptionHandler.java | 46 -- .../impl/GetUserPresentEventHandler.java | 48 -- .../handler/impl/GetUserPresentHandler.java | 44 -- .../handler/impl/GetUserPreviewHandler.java | 76 --- .../impl/GetUserRecentRatingHandler.java | 58 -- .../handler/impl/GetUserSurvivalHandler.java | 48 -- .../handler/impl/GetUserWebOptionHandler.java | 47 -- .../handler/impl/UpsertTransferHandler.java | 30 - .../handler/impl/UpsertUserAllHandler.java | 212 ------- .../maimai/handler/impl/UserLoginHandler.java | 37 -- .../handler/impl/UserLogoutHandler.java | 34 - .../sega/maimai/model/gamedata/GameEvent.java | 32 - .../maimai/model/request/UpsertUserAll.java | 24 - .../maimai/model/request/data/UserAll.java | 33 - .../model/response/GetGameSettingResp.java | 19 - .../model/response/GetUserPreviewResp.java | 33 - .../maimai/model/response/UserLoginResp.java | 18 - .../model/response/data/GameRanking.java | 17 - .../model/response/data/GameSetting.java | 26 - .../model/response/data/UserGradeStatus.java | 18 - .../maimai/model/response/data/UserMusic.java | 19 - .../model/response/data/UserRecentRating.java | 17 - .../maimai/model/userdata/UserActivity.java | 52 -- .../sega/maimai/model/userdata/UserBoss.java | 52 -- .../maimai/model/userdata/UserCharacter.java | 42 -- .../sega/maimai/model/userdata/UserData.java | 135 ---- .../model/userdata/UserGeneralData.java | 45 -- .../sega/maimai/model/userdata/UserItem.java | 42 -- .../model/userdata/UserMusicDetail.java | 56 -- .../maimai/model/userdata/UserOption.java | 120 ---- .../maimai/model/userdata/UserPlaylog.java | 157 ----- .../model/userdata/UserPresentEvent.java | 44 -- .../maimai/model/userdata/UserSurvival.java | 51 -- .../maimai/model/userdata/UserWebOption.java | 50 -- .../samnyan/aqua/sega/maimai2/Maimai2Apis.kt | 20 +- .../sega/maimai2/Maimai2ServletController.kt | 13 +- .../handler/GetUserCharacterHandler.kt | 3 +- .../handler/GetUserFavoriteItemHandler.kt | 6 +- .../maimai2/handler/GetUserItemHandler.kt | 3 +- .../maimai2/handler/GetUserPortraitHandler.kt | 2 +- .../maimai2/handler/GetUserRatingHandler.kt | 14 +- .../maimai2/handler/UploadUserPhotoHandler.kt | 2 +- .../handler/UploadUserPlaylogHandler.kt | 12 +- .../handler/UploadUserPortraitHandler.kt | 2 +- .../maimai2/handler/UpsertUserAllHandler.kt | 38 +- .../maimai2/handler/UpsertUserPrintHandler.kt | 6 +- .../sega/maimai2/model/GameDataEntities.kt | 7 +- .../samnyan/aqua/sega/maimai2/model/Repos.kt | 28 +- .../maimai2/model/userdata/Mai2UserDetail.kt | 2 +- .../maimai2/model/userdata/UserEntities.kt | 58 +- .../samnyan/aqua/sega/ongeki/OngekiCMApis.kt | 45 +- .../aqua/sega/ongeki/OngekiController.kt | 3 +- .../samnyan/aqua/sega/ongeki/OngekiRepos.kt | 50 +- .../aqua/sega/ongeki/OngekiUpsertAllApi.kt | 52 +- .../aqua/sega/ongeki/OngekiUserApis.kt | 16 +- .../sega/ongeki/model/OngekiUpsertUserAll.kt | 2 +- .../sega/ongeki/model/OngekiUserEntities.kt | 2 +- .../icu/samnyan/aqua/sega/util/AquaConst.java | 8 - .../sega/util/{jackson => }/BasicMapper.kt | 2 +- .../samnyan/aqua/sega/util/ByteBufUtil.java | 59 -- .../sega/util/{jackson => }/Serializers.kt | 2 +- .../samnyan/aqua/sega/util/URIEncoder.java | 14 - .../samnyan/aqua/sega/util/VersionInfo.java | 17 - .../samnyan/aqua/sega/util/VersionUtil.java | 45 -- .../samnyan/aqua/sega/wacca/WaccaServer.kt | 2 +- .../icu/samnyan/aqua/spring/SecurityConfig.kt | 1 - .../aqua/spring/data/OffsetPageRequest.java | 161 ----- .../db/80/V1000_65__drop_the_codebase.sql | 42 ++ start.bat | 42 -- 492 files changed, 4754 insertions(+), 17022 deletions(-) delete mode 100644 .gitlab-ci.yml create mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerController.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerControllerAdvice.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerControllerAdvice.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetClientBookkeepingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameConnectHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameSettingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/CodeResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/GetGameSettingResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameConnect.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameSetting.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletControllerAdvice.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterSkillRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameChargeRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameEventRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMessageRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMusicRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserActivityRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserChargeRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCourseRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataExRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDuelRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionExRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGeneralDataRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMapRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLoginHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLogoutHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameChargeHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameEventHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameIdlistHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameMessageHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameRankingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSaleHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseRuleHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseSettingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserActivityHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCharacterHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserChargeHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataExHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDuelHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteItemHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteMusicHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserItemHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserLoginBonusHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMapHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMusicHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionExHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRecentRatingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRegionHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalDataHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalMusicHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserTeamHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientSettingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserAllHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserChargelogHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Character.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/CharacterSkill.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Diff.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameCharge.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameMessage.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Genre.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Level.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Music.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSetting.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSettingRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/UpsertUserAll.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/CodeResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetGameSettingResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetUserPreviewResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/AllMusicMapItem.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameRanking.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSale.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSetting.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/UserMusicListItem.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserActivity.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharge.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCourse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserData.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDataEx.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDuel.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOption.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOptionEx.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGeneralData.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMap.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMusicDetail.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserPlaylog.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/GameMusicService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserActivityService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserChargeService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataExService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDuelService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionExService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGeneralDataService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMapService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/DivaController.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/DivaRepos.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/DivaServices.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaControllerAdvice.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/ContestRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaCustomizeRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaModuleRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaPvRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/FestaRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/NgWordsRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/PvEntryRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/GameSessionRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayLogRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerContestRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerCustomizeRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerInventoryRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerModuleRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerProfileRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvCustomizeRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvRecordRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerScreenShotRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/exception/ProfileNotFoundException.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/exception/PvRecordDataException.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotExistException.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotFoundException.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/BaseHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/InitHandlers.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/AttendHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/GameInitHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/InitPasswdHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerDataHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerInfoHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CmPlyInfoHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmCtlgHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmNgMdlListHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NgWordHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdHCtrlHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdItemNgLstHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvDefChrLstHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvNgMdlLstHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/QstInfHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/RmtWpLstHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/operation/PingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/DivaRequestModels.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/DivaResponse.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ChallengeKind.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ClearResult.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestBorder.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestLeague.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestNormaType.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestStageLimit.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/Difficulty.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/Edition.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/FestaKind.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/PassStat.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/PreStartResult.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/Result.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/StartMode.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/ValueEnum.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/DispersalParameter.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/EtcParameter.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBid.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBidSet.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearSet.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Contest.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Difficulty.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaCustomize.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaModule.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Festa.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Pv.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/PvEntry.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/GameSession.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayLog.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerContest.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerCustomize.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerInventory.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerModule.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerProfile.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvCustomize.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvRecord.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerScreenShot.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Contest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Difficulty.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaCustomize.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaModule.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Festa.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/NgWords.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Pv.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/PvEntry.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/BaseRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/FormRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/AttendRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/GameInitRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/CardProcedureRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangeNameRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangePasswdRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/RegistrationRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/BannerDataRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/PsRankingRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyCstmzItmRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyModuleRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/GetPvPdRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/ShopExitRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageResultRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageStartRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StoreSsRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PdUnlockRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PreStartRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/SpendCreditRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/StartRequest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/BaseResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/AttendResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/GameInitResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/CardProcedureResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangeNameResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangePasswdResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/RegistrationResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerDataResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerInfoResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ContestInfoResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmCtlgResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmNgMdlListResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/FestaInfoResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/NvRankingResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PsRankingResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdHCtrlResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdItemNgLstResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvDefChrLstResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvListResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvNgMdlLstResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/QstInfResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/RmtWpLstResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ShopCatalogResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyCstmzItmResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyModuleResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/GetPvPdResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/ShopExitResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/StageResultResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/operation/PingResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/PreStartResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/SpendCreditResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/StartResponse.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/GameSession.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayLog.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerContest.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerCustomize.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerInventory.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerModule.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerProfile.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvCustomize.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvRecord.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerScreenShot.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerCustomizeService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerModuleService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerProfileService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaCalculator.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeSerializer.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeUtil.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaStringUtils.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/DivaUtils.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/diva/util/Exceptions.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/dao/GameVersionRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/model/GameVersion.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.kt create mode 100644 src/main/java/icu/samnyan/aqua/sega/general/model/UserRecentRating.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/general/service/ClientSettingService.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletControllerAdvice.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/gamedata/GameEventRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserActivityRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserBossRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserCharacterRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserDataRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserGeneralDataRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserItemRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserMusicDetailRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserOptionRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPlaylogRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPresentEventRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserSurvivalRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserWebOptionRepository.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameEventHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameRankingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameSettingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetTransferFriendHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserActivityHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserBossHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCharacterHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCourseHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserDataHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserGradeHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserItemHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserMusicHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserOptionHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentEventHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPreviewHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserRecentRatingHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserSurvivalHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserWebOptionHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertTransferHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertUserAllHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLoginHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLogoutHandler.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/gamedata/GameEvent.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/request/UpsertUserAll.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/request/data/UserAll.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetGameSettingResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetUserPreviewResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/UserLoginResp.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameRanking.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameSetting.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserGradeStatus.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserMusic.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserRecentRating.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserActivity.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserBoss.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserCharacter.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserData.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserGeneralData.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserItem.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserMusicDetail.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserOption.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPlaylog.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPresentEvent.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserSurvival.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserWebOption.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/util/AquaConst.java rename src/main/java/icu/samnyan/aqua/sega/util/{jackson => }/BasicMapper.kt (98%) delete mode 100644 src/main/java/icu/samnyan/aqua/sega/util/ByteBufUtil.java rename src/main/java/icu/samnyan/aqua/sega/util/{jackson => }/Serializers.kt (97%) delete mode 100644 src/main/java/icu/samnyan/aqua/sega/util/URIEncoder.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/util/VersionInfo.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/util/VersionUtil.java delete mode 100644 src/main/java/icu/samnyan/aqua/spring/data/OffsetPageRequest.java create mode 100644 src/main/resources/db/80/V1000_65__drop_the_codebase.sql delete mode 100644 start.bat diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 3af2f588..00000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,25 +0,0 @@ -image: gradle:alpine - -before_script: - - GRADLE_USER_HOME="$(pwd)/.gradle" - - export GRADLE_USER_HOME - -build: - stage: build - script: gradle --build-cache assemble - cache: - key: "$CI_COMMIT_REF_NAME" - policy: push - paths: - - build - - .gradle - -test: - stage: test - script: gradle check - cache: - key: "$CI_COMMIT_REF_NAME" - policy: pull - paths: - - build - - .gradle diff --git a/README.md b/README.md index ba04780d..35b3c7ab 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,8 @@ Check out these docs for more information. * [Game specific notes](docs/game_specific_notes.md) * [Frequently asked questions](docs/frequently_asked_questions.md) -> [!TIP] -> Some games may require additional patches and these will not be provided in this project and repository. You already found this, so you know where to find related resources too. +> [!WARNING] +> CHUNITHM pre-NEW!! and maimai pre-DX are no longer supported after February 6th, 2026 and all associated data will be removed. ## Usage If you own a cab or controller and just want to play the game, follow the instructions below: diff --git a/build.gradle.kts b/build.gradle.kts index ccbe7f91..a985cba8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,14 +7,12 @@ plugins { val ktVer = "2.1.10" java - kotlin("plugin.lombok") version ktVer kotlin("jvm") version ktVer kotlin("plugin.spring") version ktVer kotlin("plugin.jpa") version ktVer kotlin("plugin.serialization") version ktVer kotlin("plugin.allopen") version ktVer kotlin("kapt") version ktVer - id("io.freefair.lombok") version "8.6" id("org.springframework.boot") version "3.2.3" id("com.github.ben-manes.versions") version "0.51.0" id("org.hibernate.orm") version "6.4.4.Final" diff --git a/src/main/java/ext/Ext.kt b/src/main/java/ext/Ext.kt index 781948af..2a790312 100644 --- a/src/main/java/ext/Ext.kt +++ b/src/main/java/ext/Ext.kt @@ -217,6 +217,8 @@ val Map.mut get() = toMutableMap() val Set.mut get() = toMutableSet() fun List.unique(fn: (T) -> Any) = distinctBy(fn).ifEmpty { null } +val Collection.csv get() = joinToString(",") +val IntArray.csv get() = joinToString(",") // Optionals operator fun Optional.invoke(): T? = orElse(null) @@ -233,6 +235,7 @@ fun Str.fromChusanUsername() = String(this.toByteArray(StandardCharsets.ISO_8859 fun Str.truncate(len: Int) = if (this.length > len) this.take(len) + "..." else this val Str.some get() = ifBlank { null } val ByteArray.hexStr get() = toHexString() +operator fun StringBuilder.plusAssign(other: String) { this.append(other) } // Coroutine suspend fun async(block: suspend kotlinx.coroutines.CoroutineScope.() -> T): T = withContext(Dispatchers.IO) { block() } @@ -261,6 +264,7 @@ operator fun List.component13(): E = get(12) inline operator fun List.invoke(i: Int) = get(i) as E val empty = emptyList() +val emptyMap = emptyMap() val Pair.l get() = component1() val Pair<*, S>.r get() = component2() diff --git a/src/main/java/icu/samnyan/aqua/net/Bot.kt b/src/main/java/icu/samnyan/aqua/net/Bot.kt index 37dbc427..b6d76c06 100644 --- a/src/main/java/icu/samnyan/aqua/net/Bot.kt +++ b/src/main/java/icu/samnyan/aqua/net/Bot.kt @@ -4,6 +4,7 @@ import ext.* import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.sega.chusan.model.Chu3Repos +import icu.samnyan.aqua.sega.general.model.Card import icu.samnyan.aqua.sega.general.model.CardStatus import icu.samnyan.aqua.sega.general.model.sensitiveInfo import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos @@ -52,7 +53,7 @@ class BotController( secret.checkSecret() // 1. Find user card - val oc = (us.cardRepo.findByLuid(card)() ?: (404 - "Card not found")).maybeGhost() + val oc = (us.cardRepo.findByLuid(card) ?: (404 - "Card not found")).maybeGhost() // 2. Change the status to migrated us.cardRepo.save(oc.apply { @@ -66,7 +67,7 @@ class BotController( fun clearMigrateFlag(@RP secret: Str, @RP card: Str): Any { secret.checkSecret() - val oc = (us.cardRepo.findByLuid(card)() ?: (404 - "Card not found")).maybeGhost() + val oc = (us.cardRepo.findByLuid(card) ?: (404 - "Card not found")).maybeGhost() us.cardRepo.save(oc.apply { status = CardStatus.NORMAL @@ -82,14 +83,14 @@ class BotController( secret.checkSecret() // 1. Check if the card exist - var cards = listOfNotNull( - us.cardRepo.findByLuid(cardId)(), + var cards: MutableList = listOfNotNull( + us.cardRepo.findByLuid(cardId), ).mut cardId.toLongOrNull()?.let { cards += listOfNotNull( us.cardRepo.findById(it)(), - us.cardRepo.findByExtId(it)(), + us.cardRepo.findByExtId(it), ) cards += listOfNotNull( @@ -110,8 +111,8 @@ class BotController( return cards.map { card -> // Find all games played by this card - val chu3 = chu3Db.userData.findByCard_ExtId(card.extId)() - val mai2 = mai2Db.userData.findByCard_ExtId(card.extId)() + val chu3 = chu3Db.userData.findByCard_ExtId(card.extId) + val mai2 = mai2Db.userData.findByCard_ExtId(card.extId) val gamesDict = listOfNotNull(chu3, mai2).map { // Find the keychip owner val keychip = it.lastClientId diff --git a/src/main/java/icu/samnyan/aqua/net/CardController.kt b/src/main/java/icu/samnyan/aqua/net/CardController.kt index b44bfb1e..e015eb39 100644 --- a/src/main/java/icu/samnyan/aqua/net/CardController.kt +++ b/src/main/java/icu/samnyan/aqua/net/CardController.kt @@ -8,6 +8,7 @@ import icu.samnyan.aqua.net.games.IUserData import icu.samnyan.aqua.net.utils.AquaNetProps import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo +import icu.samnyan.aqua.sega.diva.PlayerProfileRepository import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.general.model.Card import icu.samnyan.aqua.sega.general.service.CardService @@ -19,7 +20,6 @@ import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Service import org.springframework.web.bind.annotation.RestController import java.time.LocalDateTime -import kotlin.jvm.optionals.getOrNull import kotlin.random.Random @RestController @@ -203,7 +203,7 @@ class CardGameService( val chusan: Chu3UserDataRepo, val wacca: WcUserRepo, val ongeki: OgkUserDataRepo, - val diva: icu.samnyan.aqua.sega.diva.dao.userdata.PlayerProfileRepository, + val diva: PlayerProfileRepository, val safety: AquaNetSafetyService, val cardRepo: CardRepository, val em: EntityManager, @@ -240,7 +240,7 @@ class CardGameService( "chu3" to getSummaryFor(chusan, card), "ongeki" to getSummaryFor(ongeki, card), "wacca" to getSummaryFor(wacca, card), - "diva" to diva.findByPdId(card.extId).getOrNull()?.let { + "diva" to diva.findByPdId(card.extId)()?.let { mapOf( "name" to it.playerName, "rating" to it.level, diff --git a/src/main/java/icu/samnyan/aqua/net/Fedy.kt b/src/main/java/icu/samnyan/aqua/net/Fedy.kt index a6068911..c2f6359a 100644 --- a/src/main/java/icu/samnyan/aqua/net/Fedy.kt +++ b/src/main/java/icu/samnyan/aqua/net/Fedy.kt @@ -2,39 +2,39 @@ package icu.samnyan.aqua.net import ext.* import icu.samnyan.aqua.net.components.EmailProperties -import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.context.annotation.Configuration -import org.springframework.web.bind.annotation.RestController -import java.security.MessageDigest -import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.net.components.JWT import icu.samnyan.aqua.net.db.AquaGameOptions import icu.samnyan.aqua.net.db.AquaNetUser import icu.samnyan.aqua.net.db.AquaUserServices -import icu.samnyan.aqua.net.games.mai2.Mai2Import import icu.samnyan.aqua.net.games.ExportOptions -import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPlaylogHandler as Mai2UploadUserPlaylogHandler -import icu.samnyan.aqua.sega.maimai2.handler.UpsertUserAllHandler as Mai2UpsertUserAllHandler -import icu.samnyan.aqua.net.utils.ApiException -import org.springframework.transaction.PlatformTransactionManager -import org.springframework.transaction.support.TransactionTemplate -import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo import icu.samnyan.aqua.net.games.GenericUserDataRepo import icu.samnyan.aqua.net.games.IUserData +import icu.samnyan.aqua.net.games.mai2.Mai2Import +import icu.samnyan.aqua.net.utils.ApiException import icu.samnyan.aqua.net.utils.PathProps +import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.general.model.Card import icu.samnyan.aqua.sega.general.service.CardService +import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo import icu.samnyan.aqua.sega.wacca.model.db.WcUserRepo +import org.springframework.boot.context.properties.ConfigurationProperties +import org.springframework.context.annotation.Configuration +import org.springframework.transaction.PlatformTransactionManager +import org.springframework.transaction.support.TransactionTemplate +import org.springframework.web.bind.annotation.RestController import org.springframework.context.ApplicationContext import org.springframework.web.multipart.MultipartFile import java.time.Instant +import java.security.MessageDigest import java.util.concurrent.CompletableFuture import kotlin.io.path.getLastModifiedTime import kotlin.io.path.isRegularFile import kotlin.io.path.writeBytes +import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPlaylogHandler as Mai2UploadUserPlaylogHandler +import icu.samnyan.aqua.sega.maimai2.handler.UpsertUserAllHandler as Mai2UpsertUserAllHandler @Configuration @ConfigurationProperties(prefix = "aqua-net.fedy") @@ -176,7 +176,7 @@ class Fedy( data class DataPullRes(val error: FedyErr? = null, val result: DataPullResult? = null) @API("/data/pull") fun handleDataPull(@RH(KEY_HEADER) key: Str, @RT(REQ_PART) req: DataPullReq): DataPullRes = handleFedy(key) { - val card = cardRepo.findByExtId(req.extId).orElse(null) + val card = cardRepo.findByExtId(req.extId) ?: (404 - "Card with extId ${req.extId} not found") val cardTimestamp = cardService.getCardTimestamp(card, req.game) if (cardTimestamp.updatedAt.toEpochMilli() == req.updatedAtMs) return@handleFedy DataPullRes(error = null, result = null) // No changes @@ -196,14 +196,13 @@ class Fedy( fun handleDataPush(@RH(KEY_HEADER) key: Str, @RT(REQ_PART) req: DataPushReq): Any = handleFedy(key) { val extId = req.extId fun> removeOldData(repo: UserRepo) { - val oldData = repo.findByCard_ExtId(extId) - if (oldData.isPresent) { + repo.findByCard_ExtId(extId)?.let { oldData -> log.info("Fedy: Deleting old data for $extId (${req.game})") - repo.delete(oldData.get()); + repo.delete(oldData); repo.flush() } } - val card = cardRepo.findByExtId(extId).orElse(null) ?: (404 - "Card not found") + val card = cardRepo.findByExtId(extId) ?: (404 - "Card not found") transaction.execute { when (req.game) { "mai2" -> { if (req.removeOldData) { removeOldData(mai2UserDataRepo) } @@ -297,7 +296,7 @@ class Fedy( fun onCardLinked(luid: Str, oldExtId: Long?, ghostExtId: Long, migratedGames: List) = maybeNotifyAsync { FedyEvent(cardLinked = CardLinkedEvent(luid, oldExtId, ghostExtId, migratedGames)) } fun onCardUnlinked(luid: Str) = maybeNotifyAsync { FedyEvent(cardUnlinked = CardUnlinkedEvent(luid)) } fun onDataUpdated(extId: Long, game: Str, removeOldData: Bool) = maybeNotifyAsync { - val card = cardRepo.findByExtId(extId).orElse(null) ?: return@maybeNotifyAsync null // Card not found, nothing to do + val card = cardRepo.findByExtId(extId) ?: return@maybeNotifyAsync null // Card not found, nothing to do FedyEvent(dataUpdated = DataUpdatedEvent(extId, card.isGhost, game, removeOldData)) } diff --git a/src/main/java/icu/samnyan/aqua/net/Frontier.kt b/src/main/java/icu/samnyan/aqua/net/Frontier.kt index 6ea55c9f..50a5d68c 100644 --- a/src/main/java/icu/samnyan/aqua/net/Frontier.kt +++ b/src/main/java/icu/samnyan/aqua/net/Frontier.kt @@ -33,7 +33,7 @@ class Frontier( if (accessCode.length != 20) 400 - "Invalid access code" // if (!accessCode.startsWith("9900")) 400 - "Frontier access code must start with 9900" - if (async { cardService.cardRepo.findByLuid(accessCode) }.isPresent) 400 - "Card already registered" + if (async { cardService.cardRepo.findByLuid(accessCode) } != null) 400 - "Card already registered" val card = async { cardService.registerByAccessCode(accessCode) } diff --git a/src/main/java/icu/samnyan/aqua/net/Migrations.kt b/src/main/java/icu/samnyan/aqua/net/Migrations.kt index 57e0cbf1..0b4a1e90 100644 --- a/src/main/java/icu/samnyan/aqua/net/Migrations.kt +++ b/src/main/java/icu/samnyan/aqua/net/Migrations.kt @@ -1,7 +1,6 @@ package icu.samnyan.aqua.net import ext.JACKSON -import ext.invoke import ext.logger import ext.parse import icu.samnyan.aqua.net.db.AquaNetUserRepo @@ -24,7 +23,7 @@ class Migrations( @PostConstruct fun migrate() { - val db = props.findByPropertyKey("migrations")() ?: PropertyEntry("migrations", "[]") + val db = props.findByPropertyKey("migrations") ?: PropertyEntry("migrations", "[]") val p = JACKSON.parse>(db.propertyValue) val old = p.size @@ -47,7 +46,7 @@ class Migrations( if (c.extId > max) { var new = c.extId and max log.info("Removing signed bit: {${c.extId} -> $new} for ${c.luid}") - while (cardRepo.findByExtId(new).isPresent) { + while (cardRepo.findByExtId(new) != null) { log.error("> Conflicting card found for ${c.luid}: $new") new++ } diff --git a/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt b/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt index 3cd6d2e4..99915057 100644 --- a/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt +++ b/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt @@ -2,10 +2,14 @@ package icu.samnyan.aqua.net import ext.* import icu.samnyan.aqua.net.components.* -import icu.samnyan.aqua.net.db.* +import icu.samnyan.aqua.net.db.AquaNetUserRepo +import icu.samnyan.aqua.net.db.AquaUserServices +import icu.samnyan.aqua.net.db.EmailConfirmationRepo +import icu.samnyan.aqua.net.db.ResetPasswordRepo import icu.samnyan.aqua.net.utils.PathProps import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.sega.general.dao.CardRepository +import icu.samnyan.aqua.sega.general.model.CardStatus import jakarta.servlet.http.HttpServletRequest import org.slf4j.LoggerFactory import org.springframework.security.crypto.password.PasswordEncoder diff --git a/src/main/java/icu/samnyan/aqua/net/components/Email.kt b/src/main/java/icu/samnyan/aqua/net/components/Email.kt index 0dce7d5d..ed4b5916 100644 --- a/src/main/java/icu/samnyan/aqua/net/components/Email.kt +++ b/src/main/java/icu/samnyan/aqua/net/components/Email.kt @@ -3,11 +3,7 @@ package icu.samnyan.aqua.net.components import ext.Bool import ext.Str import ext.logger -import icu.samnyan.aqua.net.db.AquaNetUser -import icu.samnyan.aqua.net.db.EmailConfirmation -import icu.samnyan.aqua.net.db.EmailConfirmationRepo -import icu.samnyan.aqua.net.db.ResetPassword -import icu.samnyan.aqua.net.db.ResetPasswordRepo +import icu.samnyan.aqua.net.db.* import org.simplejavamail.api.mailer.Mailer import org.simplejavamail.email.EmailBuilder import org.simplejavamail.springsupport.SimpleJavaMailSpringSupport diff --git a/src/main/java/icu/samnyan/aqua/net/components/JWT.kt b/src/main/java/icu/samnyan/aqua/net/components/JWT.kt index 1524b7a1..75b829b1 100644 --- a/src/main/java/icu/samnyan/aqua/net/components/JWT.kt +++ b/src/main/java/icu/samnyan/aqua/net/components/JWT.kt @@ -2,11 +2,7 @@ package icu.samnyan.aqua.net.components import ext.Str import ext.minus -import icu.samnyan.aqua.net.db.AquaNetUser -import icu.samnyan.aqua.net.db.AquaNetUserRepo -import icu.samnyan.aqua.net.db.SessionToken -import icu.samnyan.aqua.net.db.SessionTokenRepo -import icu.samnyan.aqua.net.db.getTokenExpiry +import icu.samnyan.aqua.net.db.* import io.jsonwebtoken.JwtParser import io.jsonwebtoken.Jwts import io.jsonwebtoken.security.Keys diff --git a/src/main/java/icu/samnyan/aqua/net/db/AquaNetSession.kt b/src/main/java/icu/samnyan/aqua/net/db/AquaNetSession.kt index f4f3c724..f3f24d52 100644 --- a/src/main/java/icu/samnyan/aqua/net/db/AquaNetSession.kt +++ b/src/main/java/icu/samnyan/aqua/net/db/AquaNetSession.kt @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository import java.io.Serializable import java.time.Instant -import java.util.UUID +import java.util.* fun getTokenExpiry() = Instant.now().plusSeconds(7 * 86400) diff --git a/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt b/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt index 981d5e37..34b2221b 100644 --- a/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt +++ b/src/main/java/icu/samnyan/aqua/net/db/AquaNetUser.kt @@ -184,7 +184,7 @@ class AquaUserServices( suspend fun cardByName(username: Str) = if (username.startsWith("user")) username.substring(4).toLongOrNull() - ?.let { cardRepo.findById(it).getOrNull() } ?: (404 - "Card not found") + ?.let { cardRepo.findById(it)() } ?: (404 - "Card not found") else byName(username) { it.ghostCard } suspend fun cardByName(username: Str, callback: suspend (Card) -> T) = callback(cardByName(username)) diff --git a/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt b/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt index 9b79ecba..100e7175 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/GameApiController.kt @@ -121,7 +121,7 @@ abstract class GameApiController(val name: String, userDataClass: } @API("playlog") - fun playlog(@RP id: Long): IGenericGamePlaylog = playlogRepo.findById(id).getOrNull() ?: (404 - "Playlog not found") + fun playlog(@RP id: Long): IGenericGamePlaylog = playlogRepo.findById(id)() ?: (404 - "Playlog not found") val userDetailFields by lazy { userDataClass.gettersMap().let { vm -> (settableFields.keys.toSet() + gettableFields) diff --git a/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt b/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt index 3ede59f4..248772f8 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt @@ -1,20 +1,20 @@ package icu.samnyan.aqua.net.games import ext.* +import icu.samnyan.aqua.net.Fedy import icu.samnyan.aqua.net.db.AquaNetUser import icu.samnyan.aqua.net.db.AquaUserServices -import icu.samnyan.aqua.net.Fedy import icu.samnyan.aqua.net.utils.AquaNetProps import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.sega.general.model.Card import icu.samnyan.aqua.sega.general.service.CardService import org.springframework.beans.factory.annotation.Autowired +import org.springframework.context.annotation.Lazy import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.repository.NoRepositoryBean import org.springframework.transaction.PlatformTransactionManager import org.springframework.transaction.support.TransactionTemplate import java.time.LocalDateTime -import java.util.* import kotlin.io.path.Path import kotlin.io.path.writeText import kotlin.reflect.KClass @@ -43,7 +43,7 @@ interface IExportClass { @NoRepositoryBean interface IUserRepo: JpaRepository { fun findByUser(user: UserModel): List - fun findSingleByUser(user: UserModel): Optional + fun findSingleByUser(user: UserModel): ThisModel? } /** @@ -91,7 +91,7 @@ abstract class ImportController, UserModel: userData = userDataRepo.findByCard(c) ?: (404 - "User not found") exportRepos.forEach { (f, u) -> if (f returns List::class) f.set(this, u.findByUser(userData)) - else u.findSingleByUser(userData)()?.let { f.set(this, it) } + else u.findSingleByUser(userData)?.let { f.set(this, it) } } customExporters.forEach { (f, exporter) -> exporter(userData, options)?.let { f.set(this, it) } diff --git a/src/main/java/icu/samnyan/aqua/net/games/Models.kt b/src/main/java/icu/samnyan/aqua/net/games/Models.kt index 447d7898..5fefbb11 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/Models.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/Models.kt @@ -125,7 +125,7 @@ open class BaseEntity( @NoRepositoryBean interface GenericUserDataRepo : JpaRepository { fun findByCard(card: Card): T? - fun findByCard_ExtId(extId: Long): Optional + fun findByCard_ExtId(extId: Long): T? @Query("select e from #{#entityName} e where e.card.rankingBanned = false") fun findAllNonBanned(): List diff --git a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt index 2efced3d..303b5262 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chusan.kt @@ -3,8 +3,11 @@ package icu.samnyan.aqua.net.games.chu3 import ext.* import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.games.* -import icu.samnyan.aqua.net.utils.* -import icu.samnyan.aqua.sega.chusan.model.* +import icu.samnyan.aqua.net.utils.chu3Scores +import icu.samnyan.aqua.sega.chusan.model.Chu3Repos +import icu.samnyan.aqua.sega.chusan.model.Chu3UserDataRepo +import icu.samnyan.aqua.sega.chusan.model.Chu3UserMusicDetailRepo +import icu.samnyan.aqua.sega.chusan.model.Chu3UserPlaylogRepo import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3UserData import icu.samnyan.aqua.sega.chusan.model.userdata.UserGameOption import org.springframework.web.bind.annotation.RestController @@ -106,7 +109,7 @@ class Chusan( } @API("user-option-set") override suspend fun userOptionSet(@RP token: String, @RP field: String, @RP value: Int): Any = us.jwt.auth(token) { u -> - val gameOptions = rp.userGameOption.findSingleByUser_Card_ExtId(u.ghostCard.extId).getOrNull() + val gameOptions = rp.userGameOption.findSingleByUser_Card_ExtId(u.ghostCard.extId) val property = UserGameOption::class.memberProperties.filterIsInstance>().find{ it.name == field } if (property != null && gameOptions != null) { diff --git a/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt b/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt index 78dc0d69..850d0bb6 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt @@ -14,6 +14,7 @@ import icu.samnyan.aqua.sega.maimai2.model.userdata.* import org.springframework.web.bind.annotation.RestController import kotlin.reflect.full.declaredMembers +@Suppress("UNCHECKED_CAST") @RestController @API("api/v2/game/mai2") class Mai2Import( @@ -61,7 +62,7 @@ class Mai2Import( } }, Maimai2DataExport::userFavoriteMusicList to { user: Mai2UserDetail, _: ExportOptions -> - repos.userGeneralData.findByUserAndPropertyKey(user, "favorite_music").orElse(null) + repos.userGeneralData.findByUserAndPropertyKey(user, "favorite_music") ?.propertyValue ?.takeIf { it.isNotEmpty() } ?.split(",") @@ -78,7 +79,7 @@ class Mai2Import( if (favoriteMusicList.isNotEmpty()) { 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) ?: Mai2UserGeneralData().apply { this.user = user; propertyKey = key } repos.userGeneralData.save(data.apply { propertyValue = favoriteMusicList.sortedBy { it.orderId }.map { it.id }.joinToString(",") diff --git a/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2MusicDetailImport.kt b/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2MusicDetailImport.kt index 7b1cdf25..180d2b90 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2MusicDetailImport.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2MusicDetailImport.kt @@ -1,6 +1,9 @@ package icu.samnyan.aqua.net.games.mai2 -import ext.* +import ext.API +import ext.RB +import ext.RP +import ext.minus import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.utils.SUCCESS import icu.samnyan.aqua.sega.general.service.CardService @@ -19,24 +22,18 @@ class Mai2MusicDetailImport( @PostMapping("import-music-detail") suspend fun importMusicDetail(@RP token: String, @RB data: List) = us.jwt.auth(token) { u -> us.cardByName(u.username) { card -> - val user = repos.userData.findByCardExtId(card.extId).orElse(null) ?: (404 - "User not found") + val user = repos.userData.findByCardExtId(card.extId) ?: (404 - "User not found") data.forEach { newMusic -> - val musicRec = repos.userMusicDetail.findByUserAndMusicIdAndLevel(user, newMusic.musicId, newMusic.level) - if (musicRec.isPresent) { - val music = musicRec.get() + newMusic.user = user + repos.userMusicDetail.findByUserAndMusicIdAndLevel(user, newMusic.musicId, newMusic.level)?.let { m -> newMusic.apply { - id = music.id - this.user = user - achievement = achievement.coerceAtLeast(music.achievement) - scoreRank = scoreRank.coerceAtLeast(music.scoreRank) - comboStatus = comboStatus.coerceAtLeast(music.comboStatus) - syncStatus = syncStatus.coerceAtLeast(music.syncStatus) - deluxscoreMax = deluxscoreMax.coerceAtLeast(music.deluxscoreMax) - playCount = playCount.coerceAtLeast(music.playCount) - } - } else { - newMusic.apply { - this.user = user + id = m.id + achievement = achievement.coerceAtLeast(m.achievement) + scoreRank = scoreRank.coerceAtLeast(m.scoreRank) + comboStatus = comboStatus.coerceAtLeast(m.comboStatus) + syncStatus = syncStatus.coerceAtLeast(m.syncStatus) + deluxscoreMax = deluxscoreMax.coerceAtLeast(m.deluxscoreMax) + playCount = playCount.coerceAtLeast(m.playCount) } } } diff --git a/src/main/java/icu/samnyan/aqua/net/games/mai2/Maimai2.kt b/src/main/java/icu/samnyan/aqua/net/games/mai2/Maimai2.kt index ae21fcb5..1a7fbc47 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/mai2/Maimai2.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/mai2/Maimai2.kt @@ -3,14 +3,20 @@ package icu.samnyan.aqua.net.games.mai2 import ext.* import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.games.* -import icu.samnyan.aqua.net.utils.* +import icu.samnyan.aqua.net.utils.SUCCESS +import icu.samnyan.aqua.net.utils.mai2Scores import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPhotoHandler -import icu.samnyan.aqua.sega.maimai2.model.* -import icu.samnyan.aqua.sega.maimai2.model.userdata.* +import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos +import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo +import icu.samnyan.aqua.sega.maimai2.model.Mai2UserMusicDetailRepo +import icu.samnyan.aqua.sega.maimai2.model.Mai2UserPlaylogRepo +import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserDetail +import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserGeneralData +import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserLoginBonus +import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserOption import org.springframework.http.MediaType import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RestController -import java.util.* import kotlin.jvm.optionals.getOrNull import kotlin.reflect.KMutableProperty1 import kotlin.reflect.full.memberProperties @@ -61,9 +67,9 @@ class Maimai2( us.jwt.auth(t) { u -> if (u.username == username) return@auth null us.cardByName(u.username) { myCard -> - val user = repos.userData.findByCardExtId(card.extId).orElse(null) ?: (404 - "User not found") - val myRival = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(myCard.extId, "favorite_rival") - .map { it.propertyValue.split(',') }.orElse(emptyList()).filter { it.isNotEmpty() }.map { it.long() } + val user = repos.userData.findByCardExtId(card.extId) ?: (404 - "User not found") + val myRival = (repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(myCard.extId, "favorite_rival")?.propertyValue?.split(',') ?: emptyList()) + .filter { it.isNotEmpty() }.map { it.long() } myRival.contains(user.id) } } @@ -136,7 +142,7 @@ class Maimai2( if (loginBonus.none { it.bonusId == bonusId }) { // create one val newBonus = Mai2UserLoginBonus().apply { - user = repos.userData.findByCardExtId(card.extId).orElse(null) ?: (404 - "User not found") + user = repos.userData.findByCardExtId(card.extId) ?: (404 - "User not found") this.bonusId = bonusId isCurrent = true } @@ -154,7 +160,7 @@ class Maimai2( } @API("user-option-set") override suspend fun userOptionSet(@RP token: String, @RP field: String, @RP value: Int): Any = us.jwt.auth(token) { u -> - val gameOptions = repos.userOption.findSingleByUser_Card_ExtId(u.ghostCard.extId).getOrNull() + val gameOptions = repos.userOption.findSingleByUser_Card_ExtId(u.ghostCard.extId) val property = Mai2UserOption::class.memberProperties.filterIsInstance>().find{ it.name == field } if (property != null && gameOptions != null) { @@ -177,10 +183,10 @@ class Maimai2( suspend fun setRival(@RP token: String, @RP rivalUserName: String, @RP isAdd: Boolean) = us.jwt.auth(token) { u -> us.cardByName(u.username) { myCard -> val rivalCard = us.cardByName(rivalUserName) { it } - val rivalUser = repos.userData.findByCardExtId(rivalCard.extId).orElse(null) ?: (404 - "User not found") - val myRival = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(myCard.extId, "favorite_rival").orElse(null) + val rivalUser = repos.userData.findByCardExtId(rivalCard.extId) ?: (404 - "User not found") + val myRival = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(myCard.extId, "favorite_rival") ?: Mai2UserGeneralData().apply { - user = repos.userData.findByCardExtId(myCard.extId).orElse(null) ?: (404 - "User not found") + user = repos.userData.findByCardExtId(myCard.extId) ?: (404 - "User not found") propertyKey = "favorite_rival" } val myRivalList = myRival.propertyValue.split(',').filter { it.isNotEmpty() }.mut diff --git a/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt b/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt index ffa2c951..e72657bb 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt @@ -5,7 +5,7 @@ import ext.RP import ext.minus import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.games.* -import icu.samnyan.aqua.net.utils.* +import icu.samnyan.aqua.net.utils.ongekiScores import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo import icu.samnyan.aqua.sega.ongeki.OgkUserGeneralDataRepo import icu.samnyan.aqua.sega.ongeki.OgkUserMusicDetailRepo @@ -13,7 +13,6 @@ import icu.samnyan.aqua.sega.ongeki.OgkUserOptionRepo import icu.samnyan.aqua.sega.ongeki.OgkUserPlaylogRepo import icu.samnyan.aqua.sega.ongeki.model.UserData import icu.samnyan.aqua.sega.ongeki.model.UserOption -import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController import kotlin.jvm.optionals.getOrNull import kotlin.reflect.KMutableProperty1 @@ -61,7 +60,7 @@ class Ongeki( } @API("user-option-set") override suspend fun userOptionSet(@RP token: String, @RP field: String, @RP value: Int): Any = us.jwt.auth(token) { u -> - val gameOptions = userOptionRepo.findSingleByUser_Card_ExtId(u.ghostCard.extId).getOrNull() + val gameOptions = userOptionRepo.findSingleByUser_Card_ExtId(u.ghostCard.extId) val property = UserOption::class.memberProperties.filterIsInstance>().find{ it.name == field } if (property != null && gameOptions != null) { diff --git a/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt b/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt index 473fb776..56704046 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt @@ -1,6 +1,9 @@ package icu.samnyan.aqua.net.games.wacca -import ext.* +import ext.API +import ext.RP +import ext.isoDate +import ext.utc import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.games.* import icu.samnyan.aqua.net.utils.waccaScores @@ -34,7 +37,7 @@ class Wacca( val data = userDataRepo.findByCard_ExtId(card.extId) - genericUserSummary(card, mapOf(), null, if (data.isPresent) data.get().favoriteSongs else null) + genericUserSummary(card, mapOf(), null, data?.favoriteSongs) } override val shownRanks: List> = waccaScores.filter { it.first > 85 * 10000 } diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt index 00b247cc..303ee8e4 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt @@ -3,10 +3,10 @@ package icu.samnyan.aqua.net.transfer import ext.header import ext.post import ext.request -import java.net.URI import icu.samnyan.aqua.sega.aimedb.AimeDbClient import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder.decodeAllNetResp +import java.net.URI val keychipPattern = Regex("([A-Z\\d]{4}-[A-Z\\d]{11}|[A-Z\\d]{11})") diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt index f13c4961..c52d4b2b 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt @@ -11,9 +11,9 @@ 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.OngekiUpsertUserAll import icu.samnyan.aqua.sega.ongeki.model.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 +import icu.samnyan.aqua.sega.util.BasicMapper +import icu.samnyan.aqua.sega.util.IMapper +import icu.samnyan.aqua.sega.util.StringMapper abstract class DataBroker( diff --git a/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDB.kt b/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDB.kt index 6e29c494..a24dc034 100644 --- a/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDB.kt +++ b/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDB.kt @@ -1,6 +1,7 @@ package icu.samnyan.aqua.sega.aimedb -import ext.* +import ext.logger +import ext.toHex import icu.samnyan.aqua.net.Fedy import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.sega.allnet.AllNetProps @@ -125,7 +126,7 @@ class AimeDB( } } - fun getCard(accessCode: String) = us.cardRepo.findByLuid(accessCode)()?.maybeGhost()?.let { card -> + fun getCard(accessCode: String) = us.cardRepo.findByLuid(accessCode)?.maybeGhost()?.let { card -> // Update card access time and return the extId us.cardRepo.save(card.apply { accessTime = LocalDateTime.now() }).extId } ?: -1 @@ -196,7 +197,7 @@ class AimeDB( var status = 0 var aimeId = 0L - if (us.cardRepo.findByLuid(luid).isEmpty) { + if (us.cardRepo.findByLuid(luid) == null) { val card: Card = cardService.registerByAccessCode(luid) status = 1 diff --git a/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbEncryption.kt b/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbEncryption.kt index b7f17735..ad8a2bf4 100644 --- a/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbEncryption.kt +++ b/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbEncryption.kt @@ -1,12 +1,30 @@ package icu.samnyan.aqua.sega.aimedb -import icu.samnyan.aqua.sega.util.ByteBufUtil import io.netty.buffer.ByteBuf import io.netty.buffer.Unpooled.copiedBuffer import java.nio.charset.StandardCharsets import javax.crypto.Cipher import javax.crypto.spec.SecretKeySpec +fun ByteBuf.toBytes(): ByteArray { + val readerPos = readerIndex() + resetReaderIndex() + val result = ByteArray(readableBytes()) + readBytes(result) + readerIndex(readerPos) + return result +} + +fun ByteBuf.toAllBytes(): ByteArray { + val readerPos = readerIndex() + resetReaderIndex() + writerIndex(capacity()) + val result = ByteArray(capacity()) + readBytes(result) + readerIndex(readerPos) + return result +} + /** * @author samnyan (privateamusement@protonmail.com) */ @@ -15,7 +33,6 @@ object AimeDbEncryption { val enc = Cipher.getInstance("AES/ECB/NoPadding").apply { init(Cipher.ENCRYPT_MODE, KEY) } val dec = Cipher.getInstance("AES/ECB/NoPadding").apply { init(Cipher.DECRYPT_MODE, KEY) } - fun decrypt(src: ByteBuf) = copiedBuffer(dec.doFinal(ByteBufUtil.toBytes(src))) - - fun encrypt(src: ByteBuf) = copiedBuffer(enc.doFinal(ByteBufUtil.toAllBytes(src))) + fun decrypt(src: ByteBuf) = copiedBuffer(dec.doFinal(src.toBytes())) + fun encrypt(src: ByteBuf) = copiedBuffer(enc.doFinal(src.toAllBytes())) } diff --git a/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbServer.kt b/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbServer.kt index 3368e4b3..9e19ec41 100644 --- a/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbServer.kt +++ b/src/main/java/icu/samnyan/aqua/sega/aimedb/AimeDbServer.kt @@ -9,8 +9,6 @@ import io.netty.channel.socket.SocketChannel import io.netty.channel.socket.nio.NioServerSocketChannel import io.netty.handler.logging.LogLevel import io.netty.handler.logging.LoggingHandler -import org.slf4j.Logger -import org.slf4j.LoggerFactory import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.context.annotation.Configuration import org.springframework.stereotype.Component diff --git a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt index c0c6a6b4..2240772f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt +++ b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt @@ -3,7 +3,6 @@ package icu.samnyan.aqua.sega.allnet import ext.* import icu.samnyan.aqua.net.db.AquaNetUserRepo import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder.decodeAllNet -import icu.samnyan.aqua.sega.util.AquaConst import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletResponse import org.springframework.boot.context.properties.ConfigurationProperties @@ -14,7 +13,6 @@ import java.io.InputStream import java.nio.charset.StandardCharsets import java.time.Instant import java.time.LocalDateTime -import java.util.* @Configuration @ConfigurationProperties(prefix = "allnet.server") @@ -84,7 +82,7 @@ class AllNet( logger.info("AllNet /DownloadOrder : $reqMap") - val serial = reqMap["serial"] ?: AquaConst.DEFAULT_KEYCHIP_ID + val serial = reqMap["serial"] ?: "A69E01A8888" val resp = mapOf( "stat" to "1", "serial" to serial diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerController.kt b/src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerController.kt new file mode 100644 index 00000000..43efa5a4 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerController.kt @@ -0,0 +1,108 @@ +package icu.samnyan.aqua.sega.cardmaker + +import ext.API +import ext.logger +import ext.long +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.web.bind.annotation.ModelAttribute +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import java.net.InetAddress +import java.net.UnknownHostException +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@RestController +@RequestMapping("/g/card") +class CardMakerController( + val mapper: BasicMapper, + @param:Value("\${allnet.server.host:}") val ALLNET_HOST: String, + @param:Value("\${allnet.server.port:}") val ALLNET_PORT: String, + @param:Value("\${server.port:}") val SERVER_PORT: String +) { + val logger = logger() + + @API("GetGameSettingApi") + fun getGameSetting(@ModelAttribute request: MutableMap): Any? { + val formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss") + val rebootStartTime = LocalDateTime.now().minusHours(3) + val rebootEndTime = LocalDateTime.now().minusHours(2) + + val gameSetting = mapOf( + "dataVersion" to "1.35.0", + "ongekiCmVersion" to "1.32.0", + "chuniCmVersion" to "1.30.0", + "maimaiCmVersion" to "1.45.0", + "isMaintenance" to false, + "requestInterval" to 10, + "rebootStartTime" to rebootStartTime.format(formatter), + "rebootEndTime" to rebootEndTime.format(formatter), + "isBackgroundDistribute" to false, + "maxCountCharacter" to 100, + "maxCountItem" to 100, + "maxCountCard" to 100, + "watermark" to false + ) + + val json = mapper.write(mapOf( + "gameSetting" to gameSetting, + "isDumpUpload" to false, + "isAou" to false + )) + + logger.info("Response: {}", json) + return json + } + + fun gameConnect(modelKind: Int, modelVersion: Int, url: String) = + mapOf("modelKind" to modelKind, "modelVersion" to modelVersion, "url" to url) + + @API("GetGameConnectApi") + fun getGameConnect(@ModelAttribute request: MutableMap): Any? { + val version = parsing { request["version"]!!.long } // Rom version + val session = TokenChecker.Companion.getCurrentSession() + + val addr = ALLNET_HOST.ifBlank { null } ?: + try { InetAddress.getLocalHost().hostAddress } + catch (_: UnknownHostException) { "localhost" } + val port = ALLNET_PORT.ifBlank { null } ?: SERVER_PORT + + val base = if (session == null) "/g" else "/gs/" + session.token + val json = mapper.write(mapOf( + "length" to 3, + "gameConnectList" to listOf( + gameConnect(0, 1, "http://$addr:$port$base/chu3/$version/"), + gameConnect(1, 1, "http://$addr:$port$base/mai2/"), + gameConnect(2, 1, "http://$addr:$port$base/ongeki/") + ) + )) + + logger.info("Response: $json") + return json + } + + @API("GetClientBookkeepingApi") + fun getClientBookkeeping(@ModelAttribute request: MutableMap): Any? { + val placeId = parsing { request["placeId"]!!.long } + val json = mapper.write(mapOf( + "placeId" to placeId, + "length" to 0, + "clientBookkeepingList" to mutableListOf() + )) + + logger.info("Response: $json") + return json + } + + @API("UpsertClientBookkeepingApi") + fun upsertClientBookkeeping() = "{\"returnCode\":1,\"apiName\":\"UpsertClientBookkeepingApi\"}" + + @API("UpsertClientSettingApi") + fun upsertClientSetting() = "{\"returnCode\":1,\"apiName\":\"UpsertClientSettingApi\"}" +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerControllerAdvice.kt b/src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerControllerAdvice.kt new file mode 100644 index 00000000..17a882a0 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/cardmaker/CardMakerControllerAdvice.kt @@ -0,0 +1,31 @@ +package icu.samnyan.aqua.sega.cardmaker + +import com.fasterxml.jackson.core.type.TypeReference +import com.fasterxml.jackson.databind.ObjectMapper +import ext.logger +import jakarta.servlet.http.HttpServletRequest +import org.springframework.web.bind.annotation.ModelAttribute +import org.springframework.web.bind.annotation.RestControllerAdvice +import java.nio.charset.StandardCharsets + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@RestControllerAdvice(basePackages = ["icu.samnyan.aqua.sega.cardmaker"]) +class CardMakerControllerAdvice { + val logger = logger() + val mapper = ObjectMapper() + + /** + * Get the map object from json string + * + * @param request HttpServletRequest + */ + @ModelAttribute + fun preHandle(request: HttpServletRequest): MutableMap { + val src = request.inputStream.readAllBytes() + val outputString = String(src, StandardCharsets.UTF_8).trim { it <= ' ' } + logger.info("Request ${request.requestURI}: $outputString") + return mapper.readValue(outputString, object : TypeReference>() {}) + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java deleted file mode 100644 index c2c3d165..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerController.java +++ /dev/null @@ -1,56 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.controller; - - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.cardmaker.handler.impl.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("/g/card") -public class CardMakerController { - private final GetGameSettingHandler getGameSettingHandler; - private final GetClientBookkeepingHandler getClientBookkeepingHandler; - private final GetGameConnectHandler getGameConnectHandler; - - @Autowired - public CardMakerController(GetGameSettingHandler getGameSettingHandler, GetClientBookkeepingHandler getClientBookkeepingHandler, GetGameConnectHandler getGameConnectHandler) { - this.getGameSettingHandler = getGameSettingHandler; - this.getClientBookkeepingHandler = getClientBookkeepingHandler; - this.getGameConnectHandler = getGameConnectHandler; - } - - @PostMapping("GetGameSettingApi") - public String getGameSetting(@ModelAttribute Map request) throws JsonProcessingException { - return getGameSettingHandler.handle(request); - } - - @PostMapping("GetGameConnectApi") - public String getGameConnect(@ModelAttribute Map request) throws JsonProcessingException { - return getGameConnectHandler.handle(request); - } - - @PostMapping("GetClientBookkeepingApi") - public String getClientBookkeeping(@ModelAttribute Map request) throws JsonProcessingException { - return getClientBookkeepingHandler.handle(request); - } - - @PostMapping("UpsertClientBookkeepingApi") - public String upsertClientBookkeeping(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"UpsertClientBookkeepingApi\"}"; - } - - @PostMapping("UpsertClientSettingApi") - public String upsertClientSetting(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"UpsertClientSettingApi\"}"; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerControllerAdvice.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerControllerAdvice.java deleted file mode 100644 index 1015cebd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/controller/CardMakerControllerAdvice.java +++ /dev/null @@ -1,39 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.controller; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import jakarta.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestControllerAdvice(basePackages = "icu.samnyan.aqua.sega.cardmaker") -public class CardMakerControllerAdvice { - - private static final Logger logger = LoggerFactory.getLogger(CardMakerControllerAdvice.class); - - - /** - * Get the map object from json string - * - * @param request HttpServletRequest - */ - @ModelAttribute - public Map preHandle(HttpServletRequest request) throws IOException { - byte[] src = request.getInputStream().readAllBytes(); - String outputString = new String(src, StandardCharsets.UTF_8).trim(); - logger.info("Request " + request.getRequestURI() + ": " + outputString); - ObjectMapper mapper = new ObjectMapper(); - - return mapper.readValue(outputString, new TypeReference<>() { - }); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetClientBookkeepingHandler.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetClientBookkeepingHandler.java deleted file mode 100644 index 66835415..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetClientBookkeepingHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("CardMakerGetClientBookkeepingHandler") -public class GetClientBookkeepingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetClientBookkeepingHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetClientBookkeepingHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long placeId = ((Number) request.get("placeId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("placeId", placeId); - resultMap.put("length", 0); - resultMap.put("clientBookkeepingList", List.of()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameConnectHandler.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameConnectHandler.java deleted file mode 100644 index 46b139ba..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameConnectHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.allnet.KeychipSession; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.cardmaker.model.response.data.GameConnect; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import icu.samnyan.aqua.sega.allnet.TokenChecker; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("CardMakerGetGameConnectHandler") -public class GetGameConnectHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameConnectHandler.class); - - private final BasicMapper mapper; - private final String ALLNET_HOST; - private final String ALLNET_PORT; - private final String SERVER_PORT; - - @Autowired - public GetGameConnectHandler(BasicMapper mapper, @Value("${allnet.server.host:}") String ALLNET_HOST, - @Value("${allnet.server.port:}") String ALLNET_PORT, @Value("${server.port:}") String SERVER_PORT) { - this.mapper = mapper; - this.ALLNET_HOST = ALLNET_HOST; - this.ALLNET_PORT = ALLNET_PORT; - this.SERVER_PORT = SERVER_PORT; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - int type = ((Number) request.get("type")).intValue(); // Allnet enabled or not - long version = ((Number) request.get("version")).longValue(); // Rom version - KeychipSession session = TokenChecker.Companion.getCurrentSession(); - - // Unless ip and port is explicitly overridden, use the guessed ip and port as same as AllNet Controller does. - String localAddr; - try { - localAddr = InetAddress.getLocalHost().getHostAddress(); - } catch (UnknownHostException e) { - // If above didn't work then how did this run? I really don't know. - localAddr = "localhost"; - } - - String addr = ALLNET_HOST.equals("") ? localAddr : ALLNET_HOST; - String port = ALLNET_PORT.equals("") ? SERVER_PORT : ALLNET_PORT; - - String base = session == null ? "/g" : "/gs/" + session.getToken(); - List gameConnectList = new ArrayList<>(); - GameConnect chuni = new GameConnect(0, 1, "http://" + addr + ":" + port + base + "/chu3/" + version + "/"); - GameConnect mai = new GameConnect(1, 1, "http://" + addr + ":" + port + base + "/mai2/"); - GameConnect ongeki = new GameConnect(2, 1, "http://" + addr + ":" + port + base + "/ongeki/"); - gameConnectList.add(chuni); - gameConnectList.add(mai); - gameConnectList.add(ongeki); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("length", gameConnectList.size()); - resultMap.put("gameConnectList", gameConnectList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameSettingHandler.java deleted file mode 100644 index fcd0b6e4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/handler/impl/GetGameSettingHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.cardmaker.model.response.GetGameSettingResp; -import icu.samnyan.aqua.sega.cardmaker.model.response.data.GameSetting; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("CardMakerGetGameSettingHandler") -public class GetGameSettingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameSettingHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetGameSettingHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - - @Override - public String handle(@NotNull Map request) throws JsonProcessingException { - - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"); - LocalDateTime rebootStartTime = LocalDateTime.now().minusHours(3); - LocalDateTime rebootEndTime = LocalDateTime.now().minusHours(2); - - GameSetting gameSetting = new GameSetting( - "1.35.0", - "1.32.0", - "1.30.0", - "1.45.0", - false, - 10, - rebootStartTime.format(formatter), - rebootEndTime.format(formatter), - false, - 100, - 100, - 100, - false); - - GetGameSettingResp resp = new GetGameSettingResp( - gameSetting, - false, - false - ); - - String json = mapper.write(resp); - - logger.info("Response: {}", json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/CodeResp.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/CodeResp.java deleted file mode 100644 index 46a8fac3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/CodeResp.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.model.response; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CodeResp { - private int returnCode; - private String apiName; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/GetGameSettingResp.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/GetGameSettingResp.java deleted file mode 100644 index a5ec2264..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/GetGameSettingResp.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.cardmaker.model.response.data.GameSetting; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetGameSettingResp { - private GameSetting gameSetting; - @JsonProperty("isDumpUpload") - private boolean isDumpUpload; - @JsonProperty("isAou") - private boolean isAou; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameConnect.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameConnect.java deleted file mode 100644 index 2cb1afbd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameConnect.java +++ /dev/null @@ -1,14 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameConnect { - private int modelKind; // 0: chunithm, 1: maimai, 2: ongeki - private int type; // 0: LAN, 1: WAN - private String titleUri; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameSetting.java b/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameSetting.java deleted file mode 100644 index 97f4d0a3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/cardmaker/model/response/data/GameSetting.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.cardmaker.model.response.data; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameSetting { - private String dataVersion; - private String ongekiCmVersion; - private String chuniCmVersion; - private String maimaiCmVersion; - @JsonProperty("isMaintenance") - private boolean isMaintenance; - private int requestInterval; - private String rebootStartTime; - private String rebootEndTime; - @JsonProperty("isBackgroundDistribute") - private boolean isBackgroundDistribute; - private int maxCountCharacter; - private int maxCountItem; - private int maxCountCard; - private boolean watermark; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java deleted file mode 100644 index 17d5c5d7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletController.java +++ /dev/null @@ -1,269 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.controller; - - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.chunithm.handler.impl.*; -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("/g/chu2/{ROM_VERSION}/{CLIENT_ID}/ChuniServlet") -@AllArgsConstructor -public class ChuniServletController { - - private final GameLoginHandler gameLoginHandler; - private final GameLogoutHandler gameLogoutHandler; - private final GetGameChargeHandler getGameChargeHandler; - private final GetGameEventHandler getGameEventHandler; - private final GetGameIdlistHandler getGameIdlistHandler; - private final GetGameMessageHandler getGameMessageHandler; - private final GetGameRankingHandler getGameRankingHandler; - private final GetGameSaleHandler getGameSaleHandler; - private final GetGameSettingHandler getGameSettingHandler; - private final GetTeamCourseRuleHandler getTeamCourseRuleHandler; - private final GetTeamCourseSettingHandler getTeamCourseSettingHandler; - private final GetUserActivityHandler getUserActivityHandler; - private final GetUserCharacterHandler getUserCharacterHandler; - private final GetUserChargeHandler getUserChargeHandler; - private final GetUserCourseHandler getUserCourseHandler; - private final GetUserDataExHandler getUserDataExHandler; - private final GetUserDataHandler getUserDataHandler; - private final GetUserDuelHandler getUserDuelHandler; - private final GetUserFavoriteItemHandler getUserFavoriteItemHandler; - private final GetUserFavoriteMusicHandler getUserFavoriteMusicHandler; - private final GetUserItemHandler getUserItemHandler; - private final GetUserLoginBonusHandler getUserLoginBonusHandler; - private final GetUserMapHandler getUserMapHandler; - private final GetUserMusicHandler getUserMusicHandler; - private final GetUserOptionExHandler getUserOptionExHandler; - private final GetUserOptionHandler getUserOptionHandler; - private final GetUserPreviewHandler getUserPreviewHandler; - private final GetUserRecentRatingHandler getUserRecentRatingHandler; - private final GetUserRegionHandler getUserRegionHandler; - private final GetUserRivalDataHandler getUserRivalDataHandler; - private final GetUserRivalMusicHandler getUserRivalMusicHandler; - private final GetUserTeamHandler getUserTeamHandler; - private final UpsertClientSettingHandler upsertClientSettingHandler; - private final UpsertUserAllHandler upsertUserAllHandler; - private final UpsertUserChargelogHandler upsertUserChargelogHandler; - - - @PostMapping("GameLoginApi") - String gameLogin(@ModelAttribute Map request) throws JsonProcessingException { - return gameLoginHandler.handle(request); - } - - @PostMapping("GameLogoutApi") - String gameLogout(@ModelAttribute Map request) throws JsonProcessingException { - return gameLogoutHandler.handle(request); - } - - @PostMapping("GetGameChargeApi") - String getGameCharge(@ModelAttribute Map request) throws JsonProcessingException { - return getGameChargeHandler.handle(request); - } - - @PostMapping("GetGameEventApi") - String getGameEvent(@ModelAttribute Map request) throws JsonProcessingException { - return getGameEventHandler.handle(request); - } - - @PostMapping("GetGameIdlistApi") - String getGameIdList(@ModelAttribute Map request) throws JsonProcessingException { - return getGameIdlistHandler.handle(request); - } - - @PostMapping("GetGameMessageApi") - String getGameMessage(@ModelAttribute Map request) throws JsonProcessingException { - return getGameMessageHandler.handle(request); - } - - @PostMapping("GetGameRankingApi") - String getGameRanking(@ModelAttribute Map request) throws JsonProcessingException { - return getGameRankingHandler.handle(request); - } - - @PostMapping("GetGameSaleApi") - String getGameSale(@ModelAttribute Map request) throws JsonProcessingException { - return getGameSaleHandler.handle(request); - } - - /** - * The game start up request - * - * @return json of GameSetting object - */ - @PostMapping("GetGameSettingApi") - String getGameSetting(@ModelAttribute Map request) throws JsonProcessingException { - return getGameSettingHandler.handle(request); - } - - @PostMapping("GetTeamCourseRuleApi") - String getTeamCourseRule(@ModelAttribute Map request) throws JsonProcessingException { - return getTeamCourseRuleHandler.handle(request); - } - @PostMapping("GetTeamCourseSettingApi") - String getTeamCourseSetting(@ModelAttribute Map request) throws JsonProcessingException { - return getTeamCourseSettingHandler.handle(request); - } - - @PostMapping("GetUserActivityApi") - String getUserActivity(@ModelAttribute Map request) throws JsonProcessingException { - return getUserActivityHandler.handle(request); - } - - @PostMapping("GetUserCharacterApi") - String getUserCharacter(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCharacterHandler.handle(request); - } - - @PostMapping("GetUserChargeApi") - String getUserCharge(@ModelAttribute Map request) throws JsonProcessingException { - return getUserChargeHandler.handle(request); - } - - @PostMapping("GetUserCourseApi") - String getUserCourse(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCourseHandler.handle(request); - } - - @PostMapping("GetUserDataApi") - String getUserData(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDataHandler.handle(request); - } - - @PostMapping("GetUserDataExApi") - String getUserDataEx(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDataExHandler.handle(request); - } - - @PostMapping("GetUserDuelApi") - String getUserDuel(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDuelHandler.handle(request); - } - - @PostMapping("GetUserFavoriteItemApi") - String getUserFavoriteItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserFavoriteItemHandler.handle(request); - } - - @PostMapping("GetUserFavoriteMusicApi") - public String getUserFavoriteMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserFavoriteMusicHandler.handle(request); - } - - @PostMapping("GetUserItemApi") - String getUserItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserItemHandler.handle(request); - } - - @PostMapping("GetUserLoginBonusApi") - String getUserLoginBonus(@ModelAttribute Map request) throws JsonProcessingException { - return getUserLoginBonusHandler.handle(request); - } - - @PostMapping("GetUserMapApi") - String getUserMap(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMapHandler.handle(request); - } - - @PostMapping("GetUserMusicApi") - String getUserMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMusicHandler.handle(request); - } - - @PostMapping("GetUserOptionApi") - String getUserOption(@ModelAttribute Map request) throws JsonProcessingException { - return getUserOptionHandler.handle(request); - } - - @PostMapping("GetUserOptionExApi") - String getUserOptionEx(@ModelAttribute Map request) throws JsonProcessingException { - return getUserOptionExHandler.handle(request); - } - - // Call when login. Return null if no profile exist - @PostMapping("GetUserPreviewApi") - String getUserPreview(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPreviewHandler.handle(request); - } - - @PostMapping("GetUserRecentRatingApi") - String getUserRecentRating(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRecentRatingHandler.handle(request); - } - - /** - * For older version chunithm - */ - @PostMapping("GetUserRecentPlayerApi") - String getUserRecentPlayerApi(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRecentRatingHandler.handle(request); - } - - @PostMapping("GetUserRegionApi") - String getUserRegion(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRegionHandler.handle(request); - } - - @PostMapping("GetUserRivalDataApi") - String getUserRivalData(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRivalDataHandler.handle(request); - } - @PostMapping("GetUserRivalMusicApi") - String getUserRivalMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRivalMusicHandler.handle(request); - } - - @PostMapping("GetUserTeamApi") - String getUserTeam(@ModelAttribute Map request) throws JsonProcessingException { - return getUserTeamHandler.handle(request); - } - - @PostMapping("UpsertClientBookkeepingApi") - String upsertClientBookkeeping(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("UpsertClientDevelopApi") - String upsertClientDevelop(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("UpsertClientErrorApi") - String upsertClientError(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("UpsertClientSettingApi") - String upsertClientSetting(@ModelAttribute Map request) throws JsonProcessingException { - return upsertClientSettingHandler.handle(request); - } - - @PostMapping("UpsertClientTestmodeApi") - String upsertClientTestmode(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("UpsertUserAllApi") - String upsertUserAll(@ModelAttribute Map request) throws JsonProcessingException { - return upsertUserAllHandler.handle(request); - } - - @PostMapping("UpsertUserChargelogApi") - String upsertUserChargelog(@ModelAttribute Map request) throws JsonProcessingException { - return upsertUserChargelogHandler.handle(request); - } - - @PostMapping("Ping") - String ping(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletControllerAdvice.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletControllerAdvice.java deleted file mode 100644 index 71eebbb1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/controller/ChuniServletControllerAdvice.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.controller; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.servlet.HandlerMapping; - -import jakarta.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Map; - -import static icu.samnyan.aqua.sega.util.AquaConst.*; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestControllerAdvice(basePackages = "icu.samnyan.aqua.sega.chunithm") -public class ChuniServletControllerAdvice { - - private static final Logger logger = LoggerFactory.getLogger(ChuniServletControllerAdvice.class); - - - /** - * Get the map object from json string - * - * @param request HttpServletRequest - */ - @ModelAttribute - public Map preHandle(HttpServletRequest request) throws IOException { - var pathVar = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); - byte[] src = request.getInputStream().readAllBytes(); - String outputString = new String(src, StandardCharsets.UTF_8).trim(); - logger.info("Request " + request.getRequestURI() + ": " + outputString); - ObjectMapper mapper = new ObjectMapper(); - - Map result = mapper.readValue(outputString, new TypeReference<>() { - }); - result.put(SERIAL_KEY, pathVar.getOrDefault(SERIAL_KEY, DEFAULT_KEYCHIP_ID)); - result.put(VERSION_KEY, pathVar.getOrDefault(VERSION_KEY, CHUNI_DEFAULT_VERSION)); - return result; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterRepository.java deleted file mode 100644 index 46aac95c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.gamedata; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Character; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniGameCharacterRepository") -public interface GameCharacterRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterSkillRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterSkillRepository.java deleted file mode 100644 index dff9a385..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterSkillRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.gamedata; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.CharacterSkill; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniGameCharacterSkillRepository") -public interface GameCharacterSkillRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameChargeRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameChargeRepository.java deleted file mode 100644 index c5bdea1f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameChargeRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.gamedata; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameCharge; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniGameChargeRepository") -public interface GameChargeRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameEventRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameEventRepository.java deleted file mode 100644 index 8029e45f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameEventRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.gamedata; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameEvent; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniGameEventRepository") -public interface GameEventRepository extends JpaRepository { - - List findByEnable(boolean enable); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMessageRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMessageRepository.java deleted file mode 100644 index b8417543..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMessageRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.gamedata; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameMessage; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniGameMessageRepository") -public interface GameMessageRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMusicRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMusicRepository.java deleted file mode 100644 index aab8fbf3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMusicRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.gamedata; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniGameMusicRepository") -public interface GameMusicRepository extends JpaRepository { - - Optional findByMusicId(int musicId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserActivityRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserActivityRepository.java deleted file mode 100644 index e04c90d0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserActivityRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserActivityRepository extends JpaRepository { - - Optional findTopByUserAndActivityIdAndKindOrderByIdDesc(UserData user, int activityId, int kind); - - List findAllByUser_Card_ExtIdAndKindOrderBySortNumberDesc(Long extId, int kind); - - List findAllByUser_Card_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java deleted file mode 100644 index d58c0f55..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserCharacterRepository extends JpaRepository { - - Page findByUser_Card_ExtId(Long extId, Pageable pageable); - - List findByUser_Card_ExtId(Long extId); - - Optional findTopByUserAndCharacterIdOrderByIdDesc(UserData user, int characterId); - - Optional findByUser_Card_ExtIdAndCharacterId(Long extId, int characterId); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserChargeRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserChargeRepository.java deleted file mode 100644 index 883d6bf1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserChargeRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharge; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserChargeRepository extends JpaRepository { - List findByUser_Card_ExtId(Long extId); - - Optional findByUserAndChargeId(UserData extId, int chargeId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCourseRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCourseRepository.java deleted file mode 100644 index b1b6da5a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCourseRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCourse; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserCourseRepository extends JpaRepository { - Optional findTopByUserAndCourseIdOrderByIdDesc(UserData user, int courseId); - - Page findByUser_Card_ExtId(Long extId, Pageable page); - - List findByUser_Card_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataExRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataExRepository.java deleted file mode 100644 index 2db81cb6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataExRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDataEx; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserDataExRepository extends JpaRepository { - - Optional findByUser(UserData user); - - Optional findByUser_Card_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataRepository.java deleted file mode 100644 index 76095442..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.general.model.Card; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserDataRepository extends JpaRepository { - - Optional findByCard(Card card); - - Optional findByCard_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDuelRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDuelRepository.java deleted file mode 100644 index 342cae6c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDuelRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDuel; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserDuelRepository extends JpaRepository { - - Optional findTopByUserAndDuelIdOrderByIdDesc(UserData user, int duelId); - - List findByUser_Card_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionExRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionExRepository.java deleted file mode 100644 index 43c16117..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionExRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOptionEx; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserGameOptionExRepository extends JpaRepository { - Optional findByUser(UserData user); - - Optional findByUser_Card_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionRepository.java deleted file mode 100644 index e895a741..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOption; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserGameOptionRepository extends JpaRepository { - - Optional findByUser(UserData user); - - Optional findByUser_Card_ExtId(Long extId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGeneralDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGeneralDataRepository.java deleted file mode 100644 index ab3450ff..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGeneralDataRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGeneralData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("ChuniUserGeneralDataRepository") -public interface UserGeneralDataRepository extends JpaRepository { - - Optional findByUserAndPropertyKey(UserData user, String key); - - Optional findByUser_Card_ExtIdAndPropertyKey(Long extId, String key); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java deleted file mode 100644 index d51aa237..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserItem; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserItemRepository extends JpaRepository { - - Optional findTopByUserAndItemIdAndItemKindOrderByIdDesc(UserData user, int itemId, int itemKind); - - Page findAllByUser_Card_ExtIdAndItemKind(Long extId, int itemKind, Pageable pageable); - - List findAllByUser_Card_ExtId(Long extId); - - Page findByUser_Card_ExtId(Long extId, Pageable pageable); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMapRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMapRepository.java deleted file mode 100644 index 43660cb2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMapRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMap; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserMapRepository extends JpaRepository { - List findAllByUser(UserData user); - - List findAllByUser_Card_ExtId(Long extId); - - Optional findTopByUserAndMapIdOrderByIdDesc(UserData user, int mapId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java deleted file mode 100644 index 245f5121..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMusicDetail; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserMusicDetailRepository extends JpaRepository { - - Optional findTopByUserAndMusicIdAndLevelOrderByIdDesc(UserData user, int musicId, int level); - - List findByUser_Card_ExtId(Long extId); - - List findByUser_Card_ExtIdAndMusicId(Long extId, int musicId); - - Page findByUser_Card_ExtId(Long extId, Pageable page); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java deleted file mode 100644 index 10acfacd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.dao.userdata; - -import icu.samnyan.aqua.sega.chunithm.model.response.data.GameRanking; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserPlaylog; -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.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface UserPlaylogRepository extends JpaRepository { - List findByUser_Card_ExtIdAndLevelNot(Long extId, int levelNot, Pageable page); - - Page findByUser_Card_ExtId(Long extId, Pageable page); - - List findByUser_Card_ExtIdAndMusicIdAndLevel(Long extId, int musicId, int level); - - List findByUser_Card_ExtId(Long extId); - - @Query("SELECT NEW icu.samnyan.aqua.sega.chunithm.model.response.data.GameRanking(c.musicId, COUNT(c.musicId)) FROM ChuniUserPlaylog c WHERE NOT c.level = 4 GROUP BY c.musicId ORDER BY COUNT(c.musicId) DESC") - Page findGameRankingByPlaylog(Pageable page); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLoginHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLoginHandler.java deleted file mode 100644 index 7f67a5ff..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLoginHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.service.UserDataService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GameLoginHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GameLoginHandler.class); - - private final StringMapper mapper; - - private final UserDataService userDataService; - - public GameLoginHandler(StringMapper mapper, UserDataService userDataService) { - this.mapper = mapper; - this.userDataService = userDataService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - Optional userDataOptional = userDataService.getUserByExtId(userId); - userDataOptional.ifPresent(userDataService::updateLoginTime); - - String json = mapper.write(new CodeResp(1)); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLogoutHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLogoutHandler.java deleted file mode 100644 index fb378912..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GameLogoutHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GameLogoutHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GameLogoutHandler.class); - - private final StringMapper mapper; - - public GameLogoutHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - - String json = mapper.write(new CodeResp(1)); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameChargeHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameChargeHandler.java deleted file mode 100644 index 0303a1b7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameChargeHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.chunithm.dao.gamedata.GameChargeRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameCharge; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameChargeHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameChargeHandler.class); - private final GameChargeRepository gameChargeRepository; - private final StringMapper mapper; - - @Autowired - public GetGameChargeHandler(GameChargeRepository gameChargeRepository, StringMapper mapper) { - this.gameChargeRepository = gameChargeRepository; - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - - List gameChargeList = gameChargeRepository.findAll(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("length", gameChargeList.size()); - resultMap.put("gameChargeList", gameChargeList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameEventHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameEventHandler.java deleted file mode 100644 index 72d2c495..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameEventHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.chunithm.dao.gamedata.GameEventRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameEvent; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameEventHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameEventHandler.class); - - private final GameEventRepository gameEventRepository; - - private final StringMapper mapper; - - @Autowired - public GetGameEventHandler(GameEventRepository gameEventRepository, StringMapper mapper) { - this.gameEventRepository = gameEventRepository; - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String type = (String) request.get("type"); - - List gameEventList = gameEventRepository.findByEnable(true); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", gameEventList.size()); - resultMap.put("gameEventList", gameEventList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameIdlistHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameIdlistHandler.java deleted file mode 100644 index 1b0ef14e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameIdlistHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameIdlistHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameIdlistHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetGameIdlistHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String type = (String) request.get("type"); - - List gameIdlistList = new ArrayList<>(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", 0); - resultMap.put("gameIdlistList", gameIdlistList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameMessageHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameMessageHandler.java deleted file mode 100644 index e19de897..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameMessageHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.chunithm.dao.gamedata.GameMessageRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameMessage; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameMessageHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameMessageHandler.class); - - private final GameMessageRepository gameMessageRepository; - - private final StringMapper mapper; - - @Autowired - public GetGameMessageHandler(GameMessageRepository gameMessageRepository, StringMapper mapper) { - this.gameMessageRepository = gameMessageRepository; - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String type = (String) request.get("type"); - - List gameMessageList = gameMessageRepository.findAll(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", gameMessageList.size()); - resultMap.put("gameMessageList", gameMessageList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameRankingHandler.java deleted file mode 100644 index 55d5c784..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameRankingHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserPlaylogRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.data.GameRanking; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameRankingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameRankingHandler.class); - - private final UserPlaylogRepository userPlaylogRepository; - - private final StringMapper mapper; - - @Autowired - public GetGameRankingHandler(StringMapper mapper, UserPlaylogRepository userPlaylogRepository) { - this.userPlaylogRepository = userPlaylogRepository; - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String type = (String) request.get("type"); - - Page rankingPage = userPlaylogRepository.findGameRankingByPlaylog(PageRequest.of(0, 10)); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("gameRankingList", rankingPage.getContent()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSaleHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSaleHandler.java deleted file mode 100644 index 3a20f8cc..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSaleHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.data.GameSale; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameSaleHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameSaleHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetGameSaleHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String type = (String) request.get("type"); - - List gameSaleList = new ArrayList<>(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", 0); - resultMap.put("gameSaleList", gameSaleList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java deleted file mode 100644 index 0352e79b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetGameSettingHandler.java +++ /dev/null @@ -1,66 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.GetGameSettingResp; -import icu.samnyan.aqua.sega.chunithm.model.response.data.GameSetting; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetGameSettingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameSettingHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetGameSettingHandler(StringMapper mapper) { - this.mapper = mapper; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - - // Fixed reboot time triggers chunithm maintenance lockout, so let's try minime method which sets it dynamically - // Special thanks to skogaby - - // Hardcode so that the reboot time always started 3 hours ago and ended 2 hours ago - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"); - LocalDateTime rebootStartTime = LocalDateTime.now().minusHours(3); - LocalDateTime rebootEndTime = LocalDateTime.now().minusHours(2); - - GameSetting gameSetting = new GameSetting( - 1, - false, - 10, - rebootStartTime.format(formatter), - rebootEndTime.format(formatter), - false, - 300, - 300, - 300); - - GetGameSettingResp resp = new GetGameSettingResp( - gameSetting, - false, - true - ); - - String json = mapper.write(resp); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseRuleHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseRuleHandler.java deleted file mode 100644 index 03a8ff4d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseRuleHandler.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp; -import icu.samnyan.aqua.sega.chunithm.model.response.data.GameSale; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.service.UserDataService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.*; - -@Component -public class GetTeamCourseRuleHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetTeamCourseRuleHandler.class); - - private final StringMapper mapper; - - - public GetTeamCourseRuleHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("nextIndex", 0); - resultMap.put("teamCourseRuleList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseSettingHandler.java deleted file mode 100644 index 15393c45..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetTeamCourseSettingHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -@Component -public class GetTeamCourseSettingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetTeamCourseSettingHandler.class); - - private final StringMapper mapper; - - - public GetTeamCourseSettingHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("nextIndex", 0); - resultMap.put("teamCourseSettingList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserActivityHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserActivityHandler.java deleted file mode 100644 index 7a9e7637..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserActivityHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.chunithm.service.UserActivityService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserActivityHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserActivityHandler.class); - - private final StringMapper mapper; - - private final UserActivityService userActivityService; - - @Autowired - public GetUserActivityHandler(StringMapper mapper, UserActivityService userActivityService) { - this.mapper = mapper; - this.userActivityService = userActivityService; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - String kind = (String) request.get("kind"); - - List userActivityList = userActivityService.getAllByUserIdAndKind(userId, kind); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userActivityList.size()); - resultMap.put("kind", kind); - resultMap.put("userActivityList", userActivityList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCharacterHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCharacterHandler.java deleted file mode 100644 index 9c8c1250..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCharacterHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.chunithm.service.UserCharacterService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * Handle getUserCharacter request - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserCharacterHandler implements BaseHandler { - - - private static final Logger logger = LoggerFactory.getLogger(GetUserCharacterHandler.class); - - private final StringMapper mapper; - - private final UserCharacterService userCharacterService; - - - @Autowired - public GetUserCharacterHandler(StringMapper mapper, UserCharacterService userCharacterService) { - this.mapper = mapper; - this.userCharacterService = userCharacterService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - int nextIndex = Integer.parseInt((String) request.get("nextIndex")); - int maxCount = Integer.parseInt((String) request.get("maxCount")); - - int pageNum = nextIndex / maxCount; - - Page dbPage = userCharacterService.getByUserId(userId, pageNum, maxCount); - - long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", dbPage.getNumberOfElements()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("userCharacterList", dbPage.getContent()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserChargeHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserChargeHandler.java deleted file mode 100644 index 7017ba04..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserChargeHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharge; -import icu.samnyan.aqua.sega.chunithm.service.UserChargeService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserChargeHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserChargeHandler.class); - - private final StringMapper mapper; - - private final UserChargeService userChargeService; - - @Autowired - public GetUserChargeHandler(StringMapper mapper, UserChargeService userChargeService) { - this.mapper = mapper; - this.userChargeService = userChargeService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - List userChargeList = userChargeService.getByUserId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userChargeList.size()); - resultMap.put("userChargeList", userChargeList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java deleted file mode 100644 index 03d2385e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCourse; -import icu.samnyan.aqua.sega.chunithm.service.UserCourseService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Handle GetUserCourse request - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserCourseHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserCourseHandler.class); - - private final StringMapper mapper; - - private final UserCourseService userCourseService; - - @Autowired - public GetUserCourseHandler(StringMapper mapper, UserCourseService userCourseService) { - this.mapper = mapper; - this.userCourseService = userCourseService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - - if(request.containsKey("nextIndex")) { - int nextIndex = Integer.parseInt((String) request.get("nextIndex")); - int maxCount = Integer.parseInt((String) request.get("maxCount")); - - int pageNum = nextIndex / maxCount; - - Page dbPage = userCourseService.getByUserId(userId, pageNum, maxCount); - - long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); - - resultMap.put("length", dbPage.getNumberOfElements()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("userCourseList", dbPage.getContent()); - } else { - List courseList = userCourseService.getByUserId(userId); - resultMap.put("length", courseList.size()); - resultMap.put("userCourseList", courseList); - } - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataExHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataExHandler.java deleted file mode 100644 index 150634c0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataExHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDataEx; -import icu.samnyan.aqua.sega.chunithm.service.UserDataExService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserDataExHandler implements BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(GetUserDataExHandler.class); - - private final StringMapper mapper; - - private final UserDataExService userDataExService; - - @Autowired - public GetUserDataExHandler(StringMapper mapper, UserDataExService userDataExService) { - this.mapper = mapper; - this.userDataExService = userDataExService; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - Optional userDataExOptional = userDataExService.getByExtId(userId); - - if (userDataExOptional.isPresent()) { - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userDataEx", userDataExOptional.get()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } - - return null; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java deleted file mode 100644 index 40f9974b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java +++ /dev/null @@ -1,69 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.service.UserDataService; -import icu.samnyan.aqua.sega.general.service.ClientSettingService; -import icu.samnyan.aqua.sega.util.VersionUtil; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -import static icu.samnyan.aqua.sega.util.AquaConst.SERIAL_KEY; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserDataHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserDataHandler.class); - - private final StringMapper mapper; - - private final ClientSettingService clientSettingService; - - private final UserDataService userDataService; - - @Autowired - public GetUserDataHandler(StringMapper mapper, - ClientSettingService clientSettingService, UserDataService userDataService - ) { - this.mapper = mapper; - this.clientSettingService = clientSettingService; - this.userDataService = userDataService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - Optional userDataOptional = userDataService.getUserByExtId(userId); - - if (userDataOptional.isPresent()) { - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - UserData user = userDataOptional.get(); - - var vo = clientSettingService.getSetting((String) request.get(SERIAL_KEY)); - if (vo.isPresent()) { - var version = vo.get(); - user.setLastRomVersion(VersionUtil.getTargetVersion(user.getLastRomVersion(), version.getRomVersion())); - user.setLastDataVersion(VersionUtil.getTargetVersion(user.getLastDataVersion(), version.getDataVersion())); - } - - resultMap.put("userData", user); - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } - - return null; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDuelHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDuelHandler.java deleted file mode 100644 index b0635da7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDuelHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDuel; -import icu.samnyan.aqua.sega.chunithm.service.UserDuelService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Handle GetUserDuel request - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserDuelHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserDuelHandler.class); - - private final StringMapper mapper; - - private final UserDuelService userDuelService; - - @Autowired - public GetUserDuelHandler(StringMapper mapper, UserDuelService userDuelService) { - this.mapper = mapper; - this.userDuelService = userDuelService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - String duelId = (String) request.get("duelId"); - String isAllDuel = (String) request.get("isAllDuel"); - - // TODO: - - List userDuelList = userDuelService.getByUserId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userDuelList.size()); - resultMap.put("userDuelList", userDuelList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteItemHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteItemHandler.java deleted file mode 100644 index 82e5dfc1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteItemHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Handle GetUserFavoriteItem request - * @author yueou (yueou.xu@gmail.com) - */ - -@Component -public class GetUserFavoriteItemHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserFavoriteItemHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetUserFavoriteItemHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - String kind = (String) request.get("kind"); - - // TODO: - - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("kind", kind); - resultMap.put("nextIndex", -1); - resultMap.put("userFavoriteItemList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteMusicHandler.java deleted file mode 100644 index eb98b684..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserFavoriteMusicHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDuel; -import icu.samnyan.aqua.sega.chunithm.service.UserDuelService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Handle GetUserDuel request - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserFavoriteMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserFavoriteMusicHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetUserFavoriteMusicHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - // TODO: - - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userFavoriteMusicList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserItemHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserItemHandler.java deleted file mode 100644 index a383103c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserItemHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserItem; -import icu.samnyan.aqua.sega.chunithm.service.UserItemService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Handler for getting user item. - * This get call before profile create. - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserItemHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserItemHandler.class); - - private final StringMapper mapper; - - private final UserItemService userItemService; - - public GetUserItemHandler(StringMapper mapper, UserItemService userItemService) { - this.mapper = mapper; - this.userItemService = userItemService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - Long nextIndexVal = Long.parseLong((String) request.get("nextIndex")); - int maxCount = Integer.parseInt((String) request.get("maxCount")); - - Long mul = 10000000000L; - - int kind = (int) (nextIndexVal / mul); - int nextIndex = (int) (nextIndexVal % mul); - int pageNum = nextIndex / maxCount; - - Page userItemPage = userItemService.getByUserAndItemKind(userId, kind, pageNum, maxCount); - - List userItemList = userItemPage.getContent(); - - long currentIndex = kind * mul + maxCount * pageNum + userItemPage.getNumberOfElements(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userItemPage.getNumberOfElements()); - resultMap.put("nextIndex", userItemPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("itemKind", kind); - resultMap.put("userItemList", userItemList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserLoginBonusHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserLoginBonusHandler.java deleted file mode 100644 index 101a7ccc..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserLoginBonusHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -@Component -public class GetUserLoginBonusHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserLoginBonusHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetUserLoginBonusHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - // TODO: - - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userLoginBonusList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMapHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMapHandler.java deleted file mode 100644 index 727e7c7d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMapHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMap; -import icu.samnyan.aqua.sega.chunithm.service.UserMapService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Handle GetUserMap request - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserMapHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserItemHandler.class); - - private final StringMapper mapper; - - private final UserMapService userMapService; - - @Autowired - public GetUserMapHandler(StringMapper mapper, UserMapService userMapService) { - this.mapper = mapper; - this.userMapService = userMapService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - List userMapList = userMapService.getByUserId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userMapList.size()); - resultMap.put("userMapList", userMapList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMusicHandler.java deleted file mode 100644 index 16197f44..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserMusicHandler.java +++ /dev/null @@ -1,97 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.data.UserMusicListItem; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMusicDetail; -import icu.samnyan.aqua.sega.chunithm.service.GameMusicService; -import icu.samnyan.aqua.sega.chunithm.service.UserMusicDetailService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import icu.samnyan.aqua.spring.data.OffsetPageRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Component; - -import java.util.*; - -/** - * Response: - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserMusicHandler.class); - - private final StringMapper mapper; - - private final UserMusicDetailService userMusicDetailService; - - private final GameMusicService gameMusicService; - - @Autowired - public GetUserMusicHandler(StringMapper mapper, UserMusicDetailService userMusicDetailService, GameMusicService gameMusicService) { - this.mapper = mapper; - this.userMusicDetailService = userMusicDetailService; - this.gameMusicService = gameMusicService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - int currentIndex = Integer.parseInt((String) request.get("nextIndex")); - int maxCount = Integer.parseInt((String) request.get("maxCount")); - if(currentIndex < 0) { - currentIndex = 0; - } - - Page dbPage = userMusicDetailService - .getByUserId(userId, OffsetPageRequest.of(currentIndex, maxCount, Sort.by("musicId"))); - - - // Convert to result format - // Result Map - Map userMusicMap = new LinkedHashMap<>(); - - dbPage.getContent().forEach(userMusicDetail -> { - UserMusicListItem list; - if (userMusicMap.containsKey(userMusicDetail.getMusicId())) { - list = userMusicMap.get(userMusicDetail.getMusicId()); - } else { - list = new UserMusicListItem(0, new ArrayList<>()); - userMusicMap.put(userMusicDetail.getMusicId(), list); - } - list.getUserMusicDetailList().add(userMusicDetail); - list.setLength(list.getUserMusicDetailList().size()); - }); - - // Remove the last music id if the result length is the same as maxCount, - // to prevent a music id split across multiple page, which will cause some - // problem with the game. - int lastListSize = 0; - if(dbPage.getNumberOfElements() >= maxCount) { - // Get last key - int lastMusicId = userMusicMap.keySet().stream().reduce((a, b) -> b).orElseThrow(); - List lastList = userMusicMap.get(lastMusicId).getUserMusicDetailList(); - lastListSize = lastList.size(); - // Remove last one from map - userMusicMap.remove(lastMusicId); - } - - long nextIndex = currentIndex + dbPage.getNumberOfElements() - lastListSize; - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userMusicMap.size()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : nextIndex); - resultMap.put("userMusicList", userMusicMap.values()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionExHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionExHandler.java deleted file mode 100644 index 8c126a5d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionExHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOptionEx; -import icu.samnyan.aqua.sega.chunithm.service.UserGameOptionExService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserOptionExHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserOptionExHandler.class); - - private final StringMapper mapper; - - private final UserGameOptionExService userGameOptionExService; - - @Autowired - public GetUserOptionExHandler(StringMapper mapper, UserGameOptionExService userGameOptionExService) { - this.mapper = mapper; - this.userGameOptionExService = userGameOptionExService; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - Optional userGameOptionEx = userGameOptionExService.getByUserId(userId); - - if (userGameOptionEx.isPresent()) { - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userGameOptionEx", userGameOptionEx.get()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } - - return null; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionHandler.java deleted file mode 100644 index baab2567..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserOptionHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOption; -import icu.samnyan.aqua.sega.chunithm.service.UserGameOptionService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserOptionHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserOptionHandler.class); - - private final StringMapper mapper; - - private final UserGameOptionService userGameOptionService; - - @Autowired - public GetUserOptionHandler(StringMapper mapper, UserGameOptionService userGameOptionService) { - this.mapper = mapper; - this.userGameOptionService = userGameOptionService; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - Optional userGameOption = userGameOptionService.getByUserId(userId); - - if (userGameOption.isPresent()) { - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userGameOption", userGameOption.get()); - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } - - return null; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java deleted file mode 100644 index 9b0cebee..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java +++ /dev/null @@ -1,114 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.GetUserPreviewResp; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOption; -import icu.samnyan.aqua.sega.chunithm.service.UserCharacterService; -import icu.samnyan.aqua.sega.chunithm.service.UserDataService; -import icu.samnyan.aqua.sega.chunithm.service.UserGameOptionService; -import icu.samnyan.aqua.sega.general.service.ClientSettingService; -import icu.samnyan.aqua.sega.util.VersionUtil; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Optional; - -import static icu.samnyan.aqua.sega.util.AquaConst.SERIAL_KEY; - -/** - * The handler for loading basic profile information. - *

- * return null if no profile exist - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserPreviewHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserPreviewHandler.class); - - private final StringMapper mapper; - - private final ClientSettingService clientSettingService; - - private final UserDataService userDataService; - private final UserCharacterService userCharacterService; - private final UserGameOptionService userGameOptionService; - - @Autowired - public GetUserPreviewHandler(StringMapper mapper, - ClientSettingService clientSettingService, UserDataService userDataService, - UserCharacterService userCharacterService, - UserGameOptionService userGameOptionService - ) { - this.mapper = mapper; - this.clientSettingService = clientSettingService; - this.userDataService = userDataService; - this.userCharacterService = userCharacterService; - this.userGameOptionService = userGameOptionService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - - Optional userData = userDataService.getUserByExtId(userId); - - if (userData.isEmpty()) { - return null; - } - - - UserData user = userData.get(); - - GetUserPreviewResp resp = new GetUserPreviewResp(); - resp.setUserId(userId); - resp.setLogin(false); - resp.setLastLoginDate(user.getLastLoginDate()); - resp.setUserName(user.getUserName()); - resp.setReincarnationNum(user.getReincarnationNum()); - resp.setLevel(user.getLevel()); - resp.setExp(user.getExp()); - resp.setPlayerRating(user.getPlayerRating()); - resp.setLastGameId(user.getLastGameId()); - - var vo = clientSettingService.getSetting((String) request.get(SERIAL_KEY)); - if (vo.isPresent()) { - var version = vo.get(); - resp.setLastRomVersion(VersionUtil.getTargetVersion(user.getLastRomVersion(), version.getRomVersion())); - resp.setLastDataVersion(VersionUtil.getTargetVersion(user.getLastDataVersion(), version.getDataVersion())); - } else { - resp.setLastRomVersion(user.getLastRomVersion()); - resp.setLastDataVersion(user.getLastDataVersion()); - } - - resp.setLastPlayDate(user.getLastPlayDate()); - resp.setTrophyId(user.getTrophyId()); - - Optional userCharacterOptional = userCharacterService.getByUserAndCharacterId(user, user.getCharacterId()); - userCharacterOptional.ifPresent(resp::setUserCharacter); - - Optional userGameOptionOptional = userGameOptionService.getByUser(user); - userGameOptionOptional.ifPresent(userGameOption -> { - resp.setPlayerLevel(userGameOption.getPlayerLevel()); - resp.setRating(userGameOption.getRating()); - resp.setHeadphone(userGameOption.getHeadphone()); - }); - - resp.setChargeState(1); - resp.setUserNameEx(user.getUserName()); - - String json = mapper.write(resp); - logger.info("Response: " + json); - return json; - - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRecentRatingHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRecentRatingHandler.java deleted file mode 100644 index 8f4d41f2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRecentRatingHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGeneralData; -import icu.samnyan.aqua.sega.chunithm.service.UserGeneralDataService; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserPlaylog; -import icu.samnyan.aqua.sega.chunithm.service.UserPlaylogService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * Return the recent play to calculate rating. Rating base on top 30 songs plus top 10 in recent 30 plays. - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserRecentRatingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRecentRatingHandler.class); - - private final StringMapper mapper; - - private final UserPlaylogService userPlaylogService; - private final UserGeneralDataService userGeneralDataService; - - @Autowired - public GetUserRecentRatingHandler(StringMapper mapper, UserPlaylogService userPlaylogService, UserGeneralDataService userGeneralDataService) { - this.mapper = mapper; - this.userPlaylogService = userPlaylogService; - this.userGeneralDataService = userGeneralDataService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - Optional recentOptional = userGeneralDataService.getByUserIdAndKey(userId, "recent_rating_list"); - - List ratingList; - if(recentOptional.isPresent()) { - ratingList = new LinkedList<>(); - String val = recentOptional.get().getPropertyValue(); - if(StringUtils.isNotBlank(val) && val.contains(",")) { - String[] records = val.split(","); - for (String record : - records) { - String[] value = record.split(":"); - ratingList.add(new UserRecentRating( - Integer.parseInt(value[0]), - Integer.parseInt(value[1]), - "1030000", - Integer.parseInt(value[2]) - )); - } - } - } else { - List top = userPlaylogService.getRecent30Plays(userId); - ratingList = top.stream().map(log -> new UserRecentRating(log.getMusicId(), log.getLevel(), "1030000", log.getScore())) - .collect(Collectors.toList()); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", ratingList.size()); - resultMap.put("userRecentRatingList", ratingList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRegionHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRegionHandler.java deleted file mode 100644 index b671e28e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRegionHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GetUserRegionHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRegionHandler.class); - - private final StringMapper mapper; - - @Autowired - public GetUserRegionHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - List userRegionList = new ArrayList<>(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userRegionList", userRegionList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalDataHandler.java deleted file mode 100644 index bf905454..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalDataHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -@Component -public class GetUserRivalDataHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRivalDataHandler.class); - - private final StringMapper mapper; - - - public GetUserRivalDataHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userRivalData", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalMusicHandler.java deleted file mode 100644 index 8e681595..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserRivalMusicHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -@Component -public class GetUserRivalMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRivalMusicHandler.class); - - private final StringMapper mapper; - - - public GetUserRivalMusicHandler(StringMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("rivalId", 0); - resultMap.put("length", 0); - resultMap.put("nextIndex", 0); - resultMap.put("userRivalMusicList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserTeamHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserTeamHandler.java deleted file mode 100644 index 91281932..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserTeamHandler.java +++ /dev/null @@ -1,58 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -@Component -public class GetUserTeamHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserTeamHandler.class); - - private final StringMapper mapper; - - private final String teamName; - - - public GetUserTeamHandler(StringMapper mapper, @Value("${game.chunithm.team-name:#{null}}") String teamName) { - this.mapper = mapper; - this.teamName = teamName; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - String playDate = (String) request.get("playDate"); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - - if (teamName != null && !teamName.isEmpty()) { - resultMap.put("teamId", 1); - resultMap.put("teamRank", 1); - resultMap.put("teamName", teamName); - - Map userTeamMap = new LinkedHashMap<>(); - userTeamMap.put("userId", userId); - userTeamMap.put("teamId", 1); - userTeamMap.put("orderId", 1); - userTeamMap.put("teamPoint", 1); - userTeamMap.put("aggrDate", playDate); - - resultMap.put("userTeamPoint", userTeamMap); - } else { - resultMap.put("teamId", 0); - } - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientSettingHandler.java deleted file mode 100644 index 84ff6e00..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientSettingHandler.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.requet.ClientSettingRequest; -import icu.samnyan.aqua.sega.general.model.GameVersion; -import icu.samnyan.aqua.sega.general.service.ClientSettingService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.Map; - -import static icu.samnyan.aqua.sega.util.AquaConst.DEFAULT_KEYCHIP_ID; -import static icu.samnyan.aqua.sega.util.AquaConst.SERIAL_KEY; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class UpsertClientSettingHandler implements BaseHandler { - - private final StringMapper mapper; - - private final ClientSettingService clientSettingService; - - public UpsertClientSettingHandler(StringMapper mapper, ClientSettingService clientSettingService) { - this.mapper = mapper; - this.clientSettingService = clientSettingService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - var req = mapper.convert(request, ClientSettingRequest.class); - var set = req.getClientSetting(); - var serial = (String) request.get(SERIAL_KEY); - if (!serial.equals(DEFAULT_KEYCHIP_ID)) { - clientSettingService.writeSetting(new GameVersion(serial, set.getRomVersion(), set.getDataVersion(), LocalDateTime.now())); - } - return "{\"returnCode\":\"1\"}"; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserAllHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserAllHandler.java deleted file mode 100644 index 32891d87..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserAllHandler.java +++ /dev/null @@ -1,343 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.requet.UpsertUserAll; -import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp; -import icu.samnyan.aqua.sega.chunithm.model.userdata.*; -import icu.samnyan.aqua.sega.chunithm.service.*; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; -import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.nio.charset.StandardCharsets; -import java.util.*; - -/** - * The handler for save user data. Only send in the end of the session. - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class UpsertUserAllHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UpsertUserAllHandler.class); - - private final StringMapper mapper; - - private final CardService cardService; - - private final UserDataService userDataService; - private final UserCharacterService userCharacterService; - private final UserGameOptionService userGameOptionService; - private final UserGameOptionExService userGameOptionExService; - private final UserMapService userMapService; - private final UserItemService userItemService; - private final UserMusicDetailService userMusicDetailService; - private final UserActivityService userActivityService; - private final UserPlaylogService userPlaylogService; - private final UserChargeService userChargeService; - private final UserDataExService userDataExService; - private final UserCourseService userCourseService; - private final UserDuelService userDuelService; - private final UserGeneralDataService userGeneralDataService; - - @Autowired - public UpsertUserAllHandler(StringMapper mapper, CardService cardService, UserDataService userDataService, UserCharacterService userCharacterService, UserGameOptionService userGameOptionService, UserGameOptionExService userGameOptionExService, UserMapService userMapService, UserItemService userItemService, UserMusicDetailService userMusicDetailService, UserActivityService userActivityService, UserPlaylogService userPlaylogService, UserChargeService userChargeService, UserDataExService userDataExService, UserCourseService userCourseService, UserDuelService userDuelService, UserGeneralDataService userGeneralDataService) { - this.mapper = mapper; - this.cardService = cardService; - this.userDataService = userDataService; - this.userCharacterService = userCharacterService; - this.userGameOptionService = userGameOptionService; - this.userGameOptionExService = userGameOptionExService; - this.userMapService = userMapService; - this.userItemService = userItemService; - this.userMusicDetailService = userMusicDetailService; - this.userActivityService = userActivityService; - this.userPlaylogService = userPlaylogService; - this.userChargeService = userChargeService; - this.userDataExService = userDataExService; - this.userCourseService = userCourseService; - this.userDuelService = userDuelService; - this.userGeneralDataService = userGeneralDataService; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - UpsertUserAll upsertUserAll = mapper.convert(request.get("upsertUserAll"), UpsertUserAll.class); - - // Not all field will be sent. Check if they are exist first. - - UserData userData; - UserData newUserData; - // UserData - if (upsertUserAll.getUserData() == null) { - return null; - } else { - newUserData = upsertUserAll.getUserData().get(0); - - Optional userOptional = userDataService.getUserByExtId(userId); - - if (userOptional.isPresent()) { - userData = userOptional.get(); - } else { - userData = new UserData(); - Card card = cardService.getCardByExtId(userId).orElseThrow(); - userData.setCard(card); - } - - newUserData.setId(userData.getId()); - newUserData.setCard(userData.getCard()); - - - // Decode Username - String userName = new String(newUserData.getUserName() - .getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); - - - newUserData.setUserName(userName); - userDataService.saveAndFlushUserData(newUserData); - } - - // userGameOption - if (upsertUserAll.getUserGameOption() != null) { - UserGameOption newUserGameOption = upsertUserAll.getUserGameOption().get(0); - - Optional userGameOptionOptional = userGameOptionService.getByUser(newUserData); - - UserGameOption userGameOption = userGameOptionOptional.orElseGet(() -> new UserGameOption(newUserData)); - - newUserGameOption.setId(userGameOption.getId()); - newUserGameOption.setUser(userGameOption.getUser()); - - userGameOptionService.save(newUserGameOption); - } - - // userGameOptionEx - if (upsertUserAll.getUserGameOptionEx() != null) { - UserGameOptionEx newUserGameOptionEx = upsertUserAll.getUserGameOptionEx().get(0); - - Optional userGameOptionExOptional = userGameOptionExService.getByUser(newUserData); - UserGameOptionEx userGameOptionEx = userGameOptionExOptional.orElseGet(() -> new UserGameOptionEx(newUserData)); - - newUserGameOptionEx.setId(userGameOptionEx.getId()); - newUserGameOptionEx.setUser(userGameOptionEx.getUser()); - - userGameOptionExService.save(newUserGameOptionEx); - } - - // userMapList - if (upsertUserAll.getUserMapList() != null) { - List userMapList = upsertUserAll.getUserMapList(); - Map newUserMapMap = new HashMap<>(); - - userMapList.forEach(newUserMap -> { - int mapId = newUserMap.getMapId(); - UserMap userMap; - Optional userMapOptional = userMapService.getByUserAndMapId(newUserData, mapId); - userMap = userMapOptional.orElseGet(() -> new UserMap(newUserData)); - - newUserMap.setId(userMap.getId()); - newUserMap.setUser(userMap.getUser()); - - newUserMapMap.put(mapId, newUserMap); - }); - userMapService.saveAll(newUserMapMap.values()); - } - - // userCharacterList - if (upsertUserAll.getUserCharacterList() != null) { - List userCharacterList = upsertUserAll.getUserCharacterList(); - Map newCharacterMap = new HashMap<>(); - - userCharacterList.forEach(newUserCharacter -> { - int characterId = newUserCharacter.getCharacterId(); - - Optional userCharacterOptional = userCharacterService.getByUserAndCharacterId(newUserData, characterId); - UserCharacter userCharacter = userCharacterOptional.orElseGet(() -> new UserCharacter(newUserData)); - - newUserCharacter.setId(userCharacter.getId()); - newUserCharacter.setUser(userCharacter.getUser()); - - newCharacterMap.put(characterId, newUserCharacter); - }); - userCharacterService.saveAll(newCharacterMap.values()); - } - - // userItemList - if (upsertUserAll.getUserItemList() != null) { - List userItemList = upsertUserAll.getUserItemList(); - Map newUserItemMap = new HashMap<>(); - - userItemList.forEach(newUserItem -> { - int itemId = newUserItem.getItemId(); - int itemKind = newUserItem.getItemKind(); - - - Optional userItemOptional = userItemService.getByUserAndItemIdAndKind(newUserData, itemId, itemKind); - UserItem userItem = userItemOptional.orElseGet(() -> new UserItem(newUserData)); - - newUserItem.setId(userItem.getId()); - newUserItem.setUser(userItem.getUser()); - - newUserItemMap.put(itemId + "-" + itemKind, newUserItem); - }); - userItemService.saveAll(newUserItemMap.values()); - } - - // userMusicDetailList - if (upsertUserAll.getUserMusicDetailList() != null) { - - List userMusicDetailList = upsertUserAll.getUserMusicDetailList(); - Map newUserMusicDetailMap = new HashMap<>(); - - userMusicDetailList.forEach(newUserMusicDetail -> { - int musicId = newUserMusicDetail.getMusicId(); - int level = newUserMusicDetail.getLevel(); - - Optional userMusicDetailOptional = userMusicDetailService.getByUserAndMusicIdAndLevel(newUserData, musicId, level); - UserMusicDetail userMusicDetail = userMusicDetailOptional.orElseGet(() -> new UserMusicDetail(newUserData)); - - newUserMusicDetail.setId(userMusicDetail.getId()); - newUserMusicDetail.setUser(userMusicDetail.getUser()); - - newUserMusicDetailMap.put(musicId + "-" + level, newUserMusicDetail); - }); - userMusicDetailService.saveAll(newUserMusicDetailMap.values()); - } - - // userActivityList - if (upsertUserAll.getUserActivityList() != null) { - List userActivityList = upsertUserAll.getUserActivityList(); - List newUserActivityList = new LinkedList<>(); - - userActivityList.forEach(newUserActivity -> { - // No need to rename to activityId. jackson auto handle that - int activityId = newUserActivity.getActivityId(); - int kind = newUserActivity.getKind(); - - Optional userActivityOptional = userActivityService.getByUserAndActivityIdAndKind(newUserData, activityId, kind); - UserActivity userActivity = userActivityOptional.orElseGet(() -> new UserActivity(newUserData)); - - newUserActivity.setId(userActivity.getId()); - newUserActivity.setUser(userActivity.getUser()); - - newUserActivityList.add(newUserActivity); - }); - userActivityService.saveAll(newUserActivityList); - } - - // userRecentRatingList - if(upsertUserAll.getUserRecentRatingList() != null) { - List userRecentRatingList = upsertUserAll.getUserRecentRatingList(); - - StringBuilder sb = new StringBuilder(); - userRecentRatingList.forEach(userRecentRating -> { - sb.append(userRecentRating.getMusicId()).append(":"); - sb.append(userRecentRating.getDifficultId()).append(":"); - sb.append(userRecentRating.getScore()).append(","); - }); - if(sb.length() > 0) { - sb.deleteCharAt(sb.length() - 1); - } - UserGeneralData userGeneralData = userGeneralDataService.getByUserAndKey(newUserData, "recent_rating_list") - .orElseGet(() -> new UserGeneralData(newUserData, "recent_rating_list")); - userGeneralData.setPropertyValue(sb.toString()); - userGeneralDataService.save(userGeneralData); - } - - // userChargeList - if (upsertUserAll.getUserChargeList() != null) { - List userChargeList = upsertUserAll.getUserChargeList(); - List newUserChargeList = new ArrayList<>(); - - userChargeList.forEach(newUserCharge -> { - int chargeId = newUserCharge.getChargeId(); - - Optional userChargeOptional = userChargeService.getByUserAndChargeId(newUserData, chargeId); - UserCharge userCharge = userChargeOptional.orElseGet(() -> new UserCharge(newUserData)); - - newUserCharge.setId(userCharge.getId()); - newUserCharge.setUser(userCharge.getUser()); - - newUserChargeList.add(newUserCharge); - }); - userChargeService.saveAll(newUserChargeList); - } - - // userPlaylogList - if (upsertUserAll.getUserPlaylogList() != null) { - List userPlaylogList = upsertUserAll.getUserPlaylogList(); - List newUserPlaylogList = new ArrayList<>(); - - userPlaylogList.forEach(newUserPlaylog -> { - newUserPlaylog.setUser(newUserData); - - newUserPlaylogList.add(newUserPlaylog); - }); - if (newUserPlaylogList.size() > 0) userPlaylogService.saveAll(newUserPlaylogList); - } - - - // userCourseList - if (upsertUserAll.getUserCourseList() != null) { - List userCourseList = upsertUserAll.getUserCourseList(); - - userCourseList.forEach(newUserCourse -> { - int courseId = newUserCourse.getCourseId(); - - Optional userCourseOptional = userCourseService.getByUserAndCourseId(newUserData, courseId); - UserCourse userCourse = userCourseOptional.orElseGet(() -> new UserCourse(newUserData)); - - newUserCourse.setId(userCourse.getId()); - newUserCourse.setUser(userCourse.getUser()); - - userCourseService.save(newUserCourse); - }); - } - - - // userDataEx - if (upsertUserAll.getUserDataEx() != null) { - UserDataEx newUserDataEx = upsertUserAll.getUserDataEx().get(0); - - Optional userDataExOptional = userDataExService.getByUser(newUserData); - UserDataEx userDataEx = userDataExOptional.orElseGet(() -> new UserDataEx(newUserData)); - - newUserDataEx.setId(userDataEx.getId()); - newUserDataEx.setUser(userDataEx.getUser()); - - userDataExService.save(newUserDataEx); - } - - // userDuelList - if (upsertUserAll.getUserDuelList() != null) { - List userDuelList = upsertUserAll.getUserDuelList(); - Map newUserDuelMap = new HashMap<>(); - - userDuelList.forEach(newUserDuel -> { - int duelId = newUserDuel.getDuelId(); - - Optional userDuelOptional = userDuelService.getByUserAndDuelId(newUserData, duelId); - UserDuel userDuel = userDuelOptional.orElseGet(() -> new UserDuel(newUserData)); - - newUserDuel.setId(userDuel.getId()); - newUserDuel.setUser(userDuel.getUser()); - - newUserDuelMap.put(duelId, newUserDuel); - }); - userDuelService.saveAll(newUserDuelMap.values()); - } - - String json = mapper.write(new CodeResp(1)); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserChargelogHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserChargelogHandler.java deleted file mode 100644 index ccce9dab..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertUserChargelogHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharge; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.service.UserChargeService; -import icu.samnyan.aqua.sega.chunithm.service.UserDataService; -import icu.samnyan.aqua.sega.util.jackson.StringMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class UpsertUserChargelogHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UpsertUserChargelogHandler.class); - - private final StringMapper mapper; - - private final UserDataService userDataService; - private final UserChargeService userChargeService; - - public UpsertUserChargelogHandler(StringMapper mapper, UserDataService userDataService, UserChargeService userChargeService) { - this.mapper = mapper; - this.userDataService = userDataService; - this.userChargeService = userChargeService; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - UserData user = userDataService.getUserByExtId(userId).orElseThrow(); - - Map userChargeMap = (Map) request.get("userCharge"); - String chargeId = (String) userChargeMap.get("chargeId"); - UserCharge charge = mapper.convert(userChargeMap, UserCharge.class); - - UserCharge userCharge = userChargeService.getByUserAndChargeId(user, Integer.parseInt(chargeId)).orElseGet(() -> new UserCharge(user)); - userCharge.setChargeId(charge.getChargeId()); - userCharge.setStock(charge.getStock()); - userCharge.setPurchaseDate(charge.getPurchaseDate()); - userCharge.setValidDate(charge.getValidDate()); - userCharge.setParam1(charge.getParam1()); - userCharge.setParam2(charge.getParam2()); - userCharge.setParamDate(charge.getParamDate()); - - userChargeService.save(userCharge); - - String json = mapper.write(new CodeResp(1)); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Character.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Character.java deleted file mode 100644 index d414a6b7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Character.java +++ /dev/null @@ -1,43 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniCharacter") -@Table(name = "chuni_game_character") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Character implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; - - private String name; - - private String releaseTag; - - private String worksName; - - private String illustratorName; - - private String firstSkillId; - - // Format: level:skillId,level:skillId - // Keep 0 skillId - private String skills; - - private String addImages; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/CharacterSkill.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/CharacterSkill.java deleted file mode 100644 index 2d9a142f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/CharacterSkill.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import lombok.*; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniCharacterSkill") -@Table(name = "chuni_game_skill") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CharacterSkill implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; - - private String name; - - private String category; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Diff.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Diff.java deleted file mode 100644 index 1d756fa8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Diff.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum Diff { - - BASIC("BASIC"), - ADVANCED("ADVANCED"), - EXPERT("EXPERT"), - MASTER("MASTER"), - WE("WORLD'S END"); - - private String displayName; - - Diff(String displayName) { - this.displayName = displayName; - } - - public String displayName() { - return displayName; - } - - @Override - public String toString() { - return displayName; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameCharge.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameCharge.java deleted file mode 100644 index 008ba386..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameCharge.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniGameCharge") -@Table(name = "chuni_game_charge") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameCharge implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - private int orderId; - - @Column(unique = true) - private int chargeId; - - private int price; - - private LocalDateTime startDate; - - private LocalDateTime endDate; - - private int salePrice; - - private LocalDateTime saleStartDate; - - private LocalDateTime saleEndDate; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java deleted file mode 100644 index bf91b65a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniGameEvent") -@Table(name = "chuni_game_event") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameEvent implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private int id; - - private int type; - - private LocalDateTime startDate; - - private LocalDateTime endDate; - - @JsonIgnore - private boolean enable; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameMessage.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameMessage.java deleted file mode 100644 index 2583d69b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameMessage.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniGameMessage") -@Table(name = "chuni_game_message") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameMessage implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private int id; - - private int type; - - private String message; - - private LocalDateTime startDate; - - private LocalDateTime endDate; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Genre.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Genre.java deleted file mode 100644 index 46206410..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Genre.java +++ /dev/null @@ -1,33 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum Genre { - POPS_ANIME("POPS & ANIME"), - GAME("GAME"), - NICONICO("niconico"), - TOUHOU("東方Project"), - RESERVE2("Reserve2"), - ORIGINAL("Original"), - VARIETY("Variety"), - IRODORI("イロドリミドリ"), - KOTONOHA("言ノ葉Project"), - GEKICHUMA("ゲキマイ"); - - - private String displayName; - - Genre(String displayName) { - this.displayName = displayName; - } - - public String displayName() { - return displayName; - } - - @Override - public String toString() { - return displayName; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Level.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Level.java deleted file mode 100644 index 9e106bfc..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Level.java +++ /dev/null @@ -1,40 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniMusicLevel") -@Table(name = "chuni_music_level") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Level implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "music_id") - private Music music; - - private boolean enable; - - private int level; - - private int levelDecimal; - - private int diff; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Music.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Music.java deleted file mode 100644 index 0b5760d3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Music.java +++ /dev/null @@ -1,43 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniMusic") -@Table(name = "chuni_music") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Music implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private int musicId; - - private String name; - - private String sortName; - - // Copyright info - private String copyright; - - private String artistName; - - private Genre genre; - - private String releaseVersion; - - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "music") - @MapKey(name = "diff") - private Map levels; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSetting.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSetting.java deleted file mode 100644 index 9c127f1e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSetting.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.requet; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ClientSetting { - private String placeId; - private String clientId; - private String placeName; - private String regionId; - private String regionName; - private String allNetId; - private String bordId; - private String romVersion; - private String dataVersion; - private String dumpFileNum; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSettingRequest.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSettingRequest.java deleted file mode 100644 index fab337b8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSettingRequest.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.requet; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ClientSettingRequest { - private ClientSetting clientSetting; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/UpsertUserAll.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/UpsertUserAll.java deleted file mode 100644 index f6161ca2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/UpsertUserAll.java +++ /dev/null @@ -1,88 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.requet; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.chunithm.model.userdata.*; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.lang.Nullable; - -import java.io.Serializable; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UpsertUserAll implements Serializable { - - @Nullable - private List userData; - - @Nullable - private List userGameOption; - - @Nullable - private List userGameOptionEx; - - @Nullable - private List userMapList; - - @Nullable - private List userCharacterList; - - @Nullable - private List userItemList; - - @Nullable - private List userMusicDetailList; - - @Nullable - private List userActivityList; - - @Nullable - private List userRecentRatingList; - - @Nullable - private List userChargeList; - - @Nullable - private List userPlaylogList; - - @Nullable - private List userCourseList; - - @Nullable - private List userDataEx; - - @Nullable - private List userDuelList; - - @Nullable - @JsonProperty("isNewMapList") - private String isNewMapList; - - @Nullable - @JsonProperty("isNewCharacterList") - private String isNewCharacterList; - - @Nullable - @JsonProperty("isNewMusicDetailList") - private String isNewMusicDetailList; - - @Nullable - @JsonProperty("isNewItemList") - private String isNewItemList; - - @Nullable - @JsonProperty("isNewCourseList") - private String isNewCourseList; - - @Nullable - @JsonProperty("isNewDuelList") - private String isNewDuelList; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/CodeResp.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/CodeResp.java deleted file mode 100644 index 90e7845f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/CodeResp.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CodeResp { - private int returnCode; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetGameSettingResp.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetGameSettingResp.java deleted file mode 100644 index 77abd88c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetGameSettingResp.java +++ /dev/null @@ -1,22 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.chunithm.model.response.data.GameSetting; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetGameSettingResp { - - private GameSetting gameSetting; - @JsonProperty("isDumpUpload") - private boolean isDumpUpload; - @JsonProperty("isAou") - private boolean isAou; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetUserPreviewResp.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetUserPreviewResp.java deleted file mode 100644 index aa3a6a0c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetUserPreviewResp.java +++ /dev/null @@ -1,40 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharacter; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetUserPreviewResp { - - private String userId; - @JsonProperty("isLogin") - private boolean isLogin; - private LocalDateTime lastLoginDate; - private String userName; - private int reincarnationNum; - private int level; - private String exp; - private int playerRating; - private String lastGameId; - private String lastRomVersion; - private String lastDataVersion; - private LocalDateTime lastPlayDate; - private int trophyId; - private UserCharacter userCharacter; - private int playerLevel; - private int rating; - private int headphone; - private int chargeState; - private String userNameEx; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/AllMusicMapItem.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/AllMusicMapItem.java deleted file mode 100644 index 5f8ed7a7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/AllMusicMapItem.java +++ /dev/null @@ -1,8 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response.data; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class AllMusicMapItem { - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameRanking.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameRanking.java deleted file mode 100644 index 30fda0a3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameRanking.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameRanking { - private int id; - private long point; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSale.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSale.java deleted file mode 100644 index 1914b5fd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSale.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameSale { - - private int orderId; - - private int type; - - private int id; - // should be float number?? - private int rate; - - private LocalDateTime startDate; - - private LocalDateTime endDate; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSetting.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSetting.java deleted file mode 100644 index 14a48ca6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSetting.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response.data; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameSetting { - private int dataVersion; - @JsonProperty("isMaintenance") - private boolean isMaintenance; - private int requestInterval; - private String rebootStartTime; - private String rebootEndTime; - @JsonProperty("isBackgroundDistribute") - private boolean isBackgroundDistribute; - private int maxCountCharacter; - private int maxCountItem; - private int maxCountMusic; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/UserMusicListItem.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/UserMusicListItem.java deleted file mode 100644 index 7fd74ad7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/UserMusicListItem.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.response.data; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMusicDetail; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserMusicListItem { - private int length; - private List userMusicDetailList; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserActivity.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserActivity.java deleted file mode 100644 index 2cb11b79..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserActivity.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserActivity") -@Table(name = "chuni_user_activity", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "kind", "activity_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({"kind", "id", "sortNumber", "param1", "param2", "param3", "param4"}) -public class UserActivity implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int kind; - - @JsonProperty("id") - @Column(name = "activity_id") - private int activityId; - - private int sortNumber; - - private int param1; - - private int param2; - - private int param3; - - private int param4; - - public UserActivity(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java deleted file mode 100644 index 51b67bb3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserCharacter") -@Table(name = "chuni_user_character", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "character_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({"characterId", "playCount", "level", "skillId", "friendshipExp", "isValid", "isNewMark", "param1", "param2"}) -public class UserCharacter implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @Column(name = "character_id") - private int characterId; - - private int playCount = 0; - - private int level = 1; - - private int skillId = 0; - - private int friendshipExp = 0; - - @JsonProperty("isValid") - private boolean isValid = true; - - @JsonProperty("isNewMark") - private boolean isNewMark = true; - - private int param1 = 0; - - private int param2 = 0; - - public UserCharacter(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharge.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharge.java deleted file mode 100644 index fdc6f2fa..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharge.java +++ /dev/null @@ -1,54 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserCharge") -@Table(name = "chuni_user_charge", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "charge_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({"chargeId", "stock", "purchaseDate", "validDate", "param1", "param2", "paramDate"}) -public class UserCharge implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @Column(name = "charge_id") - private int chargeId; - - private int stock; - - private LocalDateTime purchaseDate; - - private LocalDateTime validDate; - - private int param1; - - private int param2; - - private LocalDateTime paramDate; - - public UserCharge(UserData user) { - this.user = user; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCourse.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCourse.java deleted file mode 100644 index 47746797..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCourse.java +++ /dev/null @@ -1,74 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserCourse") -@Table(name = "chuni_user_course", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "course_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserCourse { - - @Id - @JsonIgnore - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @Column(name = "course_id") - private int courseId; - - private int classId; - - private int playCount; - - private int scoreMax; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - @JsonProperty("isSuccess") - private boolean isSuccess; - - private int scoreRank; - - private int eventId; - - private LocalDateTime lastPlayDate; - - private int param1; - - private int param2; - - private int param3; - - private int param4; - - @JsonProperty("isClear") - private boolean isClear; - - public UserCourse(UserData userData) { - user = userData; - } - - public UserCourse(int classId) { - this.classId = classId; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserData.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserData.java deleted file mode 100644 index 06058ffe..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserData.java +++ /dev/null @@ -1,188 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserData") -@Table(name = "chuni_user_data") -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({ - "accessCode", - "userName", - "isWebJoin", - "webLimitDate", "level", - "reincarnationNum", - "exp", - "point", - "totalPoint", - "playCount", - "multiPlayCount", - "multiWinCount", - "requestResCount", - "acceptResCount", - "successResCount", - "playerRating", - "highestRating", - "nameplateId", - "frameId", - "characterId", - "trophyId", - "playedTutorialBit", - "firstTutorialCancelNum", - "masterTutorialCancelNum", - "totalRepertoireCount", - "totalMapNum", - "totalHiScore", - "totalBasicHighScore", - "totalAdvancedHighScore", - "totalExpertHighScore", - "totalMasterHighScore", - "eventWatchedDate", - "friendCount", - "isMaimai", - "firstGameId", - "firstRomVersion", - "firstDataVersion", - "firstPlayDate", - "lastGameId", - "lastRomVersion", - "lastDataVersion", - "lastPlayDate", - "lastPlaceId", - "lastPlaceName", - "lastRegionId", - "lastRegionName", - "lastAllNetId", - "lastClientId"}) -public class UserData implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonSerialize(using = AccessCodeSerializer.class) - @JsonProperty(value = "accessCode", access = JsonProperty.Access.READ_ONLY) - @OneToOne - @JoinColumn(name = "card_id") - private Card card; - // Access code in card - - private String userName; - - private LocalDateTime lastLoginDate; - - @JsonProperty("isWebJoin") - private boolean isWebJoin; - - private String webLimitDate; - - private int level; - - private int reincarnationNum; - - private String exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int multiPlayCount; - - private int multiWinCount; - - private int requestResCount; - - private int acceptResCount; - - private int successResCount; - - private int playerRating; - - private int highestRating; - - private int nameplateId; - - private int frameId; - - // Currently selected UserCharacter - private int characterId; - - private int trophyId; - - private int playedTutorialBit; - - private int firstTutorialCancelNum; - - private int masterTutorialCancelNum; - - private int totalRepertoireCount; - - private int totalMapNum; - - private long totalHiScore; - - private long totalBasicHighScore; - - private long totalAdvancedHighScore; - - private long totalExpertHighScore; - - private long totalMasterHighScore; - - private LocalDateTime eventWatchedDate; - - private int friendCount; - - @JsonProperty("isMaimai") - private boolean isMaimai; - - private String firstGameId; - - private String firstRomVersion; - - private String firstDataVersion; - - private LocalDateTime firstPlayDate; - - private String lastGameId; - - private String lastRomVersion; - - private String lastDataVersion; - - private LocalDateTime lastPlayDate; - - private int lastPlaceId; - - private String lastPlaceName; - - private String lastRegionId; - - private String lastRegionName; - - private String lastAllNetId; - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDataEx.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDataEx.java deleted file mode 100644 index a0688de7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDataEx.java +++ /dev/null @@ -1,142 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserDataEx") -@Table(name = "chuni_user_data_ex") -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({ - "compatibleCmVersion", - "medal", - "mapIconId", - "voiceId", - "ext1", - "ext2", - "ext3", - "ext4", - "ext5", - "ext6", - "ext7", - "ext8", - "ext9", - "ext10", - "ext11", - "ext12", - "ext13", - "ext14", - "ext15", - "ext16", - "ext17", - "ext18", - "ext19", - "ext20", - "extStr1", - "extStr2", - "extStr3", - "extStr4", - "extStr5", - "extLong1", - "extLong2", - "extLong3", - "extLong4", - "extLong5" -}) -public class UserDataEx implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private String compatibleCmVersion; - - private int medal; - - private int mapIconId; - - private int voiceId; - - private int ext1; - - private int ext2; - - private int ext3; - - private int ext4; - - private int ext5; - - private int ext6; - - private int ext7; - - private int ext8; - - private int ext9; - - private int ext10; - - private int ext11; - - private int ext12; - - private int ext13; - - private int ext14; - - private int ext15; - - private int ext16; - - private int ext17; - - private int ext18; - - private int ext19; - - private int ext20; - - private String extStr1; - - private String extStr2; - - private String extStr3; - - private String extStr4; - - private String extStr5; - - private long extLong1; - - private long extLong2; - - private long extLong3; - - private long extLong4; - - private long extLong5; - - - public UserDataEx(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDuel.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDuel.java deleted file mode 100644 index 3d3acea8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserDuel.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserDuel") -@Table(name = "chuni_user_duel", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "duel_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserDuel { - - @Id - @JsonIgnore - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @Column(name = "duel_id") - private int duelId; - - private int progress; - - private int point; - - @JsonProperty("isClear") - private boolean isClear; - - private LocalDateTime lastPlayDate; - - private int param1; - - private int param2; - - private int param3; - - private int param4; - - public UserDuel(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOption.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOption.java deleted file mode 100644 index fcfb2d21..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOption.java +++ /dev/null @@ -1,106 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserGameOption") -@Table(name = "chuni_user_game_option") -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({ - "bgInfo", - "fieldColor", - "guideSound", - "soundEffect", - "guideLine", - "speed", - "optionSet", - "matching", - "judgePos", - "rating", - "judgeJustice", - "judgeAttack", - "headphone", - "playerLevel", - "successTap", - "successExTap", - "successSlideHold", - "successAir", - "successFlick", - "successSkill", - "successTapTimbre", - "privacy" -}) -public class UserGameOption implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @JsonIgnore - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int bgInfo; - - private int fieldColor; - - private int guideSound; - - private int soundEffect; - - private int guideLine; - - private int speed; - - private int optionSet; - - private int matching; - - private int judgePos; - - private int rating; - - private int judgeJustice; - - private int judgeAttack; - - private int headphone; - - private int playerLevel; - - private int successTap; - - private int successExTap; - - private int successSlideHold; - - private int successAir; - - private int successFlick; - - private int successSkill; - - private int successTapTimbre; - - private int privacy; - - - public UserGameOption(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOptionEx.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOptionEx.java deleted file mode 100644 index 00b67836..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGameOptionEx.java +++ /dev/null @@ -1,100 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserGameOptionEx") -@Table(name = "chuni_user_game_option_ex") -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({ - "ext1", - "ext2", - "ext3", - "ext4", - "ext5", - "ext6", - "ext7", - "ext8", - "ext9", - "ext10", - "ext11", - "ext12", - "ext13", - "ext14", - "ext15", - "ext16", - "ext17", - "ext18", - "ext19", - "ext20" -}) -public class UserGameOptionEx implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int ext1; - - private int ext2; - - private int ext3; - - private int ext4; - - private int ext5; - - private int ext6; - - private int ext7; - - private int ext8; - - private int ext9; - - private int ext10; - - private int ext11; - - private int ext12; - - private int ext13; - - private int ext14; - - private int ext15; - - private int ext16; - - private int ext17; - - private int ext18; - - private int ext19; - - private int ext20; - - - public UserGameOptionEx(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGeneralData.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGeneralData.java deleted file mode 100644 index 784cb47a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserGeneralData.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * This is for storing the other data that doesn't need to save it in a separate table - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserGeneralData") -@Table(name = "chuni_user_general_data") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserGeneralData implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private String propertyKey; - - @Column(columnDefinition = "TEXT") - private String propertyValue; - - public UserGeneralData(UserData userData, String key) { - this.user = userData; - this.propertyKey = key; - this.propertyValue = ""; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java deleted file mode 100644 index 89cb7939..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserItem") -@Table(name = "chuni_user_item", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "item_id", "item_kind"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({"itemKind", "itemId", "stock", "isValid"}) -public class UserItem implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - // Kind ,Type - @Column(name = "item_kind") - private int itemKind; - - @Column(name = "item_id") - private int itemId; - - private int stock = 1; - - @JsonProperty("isValid") - private boolean isValid = true; - - public UserItem(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMap.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMap.java deleted file mode 100644 index 7aa93b01..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMap.java +++ /dev/null @@ -1,70 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserMap") -@Table(name = "chuni_user_map", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "map_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({ - "mapId", - "position", - "isClear", - "areaId", - "routeNumber", - "eventId", - "rate", - "statusCount", - "isValid" -}) -public class UserMap implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @Column(name = "map_id") - private int mapId; - - private int position; - - @JsonProperty("isClear") - private boolean isClear; - - private int areaId; - - private int routeNumber; - - private int eventId; - - private int rate; - - private int statusCount; - - @JsonProperty("isValid") - private boolean isValid; - - public UserMap(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMusicDetail.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMusicDetail.java deleted file mode 100644 index f0a29a53..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserMusicDetail.java +++ /dev/null @@ -1,113 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserMusicDetail") -@Table(name = "chuni_user_music_detail", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "music_id", "level"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({ - "musicId", - "level", - "playCount", - "scoreMax", - "resRequestCount", - "resAcceptCount", - "resSuccessCount", - "missCount", - "maxComboCount", - "isFullCombo", - "isAllJustice", - "isSuccess", - "fullChain", - "maxChain", - "scoreRank", - "isLock" -}) -public class UserMusicDetail implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @Column(name = "music_id") - private int musicId; - - private int level; - - private int playCount; - - private int scoreMax; - - private int resRequestCount; - - private int resAcceptCount; - - private int resSuccessCount; - - private int missCount; - - private int maxComboCount; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - @JsonProperty("isSuccess") - private boolean isSuccess; - - private int fullChain; - - private int maxChain; - - private int scoreRank; - - @JsonProperty("isLock") - private boolean isLock; - - - public UserMusicDetail(UserData userData) { - user = userData; - } - - public UserMusicDetail(int musicId, int level, int playCount, int scoreMax, int resRequestCount, int resAcceptCount, int resSuccessCount, int missCount, int maxComboCount, boolean isFullCombo, boolean isAllJustice, boolean isSuccess, int fullChain, int maxChain, int scoreRank, boolean isLock) { - this.musicId = musicId; - this.level = level; - this.playCount = playCount; - this.scoreMax = scoreMax; - this.resRequestCount = resRequestCount; - this.resAcceptCount = resAcceptCount; - this.resSuccessCount = resSuccessCount; - this.missCount = missCount; - this.maxComboCount = maxComboCount; - this.isFullCombo = isFullCombo; - this.isAllJustice = isAllJustice; - this.isSuccess = isSuccess; - this.fullChain = fullChain; - this.maxChain = maxChain; - this.scoreRank = scoreRank; - this.isLock = isLock; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserPlaylog.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserPlaylog.java deleted file mode 100644 index ae9d74e0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserPlaylog.java +++ /dev/null @@ -1,147 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ChuniUserPlaylog") -@Table(name = "chuni_user_playlog") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserPlaylog implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int orderId; - - private int sortNumber; - - private int placeId; - - private LocalDateTime playDate; - - private LocalDateTime userPlayDate; - - private int musicId; - - private int level; - - private int customId; - - private int playedUserId1; - - private int playedUserId2; - - private int playedUserId3; - - private String playedUserName1; - - private String playedUserName2; - - private String playedUserName3; - - private int playedMusicLevel1; - - private int playedMusicLevel2; - - private int playedMusicLevel3; - - private int playedCustom1; - - private int playedCustom2; - - private int playedCustom3; - - private int track; - - private int score; - - @Column(name = "\"rank\"") - private int rank; - - private int maxCombo; - - private int maxChain; - - private int rateTap; - - private int rateHold; - - private int rateSlide; - - private int rateAir; - - private int rateFlick; - - private int judgeGuilty; - - private int judgeAttack; - - private int judgeJustice; - - private int judgeCritical; - - private int eventId; - - private int playerRating; - - @JsonProperty("isNewRecord") - private boolean isNewRecord; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - private int fullChainKind; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - @JsonProperty("isContinue") - private boolean isContinue; - - @JsonProperty("isFreeToPlay") - private boolean isFreeToPlay; - - private int characterId; - - private int skillId; - - private int playKind; - - @JsonProperty("isClear") - private boolean isClear; - - private int skillLevel; - - private int skillEffect; - - private String placeName; - - @JsonProperty("isMaimai") - private boolean isMaimai; - - - public UserPlaylog(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/GameMusicService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/GameMusicService.java deleted file mode 100644 index c0617dcd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/GameMusicService.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.gamedata.GameMusicRepository; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.stereotype.Service; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class GameMusicService { - - private final GameMusicRepository gameMusicRepository; - - @Autowired - public GameMusicService(GameMusicRepository gameMusicRepository) { - this.gameMusicRepository = gameMusicRepository; - } - - @Cacheable("music") - public List getAll() { - return gameMusicRepository.findAll(); - } - - public Map getIdMap() { - Map musicMap = new LinkedHashMap<>(); - getAll().forEach(music -> musicMap.put(music.getMusicId(), music)); - return musicMap; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserActivityService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserActivityService.java deleted file mode 100644 index 3cba1438..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserActivityService.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserActivityRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserActivityService { - - private final UserActivityRepository userActivityRepository; - - @Autowired - public UserActivityService(UserActivityRepository userActivityRepository) { - this.userActivityRepository = userActivityRepository; - } - - public UserActivity save(UserActivity userActivity) { - return userActivityRepository.save(userActivity); - } - - public List saveAll(List userActivityList) { - return userActivityRepository.saveAll(userActivityList); - } - - public Optional getByUserAndActivityIdAndKind(UserData user, int activityId, int kind) { - return userActivityRepository.findTopByUserAndActivityIdAndKindOrderByIdDesc(user, activityId, kind); - } - - public List getAllByUserIdAndKind(String userId, String kind) { - return userActivityRepository.findAllByUser_Card_ExtIdAndKindOrderBySortNumberDesc(Long.parseLong(userId), Integer.parseInt(kind)); - } - - public List getByUserId(String userId) { - return userActivityRepository.findAllByUser_Card_ExtId(Long.parseLong(userId)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java deleted file mode 100644 index db8efeb0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserCharacterRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserCharacterService { - - private final UserCharacterRepository userCharacterRepository; - - @Autowired - public UserCharacterService(UserCharacterRepository userCharacterRepository) { - this.userCharacterRepository = userCharacterRepository; - } - - public UserCharacter save(UserCharacter userCharacter) { - return userCharacterRepository.save(userCharacter); - } - - public List saveAll(Iterable userCharacter) { - return userCharacterRepository.saveAll(userCharacter); - } - - public List getByUserId(String userId) { - return userCharacterRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } - - public Page getByUserId(String userId, int pageNumber, int maxCount) { - Pageable pageable = PageRequest.of(pageNumber, maxCount); - return userCharacterRepository.findByUser_Card_ExtId(Long.parseLong(userId), pageable); - } - - public Optional getByUserAndCharacterId(UserData user, int characterId) { - return userCharacterRepository.findTopByUserAndCharacterIdOrderByIdDesc(user, characterId); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserChargeService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserChargeService.java deleted file mode 100644 index 2f13f1db..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserChargeService.java +++ /dev/null @@ -1,39 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserChargeRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharge; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserChargeService { - - private final UserChargeRepository userChargeRepository; - - public UserChargeService(UserChargeRepository userChargeRepository) { - this.userChargeRepository = userChargeRepository; - } - - public UserCharge save(UserCharge userCharge) { - return userChargeRepository.save(userCharge); - } - - public List saveAll(List newUserChargeList) { - return userChargeRepository.saveAll(newUserChargeList); - } - - public List getByUserId(String userId) { - return userChargeRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } - - public Optional getByUserAndChargeId(UserData user, int chargeId) { - return userChargeRepository.findByUserAndChargeId(user, chargeId); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java deleted file mode 100644 index 4df29de3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserCourseRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCourse; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserCourseService { - - private final UserCourseRepository userCourseRepository; - - @Autowired - public UserCourseService(UserCourseRepository userCourseRepository) { - this.userCourseRepository = userCourseRepository; - } - - public UserCourse save(UserCourse userCourse) { - return userCourseRepository.save(userCourse); - } - - public List saveAll(Iterable userMusicDetail) { - return userCourseRepository.saveAll(userMusicDetail); - } - - public List getByUserId(String userId) { - return userCourseRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } - - public Page getByUserId(String userId, int pageNum, int maxCount) { - Pageable page = PageRequest.of(pageNum, maxCount); - return userCourseRepository.findByUser_Card_ExtId(Long.parseLong(userId), page); - } - - public Optional getByUserAndCourseId(UserData user, int courseId) { - return userCourseRepository.findTopByUserAndCourseIdOrderByIdDesc(user, courseId); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataExService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataExService.java deleted file mode 100644 index b1d82b86..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataExService.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserDataExRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDataEx; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserDataExService { - - private final UserDataExRepository userDataExRepository; - - @Autowired - public UserDataExService(UserDataExRepository userDataExRepository) { - this.userDataExRepository = userDataExRepository; - } - - public UserDataEx save(UserDataEx userDataEx) { - return userDataExRepository.save(userDataEx); - } - - public Optional getByUser(UserData user) { - return userDataExRepository.findByUser(user); - } - - public Optional getByExtId(String userId) { - return userDataExRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataService.java deleted file mode 100644 index d0e50e35..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDataService.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserDataRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.general.model.Card; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserDataService { - - private final UserDataRepository userDataRepository; - - @Autowired - public UserDataService(UserDataRepository userDataRepository) { - this.userDataRepository = userDataRepository; - } - - public UserData saveUserData(UserData userData) { - return userDataRepository.save(userData); - } - - public UserData saveAndFlushUserData(UserData userData) { - return userDataRepository.saveAndFlush(userData); - } - - public Optional getUserByExtId(String aimeId) { - return userDataRepository.findByCard_ExtId(Long.parseLong(aimeId)); - } - - public Optional getUserByCard(Card card) { - return userDataRepository.findByCard(card); - } - - public void updateLoginTime(UserData userData) { - userData.setLastLoginDate(LocalDateTime.now()); - userDataRepository.save(userData); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDuelService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDuelService.java deleted file mode 100644 index 9250809a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserDuelService.java +++ /dev/null @@ -1,40 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserDuelRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDuel; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserDuelService { - - private final UserDuelRepository userDuelRepository; - - @Autowired - public UserDuelService(UserDuelRepository userDuelRepository) { - this.userDuelRepository = userDuelRepository; - } - - public Optional getByUserAndDuelId(UserData user, int duelId) { - return userDuelRepository.findTopByUserAndDuelIdOrderByIdDesc(user, duelId); - } - - public UserDuel save(UserDuel userDuel) { - return userDuelRepository.save(userDuel); - } - - public List saveAll(Iterable userDuel) { - return userDuelRepository.saveAll(userDuel); - } - - public List getByUserId(String userId) { - return userDuelRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionExService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionExService.java deleted file mode 100644 index a6fb25af..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionExService.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserGameOptionExRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOptionEx; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserGameOptionExService { - - private final UserGameOptionExRepository userGameOptionExRepository; - - @Autowired - public UserGameOptionExService(UserGameOptionExRepository userGameOptionExRepository) { - this.userGameOptionExRepository = userGameOptionExRepository; - } - - public UserGameOptionEx save(UserGameOptionEx userGameOptionEx) { - return userGameOptionExRepository.save(userGameOptionEx); - } - - public Optional getByUser(UserData userData) { - return userGameOptionExRepository.findByUser(userData); - } - - public Optional getByUserId(String userId) { - return userGameOptionExRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionService.java deleted file mode 100644 index 76e50642..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGameOptionService.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserGameOptionRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOption; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserGameOptionService { - - private final UserGameOptionRepository userGameOptionRepository; - - @Autowired - public UserGameOptionService(UserGameOptionRepository userGameOptionRepository) { - this.userGameOptionRepository = userGameOptionRepository; - } - - public UserGameOption save(UserGameOption userGameOption) { - return userGameOptionRepository.save(userGameOption); - } - - public Optional getByUser(UserData user) { - return userGameOptionRepository.findByUser(user); - } - - public Optional getByUserId(String userId) { - return userGameOptionRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGeneralDataService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGeneralDataService.java deleted file mode 100644 index 863e6ee5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserGeneralDataService.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserGeneralDataRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGeneralData; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service("ChuniUserGeneralDataService") -public class UserGeneralDataService { - - private final UserGeneralDataRepository userGeneralDataRepository; - - public UserGeneralDataService(UserGeneralDataRepository userGeneralDataRepository) { - this.userGeneralDataRepository = userGeneralDataRepository; - } - - public UserGeneralData save(UserGeneralData userGeneralData) { - return userGeneralDataRepository.save(userGeneralData); - } - - public Optional getByUserAndKey(UserData user, String key) { - return userGeneralDataRepository.findByUserAndPropertyKey(user, key); - } - - public Optional getByUserIdAndKey(String userId, String key) { - return userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(Long.parseLong(userId), key); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java deleted file mode 100644 index 6e8df9a9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserItemRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserItem; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserItemService { - private final UserItemRepository userItemRepository; - - @Autowired - public UserItemService(UserItemRepository userItemRepository) { - this.userItemRepository = userItemRepository; - } - - public UserItem save(UserItem userItem) { - return userItemRepository.save(userItem); - } - - public List saveAll(Iterable userItem) { - return userItemRepository.saveAll(userItem); - } - - public List getByUserId(String userId) { - return userItemRepository.findAllByUser_Card_ExtId(Long.parseLong(userId)); - } - - public Optional getByUserAndItemIdAndKind(UserData user, int itemId, int itemKind) { - return userItemRepository.findTopByUserAndItemIdAndItemKindOrderByIdDesc(user, itemId, itemKind); - } - - public Page getByUserAndItemKind(String userId, int kind, int pageNumber, int maxCount) { - Pageable page = PageRequest.of(pageNumber, maxCount); - return userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Long.parseLong(userId), kind, page); - } - - public Page getByUserId(String userId, int page, int size) { - return userItemRepository.findByUser_Card_ExtId(Long.parseLong(userId), PageRequest.of(page, size)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMapService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMapService.java deleted file mode 100644 index bb287028..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMapService.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserMapRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMap; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserMapService { - - private final UserMapRepository userMapRepository; - - @Autowired - public UserMapService(UserMapRepository userMapRepository) { - this.userMapRepository = userMapRepository; - } - - public UserMap save(UserMap userMap) { - return userMapRepository.save(userMap); - } - - public List saveAll(Iterable userMap) { - return userMapRepository.saveAll(userMap); - } - - public List getByUser(UserData user) { - return userMapRepository.findAllByUser(user); - } - - public List getByUserId(String userId) { - return userMapRepository.findAllByUser_Card_ExtId(Long.parseLong(userId)); - } - - public Optional getByUserAndMapId(UserData user, int mapId) { - return userMapRepository.findTopByUserAndMapIdOrderByIdDesc(user, mapId); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java deleted file mode 100644 index 2ca0d1c6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserMusicDetailRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMusicDetail; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserMusicDetailService { - - private final UserMusicDetailRepository userMusicDetailRepository; - - @Autowired - public UserMusicDetailService(UserMusicDetailRepository userMusicDetailRepository) { - this.userMusicDetailRepository = userMusicDetailRepository; - } - - public UserMusicDetail save(UserMusicDetail userMusicDetail) { - return userMusicDetailRepository.save(userMusicDetail); - } - - public List saveAll(Iterable userMusicDetail) { - return userMusicDetailRepository.saveAll(userMusicDetail); - } - - public List getByUserId(String userId) { - return userMusicDetailRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } - - public Page getByUserId(String userId, Pageable page) { - return userMusicDetailRepository.findByUser_Card_ExtId(Long.parseLong(userId), page); - } - - public List getByUserIdAndMusicId(String userId, int musicId) { - return userMusicDetailRepository.findByUser_Card_ExtIdAndMusicId(Long.parseLong(userId), musicId); - } - - public Optional getByUserAndMusicIdAndLevel(UserData user, int musicId, int level) { - return userMusicDetailRepository.findTopByUserAndMusicIdAndLevelOrderByIdDesc(user, musicId, level); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java deleted file mode 100644 index 2b945f8b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.chunithm.service; - -import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserPlaylogRepository; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserPlaylog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class UserPlaylogService { - - private final UserPlaylogRepository userPlaylogRepository; - - @Autowired - public UserPlaylogService(UserPlaylogRepository userPlaylogRepository) { - this.userPlaylogRepository = userPlaylogRepository; - } - - public UserPlaylog save(UserPlaylog userPlaylog) { - return userPlaylogRepository.save(userPlaylog); - } - - public List saveAll(List userPlaylogList) { - return userPlaylogRepository.saveAll(userPlaylogList); - } - - public Page getRecentPlays(String userId, Pageable page) { - return userPlaylogRepository.findByUser_Card_ExtId(Long.parseLong(userId), page); - } - - public List getRecent30Plays(String userId) { - Pageable page = PageRequest.of(0, 30, Sort.by(Sort.Direction.DESC, "userPlayDate")); - return userPlaylogRepository.findByUser_Card_ExtIdAndLevelNot(Long.parseLong(userId), 4, page); - } - - public List getByUserId(String userId) { - return userPlaylogRepository.findByUser_Card_ExtId(Long.parseLong(userId)); - } - - public List getByUserIdAndMusicIdAndLevel(String userId, int id, int level) { - return userPlaylogRepository.findByUser_Card_ExtIdAndMusicIdAndLevel(Long.parseLong(userId), id, level); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt index c3957fe8..714580eb 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt @@ -11,13 +11,12 @@ import icu.samnyan.aqua.sega.general.GameMusicPopularity import icu.samnyan.aqua.sega.general.MeowApi import icu.samnyan.aqua.sega.general.RequestContext import icu.samnyan.aqua.sega.general.service.CardService -import icu.samnyan.aqua.sega.util.jackson.BasicMapper -import icu.samnyan.aqua.sega.util.jackson.StringMapper +import icu.samnyan.aqua.sega.util.BasicMapper +import icu.samnyan.aqua.sega.util.StringMapper import icu.samnyan.aqua.spring.Metrics import jakarta.servlet.http.HttpServletRequest import org.slf4j.LoggerFactory import org.springframework.web.bind.annotation.RestController -import kotlin.collections.set /** * @author samnyan (privateamusement@protonmail.com) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt index 7168c3ec..88249541 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanApis.kt @@ -8,7 +8,7 @@ import icu.samnyan.aqua.sega.chusan.model.request.UserCMissionResp 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.CardStatus -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating +import icu.samnyan.aqua.sega.general.model.UserRecentRating import java.time.format.DateTimeFormatter @Suppress("UNCHECKED_CAST") @@ -58,7 +58,7 @@ fun ChusanController.chusanInit() { "GetUserRecMusic".paged("userRecMusicList") { // musicId: int, recMusicList: string // musicId cannot be the same with the id in recMusicList - val u = db.userData.findByCard_ExtId(uid)() ?: return@paged empty + val u = db.userData.findByCard_ExtId(uid) ?: return@paged empty val list = (chusan.recommendedMusic[u.id] ?: ls()).filter { it != 1 } if (list.isEmpty()) empty @@ -87,8 +87,8 @@ fun ChusanController.chusanInit() { // Net battle data "GetUserNetBattleData" api@ { - val u = db.userData.findByCard_ExtId(uid)() ?: return@api null - val misc = db.userMisc.findSingleByUser(u)() + val u = db.userData.findByCard_ExtId(uid) ?: return@api null + val misc = db.userMisc.findSingleByUser(u) val recent = db.netBattleLog.findTop20ByUserOrderByIdDesc(u) mapOf("userId" to uid, "userNetBattleData" to mapOf( "recentNBSelectMusicList" to (misc?.recentNbSelect ?: empty), @@ -106,7 +106,7 @@ fun ChusanController.chusanInit() { ) } - db.userData.findByCard_ExtId(uid)()?.card?.aquaUser?.gameOptions?.run { + db.userData.findByCard_ExtId(uid)?.card?.aquaUser?.gameOptions?.run { listOf(chusanSymbolChat1, chusanSymbolChat2, chusanSymbolChat3, chusanSymbolChat4) .flatMapIndexed { i, sym -> sym?.makeSymbols(i) ?: empty } } ?: empty @@ -114,10 +114,10 @@ fun ChusanController.chusanInit() { // User handlers "GetUserData" { - db.userData.findByCard_ExtId(uid)()?.let{ u -> mapOf("userId" to uid, "userData" to u) } + db.userData.findByCard_ExtId(uid)?.let{ u -> mapOf("userId" to uid, "userData" to u) } } "GetUserOption" { - val userGameOption = db.userGameOption.findSingleByUser_Card_ExtId(uid)() ?: (400 - "User not found") + val userGameOption = db.userGameOption.findSingleByUser_Card_ExtId(uid) ?: (400 - "User not found") mapOf("userId" to uid, "userGameOption" to userGameOption) } @@ -141,7 +141,7 @@ fun ChusanController.chusanInit() { parsing { UserCMissionResp().apply { missionId = parsing { data["missionId"]!!.int } } }.apply { - db.userCMission.findByUser_Card_ExtIdAndMissionId(uid, missionId)()?.let { + db.userCMission.findByUser_Card_ExtIdAndMissionId(uid, missionId)?.let { point = it.point userCMissionProgressList = db.userCMissionProgress.findByUser_Card_ExtIdAndMissionId(uid, missionId) } @@ -151,7 +151,7 @@ fun ChusanController.chusanInit() { // Introduced in LMN+ "GetUserCMissionList" api@ { val missions = parsing { (data["userCMissionList"] as List).map { it["missionId"]!!.int } } - val u = db.userData.findByCard_ExtId(uid)() ?: return@api null + val u = db.userData.findByCard_ExtId(uid) ?: return@api null db.userCMission.findByUserAndMissionIdIn(u, missions).map { UserCMissionResp().apply { @@ -190,7 +190,7 @@ fun ChusanController.chusanInit() { val items = db.userItem.findAllByUser_Card_ExtIdAndItemKind(uid, kind).mut // Check game options - db.userData.findByCard_ExtId(uid)()?.card?.aquaUser?.gameOptions?.let { + db.userData.findByCard_ExtId(uid)?.card?.aquaUser?.gameOptions?.let { if (it.chusanInfinitePenguins && kind == 5) { items.removeAll { it.itemId in penguins } items.addAll(penguins.map { Chu3UserItem(kind, it, 999, true) }) @@ -207,7 +207,7 @@ fun ChusanController.chusanInit() { "GetUserFavoriteItem".pagedWithKind("userFavoriteItemList") { val kind = parsing { data["kind"]!!.int } mapOf("kind" to kind) grabs { - val misc = db.userMisc.findSingleByUser_Card_ExtId(uid)() + val misc = db.userMisc.findSingleByUser_Card_ExtId(uid) when (kind) { 1 -> misc?.favMusic ?: empty 3 -> empty // TODO: Favorite character @@ -220,9 +220,9 @@ fun ChusanController.chusanInit() { "lastDataVersion,trophyId,classEmblemMedal,classEmblemBase,battleRankId").split(',').toSet() "GetUserPreview" api@ { - val user = db.userData.findByCard_ExtId(uid)() ?: return@api null + val user = db.userData.findByCard_ExtId(uid) ?: return@api null val chara = db.userCharacter.findByUserAndCharacterId(user, user.characterId) - val option = db.userGameOption.findSingleByUser(user)() + val option = db.userGameOption.findSingleByUser(user) val userDict = user.toJson().jsonMap().filterKeys { it in userPreviewKeys } val res = mutableMapOf( @@ -260,7 +260,7 @@ fun ChusanController.chusanInit() { } "GetUserRecentRating".paged("userRecentRatingList") { - db.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(uid, "recent_rating_list")() + db.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(uid, "recent_rating_list") ?.propertyValue?.some ?.split(',')?.dropLastWhile { it.isEmpty() }?.map { it.split(':') } ?.map { (musicId, level, score) -> UserRecentRating(musicId.int, level.int, "2000001", score.int) } @@ -276,7 +276,7 @@ fun ChusanController.chusanInit() { "GetUserTeam" { val playDate = parsing { data["playDate"] as String } - val team = db.userData.findByCard_ExtId(uid)()?.card?.aquaUser?.gameOptions?.chusanTeamName?.some + val team = db.userData.findByCard_ExtId(uid)?.card?.aquaUser?.gameOptions?.chusanTeamName?.some ?: props.teamName?.some ?: "一緒に歌おう!" mapOf( @@ -347,7 +347,7 @@ fun ChusanController.chusanInit() { // TODO: Test login bonus "GameLogin" { // fun process() { -// val u = db.userData.findByCard_ExtId(uid)() ?: return +// val u = db.userData.findByCard_ExtId(uid) ?: return // db.userData.save(u.apply { lastLoginDate = LocalDateTime.now() }) // // if (!props.loginBonusEnable) return @@ -355,7 +355,7 @@ fun ChusanController.chusanInit() { // // bonusList.forEach { preset -> // // Check if a user already has some progress and if not, add the login bonus entry -// val bonus = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id)() +// val bonus = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id) // ?: UserLoginBonus(1, uid.int, preset.id).let { db.userLoginBonus.save(it) } // if (bonus.isFinished) return@forEach // @@ -375,10 +375,10 @@ fun ChusanController.chusanInit() { // if (preset.id < 3000) bCount = 1 // else finished = true // } -// db.gameLoginBonus.findByRequiredDays(1, preset.id, bCount)()?.let { +// db.gameLoginBonus.findByRequiredDays(1, preset.id, bCount)?.let { // db.userItem.save(UserItem(6, it.presentId, it.itemNum).apply { user = u }) // } -// val toSave = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id)() +// val toSave = db.userLoginBonus.findLoginBonus(uid.int, 1, preset.id) // ?: UserLoginBonus().apply { user = uid.int; presetId = preset.id; version = 1 } // // db.userLoginBonus.save(toSave.apply { diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt index 4a7d3a1b..bf748a65 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanCMApis.kt @@ -4,8 +4,8 @@ import ext.* 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.Chu3UserItem +import icu.samnyan.aqua.sega.chusan.model.userdata.UserCardPrintState import java.time.LocalDateTime fun ChusanController.cmApiInit() { @@ -14,20 +14,20 @@ fun ChusanController.cmApiInit() { // CardMaker (TODO: Somebody test this, I don't have a card maker) "CMGetUserData" { - val user = db.userData.findByCard_ExtId(uid)() ?: (400 - "User not found") + val user = db.userData.findByCard_ExtId(uid) ?: (400 - "User not found") user.userEmoney = UserEmoney() mapOf("userId" to uid, "userData" to user, "userEmoney" to user.userEmoney) } "CMGetUserPreview" { - val user = db.userData.findByCard_ExtId(uid)() ?: (400 - "User not found") + val user = db.userData.findByCard_ExtId(uid) ?: (400 - "User not found") mapOf("userName" to user.userName, "level" to user.level, "medal" to user.medal, "lastDataVersion" to user.lastDataVersion, "isLogin" to false) } "CMUpsertUserGacha" api@ { val (gachaId, placeId) = parsing { data["gachaId"]!!.int to data["placeId"]!!.int } - val u = db.userData.findByCard_ExtId(uid)() ?: return@api null + val u = db.userData.findByCard_ExtId(uid) ?: return@api null val upsertUserGacha = parsing { mapper.convert(data["cmUpsertUserGacha"]!!) } upsertUserGacha.gameGachaCardList?.let { lst -> @@ -103,7 +103,7 @@ fun ChusanController.cmApiInit() { val userCardPrintState = cmMapper.convert(parsing { data["userCardPrintState"]!! }) val userItemList = cmMapper.convert>(parsing { data["userItemList"]!! }) - val u = db.userData.findByCard_ExtId(uid)() ?: return@api null + val u = db.userData.findByCard_ExtId(uid) ?: return@api null db.userItem.saveAll( userItemList.mapApply { diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt index 87eaabb3..79bf6647 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanMatchingApis.kt @@ -9,15 +9,6 @@ import ext.parsing import icu.samnyan.aqua.sega.chusan.ChusanController import icu.samnyan.aqua.sega.chusan.model.request.MatchingWaitState import icu.samnyan.aqua.sega.chusan.model.userdata.Chu3MatchingMemberReq -import kotlin.collections.MutableList -import kotlin.collections.find -import kotlin.collections.indices -import kotlin.collections.listOf -import kotlin.collections.map -import kotlin.collections.mapOf -import kotlin.collections.mutableListOf -import kotlin.collections.mutableMapOf -import kotlin.collections.set fun ChusanController.matchingApiInit() { diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt index f1329de2..306d9391 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/handler/ChusanUpsertApis.kt @@ -5,13 +5,13 @@ import icu.samnyan.aqua.sega.chusan.ChusanController import icu.samnyan.aqua.sega.chusan.model.request.Chu3UserAll import icu.samnyan.aqua.sega.chusan.model.userdata.* import icu.samnyan.aqua.sega.general.model.CardStatus -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating +import icu.samnyan.aqua.sega.general.model.UserRecentRating @Suppress("UNCHECKED_CAST") fun ChusanController.upsertApiInit() { "UpsertUserChargelog" { val charge = parsing { mapper.convert(data["userCharge"] as JDict) } - charge.user = db.userData.findByCard_ExtId(uid)() ?: (400 - "User not found") + charge.user = db.userData.findByCard_ExtId(uid) ?: (400 - "User not found") charge.id = db.userCharge.findByUser_Card_ExtIdAndChargeId(uid, charge.chargeId)?.id ?: 0 db.userCharge.save(charge) charge.user.card?.let { cardService.updateCardTimestamp(it, "chu3") } @@ -23,10 +23,10 @@ fun ChusanController.upsertApiInit() { req.run { // UserData - val oldUser = db.userData.findByCard_ExtId(uid)() + val oldUser = db.userData.findByCard_ExtId(uid) val u = (userData?.get(0) ?: return@api null).apply { id = oldUser?.id ?: 0 - card = oldUser?.card ?: us.cardRepo.findByExtId(uid).expect("Card not found") + card = oldUser?.card ?: us.cardRepo.findByExtId(uid) ?: (404 - "Card not found") val version = data["version"] as? String ?: "0.00" val versionNumber = version.toDoubleOrNull() ?: 0.0 @@ -74,12 +74,12 @@ fun ChusanController.upsertApiInit() { userRatingBaseNextList to "rating_next_list", userRatingBaseNewList to "rating_new_list" ).filter { it.first != null }.forEach { (list, key) -> - val d = db.userGeneralData.findByUserAndPropertyKey(u, key)() + val d = db.userGeneralData.findByUserAndPropertyKey(u, key) ?: UserGeneralData().apply { user = u; propertyKey = key } db.userGeneralData.save(d.apply { propertyValue = list!!.str() }) } - val misc = db.userMisc.findSingleByUser(u)() ?: Chu3UserMisc().apply { user = u } + val misc = db.userMisc.findSingleByUser(u) ?: Chu3UserMisc().apply { user = u } // Favorites userFavoriteMusicList?.filter { it.musicId != -1 }?.ifEmpty { null }?.let { list -> @@ -121,7 +121,7 @@ fun ChusanController.upsertApiInit() { // List data userGameOption?.get(0)?.let { obj -> db.userGameOption.saveAndFlush(obj.apply { - id = db.userGameOption.findSingleByUser(u)()?.id ?: 0 }) } + id = db.userGameOption.findSingleByUser(u)?.id ?: 0 }) } userMapAreaList?.let { list -> db.userMap.saveAll(list.distinctBy { it.mapAreaId }.mapApply { @@ -145,7 +145,7 @@ fun ChusanController.upsertApiInit() { userChargeList?.let { list -> db.userCharge.saveAll(list.distinctBy { it.chargeId }.mapApply { - id = db.userCharge.findByUserAndChargeId(u, chargeId)()?.id ?: 0 }) } + id = db.userCharge.findByUserAndChargeId(u, chargeId)?.id ?: 0 }) } userCourseList?.let { list -> db.userCourse.saveAll(list.distinctBy { it.courseId }.mapApply { @@ -163,7 +163,7 @@ fun ChusanController.upsertApiInit() { // userLoginBonusList?.let { list -> // db.userLoginBonus.saveAll(list.distinctBy { it["presetId"] as String }.map { // val id = it["presetId"]!!.int -// (db.userLoginBonus.findLoginBonus(uid.int, 1, id)() ?: UserLoginBonus()).apply { +// (db.userLoginBonus.findLoginBonus(uid.int, 1, id) ?: UserLoginBonus()).apply { // user = u.id.toInt() // presetId = id // lastUpdateDate = LocalDateTime.now() @@ -173,7 +173,7 @@ fun ChusanController.upsertApiInit() { // } req.userCMissionList?.forEach { d -> - (db.userCMission.findByUser_Card_ExtIdAndMissionId(uid, d.missionId)() + (db.userCMission.findByUser_Card_ExtIdAndMissionId(uid, d.missionId) ?: UserCMission().apply { missionId = d.missionId user = u @@ -181,7 +181,7 @@ fun ChusanController.upsertApiInit() { ).apply { point = d.point }.also { db.userCMission.save(it) } d.userCMissionProgressList?.forEach inner@ { p -> - (db.userCMissionProgress.findByUser_Card_ExtIdAndMissionIdAndOrder(uid, d.missionId, p.order)() + (db.userCMissionProgress.findByUser_Card_ExtIdAndMissionIdAndOrder(uid, d.missionId, p.order) ?: UserCMissionProgress().apply { missionId = d.missionId order = p.order diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt index b2a10d4a..40c0cd2f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/Chu3Repos.kt @@ -19,7 +19,7 @@ import java.util.* @NoRepositoryBean interface Chu3UserLinked : IUserRepo { fun findByUser_Card_ExtId(extId: Long): List - fun findSingleByUser_Card_ExtId(extId: Long): Optional + fun findSingleByUser_Card_ExtId(extId: Long): T? fun findByUser_Card_ExtId(extId: Long, pageable: Pageable): Page } @@ -37,11 +37,11 @@ interface Chu3UserLoginBonusRepo : JpaRepository { value = "select * from chusan_user_login_bonus where user = ?1 and version = ?2 and preset_id = ?3 limit 1", nativeQuery = true ) - fun findLoginBonus(userId: Int, version: Int, presetId: Long): Optional + fun findLoginBonus(userId: Int, version: Int, presetId: Long): UserLoginBonus? } interface Chu3UserActivityRepo : Chu3UserLinked { - fun findTopByUserAndActivityIdAndKindOrderByIdDesc(user: Chu3UserData, activityId: Int, kind: Int): Optional + fun findTopByUserAndActivityIdAndKindOrderByIdDesc(user: Chu3UserData, activityId: Int, kind: Int): Chu3UserActivity? fun findByUserAndActivityIdAndKind(user: Chu3UserData, activityId: Int, kind: Int): Chu3UserActivity? fun findAllByUser_Card_ExtIdAndKind(extId: Long, kind: Int): List @@ -54,17 +54,17 @@ interface Chu3UserCardPrintStateRepo : Chu3UserLinked { } interface Chu3UserCharacterRepo : Chu3UserLinked { - fun findTopByUserAndCharacterIdOrderByIdDesc(user: Chu3UserData, characterId: Int): Optional + fun findTopByUserAndCharacterIdOrderByIdDesc(user: Chu3UserData, characterId: Int): UserCharacter? fun findByUserAndCharacterId(user: Chu3UserData, characterId: Int): UserCharacter? } interface Chu3UserChargeRepo : Chu3UserLinked { - fun findByUserAndChargeId(extId: Chu3UserData, chargeId: Int): Optional + fun findByUserAndChargeId(extId: Chu3UserData, chargeId: Int): UserCharge? fun findByUser_Card_ExtIdAndChargeId(ext: Long, chargeId: Int): UserCharge? } interface Chu3UserCourseRepo : Chu3UserLinked { - fun findTopByUserAndCourseIdOrderByIdDesc(user: Chu3UserData, courseId: Int): Optional + fun findTopByUserAndCourseIdOrderByIdDesc(user: Chu3UserData, courseId: Int): UserCourse? fun findByUserAndCourseId(user: Chu3UserData, courseId: Int): UserCourse? } @@ -73,25 +73,25 @@ interface Chu3UserDataRepo : GenericUserDataRepo { } interface Chu3UserDuelRepo : Chu3UserLinked { - fun findTopByUserAndDuelIdOrderByIdDesc(user: Chu3UserData, duelId: Int): Optional + fun findTopByUserAndDuelIdOrderByIdDesc(user: Chu3UserData, duelId: Int): UserDuel? fun findByUserAndDuelId(user: Chu3UserData, duelId: Int): UserDuel? } interface Chu3UserGachaRepo : Chu3UserLinked { - fun findByUserAndGachaId(extId: Chu3UserData, gachaId: Int): Optional + fun findByUserAndGachaId(extId: Chu3UserData, gachaId: Int): UserGacha? } interface Chu3UserGameOptionRepo : Chu3UserLinked interface Chu3UserGeneralDataRepo : Chu3UserLinked { - fun findByUserAndPropertyKey(user: Chu3UserData, key: String): Optional + fun findByUserAndPropertyKey(user: Chu3UserData, key: String): UserGeneralData? - fun findByUser_Card_ExtIdAndPropertyKey(extId: Long, key: String): Optional + fun findByUser_Card_ExtIdAndPropertyKey(extId: Long, key: String): UserGeneralData? } interface Chu3UserItemRepo : Chu3UserLinked { fun findAllByUser(user: Chu3UserData): List - fun findTopByUserAndItemIdAndItemKindOrderByIdDesc(user: Chu3UserData, itemId: Int, itemKind: Int): Optional + fun findTopByUserAndItemIdAndItemKindOrderByIdDesc(user: Chu3UserData, itemId: Int, itemKind: Int): Chu3UserItem? fun findByUserAndItemIdAndItemKind(user: Chu3UserData, itemId: Int, itemKind: Int): Chu3UserItem? fun findAllByUser_Card_ExtIdAndItemKind(extId: Long, itemKind: Int, pageable: Pageable): Page @@ -106,7 +106,7 @@ interface Chu3UserMapRepo : Chu3UserLinked { } interface Chu3UserMusicDetailRepo : Chu3UserLinked, GenericUserMusicRepo { - fun findTopByUserAndMusicIdAndLevelOrderByIdDesc(user: Chu3UserData, musicId: Int, level: Int): Optional + fun findTopByUserAndMusicIdAndLevelOrderByIdDesc(user: Chu3UserData, musicId: Int, level: Int): UserMusicDetail? fun findByUserAndMusicIdAndLevel(user: Chu3UserData, musicId: Int, level: Int): UserMusicDetail? fun findByUser_Card_ExtIdAndMusicId(extId: Long, musicId: Int): List @@ -119,7 +119,7 @@ interface Chu3UserPlaylogRepo : GenericPlaylogRepo, Chu3UserLinked< } interface Chu3UserCMissionRepo : Chu3UserLinked { - fun findByUser_Card_ExtIdAndMissionId(extId: Long, missionId: Int): Optional + fun findByUser_Card_ExtIdAndMissionId(extId: Long, missionId: Int): UserCMission? fun findByUserAndMissionIdIn(user: Chu3UserData, missionIds: Collection): List } @@ -127,7 +127,7 @@ interface Chu3UserCMissionProgressRepo : Chu3UserLinked { fun findByUser_Card_ExtIdAndMissionId(extId: Long, missionId: Int): List fun findByUserAndMissionId(user: Chu3UserData, missionId: Int): List - fun findByUser_Card_ExtIdAndMissionIdAndOrder(extId: Long, missionId: Int, order: Int): Optional + fun findByUser_Card_ExtIdAndMissionIdAndOrder(extId: Long, missionId: Int, order: Int): UserCMissionProgress? } interface Chu3NetBattleLogRepo : Chu3UserLinked { @@ -171,7 +171,7 @@ interface Chu3GameLoginBonusRepo : JpaRepository { value = "select * from chusan_game_login_bonus where version = ?1 and preset_id = ?2 and need_login_day_count = ?3 limit 1", nativeQuery = true ) - fun findByRequiredDays(version: Int, presetId: Int, requiredDays: Int): Optional + fun findByRequiredDays(version: Int, presetId: Int, requiredDays: Int): GameLoginBonus? } interface Chu3UserRegionsRepo: Chu3UserLinked { diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/Chu3UserAll.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/Chu3UserAll.kt index 95e29052..f17c42aa 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/Chu3UserAll.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/Chu3UserAll.kt @@ -2,7 +2,7 @@ package icu.samnyan.aqua.sega.chusan.model.request import ext.JDict import icu.samnyan.aqua.sega.chusan.model.userdata.* -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating +import icu.samnyan.aqua.sega.general.model.UserRecentRating class UserCMissionResp { var missionId = 0 diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt index ad264c3b..afd1ffa4 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/request/UpsertUserGacha.kt @@ -3,8 +3,8 @@ package icu.samnyan.aqua.sega.chusan.model.request 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.Chu3UserItem +import icu.samnyan.aqua.sega.chusan.model.userdata.UserGacha import java.io.Serializable class UpsertUserGacha : Serializable { diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt index 8ad035c4..c488a709 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/Chu3UserData.kt @@ -12,10 +12,9 @@ import icu.samnyan.aqua.net.games.BaseEntity import icu.samnyan.aqua.net.games.IUserData import icu.samnyan.aqua.sega.chusan.model.request.UserEmoney import icu.samnyan.aqua.sega.general.model.Card -import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer +import icu.samnyan.aqua.sega.util.AccessCodeSerializer import jakarta.persistence.* import kotlinx.io.IOException -import lombok.NoArgsConstructor import java.time.LocalDateTime import java.time.format.DateTimeFormatter @@ -33,7 +32,6 @@ class FlexibleDateTimeDeserializer : JsonDeserializer() { @Entity(name = "ChusanUserData") @Table(name = "chusan_user_data") -@NoArgsConstructor class Chu3UserData : BaseEntity(), IUserData { @JsonSerialize(using = AccessCodeSerializer::class) @JsonProperty(value = "accessCode", access = JsonProperty.Access.READ_ONLY) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.kt index 3bf3933c..edc5e5de 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.kt @@ -3,7 +3,7 @@ package icu.samnyan.aqua.sega.chusan.model.userdata import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.annotation.JsonDeserialize import icu.samnyan.aqua.net.games.IGenericUserMusic -import icu.samnyan.aqua.sega.util.jackson.BooleanToIntegerDeserializer +import icu.samnyan.aqua.sega.util.BooleanToIntegerDeserializer import jakarta.persistence.Entity import jakarta.persistence.Table import jakarta.persistence.UniqueConstraint diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/DivaController.kt b/src/main/java/icu/samnyan/aqua/sega/diva/DivaController.kt new file mode 100644 index 00000000..7e349215 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/DivaController.kt @@ -0,0 +1,181 @@ +package icu.samnyan.aqua.sega.diva + +import ext.JDict +import ext.MutJDict +import ext.emptyMap +import ext.logger +import icu.samnyan.aqua.sega.diva.handler.AttendHandler +import icu.samnyan.aqua.sega.diva.handler.PingHandler +import icu.samnyan.aqua.sega.diva.handler.card.CardProcedureHandler +import icu.samnyan.aqua.sega.diva.handler.card.ChangeNameHandler +import icu.samnyan.aqua.sega.diva.handler.card.ChangePasswdHandler +import icu.samnyan.aqua.sega.diva.handler.card.RegistrationHandler +import icu.samnyan.aqua.sega.diva.handler.databank.* +import icu.samnyan.aqua.sega.diva.handler.ingame.* +import icu.samnyan.aqua.sega.diva.handler.user.* +import icu.samnyan.aqua.sega.diva.model.* +import icu.samnyan.aqua.sega.diva.util.DivaMapper +import icu.samnyan.aqua.sega.diva.util.DivaTime +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode +import jakarta.servlet.http.HttpServletRequest +import org.springframework.http.MediaType +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestParam +import org.springframework.web.bind.annotation.RestController +import org.springframework.web.multipart.MultipartFile +import java.net.URLDecoder +import java.nio.charset.StandardCharsets + +val DIVA_BAD = mapOf("stat" to "0") +val DIVA_OK = emptyMap +val DIVA_INIT = mapOf("db_close" to "0,0", "retry_time" to "FFFF") + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@RestController +@RequestMapping("/g/diva") +class DivaController( + val attendHandler: AttendHandler, + val cardProcedureHandler: CardProcedureHandler, + val changeNameHandler: ChangeNameHandler, + val changePasswdHandler: ChangePasswdHandler, + val registrationHandler: RegistrationHandler, + val contestInfoHandler: ContestInfoHandler, + val festaInfoHandler: FestaInfoHandler, + val nvRankingHandler: NvRankingHandler, + val psRankingHandler: PsRankingHandler, + val pvListHandler: PvListHandler, + val shopCatalogHandler: ShopCatalogHandler, + val buyCstmzItmHandler: BuyCstmzItmHandler, + val buyModuleHandler: BuyModuleHandler, + val getPvPdHandler: GetPvPdHandler, + val shopExitHandler: ShopExitHandler, + val stageResultHandler: StageResultHandler, + val stageStartHandler: StageStartHandler, + val storeSsHandler: StoreSsHandler, + val pingHandler: PingHandler, + val endHandler: EndHandler, + val pdUnlockHandler: PdUnlockHandler, + val preStartHandler: PreStartHandler, + val spendCreditHandler: SpendCreditHandler, + val startHandler: StartHandler, + val db: DivaRepos +) { + val logger = logger() + val mapper = DivaMapper() + + fun buildResultMap(map: JDict) = + map.filterValues { it != null && !(it is String && it == "") } + .map { (k, v) -> "$k=$v" }.joinToString("&") + + @PostMapping(value = ["/"], consumes = [MediaType.APPLICATION_FORM_URLENCODED_VALUE]) + fun formRequest(request: HttpServletRequest): String? { + val bodyStr = String(request.inputStream.readAllBytes()) + val body = parse(bodyStr) + + val command = body.getOrDefault("cmd", "") as String? + + logger.info("{}: {}", command, body) + val respObj = when (command) { + "game_init" -> DIVA_INIT + "attend" -> attendHandler.handle() + "test" -> DIVA_INIT + "nv_ranking" -> nvRankingHandler.handle(mapper.convert(body, BaseRequest::class.java)) + "ps_ranking" -> psRankingHandler.handle(mapper.convert(body, PsRankingRequest::class.java)) + + "pv_list" -> pvListHandler.handle(mapper.convert(body, BaseRequest::class.java)) + "ng_word" -> DIVA_OK + "rmt_wp_list" -> mapOf("rwl_lut" to DivaTime.now, "rw_lst" to "***") + "festa_info" -> festaInfoHandler.handle(mapper.convert(body, BaseRequest::class.java)) + "contest_info" -> contestInfoHandler.handle(mapper.convert(body, BaseRequest::class.java)) + "pv_def_chr_list" -> mapOf("pdcl_lut" to DivaTime.now, "pdc_lst" to "***") + "pv_ng_mdl_list" -> mapOf("pnml_lut" to DivaTime.now, "pnm_lst" to "***") + "cstmz_itm_ng_mdl_list" -> mapOf("cinml_lut" to DivaTime.now, "cinm_lst" to "***") + + "banner_info" -> listOf("bi_lut", "bi_id", "bi_st", "bi_et", "bi_ut").associateWith { null } + "banner_data" -> mapOf("bd_ut" to DivaTime.now, "bd_ti" to "***", "bd_hs" to "***", "bd_id" to body["bd_id"]) + + "cm_ply_info" -> emptyMap + "qst_inf" -> mapOf("qi_lut" to DivaTime.now, "qhi_str" to null, "qrai_str" to null) + "pstd_h_ctrl" -> mapOf("p_std_hc_lut" to DivaTime.now, "p_std_hc_str" to "***,***") + "pstd_item_ng_lst" -> mapOf("p_std_i_n_lut" to DivaTime.now, "p_std_i_ie_n_lst" to "***", "p_std_i_se_n_lst" to "***") + + "shop_catalog" -> shopCatalogHandler.handle(mapper.convert(body, BaseRequest::class.java)) + "cstmz_itm_ctlg" -> mapOf( + "cstmz_itm_ctlg_lut" to DivaTime.now, + "cstmz_itm_ctlg" to encode(db.g.customize.findAll().map { it.toInternal() }.joinToString(",") { encode(it) }) + ) + "card_procedure" -> cardProcedureHandler.handle(mapper.convert(body, CardProcedureRequest::class.java)) + + "registration" -> registrationHandler.handle(mapper.convert(body, RegistrationRequest::class.java)) + + "init_passwd" -> DIVA_BAD + + "change_passwd" -> changePasswdHandler.handle(mapper.convert(body, ChangePasswdRequest::class.java)) + + "change_name" -> changeNameHandler.handle(mapper.convert(body, ChangeNameRequest::class.java)) + + "pre_start" -> preStartHandler.handle(mapper.convert(body, PreStartRequest::class.java)) + "start" -> startHandler.handle(mapper.convert(body, StartRequest::class.java)) + "pd_unlock" -> pdUnlockHandler.handle(mapper.convert(body, PdUnlockRequest::class.java)) + "spend_credit" -> spendCreditHandler.handle(mapper.convert(body, SpendCreditRequest::class.java)) + + "no_card_end" -> DIVA_INIT + "end" -> endHandler.handle(mapper.convert(body, StageResultRequest::class.java)) + "get_pv_pd" -> getPvPdHandler.handle(mapper.convert(body, GetPvPdRequest::class.java)) + "buy_module" -> buyModuleHandler.handle(mapper.convert(body, BuyModuleRequest::class.java)) + + "buy_cstmz_itm" -> buyCstmzItmHandler.handle(mapper.convert(body, BuyCstmzItmRequest::class.java)) + + "shop_exit" -> shopExitHandler.handle(mapper.convert(body, ShopExitRequest::class.java)) + "stage_start" -> stageStartHandler.handle(mapper.convert(body, StageStartRequest::class.java)) + + "stage_result" -> stageResultHandler.handle(mapper.convert(body, StageResultRequest::class.java)) + + "store_ss" -> DIVA_INIT + else -> DIVA_BAD + } + val resp = respObj as? String + ?: buildResultMap(mapOf("cmd" to command, "req_id" to body["req_id"], "stat" to "ok") + mapper.toMap(respObj)) + logger.info("Response: {}", resp) + return resp + } + + @PostMapping(value = ["/"], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE]) + fun fileRequest(@RequestParam query: String, @RequestParam(required = false) bin: MultipartFile): String? { + val body = parse(query) + val command = body.getOrDefault("cmd", "") as String? + + logger.info("{}: {}", command, body) + + val respObj = when (command) { + "ping" -> pingHandler.handle(mapper.convert(body, BaseRequest::class.java)) + "investigate" -> DIVA_INIT + "store_ss" -> storeSsHandler.handle(mapper.convert(body, StoreSsRequest::class.java), bin) + else -> "stat=1" + } + val resp = respObj as? String ?: buildResultMap(mapper.toMap(respObj)) + logger.info("Response: {}", resp) + return resp + } + + fun parse(form: String): MutJDict { + val kvps = form.split('&').dropLastWhile { it.isEmpty() } + val body: MutJDict = LinkedHashMap() + for (kvp in kvps) { + var (k, v) = kvp.split('=').dropLastWhile { it.isEmpty() } + v = URLDecoder.decode(v, StandardCharsets.UTF_8) + body[k] = if (v.contains(",")) { v.deArray() } else { v } + } + return body + } + + fun String.deArray(): Any { + if (!contains(',')) return this + return split(',').dropLastWhile { it.isEmpty() } + .map { URLDecoder.decode(it, StandardCharsets.UTF_8) } + .map { it.deArray() } + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/DivaRepos.kt b/src/main/java/icu/samnyan/aqua/sega/diva/DivaRepos.kt new file mode 100644 index 00000000..c1d19284 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/DivaRepos.kt @@ -0,0 +1,150 @@ +package icu.samnyan.aqua.sega.diva + +import ext.invoke +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.db.gamedata.* +import icu.samnyan.aqua.sega.diva.model.db.userdata.* +import icu.samnyan.aqua.sega.diva.util.ProfileNotFoundException +import icu.samnyan.aqua.sega.diva.util.SessionNotFoundException +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.query.Param +import org.springframework.stereotype.Component +import org.springframework.stereotype.Repository +import java.util.* + +@Component +class DivaGameRepos( + val contest: ContestRepository, + val customize: DivaCustomizeRepository, + val module: DivaModuleRepository, + val pv: DivaPvRepository, + val festa: FestaRepository, + val pvEntry: PvEntryRepository +) + +@Component +class DivaRepos( + val g: DivaGameRepos, + val s: DivaServices, + val gameSession: GameSessionRepository, + val playLog: PlayLogRepository, + val contest: PlayerContestRepository, + val customize: PlayerCustomizeRepository, + val inventory: PlayerInventoryRepository, + val module: PlayerModuleRepository, + val profile: PlayerProfileRepository, + val pvCustomize: PlayerPvCustomizeRepository, + val pvRecord: PlayerPvRecordRepository, + val screenShot: PlayerScreenShotRepository, +) { + fun profile(id: Long) = profile.findByPdId(id)() ?: throw ProfileNotFoundException() + fun session(id: Long) = profile(id).let { it to (gameSession.findByPdId(it)() ?: throw SessionNotFoundException()) } +} + +@Repository +interface ContestRepository : JpaRepository { + fun findTop8ByEnable(enable: Boolean): MutableList +} + +@Repository +interface DivaCustomizeRepository : JpaRepository + +@Repository +interface DivaModuleRepository : JpaRepository + +interface DivaPvRepository : JpaRepository + +@Repository +interface FestaRepository : JpaRepository { + fun findTop2ByEnableOrderByCreateDateDesc(enable: Boolean): MutableList +} + +@Repository +interface PvEntryRepository : JpaRepository { + fun findByDifficulty(difficulty: Difficulty): MutableList +} + +interface PlayerContestRepository : JpaRepository { + fun findByPdIdAndContestId(pdId: PlayerProfile, contestId: Int): Optional + + fun findTop4ByPdIdOrderByLastUpdateTimeDesc(pdId: PlayerProfile): MutableList +} + +@Repository +interface GameSessionRepository : JpaRepository { + fun findByPdId(profile: PlayerProfile): Optional +} + +@Repository +interface PlayerCustomizeRepository : JpaRepository { + fun findByPdId(profile: PlayerProfile): MutableList + + fun findByPdIdAndCustomizeId(currentProfile: PlayerProfile, parseInt: Int): Optional +} + +@Repository +interface PlayerInventoryRepository : JpaRepository { + fun findByPdIdAndTypeAndValue(profile: PlayerProfile, type: String, value: String): Optional +} + +@Repository +interface PlayerProfileRepository : JpaRepository { + fun findByPdId(pdId: Long): Optional +} + +@Repository +interface PlayerPvCustomizeRepository : JpaRepository { + fun findByPdIdAndPvId(profile: PlayerProfile, pvId: Int): Optional +} + +@Repository +interface PlayerPvRecordRepository : JpaRepository { + fun findByPdIdAndPvIdAndEditionAndDifficulty( + profile: PlayerProfile, + pvId: Int, + edition: Edition, + difficulty: Difficulty + ): Optional + + fun findByPdId_PdIdAndPvIdAndEditionAndDifficulty( + pdId: Long, + pvId: Int, + edition: Edition, + difficulty: Difficulty + ): Optional + + @Query( + ("SELECT COUNT(t1.id) as ranking from DivaPlayerPvRecord as t1 " + + "where t1.maxScore >= (" + + "SELECT maxScore from DivaPlayerPvRecord where pvId = :pvId and pdId = :pdId and edition = :edition and difficulty = :difficulty" + + ") and t1.pvId = :pvId and t1.edition = :edition and t1.difficulty = :difficulty") + ) + fun rankByPvIdAndPdIdAndEditionAndDifficulty( + @Param("pvId") pvId: Int, + @Param("pdId") pdId: PlayerProfile, + @Param("edition") edition: Edition, + @Param("difficulty") difficulty: Difficulty + ): Int + + fun findByPdId(profile: PlayerProfile): MutableList + + fun findByPdIdAndEdition(profile: PlayerProfile, edition: Edition): MutableList + + fun findTop3ByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc( + pvId: Int, + edition: Edition, + difficulty: Difficulty + ): MutableList +} + +interface PlayerScreenShotRepository : JpaRepository + +@Repository +interface PlayLogRepository : JpaRepository + +@Repository +interface PlayerModuleRepository : JpaRepository { + fun findByPdId(profile: PlayerProfile): MutableList +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/DivaServices.kt b/src/main/java/icu/samnyan/aqua/sega/diva/DivaServices.kt new file mode 100644 index 00000000..d54d401c --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/DivaServices.kt @@ -0,0 +1,63 @@ +package icu.samnyan.aqua.sega.diva + +import icu.samnyan.aqua.sega.diva.model.RegistrationRequest +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerCustomize +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerModule +import icu.samnyan.aqua.sega.diva.model.db.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 = 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") + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java b/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java deleted file mode 100644 index 6fd3f7be..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaController.java +++ /dev/null @@ -1,201 +0,0 @@ -package icu.samnyan.aqua.sega.diva.controller; - -import icu.samnyan.aqua.sega.diva.handler.boot.AttendHandler; -import icu.samnyan.aqua.sega.diva.handler.boot.GameInitHandler; -import icu.samnyan.aqua.sega.diva.handler.card.*; -import icu.samnyan.aqua.sega.diva.handler.databank.*; -import icu.samnyan.aqua.sega.diva.handler.ingame.*; -import icu.samnyan.aqua.sega.diva.handler.operation.PingHandler; -import icu.samnyan.aqua.sega.diva.handler.user.*; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.request.boot.GameInitRequest; -import icu.samnyan.aqua.sega.diva.model.request.card.CardProcedureRequest; -import icu.samnyan.aqua.sega.diva.model.request.card.ChangeNameRequest; -import icu.samnyan.aqua.sega.diva.model.request.card.ChangePasswdRequest; -import icu.samnyan.aqua.sega.diva.model.request.card.RegistrationRequest; -import icu.samnyan.aqua.sega.diva.model.request.databank.BannerDataRequest; -import icu.samnyan.aqua.sega.diva.model.request.databank.PsRankingRequest; -import icu.samnyan.aqua.sega.diva.model.request.ingame.*; -import icu.samnyan.aqua.sega.diva.model.request.user.PdUnlockRequest; -import icu.samnyan.aqua.sega.diva.model.request.user.PreStartRequest; -import icu.samnyan.aqua.sega.diva.model.request.user.SpendCreditRequest; -import icu.samnyan.aqua.sega.diva.model.request.user.StartRequest; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import jakarta.servlet.http.HttpServletRequest; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("/g/diva") -@AllArgsConstructor -public class DivaController { - - private static final Logger logger = LoggerFactory.getLogger(DivaController.class); - - private final GameInitHandler gameInitHandler; - private final AttendHandler attendHandler; - - private final CardProcedureHandler cardProcedureHandler; - private final ChangeNameHandler changeNameHandler; - private final ChangePasswdHandler changePasswdHandler; - private final InitPasswdHandler initPasswdHandler; - private final RegistrationHandler registrationHandler; - - /** - * Databank - */ - private final BannerInfoHandler bannerInfoHandler; - private final BannerDataHandler bannerDataHandler; - private final CmPlyInfoHandler cmPlyInfoHandler; - private final ContestInfoHandler contestInfoHandler; - private final CstmzItmCtlgHandler cstmzItmCtlgHandler; - private final CstmzItmNgMdlListHandler cstmzItmNgMdlListHandler; - private final FestaInfoHandler festaInfoHandler; - private final NgWordHandler ngWordHandler; - private final NvRankingHandler nvRankingHandler; - private final PsRankingHandler psRankingHandler; - private final PstdHCtrlHandler pstdHCtrlHandler; - private final PstdItemNgLstHandler pstdItemNgLstHandler; - private final PvDefChrLstHandler pvDefChrLstHandler; - private final PvListHandler pvListHandler; - private final PvNgMdlLstHandler pvNgMdlLstHandler; - private final QstInfHandler qstInfHandler; - private final RmtWpLstHandler rmtWpLstHandler; - private final ShopCatalogHandler shopCatalogHandler; - - private final BuyCstmzItmHandler buyCstmzItmHandler; - private final BuyModuleHandler buyModuleHandler; - private final GetPvPdHandler getPvPdHandler; - private final ShopExitHandler shopExitHandler; - private final StageResultHandler stageResultHandler; - private final StageStartHandler stageStartHandler; - private final StoreSsHandler storeSsHandler; - - private final PingHandler pingHandler; - - private final EndHandler endHandler; - private final PdUnlockHandler pdUnlockHandler; - private final PreStartHandler preStartHandler; - private final SpendCreditHandler spendCreditHandler; - private final StartHandler startHandler; - - private final DivaMapper mapper; - - @PostMapping(value = "/", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) - public String formRequest(HttpServletRequest request) throws IOException { - String bodyStr = new String(request.getInputStream().readAllBytes()); - Map body = parse(bodyStr); - - String command = (String) body.getOrDefault("cmd", ""); - - logger.info("{}: {}", command, body); - - return switch (command) { - - // Boot - case "game_init" -> gameInitHandler.handle(mapper.convert(body, GameInitRequest.class)); - case "attend" -> attendHandler.handle(mapper.convert(body, GameInitRequest.class)); - - // - case "test" -> gameInitHandler.handle(mapper.convert(body, BaseRequest.class)); - - // Databank - case "nv_ranking" -> nvRankingHandler.handle(mapper.convert(body, BaseRequest.class)); - case "ps_ranking" -> psRankingHandler.handle(mapper.convert(body, PsRankingRequest.class)); - case "pv_list" -> pvListHandler.handle(mapper.convert(body, BaseRequest.class)); - case "ng_word" -> ngWordHandler.handle(mapper.convert(body, BaseRequest.class)); - case "rmt_wp_list" -> rmtWpLstHandler.handle(mapper.convert(body, BaseRequest.class)); - case "festa_info" -> festaInfoHandler.handle(mapper.convert(body, BaseRequest.class)); - case "contest_info" -> contestInfoHandler.handle(mapper.convert(body, BaseRequest.class)); - case "pv_def_chr_list" -> pvDefChrLstHandler.handle(mapper.convert(body, BaseRequest.class)); - case "pv_ng_mdl_list" -> pvNgMdlLstHandler.handle(mapper.convert(body, BaseRequest.class)); - case "cstmz_itm_ng_mdl_list" -> cstmzItmNgMdlListHandler.handle(mapper.convert(body, BaseRequest.class)); - case "banner_info" -> bannerInfoHandler.handle(mapper.convert(body, BaseRequest.class)); - case "banner_data" -> bannerDataHandler.handle(mapper.convert(body, BannerDataRequest.class)); - case "cm_ply_info" -> cmPlyInfoHandler.handle(mapper.convert(body, BaseRequest.class)); - case "qst_inf" -> qstInfHandler.handle(mapper.convert(body, BaseRequest.class)); - case "pstd_h_ctrl" -> pstdHCtrlHandler.handle(mapper.convert(body, BaseRequest.class)); - case "pstd_item_ng_lst" -> pstdItemNgLstHandler.handle(mapper.convert(body, BaseRequest.class)); - case "shop_catalog" -> shopCatalogHandler.handle(mapper.convert(body, BaseRequest.class)); - case "cstmz_itm_ctlg" -> cstmzItmCtlgHandler.handle(mapper.convert(body, BaseRequest.class)); - case "card_procedure" -> cardProcedureHandler.handle(mapper.convert(body, CardProcedureRequest.class)); - case "registration" -> registrationHandler.handle(mapper.convert(body, RegistrationRequest.class)); - case "init_passwd" -> initPasswdHandler.handle(mapper.convert(body, GameInitRequest.class)); - case "change_passwd" -> changePasswdHandler.handle(mapper.convert(body, ChangePasswdRequest.class)); - case "change_name" -> changeNameHandler.handle(mapper.convert(body, ChangeNameRequest.class)); - case "pre_start" -> preStartHandler.handle(mapper.convert(body, PreStartRequest.class)); - case "start" -> startHandler.handle(mapper.convert(body, StartRequest.class)); - case "pd_unlock" -> pdUnlockHandler.handle(mapper.convert(body, PdUnlockRequest.class)); - case "spend_credit" -> spendCreditHandler.handle(mapper.convert(body, SpendCreditRequest.class)); - case "no_card_end" -> gameInitHandler.handle(mapper.convert(body, GameInitRequest.class)); - case "end" -> endHandler.handle(mapper.convert(body, StageResultRequest.class)); - case "get_pv_pd" -> getPvPdHandler.handle(mapper.convert(body, GetPvPdRequest.class)); - case "buy_module" -> buyModuleHandler.handle(mapper.convert(body, BuyModuleRequest.class)); - case "buy_cstmz_itm" -> buyCstmzItmHandler.handle(mapper.convert(body, BuyCstmzItmRequest.class)); - case "shop_exit" -> shopExitHandler.handle(mapper.convert(body, ShopExitRequest.class)); - case "stage_start" -> stageStartHandler.handle(mapper.convert(body, StageStartRequest.class)); - case "stage_result" -> stageResultHandler.handle(mapper.convert(body, StageResultRequest.class)); - case "store_ss" -> gameInitHandler.handle(mapper.convert(body, GameInitRequest.class)); - default -> "stat=0"; - }; - } - - @PostMapping(value = "/", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public String fileRequest(@RequestParam String query, @RequestParam(required = false) MultipartFile bin) { - - Map body = parse(query); - - String command = (String) body.getOrDefault("cmd", ""); - - logger.info("{}: {}", command, body); - - return switch (command) { - case "ping" -> pingHandler.handle(mapper.convert(body, BaseRequest.class)); - case "investigate" -> gameInitHandler.handle(mapper.convert(body, BaseRequest.class)); - case "store_ss" -> storeSsHandler.handle(mapper.convert(body, StoreSsRequest.class), bin); - default -> "stat=1"; - }; - } - - private Map parse(String form) { - String[] kvps = form.split("&"); - Map body = new LinkedHashMap<>(); - for (String kvp : - kvps) { - String[] k = kvp.split("="); - k[1] = URLDecoder.decode(k[1], StandardCharsets.UTF_8); - Object value; - if (k[1].contains(",")) { - value = deArray(k[1]); - } else { - value = k[1]; - } - body.put(k[0], value); - } - return body; - } - - private Object deArray(String input) { - if (!input.contains(",")) return input; - return Arrays.stream(input.split(",")).map(x -> URLDecoder.decode(x, StandardCharsets.UTF_8)) - .map(this::deArray).collect(Collectors.toList()); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaControllerAdvice.java b/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaControllerAdvice.java deleted file mode 100644 index 901ab1ef..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaControllerAdvice.java +++ /dev/null @@ -1,11 +0,0 @@ -package icu.samnyan.aqua.sega.diva.controller; - -import org.springframework.web.bind.annotation.ControllerAdvice; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@ControllerAdvice(basePackages = "icu.samnyan.aqua.sega.diva") -public class DivaControllerAdvice { - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/ContestRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/ContestRepository.java deleted file mode 100644 index 6c112e4e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/ContestRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.gamedata.Contest; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface ContestRepository extends JpaRepository { - List findTop8ByEnable(boolean enable); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaCustomizeRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaCustomizeRepository.java deleted file mode 100644 index 013212b5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaCustomizeRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaCustomize; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface DivaCustomizeRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaModuleRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaModuleRepository.java deleted file mode 100644 index 45e8218c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaModuleRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaModule; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface DivaModuleRepository extends JpaRepository { - Optional findById(int id); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaPvRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaPvRepository.java deleted file mode 100644 index b08803a4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaPvRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.gamedata.Pv; -import org.springframework.data.jpa.repository.JpaRepository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public interface DivaPvRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/FestaRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/FestaRepository.java deleted file mode 100644 index cb11585e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/FestaRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.gamedata.Festa; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface FestaRepository extends JpaRepository { - List findTop2ByEnableOrderByCreateDateDesc(boolean enable); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/NgWordsRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/NgWordsRepository.java deleted file mode 100644 index 996a6428..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/NgWordsRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.gamedata.NgWords; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface NgWordsRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/PvEntryRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/PvEntryRepository.java deleted file mode 100644 index 5c596600..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/PvEntryRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.gamedata; - -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.gamedata.PvEntry; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PvEntryRepository extends JpaRepository { - List findByDifficulty(Difficulty difficulty); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/GameSessionRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/GameSessionRepository.java deleted file mode 100644 index f589ce8b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/GameSessionRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface GameSessionRepository extends JpaRepository { - Optional findByPdId(PlayerProfile profile); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayLogRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayLogRepository.java deleted file mode 100644 index 3ac68671..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayLogRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayLog; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayLogRepository extends JpaRepository { - Page findByPdId_PdIdOrderByDateTimeDesc(long pdId, Pageable page); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerContestRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerContestRepository.java deleted file mode 100644 index 6665e3ac..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerContestRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerContest; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public interface PlayerContestRepository extends JpaRepository { - Optional findByPdIdAndContestId(PlayerProfile pdId, int contestId); - - List findTop4ByPdIdOrderByLastUpdateTimeDesc(PlayerProfile pdId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerCustomizeRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerCustomizeRepository.java deleted file mode 100644 index 6a4a9d3c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerCustomizeRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerCustomize; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayerCustomizeRepository extends JpaRepository { - List findByPdId(PlayerProfile profile); - - Page findByPdId_PdId(long pdId, Pageable page); - - Optional findByPdIdAndCustomizeId(PlayerProfile currentProfile, int parseInt); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerInventoryRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerInventoryRepository.java deleted file mode 100644 index 2b1180c3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerInventoryRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerInventory; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayerInventoryRepository extends JpaRepository { - Optional findByPdIdAndTypeAndValue(PlayerProfile profile, String type, String value); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerModuleRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerModuleRepository.java deleted file mode 100644 index e0ede69a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerModuleRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerModule; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayerModuleRepository extends JpaRepository { - List findByPdId(PlayerProfile profile); - - Page findByPdId_PdId(long pdId, Pageable pageable); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerProfileRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerProfileRepository.java deleted file mode 100644 index 729a46b6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerProfileRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayerProfileRepository extends JpaRepository { - - Optional findByPdId(long pdId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvCustomizeRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvCustomizeRepository.java deleted file mode 100644 index 5e5fae21..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvCustomizeRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayerPvCustomizeRepository extends JpaRepository { - Optional findByPdIdAndPvId(PlayerProfile profile, int pvId); - - Optional findByPdId_PdIdAndPvId(long pdId, int pvId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvRecordRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvRecordRepository.java deleted file mode 100644 index 627ff74a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvRecordRepository.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -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.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord; -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.query.Param; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PlayerPvRecordRepository extends JpaRepository { - Optional findByPdIdAndPvIdAndEditionAndDifficulty(PlayerProfile profile, int pvId, Edition edition, Difficulty difficulty); - - Optional findByPdId_PdIdAndPvIdAndEditionAndDifficulty(long pdId, int pvId, Edition edition, Difficulty difficulty); - - @Query("SELECT COUNT(t1.id) as ranking from DivaPlayerPvRecord as t1 " + - "where t1.maxScore >= (" + - "SELECT maxScore from DivaPlayerPvRecord where pvId = :pvId and pdId = :pdId and edition = :edition and difficulty = :difficulty" + - ") and t1.pvId = :pvId and t1.edition = :edition and t1.difficulty = :difficulty") - Integer rankByPvIdAndPdIdAndEditionAndDifficulty(@Param("pvId") int pvId, - @Param("pdId") PlayerProfile pdId, - @Param("edition") Edition edition, - @Param("difficulty") Difficulty difficulty - ); - - List findByPdId(PlayerProfile profile); - - Optional findByIdAndPdId_PdId(long id, long pdId); - - List findByPdIdAndEdition(PlayerProfile profile, Edition edition); - - List findTop3ByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc(int pvId, Edition edition, Difficulty difficulty); - - Page findByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc(int pvId, Edition edition, Difficulty difficulty, Pageable page); - - Page findByPdId_PdIdOrderByPvId(long pdId, Pageable page); - - List findByPdId_PdIdAndPvId(long pdId, int pvId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerScreenShotRepository.java b/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerScreenShotRepository.java deleted file mode 100644 index 359c7c5a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerScreenShotRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.diva.dao.userdata; - -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public interface PlayerScreenShotRepository extends JpaRepository { - List findByPdId_PdId(long pdId); - Optional findByFileName(String fileName); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/exception/ProfileNotFoundException.java b/src/main/java/icu/samnyan/aqua/sega/diva/exception/ProfileNotFoundException.java deleted file mode 100644 index 9235e68d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/exception/ProfileNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package icu.samnyan.aqua.sega.diva.exception; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class ProfileNotFoundException extends RuntimeException { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/exception/PvRecordDataException.java b/src/main/java/icu/samnyan/aqua/sega/diva/exception/PvRecordDataException.java deleted file mode 100644 index 0dffb4ab..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/exception/PvRecordDataException.java +++ /dev/null @@ -1,10 +0,0 @@ -package icu.samnyan.aqua.sega.diva.exception; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class PvRecordDataException extends RuntimeException { - public PvRecordDataException(String message) { - super(message); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotExistException.java b/src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotExistException.java deleted file mode 100644 index f1a223d5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotExistException.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.diva.exception; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class SessionNotExistException extends RuntimeException { - - public SessionNotExistException(String message) { - super(message); - } - - public SessionNotExistException() { - super(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotFoundException.java b/src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotFoundException.java deleted file mode 100644 index e3220ca9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package icu.samnyan.aqua.sega.diva.exception; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class SessionNotFoundException extends RuntimeException { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/BaseHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/BaseHandler.java deleted file mode 100644 index a04eeec8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/BaseHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler; - -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class BaseHandler { - static protected DivaMapper mapper = new DivaMapper(); - - protected String build(Map map) { - StringBuilder sb = new StringBuilder(); - map.forEach((key, val) -> { - if (val != null) { - if (val instanceof String) { - if (!val.equals("")) { - sb.append(key).append("="); - sb.append(val); - sb.append("&"); - } - } else { - sb.append(key).append("="); -// sb.append(URLEncoder.encode(String.valueOf(val), StandardCharsets.UTF_8)); - sb.append(val); - sb.append("&"); - } - } - }); - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/InitHandlers.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/InitHandlers.kt new file mode 100644 index 00000000..eb650cbc --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/InitHandlers.kt @@ -0,0 +1,77 @@ +package icu.samnyan.aqua.sega.diva.handler + +import ext.csv +import icu.samnyan.aqua.sega.diva.model.BaseRequest +import icu.samnyan.aqua.sega.diva.model.PingResponse +import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository +import icu.samnyan.aqua.sega.general.model.PropertyEntry +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.util.* + +fun gameBalanceParameter(): String { + val name_change_price = 100 + // Trial bids: clear.pay, clear.win, great.pay, great.win, excellent.pay, excellent.win, perfect.pay, perfect.win + val easy_trials = listOf(5, 10, 10, 25, 20, 50, 30, 90) + val normal_trials = listOf(5, 10, 10, 25, 20, 50, 30, 90) + val hard_trials = listOf(5, 10, 10, 25, 20, 50, 30, 90) + val extreme_trials = listOf(5, 10, 10, 25, 20, 50, 30, 90) + val extra_extreme_trials = listOf(5, 10, 10, 25, 20, 50, 30, 90) + + return (listOf(name_change_price, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 1, 1, 1, 3, 4, 5, 1, 1, 1, 4, 5, 6, 1, 1, 1, 5, 6, 7, 4, 4, 4, 9, 10, 14) + + easy_trials + normal_trials + hard_trials + + extreme_trials + extra_extreme_trials + listOf(10, 30) + Collections.nCopies(100, 0)).take(100).csv +} + +fun EtcParameter(): String { + val module_shop_close = false + val card_reissue_close = true + val card_renewal_close = true + val reset_passwd_close = true + val change_passwd_close = false + val change_name_close = false + val encore_mode_close = true + val third_stg_mode_close = false + val slow_down_threshold = 0 + val log_write_flag = false + val daily_quest_close = true + val weekly_quest_close = true + val special_quest_close = true + val nppg_close = false + + val list = listOf(module_shop_close, card_reissue_close, card_renewal_close, reset_passwd_close, + change_passwd_close, change_name_close, encore_mode_close, third_stg_mode_close, + slow_down_threshold, log_write_flag, daily_quest_close, weekly_quest_close, + special_quest_close, nppg_close) + Collections.nCopies(100, 0) + return list.take(100).map { + if (it is Boolean) if (it) "1" else "0" + else if (it is Int) it.toString() + else "0" + }.csv +} + +@Component +class AttendHandler { + fun handle() = mapOf( + "atnd_prm1" to EtcParameter(), + "atnd_prm2" to mapOf( + "max_pd_items" to 30, "" to 1, "max_ps_rankings" to 100, + "max_screenshots" to 2, "ss_upload_delay" to 1, "" to 1 + ).values.plus(Collections.nCopies(100, 0)).take(100).csv, + "atnd_prm3" to gameBalanceParameter(), + "atnd_lut" to LocalDateTime.now() + ) +} + +@Component +class PingHandler(val rp: PropertyEntryRepository) { + fun handle(request: BaseRequest): Any { + val news: PropertyEntry = rp.findByPropertyKey("diva_news") ?: PropertyEntry("diva_news", "xxx") + val warning: PropertyEntry = rp.findByPropertyKey("diva_warning") ?: PropertyEntry("diva_warning", "xxx") + + return PingResponse( + news.propertyValue, + warning.propertyValue + ) + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/AttendHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/AttendHandler.java deleted file mode 100644 index 3f478184..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/AttendHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.boot; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.attend.DispersalParameter; -import icu.samnyan.aqua.sega.diva.model.common.attend.EtcParameter; -import icu.samnyan.aqua.sega.diva.model.common.attend.GameBalanceParameter; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.boot.AttendResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class AttendHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(AttendHandler.class); - - public String handle(BaseRequest request) { - AttendResponse response = new AttendResponse( - request.getCmd(), - request.getReq_id(), - "ok", - new EtcParameter().toInternal(), - new DispersalParameter().toInternal(), - new GameBalanceParameter().toInternal(), - LocalDateTime.now() - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/GameInitHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/GameInitHandler.java deleted file mode 100644 index 3e4d7c05..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/boot/GameInitHandler.java +++ /dev/null @@ -1,32 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.boot; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.boot.GameInitResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class GameInitHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(GameInitHandler.class); - - public String handle(BaseRequest request) { - GameInitResponse response = new GameInitResponse( - request.getCmd(), - request.getReq_id(), - "ok", - "0,0", - "FFFF" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.java deleted file mode 100644 index 0da9c5a6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.java +++ /dev/null @@ -1,101 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.card; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.common.StartMode; -import icu.samnyan.aqua.sega.diva.model.request.card.CardProcedureRequest; -import icu.samnyan.aqua.sega.diva.model.response.card.CardProcedureResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.Optional; -import java.util.concurrent.ThreadLocalRandom; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class CardProcedureHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(CardProcedureHandler.class); - - private final PlayerProfileService playerProfileService; - - private final GameSessionRepository gameSessionRepository; - - public String handle(CardProcedureRequest request) { - Optional profileOptional = playerProfileService.findByPdId(request.getAime_id()); - CardProcedureResponse response; - if (profileOptional.isEmpty()) { - response = new CardProcedureResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED - ); - } else { - PlayerProfile profile = profileOptional.get(); - - Optional sessionOptional = gameSessionRepository.findByPdId(profile); - if (sessionOptional.isPresent()) { - GameSession session = sessionOptional.get(); - if (session.getLastUpdateTime().isBefore(LocalDateTime.now().minusMinutes(5))) { - gameSessionRepository.delete(session); - } - response = new CardProcedureResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED - ); - } else { - GameSession session = new GameSession( - ThreadLocalRandom.current().nextInt(100, 99999), - profile, - StartMode.CARD_PROCEDURE, - LocalDateTime.now(), - LocalDateTime.now(), - -1, - -1, - -1, - profile.getLevel(), - profile.getLevelExp(), - profile.getLevel(), - profile.getLevelExp(), - profile.getVocaloidPoints() - ); - - gameSessionRepository.save(session); - response = new CardProcedureResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS, - 100, - session.getAcceptId(), - profile.getPdId(), - profile.getPlayerName(), - profile.getLevel(), - profile.getLevelExp(), - profile.getLevelTitle(), - profile.getPlateEffectId(), - profile.getPlateId(), - profile.getVocaloidPoints(), - profile.getPasswordStatus() - ); - } - } - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.kt new file mode 100644 index 00000000..4619a11e --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/CardProcedureHandler.kt @@ -0,0 +1,71 @@ +package icu.samnyan.aqua.sega.diva.handler.card + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.CardProcedureRequest +import icu.samnyan.aqua.sega.diva.model.CardProcedureResponse +import icu.samnyan.aqua.sega.diva.model.common.Result +import icu.samnyan.aqua.sega.diva.model.common.StartMode +import icu.samnyan.aqua.sega.diva.model.db.userdata.GameSession +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.util.concurrent.ThreadLocalRandom + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class CardProcedureHandler(val db: DivaRepos) { + fun handle(request: CardProcedureRequest): Any { + val profileOptional = db.profile.findByPdId(request.aime_id) + if (profileOptional.isEmpty) { + return CardProcedureResponse( + Result.FAILED + ) + } else { + val profile = profileOptional.get() + + val sessionOptional = db.gameSession.findByPdId(profile) + if (sessionOptional.isPresent) { + val session = sessionOptional.get() + if (session.lastUpdateTime.isBefore(LocalDateTime.now().minusMinutes(5))) { + db.gameSession.delete(session) + } + return CardProcedureResponse( + Result.FAILED + ) + } else { + val session = GameSession( + ThreadLocalRandom.current().nextInt(100, 99999), + profile, + StartMode.CARD_PROCEDURE, + LocalDateTime.now(), + LocalDateTime.now(), + -1, + -1, + -1, + profile.level, + profile.levelExp, + profile.level, + profile.levelExp, + profile.vocaloidPoints + ) + + db.gameSession.save(session) + return CardProcedureResponse( + Result.SUCCESS, + 100, + session.acceptId, + profile.pdId, + profile.playerName, + profile.level, + profile.levelExp, + profile.levelTitle, + profile.plateEffectId, + profile.plateId, + profile.vocaloidPoints, + profile.passwordStatus + ) + } + } + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.java deleted file mode 100644 index bbba02bb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.card; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.request.card.ChangeNameRequest; -import icu.samnyan.aqua.sega.diva.model.response.card.ChangeNameResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class ChangeNameHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(ChangeNameHandler.class); - - private final PlayerProfileService playerProfileService; - - private final GameSessionRepository gameSessionRepository; - - public String handle(ChangeNameRequest request) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - profile.setPlayerName(request.getPlayer_name()); - - ChangeNameResponse response = new ChangeNameResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS, - session.getAcceptId(), - profile.getPdId(), - profile.getPlayerName() - ); - - playerProfileService.save(profile); - gameSessionRepository.delete(session); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.kt new file mode 100644 index 00000000..c98b35f6 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangeNameHandler.kt @@ -0,0 +1,30 @@ +package icu.samnyan.aqua.sega.diva.handler.card + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.ChangeNameRequest +import icu.samnyan.aqua.sega.diva.model.ChangeNameResponse +import icu.samnyan.aqua.sega.diva.model.common.Result +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class ChangeNameHandler(val db: DivaRepos) { + fun handle(request: ChangeNameRequest): Any { + val (profile, session) = db.session(request.pd_id) + + profile.playerName = request.player_name + db.profile.save(profile) + db.gameSession.delete(session) + + return ChangeNameResponse( + Result.SUCCESS, + session.acceptId, + profile.pdId, + profile.playerName + ) + } +} + + diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.java deleted file mode 100644 index 6f25f593..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.java +++ /dev/null @@ -1,54 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.card; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.PassStat; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.request.card.ChangePasswdRequest; -import icu.samnyan.aqua.sega.diva.model.response.card.ChangePasswdResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class ChangePasswdHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(ChangePasswdHandler.class); - private final PlayerProfileService playerProfileService; - private final GameSessionRepository gameSessionRepository; - - public String handle(ChangePasswdRequest request) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - profile.setPasswordStatus(PassStat.SET); - profile.setPassword(request.getNew_passwd()); - - ChangePasswdResponse response = new ChangePasswdResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS, - session.getAcceptId(), - profile.getPdId() - ); - - playerProfileService.save(profile); - gameSessionRepository.delete(session); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.kt new file mode 100644 index 00000000..d55193ac --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/ChangePasswdHandler.kt @@ -0,0 +1,29 @@ +package icu.samnyan.aqua.sega.diva.handler.card + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.ChangePasswdRequest +import icu.samnyan.aqua.sega.diva.model.ChangePasswdResponse +import icu.samnyan.aqua.sega.diva.model.common.PassStat +import icu.samnyan.aqua.sega.diva.model.common.Result +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class ChangePasswdHandler(val db: DivaRepos) { + fun handle(request: ChangePasswdRequest): Any { + val (profile, session) = db.session(request.pd_id) + + profile.passwordStatus = PassStat.SET + profile.password = request.new_passwd + db.profile.save(profile) + db.gameSession.delete(session) + + return ChangePasswdResponse( + Result.SUCCESS, + session.acceptId, + profile.pdId + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/InitPasswdHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/InitPasswdHandler.java deleted file mode 100644 index 1d22e85f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/InitPasswdHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.card; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class InitPasswdHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(InitPasswdHandler.class); - private final PlayerProfileService playerProfileService; - private final GameSessionRepository gameSessionRepository; - - public String handle(BaseRequest request) { - BaseResponse response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "0"); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.java deleted file mode 100644 index 3c62a946..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.card; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.response.card.RegistrationResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class RegistrationHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(RegistrationHandler.class); - private final PlayerProfileService playerProfileService; - - public String handle(RegistrationRequest request) { - RegistrationResponse response; - if (playerProfileService.findByPdId(request.getAime_id()).isPresent()) { - response = new RegistrationResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED, - -1); - } else { - PlayerProfile profile = playerProfileService.register(request); - response = new RegistrationResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS, - profile.getPdId()); - } - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.kt new file mode 100644 index 00000000..fbcd4bcc --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/card/RegistrationHandler.kt @@ -0,0 +1,27 @@ +package icu.samnyan.aqua.sega.diva.handler.card + +import icu.samnyan.aqua.sega.diva.PlayerProfileService +import icu.samnyan.aqua.sega.diva.model.RegistrationRequest +import icu.samnyan.aqua.sega.diva.model.RegistrationResponse +import icu.samnyan.aqua.sega.diva.model.common.Result +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class RegistrationHandler(val service: PlayerProfileService) { + fun handle(request: RegistrationRequest) = + if (service.findByPdId(request.aime_id).isPresent) { + RegistrationResponse( + Result.FAILED, + -1 + ) + } else { + val profile = service.register(request) + RegistrationResponse( + Result.SUCCESS, + profile.pdId + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerDataHandler.java deleted file mode 100644 index abe9d494..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerDataHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.databank.BannerDataRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.BannerDataResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class BannerDataHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(BannerDataHandler.class); - - public String handle(BannerDataRequest request) { - BannerDataResponse response = new BannerDataResponse( - request.getCmd(), - request.getReq_id(), - "ok", - LocalDateTime.now(), - "***", - "***", - request.getBd_id() - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerInfoHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerInfoHandler.java deleted file mode 100644 index 07894e84..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/BannerInfoHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.BannerInfoResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class BannerInfoHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(BannerInfoHandler.class); - - public String handle(BaseRequest request) { - BannerInfoResponse response = new BannerInfoResponse( - request.getCmd(), - request.getReq_id(), - "ok", - null, - null, - null, - null, - null - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CmPlyInfoHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CmPlyInfoHandler.java deleted file mode 100644 index e72f05ab..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CmPlyInfoHandler.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class CmPlyInfoHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(CmPlyInfoHandler.class); - - public String handle(BaseRequest request) { - BaseResponse response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "ok"); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.java deleted file mode 100644 index 0da2d875..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.ContestRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.response.databank.ContestInfoResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class ContestInfoHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(CmPlyInfoHandler.class); - private final ContestRepository contestRepository; - - public String handle(BaseRequest request) { - List contestList = contestRepository.findTop8ByEnable(true); - String ci_str = "***"; - if (!contestList.isEmpty()) { - StringBuilder sb = new StringBuilder(); - contestList.forEach(x -> sb.append(URIEncoder.encode(x.getString())).append(",")); - sb.append("%2A%2A%2A,".repeat(Math.max(0, 8 - contestList.size()))); - sb.deleteCharAt(sb.length() - 1); - ci_str = sb.toString(); - } - ContestInfoResponse response = new ContestInfoResponse( - request.getCmd(), - request.getReq_id(), - "ok", - LocalDateTime.now(), - ci_str - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.kt new file mode 100644 index 00000000..cc0976d2 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ContestInfoHandler.kt @@ -0,0 +1,33 @@ +package icu.samnyan.aqua.sega.diva.handler.databank + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.BaseRequest +import icu.samnyan.aqua.sega.diva.model.ContestInfoResponse +import icu.samnyan.aqua.sega.diva.model.db.gamedata.Contest +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.util.function.Consumer +import kotlin.math.max + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class ContestInfoHandler(val db: DivaRepos) { + fun handle(request: BaseRequest): Any { + val contestList = db.g.contest.findTop8ByEnable(true) + var ci_str = "***" + if (!contestList.isEmpty()) { + val sb = StringBuilder() + contestList.forEach(Consumer { x: Contest? -> sb.append(encode(x!!.string)).append(",") }) + sb.append("%2A%2A%2A,".repeat(max(0, 8 - contestList.size))) + sb.deleteCharAt(sb.length - 1) + ci_str = sb.toString() + } + return ContestInfoResponse( + LocalDateTime.now(), + ci_str + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmCtlgHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmCtlgHandler.java deleted file mode 100644 index bbe9e7c4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmCtlgHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaCustomizeRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaCustomize; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.CstmzItmCtlgResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class CstmzItmCtlgHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(CstmzItmCtlgHandler.class); - - private final DivaCustomizeRepository customizeRepository; - - public String handle(BaseRequest request) { - List customizeList = customizeRepository.findAll(); - - CstmzItmCtlgResponse response = new CstmzItmCtlgResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - URIEncoder.encode(customizeList.stream().map(DivaCustomize::toInternal).map(URIEncoder::encode) - .collect(Collectors.joining(","))) - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmNgMdlListHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmNgMdlListHandler.java deleted file mode 100644 index 87db0d3c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/CstmzItmNgMdlListHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.CstmzItmNgMdlListResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class CstmzItmNgMdlListHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(CstmzItmCtlgHandler.class); - - public String handle(BaseRequest request) { - CstmzItmNgMdlListResponse response = new CstmzItmNgMdlListResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - "***" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.java deleted file mode 100644 index 5b2e6fa8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.FestaRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.collection.FestaCollection; -import icu.samnyan.aqua.sega.diva.model.gamedata.Festa; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.FestaInfoResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class FestaInfoHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(FestaInfoHandler.class); - private final FestaRepository festaRepository; - - public String handle(BaseRequest request) { - List festaList = festaRepository.findTop2ByEnableOrderByCreateDateDesc(true); - FestaCollection collection = new FestaCollection(festaList); - - FestaInfoResponse response = new FestaInfoResponse( - request.getCmd(), - request.getReq_id(), - "ok", - collection.getIds(), - collection.getNames(), - collection.getKinds(), - collection.getDiffs(), - collection.getPvIds(), - collection.getAttr(), - collection.getAddVps(), - collection.getVpMultipliers(), - collection.getStarts(), - collection.getEnds(), - collection.getLastUpdateTime() - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.kt new file mode 100644 index 00000000..2dbadb17 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/FestaInfoHandler.kt @@ -0,0 +1,32 @@ +package icu.samnyan.aqua.sega.diva.handler.databank + +import icu.samnyan.aqua.sega.diva.FestaRepository +import icu.samnyan.aqua.sega.diva.model.BaseRequest +import icu.samnyan.aqua.sega.diva.model.FestaInfoResponse +import icu.samnyan.aqua.sega.diva.model.common.collection.FestaCollection +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class FestaInfoHandler(private val festaRepository: FestaRepository) { + fun handle(request: BaseRequest): Any { + val festaList = festaRepository.findTop2ByEnableOrderByCreateDateDesc(true) + val collection = FestaCollection(festaList) + + return FestaInfoResponse( + collection.ids, + collection.names, + collection.kinds, + collection.diffs, + collection.pvIds, + collection.attr, + collection.addVps, + collection.vpMultipliers, + collection.starts, + collection.ends, + collection.lastUpdateTime + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NgWordHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NgWordHandler.java deleted file mode 100644 index 30306b2b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NgWordHandler.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class NgWordHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(NgWordHandler.class); - - public String handle(BaseRequest request) { - BaseResponse response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "ok"); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.java deleted file mode 100644 index 475bfe52..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.NvRankingResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class NvRankingHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(NvRankingHandler.class); - - public String handle(BaseRequest request) { - NvRankingResponse response = new NvRankingResponse( - request.getCmd(), - request.getReq_id(), - "ok", - null, - null, - null, - null - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.kt new file mode 100644 index 00000000..3ebe8ab6 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/NvRankingHandler.kt @@ -0,0 +1,18 @@ +package icu.samnyan.aqua.sega.diva.handler.databank + +import icu.samnyan.aqua.sega.diva.model.BaseRequest +import icu.samnyan.aqua.sega.diva.model.NvRankingResponse +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class NvRankingHandler { + fun handle(request: BaseRequest) = NvRankingResponse( + null, + null, + null, + null + ) +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.java deleted file mode 100644 index cad23cef..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.java +++ /dev/null @@ -1,109 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerPvRecordRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.collection.PsRankingCollection; -import icu.samnyan.aqua.sega.diva.model.request.databank.PsRankingRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.PsRankingResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class PsRankingHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PsRankingHandler.class); - private final PlayerPvRecordRepository playerPvRecordRepository; - - public String handle(PsRankingRequest request) { - Edition edition = Edition.ORIGINAL; - Difficulty difficulty = Difficulty.HARD; - - switch (request.getRnk_ps_idx()) { - case 0: - difficulty = Difficulty.HARD; - break; - case 1: - difficulty = Difficulty.EXTREME; - break; - case 2: { - difficulty = Difficulty.EXTREME; - edition = Edition.EXTRA; - break; - } - } - - int[] list = request.getRnk_ps_pv_id_lst(); - Map resultCollections = new LinkedHashMap<>(); - for (int i : - list) { - - List records = playerPvRecordRepository.findTop3ByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc(i, edition, difficulty); - resultCollections.put(i, new PsRankingCollection(i, edition, records)); - } - - List pvIds = new LinkedList<>(); - List edition1 = new LinkedList<>(); - List edition2 = new LinkedList<>(); - List edition3 = new LinkedList<>(); - List score1 = new LinkedList<>(); - List score2 = new LinkedList<>(); - List score3 = new LinkedList<>(); - List name1 = new LinkedList<>(); - List name2 = new LinkedList<>(); - List name3 = new LinkedList<>(); - - resultCollections.forEach((key, obj) -> { - pvIds.add(key); - edition1.add(obj.getFirst().getEdition().getValue()); - edition2.add(obj.getSecond().getEdition().getValue()); - edition3.add(obj.getThird().getEdition().getValue()); - score1.add(obj.getFirst().getMaxScore()); - score2.add(obj.getSecond().getMaxScore()); - score3.add(obj.getThird().getMaxScore()); - name1.add(URIEncoder.encode(obj.getFirst().getPdId() != null ? obj.getFirst().getPdId().getPlayerName() : "xxx")); - name2.add(URIEncoder.encode(obj.getSecond().getPdId() != null ? obj.getSecond().getPdId().getPlayerName() : "xxx")); - name3.add(URIEncoder.encode(obj.getThird().getPdId() != null ? obj.getThird().getPdId().getPlayerName() : "xxx")); - }); - - PsRankingResponse response = new PsRankingResponse( - request.getCmd(), - request.getReq_id(), - "ok", - LocalDateTime.now(), - LocalDateTime.now(), - request.getRnk_ps_idx(), - pvIds.stream().map(Object::toString).collect(Collectors.joining(",")), - edition1.stream().map(Object::toString).collect(Collectors.joining(",")), - edition2.stream().map(Object::toString).collect(Collectors.joining(",")), - edition3.stream().map(Object::toString).collect(Collectors.joining(",")), - score1.stream().map(Object::toString).collect(Collectors.joining(",")), - score2.stream().map(Object::toString).collect(Collectors.joining(",")), - score3.stream().map(Object::toString).collect(Collectors.joining(",")), - name1.stream().map(Object::toString).collect(Collectors.joining(",")), - name2.stream().map(Object::toString).collect(Collectors.joining(",")), - name3.stream().map(Object::toString).collect(Collectors.joining(",")) - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.kt new file mode 100644 index 00000000..066e63e6 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PsRankingHandler.kt @@ -0,0 +1,84 @@ +package icu.samnyan.aqua.sega.diva.handler.databank + +import ext.csv +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.PsRankingRequest +import icu.samnyan.aqua.sega.diva.model.PsRankingResponse +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.collection.PsRankingCollection +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.util.* + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class PsRankingHandler(val db: DivaRepos) { + fun handle(request: PsRankingRequest): Any { + var edition = Edition.ORIGINAL + var difficulty = Difficulty.HARD + + when (request.rnk_ps_idx) { + 0 -> difficulty = Difficulty.HARD + 1 -> difficulty = Difficulty.EXTREME + 2 -> { + difficulty = Difficulty.EXTREME + edition = Edition.EXTRA + } + } + + val list = request.rnk_ps_pv_id_lst + val resultCollections: MutableMap = LinkedHashMap() + for (i in list) { + val records = db.pvRecord.findTop3ByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc( + i, + edition, + difficulty + ) + resultCollections.put(i, PsRankingCollection(i, edition, records)) + } + + val pvIds: MutableList = LinkedList() + val edition1: MutableList = LinkedList() + val edition2: MutableList = LinkedList() + val edition3: MutableList = LinkedList() + val score1: MutableList = LinkedList() + val score2: MutableList = LinkedList() + val score3: MutableList = LinkedList() + val name1: MutableList = LinkedList() + val name2: MutableList = LinkedList() + val name3: MutableList = LinkedList() + + resultCollections.forEach { (key: Int?, obj: PsRankingCollection?) -> + pvIds.add(key) + edition1.add(obj!!.first.edition.value) + edition2.add(obj.second.edition.value) + edition3.add(obj.third.edition.value) + score1.add(obj.first.maxScore) + score2.add(obj.second.maxScore) + score3.add(obj.third.maxScore) + name1.add(encode(obj.first.pdId?.playerName ?: "xxx")) + name2.add(encode(obj.second.pdId?.playerName ?: "xxx")) + name3.add(encode(obj.third.pdId?.playerName ?: "xxx")) + } + + return PsRankingResponse( + LocalDateTime.now(), + LocalDateTime.now(), + request.rnk_ps_idx, + pvIds.csv, + edition1.csv, + edition2.csv, + edition3.csv, + score1.csv, + score2.csv, + score3.csv, + name1.csv, + name2.csv, + name3.csv + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdHCtrlHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdHCtrlHandler.java deleted file mode 100644 index b4be9016..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdHCtrlHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.PstdHCtrlResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class PstdHCtrlHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PstdHCtrlHandler.class); - - public String handle(BaseRequest request) { - PstdHCtrlResponse response = new PstdHCtrlResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - "***,***" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdItemNgLstHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdItemNgLstHandler.java deleted file mode 100644 index 416d3d90..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PstdItemNgLstHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.PstdItemNgLstResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class PstdItemNgLstHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PstdItemNgLstHandler.class); - - public String handle(BaseRequest request) { - PstdItemNgLstResponse response = new PstdItemNgLstResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - "***", - "***" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvDefChrLstHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvDefChrLstHandler.java deleted file mode 100644 index 20f3dfa1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvDefChrLstHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.PvDefChrLstResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class PvDefChrLstHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PvDefChrLstHandler.class); - - public String handle(BaseRequest request) { - PvDefChrLstResponse response = new PvDefChrLstResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - "***" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.java deleted file mode 100644 index c4e0426e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.java +++ /dev/null @@ -1,73 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.PvEntryRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.gamedata.PvEntry; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.PvListResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class PvListHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(BannerDataHandler.class); - private final PvEntryRepository pvEntryRepository; - private final DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - - public String handle(BaseRequest request) { - StringBuilder sb = new StringBuilder(); - - List easyList = pvEntryRepository.findByDifficulty(Difficulty.EASY); - List normalList = pvEntryRepository.findByDifficulty(Difficulty.NORMAL); - List hardList = pvEntryRepository.findByDifficulty(Difficulty.HARD); - List extremeList = pvEntryRepository.findByDifficulty(Difficulty.EXTREME); - - sb.append(URIEncoder.encode(difficultyString(easyList))).append(","); - sb.append(URIEncoder.encode(difficultyString(normalList))).append(","); - sb.append(URIEncoder.encode(difficultyString(hardList))).append(","); - sb.append(URIEncoder.encode(difficultyString(extremeList))).append(","); - sb.append("%2A%2A%2A"); - - PvListResponse response = new PvListResponse( - request.getCmd(), - request.getReq_id(), - "ok", - LocalDateTime.now(), - sb.toString()); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - - private String entryString(PvEntry entry) { - return "" + entry.getPvId() + "," + - entry.getVersion() + "," + - entry.getEdition().getValue() + "," + - df.format(entry.getDemoStart()) + "," + - df.format(entry.getDemoEnd()) + "," + - df.format(entry.getPlayableStart()) + "," + - df.format(entry.getPlayableEnd()); - } - - private String difficultyString(List list) { - StringBuilder sb = new StringBuilder(); - list.forEach(x -> sb.append(URIEncoder.encode(entryString(x))).append(",")); - if (sb.length() > 0) sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.kt new file mode 100644 index 00000000..6814fb60 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvListHandler.kt @@ -0,0 +1,57 @@ +package icu.samnyan.aqua.sega.diva.handler.databank + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.BaseRequest +import icu.samnyan.aqua.sega.diva.model.PvListResponse +import icu.samnyan.aqua.sega.diva.model.common.Difficulty +import icu.samnyan.aqua.sega.diva.model.db.gamedata.PvEntry +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.util.function.Consumer + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class PvListHandler(val db: DivaRepos) { + private val df: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") + + fun handle(request: BaseRequest): Any { + val sb = StringBuilder() + + val easyList = db.g.pvEntry.findByDifficulty(Difficulty.EASY) + val normalList = db.g.pvEntry.findByDifficulty(Difficulty.NORMAL) + val hardList = db.g.pvEntry.findByDifficulty(Difficulty.HARD) + val extremeList = db.g.pvEntry.findByDifficulty(Difficulty.EXTREME) + + sb.append(encode(difficultyString(easyList))).append(",") + sb.append(encode(difficultyString(normalList))).append(",") + sb.append(encode(difficultyString(hardList))).append(",") + sb.append(encode(difficultyString(extremeList))).append(",") + sb.append("%2A%2A%2A") + + return PvListResponse( + LocalDateTime.now(), + sb.toString() + ) + } + + private fun entryString(entry: PvEntry): String { + return "" + entry.pvId + "," + + entry.version + "," + + entry.edition.value + "," + + df.format(entry.demoStart) + "," + + df.format(entry.demoEnd) + "," + + df.format(entry.playableStart) + "," + + df.format(entry.playableEnd) + } + + private fun difficultyString(list: MutableList): String { + val sb = StringBuilder() + list.forEach(Consumer { sb.append(encode(entryString(it))).append(",") }) + if (sb.isNotEmpty()) sb.deleteCharAt(sb.length - 1) + return sb.toString() + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvNgMdlLstHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvNgMdlLstHandler.java deleted file mode 100644 index 6cb2407c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/PvNgMdlLstHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.PvNgMdlLstResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class PvNgMdlLstHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PvNgMdlLstHandler.class); - - public String handle(BaseRequest request) { - - PvNgMdlLstResponse response = new PvNgMdlLstResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - "***" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/QstInfHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/QstInfHandler.java deleted file mode 100644 index 69fb55c5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/QstInfHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.QstInfResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class QstInfHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(QstInfHandler.class); - - public String handle(BaseRequest request) { - - QstInfResponse response = new QstInfResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - null, - null - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/RmtWpLstHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/RmtWpLstHandler.java deleted file mode 100644 index b8e7a67b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/RmtWpLstHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.RmtWpLstResponse; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class RmtWpLstHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(QstInfHandler.class); - - public String handle(BaseRequest request) { - RmtWpLstResponse response = new RmtWpLstResponse( - request.getCmd(), - request.getReq_id(), - "ok", - DivaDateTimeUtil.getString(LocalDateTime.now()), - "***" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.java deleted file mode 100644 index 2d478d87..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.databank; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaModuleRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaModule; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.databank.ShopCatalogResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class ShopCatalogHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(ShopCatalogHandler.class); - private final DivaModuleRepository moduleRepository; - - public String handle(BaseRequest request) { - List moduleList = moduleRepository.findAll(); - - ShopCatalogResponse response = new ShopCatalogResponse( - request.getCmd(), - request.getReq_id(), - "ok", - LocalDateTime.now(), - URIEncoder.encode(moduleList.stream().map(DivaModule::toInternal).map(URIEncoder::encode) - .collect(Collectors.joining(","))) - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.kt new file mode 100644 index 00000000..b7de67b2 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/databank/ShopCatalogHandler.kt @@ -0,0 +1,23 @@ +package icu.samnyan.aqua.sega.diva.handler.databank + +import icu.samnyan.aqua.sega.diva.DivaModuleRepository +import icu.samnyan.aqua.sega.diva.model.BaseRequest +import icu.samnyan.aqua.sega.diva.model.ShopCatalogResponse +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode +import org.springframework.stereotype.Component +import java.time.LocalDateTime + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class ShopCatalogHandler(private val moduleRepository: DivaModuleRepository) { + fun handle(request: BaseRequest): Any { + val moduleList = moduleRepository.findAll() + + return ShopCatalogResponse( + LocalDateTime.now(), + encode(moduleList.map { it.toInternal() }.joinToString(",") { encode(it) }) + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.java deleted file mode 100644 index ba7595e2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.java +++ /dev/null @@ -1,85 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaCustomizeRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaCustomize; -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.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerCustomizeService; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class BuyCstmzItmHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(BuyCstmzItmHandler.class); - - private final DivaCustomizeRepository divaCustomizeRepository; - - private final PlayerProfileService playerProfileService; - - private final PlayerCustomizeService playerCustomizeService; - - private final GameSessionRepository gameSessionRepository; - - public String handle(BuyCstmzItmRequest request) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - Optional customizeOptional = divaCustomizeRepository.findById(request.getCstmz_itm_id()); - - BuyCstmzItmResponse response; - if (customizeOptional.isEmpty()) { - response = new BuyCstmzItmResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED - ); - } else { - if (session.getVp() < customizeOptional.get().getPrice()) { - response = new BuyCstmzItmResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED - ); - } else { - playerCustomizeService.buy(profile, request.getCstmz_itm_id()); - session.setVp(session.getVp() - customizeOptional.get().getPrice()); - gameSessionRepository.save(session); - - response = new BuyCstmzItmResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS, - request.getCstmz_itm_id(), - playerCustomizeService.getModuleHaveString(profile), - session.getVp() - ); - } - } - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.kt new file mode 100644 index 00000000..6efb805a --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyCstmzItmHandler.kt @@ -0,0 +1,38 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import ext.invoke +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.BuyCstmzItmRequest +import icu.samnyan.aqua.sega.diva.model.BuyCstmzItmResponse +import icu.samnyan.aqua.sega.diva.model.common.Result +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class BuyCstmzItmHandler(val db: DivaRepos) { + fun handle(request: BuyCstmzItmRequest): Any { + val (profile, session) = db.session(request.pd_id) + + val customize = db.g.customize.findById(request.cstmz_itm_id)() ?: return BuyCstmzItmResponse( + Result.FAILED + ) + + if (session.vp < customize.price) { + return BuyCstmzItmResponse( + Result.FAILED + ) + } + db.s.customize.buy(profile, request.cstmz_itm_id) + session.vp -= customize.price + db.gameSession.save(session) + + return BuyCstmzItmResponse( + Result.SUCCESS, + request.cstmz_itm_id, + db.s.customize.getModuleHaveString(profile), + session.vp + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.java deleted file mode 100644 index b01c2607..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.java +++ /dev/null @@ -1,86 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaModuleRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaModule; -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.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerModuleService; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class BuyModuleHandler extends BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(BuyModuleHandler.class); - - private final DivaModuleRepository divaModuleRepository; - - private final PlayerProfileService playerProfileService; - - private final PlayerModuleService playerModuleService; - - private final GameSessionRepository gameSessionRepository; - - public String handle(BuyModuleRequest request) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - Optional moduleOptional = divaModuleRepository.findById(request.getMdl_id()); - - BuyModuleResponse response; - if (moduleOptional.isEmpty()) { - response = new BuyModuleResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED - ); - } else { - if (session.getVp() < moduleOptional.get().getPrice()) { - response = new BuyModuleResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.FAILED - ); - } else { - playerModuleService.buy(profile, request.getMdl_id()); - session.setVp(session.getVp() - moduleOptional.get().getPrice()); - gameSessionRepository.save(session); - - response = new BuyModuleResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS, - request.getMdl_id(), - playerModuleService.getModuleHaveString(profile), - session.getVp() - ); - } - } - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.kt new file mode 100644 index 00000000..64d50aff --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/BuyModuleHandler.kt @@ -0,0 +1,39 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.BuyModuleRequest +import icu.samnyan.aqua.sega.diva.model.BuyModuleResponse +import icu.samnyan.aqua.sega.diva.model.common.Result +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class BuyModuleHandler(val db: DivaRepos) { + fun handle(request: BuyModuleRequest): Any { + val (profile, session) = db.session(request.pd_id) + val moduleOptional = db.g.module.findById(request.mdl_id) + + if (moduleOptional.isEmpty) { + return BuyModuleResponse( + Result.FAILED + ) + } + if (session.vp < moduleOptional.get().price) { + return BuyModuleResponse( + Result.FAILED + ) + } + db.s.module.buy(profile, request.mdl_id) + session.vp -= moduleOptional.get().price + db.gameSession.save(session) + + return BuyModuleResponse( + Result.SUCCESS, + request.mdl_id, + db.s.module.getModuleHaveString(profile), + session.vp + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.java deleted file mode 100644 index c8e1816b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.java +++ /dev/null @@ -1,126 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerPvCustomizeRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerPvRecordRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.request.ingame.GetPvPdRequest; -import icu.samnyan.aqua.sega.diva.model.response.ingame.GetPvPdResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize; -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.DivaMapper; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class GetPvPdHandler extends BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetPvPdHandler.class); - - private final PlayerPvRecordRepository pvRecordRepository; - private final PlayerPvCustomizeRepository pvCustomizeRepository; - private final PlayerProfileService playerProfileService; - - public String handle(GetPvPdRequest request) { - - Optional profileO = playerProfileService.findByPdId(request.getPd_id()); - StringBuilder pd = new StringBuilder(); - - for (int pvId : - request.getPd_pv_id_lst()) { - if (pvId == -1) { - pd.append("***").append(","); - } else { - if (profileO.isEmpty()) { - pd.append("***").append(","); - } else { - var profile = profileO.get(); - int diff = request.getDifficulty(); - Difficulty difficulty = Difficulty.fromValue(diff); - - // Myself - PlayerPvRecord edition0 = pvRecordRepository.findByPdIdAndPvIdAndEditionAndDifficulty(profile, pvId, Edition.ORIGINAL, difficulty) - .orElseGet(() -> new PlayerPvRecord(pvId, Edition.ORIGINAL)); - - PlayerPvRecord edition1 = pvRecordRepository.findByPdIdAndPvIdAndEditionAndDifficulty(profile, pvId, Edition.EXTRA, difficulty) - .orElseGet(() -> new PlayerPvRecord(pvId, Edition.EXTRA)); - - // Rival - PlayerPvRecord rivalEdition0; - PlayerPvRecord rivalEdition1; - if (profile.getRivalPdId() != -1) { - rivalEdition0 = pvRecordRepository.findByPdId_PdIdAndPvIdAndEditionAndDifficulty(profile.getRivalPdId(), pvId, Edition.ORIGINAL, difficulty) - .orElseGet(() -> new PlayerPvRecord(pvId, Edition.ORIGINAL)); - - rivalEdition1 = pvRecordRepository.findByPdId_PdIdAndPvIdAndEditionAndDifficulty(profile.getRivalPdId(), pvId, Edition.EXTRA, difficulty) - .orElseGet(() -> new PlayerPvRecord(pvId, Edition.EXTRA)); - } else { - rivalEdition0 = new PlayerPvRecord(pvId, Edition.ORIGINAL); - rivalEdition1 = new PlayerPvRecord(pvId, Edition.EXTRA); - } - - PlayerPvCustomize customize = pvCustomizeRepository.findByPdIdAndPvId(profile, pvId).orElseGet(() -> new PlayerPvCustomize(profile, pvId)); - - String str = getString(edition0, customize, rivalEdition0, profile.getRivalPdId()) + "," + getString(edition1, customize, rivalEdition1, profile.getRivalPdId()); -// logger.info(str); - pd.append(URIEncoder.encode(str)).append(","); - } - } - } - pd.deleteCharAt(pd.length() - 1); - - - GetPvPdResponse response = new GetPvPdResponse( - request.getCmd(), - request.getReq_id(), - "ok", - pd.toString(), - false, - DivaDateTimeUtil.getString(LocalDateTime.now()) - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - - - private String getString(PlayerPvRecord record, PlayerPvCustomize customize, PlayerPvRecord rivalRecord, long rivalId) { - return record.getPvId() + "," + - record.getEdition().getValue() + "," + - record.getResult().getValue() + "," + - record.getMaxScore() + "," + - record.getMaxAttain() + "," + - record.getChallengeKind().getValue() + "," + - customize.getModule() + "," + - customize.getCustomize() + "," + - customize.getCustomizeFlag() + "," + - customize.getSkin() + "," + - customize.getButtonSe() + "," + - customize.getSlideSe() + "," + - customize.getChainSlideSe() + "," + - customize.getSliderTouchSe() + "," + - rivalId + "," + - rivalRecord.getMaxScore() + "," + - rivalRecord.getMaxAttain() + "," + - "-1,-1," + - pvRecordRepository.rankByPvIdAndPdIdAndEditionAndDifficulty(record.getPvId(), record.getPdId(), record.getEdition(), record.getDifficulty()) + "," + - record.getRgoPurchased() + "," + - record.getRgoPlayed(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.kt new file mode 100644 index 00000000..bda9b7cd --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/GetPvPdHandler.kt @@ -0,0 +1,133 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.GetPvPdRequest +import icu.samnyan.aqua.sega.diva.model.GetPvPdResponse +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.db.userdata.PlayerPvCustomize +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvRecord +import icu.samnyan.aqua.sega.diva.util.DivaTime +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode +import org.springframework.stereotype.Component +import java.util.function.Supplier + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class GetPvPdHandler(val db: DivaRepos) { + fun handle(request: GetPvPdRequest): Any { + val profileO = db.profile.findByPdId(request.pd_id) + val pd = StringBuilder() + + for (pvId in request.pd_pv_id_lst) { + if (pvId == -1) { + pd.append("***").append(",") + } else { + if (profileO.isEmpty) { + pd.append("***").append(",") + } else { + val profile = profileO.get() + val diff = request.difficulty + val difficulty = Difficulty.fromValue(diff) + + // Myself + val edition0 = db.pvRecord.findByPdIdAndPvIdAndEditionAndDifficulty( + profile, + pvId, + Edition.ORIGINAL, + difficulty + ) + .orElseGet(Supplier { PlayerPvRecord(pvId, Edition.ORIGINAL) }) + + val edition1 = db.pvRecord.findByPdIdAndPvIdAndEditionAndDifficulty( + profile, + pvId, + Edition.EXTRA, + difficulty + ) + .orElseGet(Supplier { PlayerPvRecord(pvId, Edition.EXTRA) }) + + // Rival + val rivalEdition0: PlayerPvRecord? + val rivalEdition1: PlayerPvRecord? + if (profile.rivalPdId != -1L) { + rivalEdition0 = db.pvRecord.findByPdId_PdIdAndPvIdAndEditionAndDifficulty( + profile.rivalPdId, + pvId, + Edition.ORIGINAL, + difficulty + ) + .orElseGet(Supplier { PlayerPvRecord(pvId, Edition.ORIGINAL) }) + + rivalEdition1 = db.pvRecord.findByPdId_PdIdAndPvIdAndEditionAndDifficulty( + profile.rivalPdId, + pvId, + Edition.EXTRA, + difficulty + ) + .orElseGet(Supplier { PlayerPvRecord(pvId, Edition.EXTRA) }) + } else { + rivalEdition0 = PlayerPvRecord(pvId, Edition.ORIGINAL) + rivalEdition1 = PlayerPvRecord(pvId, Edition.EXTRA) + } + + val customize = db.pvCustomize.findByPdIdAndPvId(profile, pvId) + .orElseGet(Supplier { PlayerPvCustomize(profile, pvId) }) + + val str = getString( + edition0, + customize, + rivalEdition0, + profile.rivalPdId + ) + "," + getString(edition1, customize, rivalEdition1, profile.rivalPdId) + pd.append(encode(str)).append(",") + } + } + } + pd.deleteCharAt(pd.length - 1) + + + return GetPvPdResponse( + pd.toString(), + false, + DivaTime.now + ) + } + + + private fun getString( + record: PlayerPvRecord, + customize: PlayerPvCustomize, + rivalRecord: PlayerPvRecord, + rivalId: Long + ): String { + return record.pvId.toString() + "," + + record.edition.value + "," + + record.result.value + "," + + record.maxScore + "," + + record.maxAttain + "," + + record.challengeKind.value + "," + + customize.module + "," + + customize.customize + "," + + customize.customizeFlag + "," + + customize.skin + "," + + customize.buttonSe + "," + + customize.slideSe + "," + + customize.chainSlideSe + "," + + customize.sliderTouchSe + "," + + rivalId + "," + + rivalRecord.maxScore + "," + + rivalRecord.maxAttain + "," + + "-1,-1," + + db.pvRecord.rankByPvIdAndPdIdAndEditionAndDifficulty( + record.pvId, + record.pdId, + record.edition, + record.difficulty + ) + "," + + record.rgoPurchased + "," + + record.rgoPlayed + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.java deleted file mode 100644 index 4d61c311..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.java +++ /dev/null @@ -1,63 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerPvCustomizeRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.response.ingame.ShopExitResponse; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import static icu.samnyan.aqua.sega.diva.util.DivaStringUtils.arrToCsv; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class ShopExitHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(ShopExitHandler.class); - private final PlayerProfileService playerProfileService; - private final PlayerPvCustomizeRepository pvCustomizeRepository; - - public String handle(ShopExitRequest request) { - - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - PlayerPvCustomize customize = pvCustomizeRepository.findByPdIdAndPvId(profile, request.getPly_pv_id()).orElseGet(() -> new PlayerPvCustomize(profile, request.getPly_pv_id())); - - if (request.getUse_pv_mdl_eqp() == 1) { - customize.setModule(arrToCsv(request.getMdl_eqp_pv_ary())); - customize.setCustomize(arrToCsv(request.getC_itm_eqp_pv_ary())); - customize.setCustomizeFlag(arrToCsv(request.getMs_itm_flg_pv_ary())); - } else { - customize.setModule("-1,-1,-1"); - customize.setCustomize("-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"); - customize.setCustomizeFlag("1,1,1,1,1,1,1,1,1,1,1,1"); - } - - profile.setCommonModule(arrToCsv(request.getMdl_eqp_cmn_ary())); - profile.setCommonCustomizeItems(arrToCsv(request.getC_itm_eqp_cmn_ary())); - profile.setModuleSelectItemFlag(arrToCsv(request.getMs_itm_flg_cmn_ary())); - - playerProfileService.save(profile); - pvCustomizeRepository.save(customize); - ShopExitResponse response = new ShopExitResponse( - request.getCmd(), - request.getReq_id(), - "ok", - Result.SUCCESS - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.kt new file mode 100644 index 00000000..9afd8907 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/ShopExitHandler.kt @@ -0,0 +1,42 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import ext.csv +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.ShopExitRequest +import icu.samnyan.aqua.sega.diva.model.ShopExitResponse +import icu.samnyan.aqua.sega.diva.model.common.Result +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvCustomize +import org.springframework.stereotype.Component +import java.util.function.Supplier + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class ShopExitHandler(val db: DivaRepos) { + fun handle(request: ShopExitRequest): Any { + val profile = db.profile(request.pd_id) + val customize = db.pvCustomize.findByPdIdAndPvId(profile, request.ply_pv_id) + .orElseGet(Supplier { PlayerPvCustomize(profile, request.ply_pv_id) }) + + if (request.use_pv_mdl_eqp == 1) { + customize.module = request.mdl_eqp_pv_ary.csv + customize.customize = request.c_itm_eqp_pv_ary.csv + customize.customizeFlag = request.ms_itm_flg_pv_ary.csv + } else { + customize.module = "-1,-1,-1" + customize.customize = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + customize.customizeFlag = "1,1,1,1,1,1,1,1,1,1,1,1" + } + + profile.commonModule = request.mdl_eqp_cmn_ary.csv + profile.commonCustomizeItems = request.c_itm_eqp_cmn_ary.csv + profile.moduleSelectItemFlag = request.ms_itm_flg_cmn_ary.csv + + db.profile.save(profile) + db.pvCustomize.save(customize) + return ShopExitResponse( + Result.SUCCESS + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.java deleted file mode 100644 index 6ca2ddfe..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.java +++ /dev/null @@ -1,405 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.ContestRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.*; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.*; -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.response.ingame.StageResultResponse; -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.DivaMapper; -import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.*; - -import static icu.samnyan.aqua.sega.diva.model.common.Const.NULL_QUEST; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@RequiredArgsConstructor -public class StageResultHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(StageResultHandler.class); - private final GameSessionRepository gameSessionRepository; - private final PlayerPvRecordRepository pvRecordRepository; - private final PlayerProfileService playerProfileService; - private final PlayLogRepository playLogRepository; - private final ContestRepository contestRepository; - private final PlayerContestRepository playerContestRepository; - private final PlayerCustomizeRepository playerCustomizeRepository; - private final PlayerInventoryRepository playerInventoryRepository; - - private final DivaCalculator divaCalculator; - - private PlayerProfile currentProfile = null; - - public String handle(StageResultRequest request) { - StageResultResponse response; - if (request.getPd_id() != -1) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - currentProfile = profile; - // Get the last played index - int[] pvIds = request.getStg_ply_pv_id(); - int[] stageArr = request.getStg_ply_pv_id(); - int stageIndex = 0; - if (stageArr[0] != -1) { - stageIndex = 0; - } - if (stageArr[1] != -1) { - stageIndex = 1; - } - if (stageArr[2] != -1) { - stageIndex = 2; - } - if (stageArr[3] != -1) { - stageIndex = 3; - } - - // Convert to play log object - PlayLog log = getLog(request, profile, stageIndex); - logger.debug("Stage Result Object: {}", log.toString()); - - PlayerPvRecord record = pvRecordRepository.findByPdIdAndPvIdAndEditionAndDifficulty(profile, log.getPvId(), log.getEdition(), log.getDifficulty()) - .orElseGet(() -> new PlayerPvRecord(profile, log.getPvId(), log.getEdition(), log.getDifficulty())); - - // Not save personal record in no fail mode - if (request.getGame_type() != 1) { - // Only update personal record when using rhythm game option - if (log.getRhythmGameOptions().equals("0,0,0")) { - // Update pvRecord field - record.setMaxScore(Math.max(record.getMaxScore(), log.getScore())); - record.setMaxAttain(Math.max(record.getMaxAttain(), log.getAttainPoint())); - - if (record.getResult().getValue() < log.getClearResult().getValue()) { - record.setResult(log.getClearResult()); - } - } - } - - String[] updateRgo = log.getRhythmGameOptions().split(","); - String[] oldRgo = record.getRgoPlayed().split(","); - for (int i = 0; i < updateRgo.length; i++) { - if (updateRgo[i].equals("1")) { - oldRgo[i] = "1"; - } - } - record.setRgoPlayed(StringUtils.join(oldRgo, ",")); - - session.setVp(session.getVp() + log.getVp()); - session.setLastPvId(log.getPvId()); - session.setLastUpdateTime(LocalDateTime.now()); - - LevelInfo levelInfo = divaCalculator.getLevelInfo(profile); - session.setOldLevelNumber(session.getLevelNumber()); - session.setOldLevelExp(session.getLevelExp()); - session.setLevelNumber(levelInfo.getLevelNumber()); - session.setLevelExp(levelInfo.getLevelExp()); - - session.setStageResultIndex(stageIndex); - - // Calculate reward - // Contest reward - String contestSpecifier = String.join(",", request.getCr_sp()); - String[] contestRewardType = {"-1", "-1", "-1"}; - String[] contestRewardValue = {"-1", "-1", "-1"}; - String[] contestRewardString1 = {"***", "***", "***"}; - String[] contestRewardString2 = {"***", "***", "***"}; - int contestEntryRewardType = -1; - int contestEntryRewardValue = -1; - String contestEntryRewardString1 = "***"; - String contestEntryRewardString2 = "***"; - int contestId = request.getCr_cid(); - if (contestId != -1) { - List progress = getContestProgress(request.getCr_sp()); - contestSpecifier = getContestSpecifier(progress); - - // Check if the contest info exist - Optional contestOptional = contestRepository.findById(contestId); - if (contestOptional.isPresent()) { - Contest contest = contestOptional.get(); - Optional playerContestOptional = playerContestRepository.findByPdIdAndContestId(profile, contestId); - - // Contest Entry Reward - // Check if this is first stage - if (progress.size() == 1 && playerContestOptional.isEmpty()) { - if (StringUtils.isNotBlank(contest.getContestEntryReward())) { - // Check if this is first time play this contest - String reward = contest.getContestEntryReward(); - String[] rewardValue = reward.split(":"); - - contestEntryRewardType = Integer.parseInt(rewardValue[0]); - contestEntryRewardValue = Integer.parseInt(rewardValue[1]); - contestEntryRewardString1 = rewardValue[2]; - contestEntryRewardString2 = rewardValue[3]; - } - } - - // Only if this is the first time reach this value - int previousValue = progress.stream().limit(progress.size() - 1).mapToInt(ContestProgress::getScores).sum(); - int currentValue = progress.stream().mapToInt(ContestProgress::getScores).sum(); - - // Bronze Reward - Map bronze = updateReward(currentValue, previousValue, contest.getBronzeBorders(), contest.getBronzeContestReward()); - if (bronze != null) { - contestRewardType[0] = bronze.get("type"); - contestRewardValue[0] = bronze.get("value"); - contestRewardString1[0] = bronze.get("string1"); - contestRewardString2[2] = bronze.get("string2"); - } - - // Silver Reward - Map silver = updateReward(currentValue, previousValue, contest.getSliverBorders(), contest.getSliverContestReward()); - if (silver != null) { - contestRewardType[1] = silver.get("type"); - contestRewardValue[1] = silver.get("value"); - contestRewardString1[1] = silver.get("string1"); - contestRewardString2[2] = silver.get("string2"); - } - - // Gold Reward - Map gold = updateReward(currentValue, previousValue, contest.getGoldBorders(), contest.getGoldContestReward()); - if (gold != null) { - contestRewardType[2] = gold.get("type"); - contestRewardValue[2] = gold.get("value"); - contestRewardString1[2] = gold.get("string1"); - contestRewardString2[2] = gold.get("string2"); - } - - } - } - - pvRecordRepository.save(record); - playLogRepository.save(log); - gameSessionRepository.save(session); - - - response = new StageResultResponse( - request.getCmd(), - request.getReq_id(), - "ok", - ChallengeKind.UNDEFINED.getValue(), - session.getOldLevelNumber(), - session.getOldLevelExp(), - session.getLevelNumber(), - session.getLevelExp(), - profile.getLevelTitle(), - profile.getPlateEffectId(), - profile.getPlateId(), - session.getVp(), - 0, - request.getCr_cid(), - request.getCr_tv(), - contestSpecifier, - String.join(",", contestRewardType), - String.join(",", contestRewardValue), - String.join(",", contestRewardString1), - String.join(",", contestRewardString2), - contestEntryRewardType, - contestEntryRewardValue, - contestEntryRewardString1, - contestEntryRewardString2, - "xxx,xxx,xxx,xxx,xxx", - "-1,-1,-1,-1,-1", - "xxx,xxx,xxx,xxx,xxx", - "xxx,xxx,xxx,xxx,xxx", - "xxx,xxx,xxx,xxx,xxx", - "xxx,xxx,xxx,xxx,xxx", - "xxx,xxx,xxx,xxx,xxx", - 0, - LocalDateTime.now(), - -1, - -1, - 0, - 0, - 0, - -1, - NULL_QUEST, - NULL_QUEST, - NULL_QUEST, - NULL_QUEST, - NULL_QUEST, - "-1,-1,-1,-1,-1", - "-1,-1,-1,-1,-1", - "-1,-1,-1,-1,-1" - ); - } else { - response = new StageResultResponse( - request.getCmd(), - request.getReq_id(), - "ok" - ); - } - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - - private PlayLog getLog(StageResultRequest request, PlayerProfile profile, int i) { - return new PlayLog( - profile, - request.getStg_ply_pv_id()[i], - Difficulty.fromValue(request.getStg_difficulty()[i]), - Edition.fromValue(request.getStg_edtn()[i]), - request.getStg_scrpt_ver()[i], - request.getStg_score()[i], - ChallengeKind.fromValue(request.getStg_chllng_kind()[i]), - request.getStg_chllng_result()[i], - ClearResult.fromValue(request.getStg_clr_kind()[i]), - request.getStg_vcld_pts()[i], - request.getStg_cool_cnt()[i], - request.getStg_cool_pct()[i], - request.getStg_fine_cnt()[i], - request.getStg_fine_pct()[i], - request.getStg_safe_cnt()[i], - request.getStg_safe_pct()[i], - request.getStg_sad_cnt()[i], - request.getStg_sad_pct()[i], - request.getStg_wt_wg_cnt()[i], - request.getStg_wt_wg_pct()[i], - request.getStg_max_cmb()[i], - request.getStg_chance_tm()[i], - request.getStg_sm_hl()[i], - request.getStg_atn_pnt()[i], - request.getStg_skin_id()[i], - request.getStg_btn_se()[i], - request.getStg_btn_se_vol()[i], - request.getStg_sld_se()[i], - request.getStg_chn_sld_se()[i], - request.getStg_sldr_tch_se()[i], - slice(request.getStg_mdl_id(), 3, i), - request.getStg_cpt_rslt()[i], - request.getStg_sld_scr()[i], - request.getStg_vcl_chg()[i], - slice(request.getStg_c_itm_id(), 12, i), - slice(request.getStg_rgo(), 3, i), - request.getStg_ss_num()[i], - request.getTime_stamp().toLocalDateTime() - ); - } - - public String slice(int[] arr, int length, int offset) { - StringBuilder sb = new StringBuilder(); - - for (int i = length * offset; i < length * (offset + 1); i++) { - sb.append(arr[i]).append(","); - } - - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } - - private List getContestProgress(String[] arr) { - List result = new LinkedList<>(); - for (int i = 0; i < arr.length; i = i + 6) { - if (!arr[i].equals("-1")) { - result.add(new ContestProgress( - Integer.parseInt(arr[i]), - Integer.parseInt(arr[i + 1]), - Integer.parseInt(arr[i + 2]), - Integer.parseInt(arr[i + 3]), - Integer.parseInt(arr[i + 4]), - Integer.parseInt(arr[i + 5]) - )); - } - } - return result; - } - - private String getContestSpecifier(List progresses) { - List result = new LinkedList<>(); - for (ContestProgress x : progresses) { - result.add(String.valueOf(x.getHardness())); - result.add(String.valueOf(x.getEdition())); - result.add(String.valueOf(x.getStars())); - result.add(String.valueOf(x.getScores())); - result.add(String.valueOf(x.getVersion())); - } - while (result.size() < 60) { - result.add("-1"); - } - return String.join(",", result); - } - - private Map updateReward(int currentValue, int previousValue, int borders, String reward) { - if (currentValue > borders && previousValue < borders) { - if (StringUtils.isNotBlank(reward)) { - String[] rewardValue = reward.split(":"); - Map result = new HashMap<>(); - switch (rewardValue[0]) { - case "-1": - return null; - case "0": { - result.put("type", rewardValue[0]); - result.put("value", rewardValue[1]); - result.put("string1", "***"); - result.put("string2", "***"); - break; - } - case "1": { - if (playerInventoryRepository.findByPdIdAndTypeAndValue(currentProfile, "SKIN", rewardValue[1]).isPresent()) { - result.put("type", "-1"); - result.put("value", "-1"); - result.put("string1", "***"); - result.put("string2", "***"); - } else { - playerInventoryRepository.save(new PlayerInventory(null, currentProfile, rewardValue[1], "SKIN")); - result.put("type", rewardValue[0]); - result.put("value", rewardValue[1]); - result.put("string1", rewardValue[2]); - result.put("string2", rewardValue[3]); - } - break; - } - case "2": { - if (playerInventoryRepository.findByPdIdAndTypeAndValue(currentProfile, "PLATE", rewardValue[1]).isPresent()) { - result.put("type", "-1"); - result.put("value", "-1"); - result.put("string1", "***"); - result.put("string2", "***"); - } else { - playerInventoryRepository.save(new PlayerInventory(null, currentProfile, rewardValue[1], "PLATE")); - result.put("type", rewardValue[0]); - result.put("value", rewardValue[1]); - result.put("string1", rewardValue[2]); - result.put("string2", rewardValue[3]); - } - break; - } - case "3": { - if (playerCustomizeRepository.findByPdIdAndCustomizeId(currentProfile, Integer.parseInt(rewardValue[1])).isPresent()) { - result.put("type", "-1"); - result.put("value", "-1"); - result.put("string1", "***"); - result.put("string2", "***"); - } else { - playerCustomizeRepository.save(new PlayerCustomize(currentProfile, Integer.parseInt(rewardValue[1]))); - result.put("type", rewardValue[0]); - result.put("value", rewardValue[1]); - result.put("string1", rewardValue[2]); - result.put("string2", rewardValue[3]); - } - break; - } - } - return result; - } - } - return null; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.kt new file mode 100644 index 00000000..5f79830d --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageResultHandler.kt @@ -0,0 +1,427 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import ext.logger +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.StageResultRequest +import icu.samnyan.aqua.sega.diva.model.StageResultResponse +import icu.samnyan.aqua.sega.diva.model.common.* +import icu.samnyan.aqua.sega.diva.model.db.userdata.* +import icu.samnyan.aqua.sega.diva.util.DivaCalculator +import org.apache.commons.lang3.StringUtils +import org.springframework.stereotype.Component +import java.lang.String +import java.time.LocalDateTime +import java.util.* +import java.util.function.Supplier +import kotlin.Any +import kotlin.Array +import kotlin.Int +import kotlin.IntArray +import kotlin.arrayOf +import kotlin.math.max + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class StageResultHandler(val db: DivaRepos, val calc: DivaCalculator) { + private var currentProfile: PlayerProfile? = null + val logger = logger() + + fun handle(request: StageResultRequest): Any { + if (request.pd_id != -1L) { + val (profile, session) = db.session(request.pd_id) + + currentProfile = profile + // Get the last played index + val stageArr = request.stg_ply_pv_id + var stageIndex = 0 + if (stageArr[0] != -1) { + stageIndex = 0 + } + if (stageArr[1] != -1) { + stageIndex = 1 + } + if (stageArr[2] != -1) { + stageIndex = 2 + } + if (stageArr[3] != -1) { + stageIndex = 3 + } + + // Convert to play log object + val log = getLog(request, profile, stageIndex) + logger.debug("Stage Result Object: {}", log.toString()) + + val record = db.pvRecord.findByPdIdAndPvIdAndEditionAndDifficulty( + profile, + log.pvId, + log.edition, + log.difficulty + ) + .orElseGet(Supplier { PlayerPvRecord(profile, log.pvId, log.edition, log.difficulty) }) + + // Not save personal record in no fail mode + if (request.game_type != 1) { + // Only update personal record when using rhythm game option + if (log.rhythmGameOptions == "0,0,0") { + // Update pvRecord field + record.maxScore = max(record.maxScore, log.score) + record.maxAttain = max(record.maxAttain, log.attainPoint) + + if (record.result.value < log.clearResult.value) { + record.result = log.clearResult + } + } + } + + val updateRgo = + log.rhythmGameOptions.split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + val oldRgo = + record.rgoPlayed.split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + for (i in updateRgo.indices) { + if (updateRgo[i] == "1") { + oldRgo[i] = "1" + } + } + record.rgoPlayed = StringUtils.join(oldRgo, ",") + + session.vp = session.vp + log.vp + session.lastPvId = log.pvId + session.lastUpdateTime = LocalDateTime.now() + + val levelInfo = calc.getLevelInfo(profile) + session.oldLevelNumber = session.levelNumber + session.oldLevelExp = session.levelExp + session.levelNumber = levelInfo.levelNumber + session.levelExp = levelInfo.levelExp + + session.stageResultIndex = stageIndex + + // Calculate reward + // Contest reward + var contestSpecifier = String.join(",", *request.cr_sp) + val contestRewardType = arrayOf("-1", "-1", "-1") + val contestRewardValue = arrayOf("-1", "-1", "-1") + val contestRewardString1 = arrayOf("***", "***", "***") + val contestRewardString2 = arrayOf("***", "***", "***") + var contestEntryRewardType = -1 + var contestEntryRewardValue = -1 + var contestEntryRewardString1: kotlin.String? = "***" + var contestEntryRewardString2: kotlin.String? = "***" + val contestId = request.cr_cid + if (contestId != -1) { + val progress = getContestProgress(request.cr_sp) + contestSpecifier = getContestSpecifier(progress) + + // Check if the contest info exist + val contestOptional = db.g.contest.findById(contestId) + if (contestOptional.isPresent) { + val contest = contestOptional.get() + val playerContestOptional = db.contest.findByPdIdAndContestId(profile, contestId) + + // Contest Entry Reward + // Check if this is first stage + if (progress.size == 1 && playerContestOptional.isEmpty) { + if (StringUtils.isNotBlank(contest.contestEntryReward)) { + // Check if this is first time play this contest + val reward = contest.contestEntryReward + val rewardValue: Array = + reward.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + + contestEntryRewardType = rewardValue[0]!!.toInt() + contestEntryRewardValue = rewardValue[1]!!.toInt() + contestEntryRewardString1 = rewardValue[2] + contestEntryRewardString2 = rewardValue[3] + } + } + + // Only if this is the first time reach this value + val previousValue = progress.stream().limit((progress.size - 1).toLong()) + .mapToInt { it.scores }.sum() + val currentValue = progress.stream().mapToInt { it.scores }.sum() + + // Bronze Reward + val bronze = updateReward( + currentValue, + previousValue, + contest.bronzeBorders, + contest.bronzeContestReward + ) + if (bronze != null) { + contestRewardType[0] = bronze.get("type") + contestRewardValue[0] = bronze.get("value") + contestRewardString1[0] = bronze.get("string1") + contestRewardString2[2] = bronze.get("string2") + } + + // Silver Reward + val silver = updateReward( + currentValue, + previousValue, + contest.sliverBorders, + contest.sliverContestReward + ) + if (silver != null) { + contestRewardType[1] = silver.get("type") + contestRewardValue[1] = silver.get("value") + contestRewardString1[1] = silver.get("string1") + contestRewardString2[2] = silver.get("string2") + } + + // Gold Reward + val gold = updateReward( + currentValue, + previousValue, + contest.goldBorders, + contest.goldContestReward + ) + if (gold != null) { + contestRewardType[2] = gold.get("type") + contestRewardValue[2] = gold.get("value") + contestRewardString1[2] = gold.get("string1") + contestRewardString2[2] = gold.get("string2") + } + } + } + + db.pvRecord.save(record) + db.playLog.save(log) + db.gameSession.save(session) + + + return StageResultResponse( + ChallengeKind.UNDEFINED.value, + session.oldLevelNumber, + session.oldLevelExp, + session.levelNumber, + session.levelExp, + profile.levelTitle, + profile.plateEffectId, + profile.plateId, + session.vp, + 0, + request.cr_cid, + request.cr_tv, + contestSpecifier, + String.join(",", *contestRewardType), + String.join(",", *contestRewardValue), + String.join(",", *contestRewardString1), + String.join(",", *contestRewardString2), + contestEntryRewardType, + contestEntryRewardValue, + contestEntryRewardString1, + contestEntryRewardString2, + "xxx,xxx,xxx,xxx,xxx", + "-1,-1,-1,-1,-1", + "xxx,xxx,xxx,xxx,xxx", + "xxx,xxx,xxx,xxx,xxx", + "xxx,xxx,xxx,xxx,xxx", + "xxx,xxx,xxx,xxx,xxx", + "xxx,xxx,xxx,xxx,xxx", + 0, + LocalDateTime.now(), + -1, + -1, + 0, + 0, + 0, + -1, + Const.NULL_QUEST, + Const.NULL_QUEST, + Const.NULL_QUEST, + Const.NULL_QUEST, + Const.NULL_QUEST, + "-1,-1,-1,-1,-1", + "-1,-1,-1,-1,-1", + "-1,-1,-1,-1,-1" + ) + } else { + return StageResultResponse() + } + } + + private fun getLog(request: StageResultRequest, profile: PlayerProfile, i: Int): PlayLog { + return PlayLog( + profile, + request.stg_ply_pv_id[i], + Difficulty.fromValue(request.stg_difficulty[i]), + Edition.fromValue(request.stg_edtn[i]), + request.stg_scrpt_ver[i], + request.stg_score[i], + ChallengeKind.fromValue(request.stg_chllng_kind[i]), + request.stg_chllng_result[i], + ClearResult.fromValue(request.stg_clr_kind[i]), + request.stg_vcld_pts[i], + request.stg_cool_cnt[i], + request.stg_cool_pct[i], + request.stg_fine_cnt[i], + request.stg_fine_pct[i], + request.stg_safe_cnt[i], + request.stg_safe_pct[i], + request.stg_sad_cnt[i], + request.stg_sad_pct[i], + request.stg_wt_wg_cnt[i], + request.stg_wt_wg_pct[i], + request.stg_max_cmb[i], + request.stg_chance_tm[i], + request.stg_sm_hl[i], + request.stg_atn_pnt[i], + request.stg_skin_id[i], + request.stg_btn_se[i], + request.stg_btn_se_vol[i], + request.stg_sld_se[i], + request.stg_chn_sld_se[i], + request.stg_sldr_tch_se[i], + slice(request.stg_mdl_id, 3, i), + request.stg_cpt_rslt[i], + request.stg_sld_scr[i], + request.stg_vcl_chg[i], + slice(request.stg_c_itm_id, 12, i), + slice(request.stg_rgo, 3, i), + request.stg_ss_num[i], + request.time_stamp.toLocalDateTime() + ) + } + + fun slice(arr: IntArray, length: Int, offset: Int): kotlin.String { + val sb = StringBuilder() + + for (i in length * offset..): MutableList { + val result: MutableList = LinkedList() + var i = 0 + while (i < arr.size) { + if (arr[i] != "-1") { + result.add( + ContestProgress( + arr[i]!!.toInt(), + arr[i + 1]!!.toInt(), + arr[i + 2]!!.toInt(), + arr[i + 3]!!.toInt(), + arr[i + 4]!!.toInt(), + arr[i + 5]!!.toInt() + ) + ) + } + i += 6 + } + return result + } + + private fun getContestSpecifier(progresses: MutableList): kotlin.String { + val result: MutableList = LinkedList() + for (x in progresses) { + result.add(x.hardness.toString()) + result.add(x.edition.toString()) + result.add(x.stars.toString()) + result.add(x.scores.toString()) + result.add(x.version.toString()) + } + while (result.size < 60) { + result.add("-1") + } + return String.join(",", result) + } + + private fun updateReward( + currentValue: Int, + previousValue: Int, + borders: Int, + reward: kotlin.String? + ): MutableMap? { + if (borders in (previousValue + 1).. = + reward!!.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + val result: MutableMap = HashMap() + when (rewardValue[0]) { + "-1" -> return null + "0" -> { + result["type"] = rewardValue[0] + result["value"] = rewardValue[1] + result["string1"] = "***" + result["string2"] = "***" + } + + "1" -> { + if (db.inventory.findByPdIdAndTypeAndValue(currentProfile!!, "SKIN", rewardValue[1]!!) + .isPresent + ) { + result["type"] = "-1" + result["value"] = "-1" + result["string1"] = "***" + result["string2"] = "***" + } else { + db.inventory.save( + PlayerInventory( + currentProfile!!, + rewardValue[1]!!, + "SKIN" + ) + ) + result.put("type", rewardValue[0]) + result.put("value", rewardValue[1]) + result.put("string1", rewardValue[2]) + result.put("string2", rewardValue[3]) + } + } + + "2" -> { + if (db.inventory.findByPdIdAndTypeAndValue(currentProfile!!, "PLATE", rewardValue[1]!!) + .isPresent + ) { + result.put("type", "-1") + result.put("value", "-1") + result.put("string1", "***") + result.put("string2", "***") + } else { + db.inventory.save( + PlayerInventory( + currentProfile!!, + rewardValue[1]!!, + "PLATE" + ) + ) + result.put("type", rewardValue[0]) + result.put("value", rewardValue[1]) + result.put("string1", rewardValue[2]) + result.put("string2", rewardValue[3]) + } + } + + "3" -> { + if (db.customize.findByPdIdAndCustomizeId(currentProfile!!, rewardValue[1]!!.toInt()) + .isPresent + ) { + result.put("type", "-1") + result.put("value", "-1") + result.put("string1", "***") + result.put("string2", "***") + } else { + db.customize.save( + PlayerCustomize( + currentProfile!!, + rewardValue[1]!!.toInt() + ) + ) + result.put("type", rewardValue[0]) + result.put("value", rewardValue[1]) + result.put("string1", rewardValue[2]) + result.put("string2", rewardValue[3]) + } + } + } + return result + } + } + return null + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.java deleted file mode 100644 index 0553773b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.java +++ /dev/null @@ -1,61 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class StageStartHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(StageResultHandler.class); - private final GameSessionRepository gameSessionRepository; - private final PlayerProfileService playerProfileService; - - public String handle(StageStartRequest request) { - if (request.getPd_id() != -1) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - int[] stageArr = request.getStg_ply_pv_id(); - int stageIndex = 0; - if(stageArr[0] != -1) { - stageIndex = 0; - } - if(stageArr[1] != -1) { - stageIndex = 1; - } - if(stageArr[2] != -1) { - stageIndex = 2; - } - if(stageArr[3] != -1) { - stageIndex = 3; - } - session.setStageIndex(stageIndex); - gameSessionRepository.save(session); - } - - BaseResponse response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "ok"); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.kt new file mode 100644 index 00000000..f8392a3f --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StageStartHandler.kt @@ -0,0 +1,37 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import ext.emptyMap +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.StageStartRequest +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class StageStartHandler(val db: DivaRepos) { + fun handle(request: StageStartRequest): Any { + if (request.pd_id != -1L) { + val (_, session) = db.session(request.pd_id) + + val stageArr = request.stg_ply_pv_id + var stageIndex = 0 + if (stageArr[0] != -1) { + stageIndex = 0 + } + if (stageArr[1] != -1) { + stageIndex = 1 + } + if (stageArr[2] != -1) { + stageIndex = 2 + } + if (stageArr[3] != -1) { + stageIndex = 3 + } + session.stageIndex = stageIndex + db.gameSession.save(session) + } + + return emptyMap + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.java deleted file mode 100644 index 0422c832..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.ingame; - -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerScreenShotRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.time.LocalDateTime; -import java.time.ZoneOffset; - -import static icu.samnyan.aqua.sega.diva.util.DivaStringUtils.arrToCsv; - - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class StoreSsHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(StoreSsHandler.class); - private final PlayerProfileService playerProfileService; - private final PlayerScreenShotRepository screenShotRepository; - - public String handle(StoreSsRequest request, MultipartFile file) { - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - - BaseResponse response; - try { - String filename = request.getPd_id() + "-" + LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + ".jpg"; - Files.write(Paths.get("data/" + filename), file.getBytes()); - - PlayerScreenShot ss = new PlayerScreenShot( - profile, - filename, - request.getPd_id(), - arrToCsv(request.getSs_mdl_id()), - arrToCsv(request.getSs_c_itm_id()) - ); - screenShotRepository.save(ss); - - response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "ok"); - - } catch (IOException e) { - logger.error("Screenshot save failed", e); - - response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "0"); - } - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.kt new file mode 100644 index 00000000..1cc9ce52 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/ingame/StoreSsHandler.kt @@ -0,0 +1,46 @@ +package icu.samnyan.aqua.sega.diva.handler.ingame + +import ext.csv +import ext.logger +import icu.samnyan.aqua.sega.diva.DIVA_BAD +import icu.samnyan.aqua.sega.diva.DIVA_OK +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.StoreSsRequest +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerScreenShot +import org.springframework.stereotype.Component +import org.springframework.web.multipart.MultipartFile +import java.io.IOException +import java.nio.file.Files +import java.nio.file.Paths +import java.time.LocalDateTime +import java.time.ZoneOffset + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class StoreSsHandler(val db: DivaRepos) { + val logger = logger() + fun handle(request: StoreSsRequest, file: MultipartFile): Any { + val profile = db.profile(request.pd_id) + + try { + val filename = "${request.pd_id}-${LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)}.jpg" + Files.write(Paths.get("data/$filename"), file.bytes) + + val ss = PlayerScreenShot( + profile, + filename, + request.pd_id, + request.ss_mdl_id.csv, + request.ss_c_itm_id.csv + ) + db.screenShot.save(ss) + + return DIVA_OK + } catch (e: IOException) { + logger.error("Screenshot save failed", e) + return DIVA_BAD + } + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/operation/PingHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/operation/PingHandler.java deleted file mode 100644 index e76b3876..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/operation/PingHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.operation; - -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import icu.samnyan.aqua.sega.diva.model.response.operation.PingResponse; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class PingHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PingHandler.class); - private final PropertyEntryRepository propertyEntryRepository; - - public String handle(BaseRequest request) { - - PropertyEntry news = propertyEntryRepository.findByPropertyKey("diva_news").orElseGet(() -> new PropertyEntry("diva_news", "xxx")); - PropertyEntry warning = propertyEntryRepository.findByPropertyKey("diva_warning").orElseGet(() -> new PropertyEntry("diva_warning", "xxx")); - - PingResponse response = new PingResponse( - request.getCmd(), - request.getReq_id(), - "ok", - news.getPropertyValue(), - warning.getPropertyValue() - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.java deleted file mode 100644 index 2c70a0a5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.java +++ /dev/null @@ -1,112 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.user; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.ContestRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerContestRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.Edition; -import icu.samnyan.aqua.sega.diva.model.common.SortMode; -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.response.BaseResponse; -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.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -import static icu.samnyan.aqua.sega.diva.util.DivaStringUtils.getDummyString; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class EndHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(EndHandler.class); - - private final ContestRepository contestRepository; - - private final PlayerProfileService playerProfileService; - - private final PlayerContestRepository playerContestRepository; - - private final GameSessionRepository gameSessionRepository; - - public String handle(StageResultRequest request) { - - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - - profile.setHeadphoneVolume(request.getHp_vol()); - profile.setButtonSeOn(request.isBtn_se_vol()); - profile.setButtonSeVolume(request.getBtn_se_vol2()); - profile.setSliderSeVolume(request.getSldr_se_vol2()); - profile.setVocaloidPoints(session.getVp()); - profile.setLevel(session.getLevelNumber()); - profile.setLevelExp(session.getLevelExp()); - profile.setNextPvId(request.getNxt_pv_id()); - profile.setNextDifficulty(Difficulty.fromValue(request.getNxt_dffclty())); - profile.setNextEdition(Edition.fromValue(request.getNxt_edtn())); - profile.setSortMode(SortMode.fromValue(request.getSort_kind())); - - if (request.getCr_cid() != -1) { - Contest contest = contestRepository.findById(request.getCr_cid()).orElseGet(Contest::new); - ContestBorder currentResultRank = getContestRank(contest, request.getCr_tv()); - if (request.getCr_if() == 0) { - // Do contest is playing - profile.setContestNowPlayingEnable(true); - profile.setContestNowPlayingId(request.getCr_cid()); - profile.setContestNowPlayingResultRank(currentResultRank); - profile.setContestNowPlayingValue(request.getCr_tv()); - profile.setContestNowPlayingSpecifier(String.join(",", request.getCr_sp())); - } else { - PlayerContest contestRecord = playerContestRepository.findByPdIdAndContestId(profile, request.getCr_cid()).orElseGet(() -> new PlayerContest(profile, request.getCr_cid())); - contestRecord.setStartCount(contestRecord.getStartCount() + 1); - contestRecord.setBestValue(Math.max(contestRecord.getBestValue(), request.getCr_tv())); - contestRecord.setResultRank(currentResultRank.getValue() > contestRecord.getResultRank().getValue() ? currentResultRank : contestRecord.getResultRank()); - contestRecord.setLastUpdateTime(LocalDateTime.now()); - - playerContestRepository.save(contestRecord); - profile.setContestNowPlayingEnable(false); - profile.setContestNowPlayingId(-1); - profile.setContestNowPlayingResultRank(ContestBorder.NONE); - profile.setContestNowPlayingValue(-1); - profile.setContestNowPlayingSpecifier(getDummyString("-1", 60)); - } - } - - playerProfileService.save(profile); - gameSessionRepository.delete(session); - - - BaseResponse response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "ok" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - - private ContestBorder getContestRank(Contest contest, int value) { - if (value >= contest.getGoldBorders()) return ContestBorder.GOLD; - if (value >= contest.getSliverBorders()) return ContestBorder.SILVER; - if (value >= contest.getBronzeBorders()) return ContestBorder.BRONZE; - return ContestBorder.NONE; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.kt new file mode 100644 index 00000000..14d45e86 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/EndHandler.kt @@ -0,0 +1,83 @@ +package icu.samnyan.aqua.sega.diva.handler.user + +import icu.samnyan.aqua.sega.diva.DIVA_OK +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.StageResultRequest +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.Edition +import icu.samnyan.aqua.sega.diva.model.common.SortMode +import icu.samnyan.aqua.sega.diva.model.db.gamedata.Contest +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerContest +import icu.samnyan.aqua.sega.diva.util.DivaStringUtils +import org.springframework.stereotype.Component +import java.lang.String +import java.time.LocalDateTime +import java.util.function.Supplier +import kotlin.Any +import kotlin.Int +import kotlin.math.max + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class EndHandler(val db: DivaRepos) { + fun handle(request: StageResultRequest): Any { + val (profile, session) = db.session(request.pd_id) + + profile.headphoneVolume = request.hp_vol + profile.buttonSeOn = request.btn_se_vol + profile.buttonSeVolume = request.btn_se_vol2 + profile.sliderSeVolume = request.sldr_se_vol2 + profile.vocaloidPoints = session.vp + profile.level = session.levelNumber + profile.levelExp = session.levelExp + profile.nextPvId = request.nxt_pv_id + profile.nextDifficulty = Difficulty.fromValue(request.nxt_dffclty) + profile.nextEdition = Edition.fromValue(request.nxt_edtn) + profile.sortMode = SortMode.fromValue(request.sort_kind) + + if (request.cr_cid != -1) { + val contest = db.g.contest.findById(request.cr_cid).orElseGet(Supplier { Contest() }) + val currentResultRank = getContestRank(contest, request.cr_tv) + if (request.cr_if == 0) { + // Do contest is playing + profile.contestNowPlayingEnable = true + profile.contestNowPlayingId = request.cr_cid + profile.contestNowPlayingResultRank = currentResultRank + profile.contestNowPlayingValue = request.cr_tv + profile.contestNowPlayingSpecifier = String.join(",", *request.cr_sp) + } else { + val contestRecord = + db.contest.findByPdIdAndContestId(profile, request.cr_cid).orElseGet( + Supplier { PlayerContest(profile, request.cr_cid) }) + contestRecord.startCount += 1 + contestRecord.bestValue = max(contestRecord.bestValue, request.cr_tv) + contestRecord.resultRank = if (currentResultRank.value > contestRecord.resultRank + .value + ) currentResultRank else contestRecord.resultRank + contestRecord.lastUpdateTime = LocalDateTime.now() + + db.contest.save(contestRecord) + profile.contestNowPlayingEnable = false + profile.contestNowPlayingId = -1 + profile.contestNowPlayingResultRank = ContestBorder.NONE + profile.contestNowPlayingValue = -1 + profile.contestNowPlayingSpecifier = DivaStringUtils.getDummyString("-1", 60) + } + } + + db.profile.save(profile) + db.gameSession.delete(session) + + return DIVA_OK + } + + private fun getContestRank(contest: Contest, value: Int): ContestBorder { + if (value >= contest.goldBorders) return ContestBorder.GOLD + if (value >= contest.sliverBorders) return ContestBorder.SILVER + if (value >= contest.bronzeBorders) return ContestBorder.BRONZE + return ContestBorder.NONE + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.java deleted file mode 100644 index 2587a2a8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.user; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.userdata.GameSession; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class PdUnlockHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PdUnlockHandler.class); - private final PlayerProfileService playerProfileService; - private final GameSessionRepository gameSessionRepository; - - public String handle(PdUnlockRequest request) { - - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - gameSessionRepository.delete(session); - - BaseResponse response = new BaseResponse( - request.getCmd(), - request.getReq_id(), - "ok" - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.kt new file mode 100644 index 00000000..332d3d80 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PdUnlockHandler.kt @@ -0,0 +1,17 @@ +package icu.samnyan.aqua.sega.diva.handler.user + +import icu.samnyan.aqua.sega.diva.DIVA_OK +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.PdUnlockRequest +import org.springframework.stereotype.Component + +@Component +class PdUnlockHandler(val db: DivaRepos) { + fun handle(request: PdUnlockRequest): Any { + val (_, session) = db.session(request.pd_id) + + db.gameSession.delete(session) + + return DIVA_OK + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.java deleted file mode 100644 index 9012e2e8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.java +++ /dev/null @@ -1,120 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.user; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.request.user.PreStartRequest; -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.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.Optional; -import java.util.concurrent.ThreadLocalRandom; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class PreStartHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(PreStartHandler.class); - private final PlayerProfileService playerProfileService; - private final GameSessionRepository gameSessionRepository; - - public String handle(PreStartRequest request) { - Optional profileOptional = playerProfileService.findByPdId(request.getAime_id()); - PreStartResponse response; - boolean normalStart = false; - if (profileOptional.isEmpty()) { - response = new PreStartResponse( - request.getCmd(), - request.getReq_id(), - "ok", - PreStartResult.NEW_REGISTRATION); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } else { - PlayerProfile profile = profileOptional.get(); - - Optional sessionOptional = gameSessionRepository.findByPdId(profile); - if (sessionOptional.isPresent()) { - GameSession session = sessionOptional.get(); - if (!session.getLastUpdateTime().isBefore(LocalDateTime.now().minusMinutes(5)) && session.getStartMode() == StartMode.START) { - - response = new PreStartResponse( - request.getCmd(), - request.getReq_id(), - "ok", - PreStartResult.ALREADY_PLAYING - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } else { - gameSessionRepository.delete(session); - } - } - - GameSession session = new GameSession( - ThreadLocalRandom.current().nextInt(100, 99999), - profile, - StartMode.PRE_START, - LocalDateTime.now(), - LocalDateTime.now(), - -1, - -1, - -1, - profile.getLevel(), - profile.getLevelExp(), - profile.getLevel(), - profile.getLevelExp(), - profile.getVocaloidPoints() - ); - - gameSessionRepository.save(session); - - response = new PreStartResponse( - request.getCmd(), - request.getReq_id(), - "ok", - PreStartResult.SUCCESS, - session.getAcceptId(), - profile.getPdId(), - profile.getPlayerName(), - profile.getSortMode(), - profile.getLevel(), - profile.getLevelExp(), - profile.getLevelTitle(), - profile.getPlateEffectId(), - profile.getPlateId(), - profile.getCommonModule(), - profile.getCommonModuleSetTime(), - profile.getCommonSkin(), - profile.getButtonSe(), - profile.getSlideSe(), - profile.getChainSlideSe(), - profile.getSliderTouchSe(), - profile.getVocaloidPoints(), - profile.getPasswordStatus() - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.kt new file mode 100644 index 00000000..e6810401 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/PreStartHandler.kt @@ -0,0 +1,72 @@ +package icu.samnyan.aqua.sega.diva.handler.user + +import ext.invoke +import ext.logger +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.PreStartRequest +import icu.samnyan.aqua.sega.diva.model.PreStartResponse +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.db.userdata.GameSession +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.util.concurrent.ThreadLocalRandom + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class PreStartHandler(val db: DivaRepos) { + var logger = logger() + fun handle(request: PreStartRequest): Any { + val profile = db.profile.findByPdId(request.aime_id)() ?: return PreStartResponse(PreStartResult.NEW_REGISTRATION) + + db.gameSession.findByPdId(profile)()?.let { session -> + if (!session.lastUpdateTime.isBefore(LocalDateTime.now().minusMinutes(5)) && session.startMode == StartMode.START) { + return PreStartResponse(PreStartResult.ALREADY_PLAYING) + } else { + db.gameSession.delete(session) + } + } + + val session = GameSession( + ThreadLocalRandom.current().nextInt(100, 99999), + profile, + StartMode.PRE_START, + LocalDateTime.now(), + LocalDateTime.now(), + -1, + -1, + -1, + profile.level, + profile.levelExp, + profile.level, + profile.levelExp, + profile.vocaloidPoints + ) + + db.gameSession.save(session) + + return PreStartResponse( + PreStartResult.SUCCESS, + session.acceptId, + profile.pdId, + profile.playerName, + profile.sortMode, + profile.level, + profile.levelExp, + profile.levelTitle, + profile.plateEffectId, + profile.plateId, + profile.commonModule, + profile.commonModuleSetTime, + profile.commonSkin, + profile.buttonSe, + profile.slideSe, + profile.chainSlideSe, + profile.sliderTouchSe, + profile.vocaloidPoints, + profile.passwordStatus + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.java deleted file mode 100644 index 0d40341d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.user; - -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -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.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import icu.samnyan.aqua.sega.diva.util.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class SpendCreditHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(SpendCreditHandler.class); - private final PlayerProfileService playerProfileService; - - public String handle(SpendCreditRequest request) { - - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - - SpendCreditResponse response = new SpendCreditResponse( - request.getCmd(), - request.getReq_id(), - "ok", - "-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x", - 0, - profile.getVocaloidPoints(), - profile.getLevelTitle(), - profile.getPlateEffectId(), - profile.getPlateId() - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.kt new file mode 100644 index 00000000..748a1b3c --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/SpendCreditHandler.kt @@ -0,0 +1,25 @@ +package icu.samnyan.aqua.sega.diva.handler.user + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.SpendCreditRequest +import icu.samnyan.aqua.sega.diva.model.SpendCreditResponse +import org.springframework.stereotype.Component + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class SpendCreditHandler(val db: DivaRepos) { + fun handle(request: SpendCreditRequest): Any { + val profile = db.profile(request.pd_id) + + return SpendCreditResponse( + "-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x,-1,-1,x,-1,-1,x,x,-1,x", + 0, + profile.vocaloidPoints, + profile.levelTitle, + profile.plateEffectId, + profile.plateId + ) + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.java b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.java deleted file mode 100644 index 654bf080..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.java +++ /dev/null @@ -1,231 +0,0 @@ -package icu.samnyan.aqua.sega.diva.handler.user; - -import icu.samnyan.aqua.sega.diva.dao.userdata.GameSessionRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerContestRepository; -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerPvRecordRepository; -import icu.samnyan.aqua.sega.diva.exception.ProfileNotFoundException; -import icu.samnyan.aqua.sega.diva.exception.PvRecordDataException; -import icu.samnyan.aqua.sega.diva.exception.SessionNotFoundException; -import icu.samnyan.aqua.sega.diva.handler.BaseHandler; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.common.StartMode; -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.request.user.StartRequest; -import icu.samnyan.aqua.sega.diva.model.response.user.StartResponse; -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.PlayerProfile; -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.DivaMapper; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -@AllArgsConstructor -public class StartHandler extends BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(StartHandler.class); - private final PlayerProfileService playerProfileService; - private final GameSessionRepository gameSessionRepository; - private final PlayerCustomizeService playerCustomizeService; - private final PlayerModuleService playerModuleService; - private final PlayerPvRecordRepository playerPvRecordRepository; - private final PlayerContestRepository playerContestRepository; - - public String handle(StartRequest request) { - - PlayerProfile profile = playerProfileService.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new); - GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new); - - session.setStartMode(StartMode.START); - gameSessionRepository.save(session); - - String module_have = playerModuleService.getModuleHaveString(profile); - String customize_have = playerCustomizeService.getModuleHaveString(profile); - - Map contestResult = getContestResult(profile); - - int border = profile.isShowGreatBorder() ? 1 : 0; - border = border | ((profile.isShowExcellentBorder() ? 1 : 0) << 1); - border = border | ((profile.isShowRivalBorder() ? 1 : 0) << 2); - - StartResponse response = new StartResponse( - request.getCmd(), - request.getReq_id(), - "ok", - profile.getPdId(), - Result.SUCCESS, - session.getAcceptId(), - session.getAcceptId(), - profile.getPlayerName(), - profile.getHeadphoneVolume(), - profile.isButtonSeOn(), - profile.getButtonSeVolume(), - profile.getSliderSeVolume(), - profile.getSortMode(), - profile.getLevel(), - profile.getLevelExp(), - profile.getLevelTitle(), - profile.getPlateEffectId(), - profile.getPlateId(), - profile.getCommonModule(), - profile.getCommonCustomizeItems(), - profile.getModuleSelectItemFlag(), - LocalDateTime.now(), - module_have, - customize_have, - profile.isPreferPerPvModule(), - profile.isPreferCommonModule(), - profile.isUsePerPvSkin(), - profile.isUsePerPvButtonSe(), - profile.isUsePerPvSliderSe(), - profile.isUsePerPvChainSliderSe(), - profile.isUsePerPvTouchSliderSe(), - profile.getVocaloidPoints(), - profile.getNextPvId(), - profile.getNextDifficulty(), - profile.getNextEdition(), - contestResult.get("cv_cid"), // contest progress - contestResult.get("cv_sc"), - contestResult.get("cv_rr"), - contestResult.get("cv_bv"), - contestResult.get("cv_bf"), - profile.isContestNowPlayingEnable() ? profile.getContestNowPlayingId() : -1, - profile.getContestNowPlayingValue(), - profile.getContestNowPlayingResultRank(), - profile.getContestNowPlayingSpecifier(), - profile.getMyList0(), - profile.getMyList1(), - profile.getMyList2(), - null, - null, -// getDummyString("-1", 40), -// getDummyString("-1", 40), - String.valueOf(border), - profile.isShowInterimRanking(), - profile.isShowClearStatus(), - countClearStatus(profile), - profile.isShowRgoSetting(), - null, // Currently quest not working - null, - null, - null, - null, - null - ); - - String resp = this.build(mapper.toMap(response)); - logger.info("Response: {}", resp); - - return resp; - } - - private String countClearStatus(PlayerProfile profile) { - List pvRecordList = playerPvRecordRepository.findByPdId(profile); - ClearTally clearTally = new ClearTally(); - pvRecordList.forEach(x -> { - switch (x.getEdition()) { - case ORIGINAL: { - switch (x.getResult()) { - case CHEAP: - getDiff(x, clearTally).addClear(); - break; - case STANDARD: - getDiff(x, clearTally).addClear(); - break; - case GREAT: - getDiff(x, clearTally).addGreat(); - break; - case EXCELLENT: - getDiff(x, clearTally).addExcellent(); - break; - case PERFECT: - getDiff(x, clearTally).addPerfect(); - break; - } - break; - } - case EXTRA: { - switch (x.getResult()) { - case CHEAP: - clearTally.getExtraExtreme().addClear(); - break; - case STANDARD: - clearTally.getExtraExtreme().addClear(); - break; - case GREAT: - clearTally.getExtraExtreme().addGreat(); - break; - case EXCELLENT: - clearTally.getExtraExtreme().addExcellent(); - break; - case PERFECT: - clearTally.getExtraExtreme().addPerfect(); - break; - } - } - } - }); - return clearTally.toInternal(); - } - - private ClearSet getDiff(PlayerPvRecord record, ClearTally clearTally) { - switch (record.getDifficulty()) { - case EASY: - return clearTally.getEasy(); - case NORMAL: - return clearTally.getNormal(); - case HARD: - return clearTally.getHard(); - case EXTREME: - return clearTally.getExtreme(); - default: - throw new PvRecordDataException("Difficulty data not exist, record id:" + record.getId()); - } - } - - private Map getContestResult(PlayerProfile profile) { - List cv_cid = new LinkedList<>(); - List cv_sc = new LinkedList<>(); - List cv_rr = new LinkedList<>(); - List cv_bv = new LinkedList<>(); - List cv_bf = new LinkedList<>(); - List contestList = playerContestRepository.findTop4ByPdIdOrderByLastUpdateTimeDesc(profile); - contestList.forEach(x -> { - cv_cid.add(x.getContestId()); - cv_sc.add(x.getStartCount()); - cv_rr.add(x.getResultRank().getValue()); - cv_bv.add(x.getBestValue()); - cv_bf.add(-1); - }); - for (int i = cv_cid.size(); i < 4; i++) { - cv_cid.add(-1); - cv_sc.add(-1); - cv_rr.add(-1); - cv_bv.add(-1); - cv_bf.add(-1); - } - Map result = new HashMap<>(); - result.put("cv_cid", cv_cid.stream().map(Object::toString).collect(Collectors.joining(","))); - result.put("cv_sc", cv_sc.stream().map(Object::toString).collect(Collectors.joining(","))); - result.put("cv_rr", cv_rr.stream().map(Object::toString).collect(Collectors.joining(","))); - result.put("cv_bv", cv_bv.stream().map(Object::toString).collect(Collectors.joining(","))); - result.put("cv_bf", cv_bf.stream().map(Object::toString).collect(Collectors.joining(","))); - return result; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.kt b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.kt new file mode 100644 index 00000000..79af9090 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/handler/user/StartHandler.kt @@ -0,0 +1,168 @@ +package icu.samnyan.aqua.sega.diva.handler.user + +import icu.samnyan.aqua.sega.diva.DivaRepos +import icu.samnyan.aqua.sega.diva.model.StartRequest +import icu.samnyan.aqua.sega.diva.model.StartResponse +import icu.samnyan.aqua.sega.diva.model.common.* +import icu.samnyan.aqua.sega.diva.model.common.collection.ClearTally +import icu.samnyan.aqua.sega.diva.model.db.userdata.GameSession +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerContest +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerProfile +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvRecord +import icu.samnyan.aqua.sega.diva.util.PvRecordDataException +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.util.* +import java.util.function.Consumer +import java.util.stream.Collectors + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Component +class StartHandler(val db: DivaRepos) { + fun handle(request: StartRequest): Any { + val (profile, session) = db.session(request.pd_id) + + session.startMode = StartMode.START + db.gameSession.save(session) + + val module_have = db.s.module.getModuleHaveString(profile) + val customize_have = db.s.customize.getModuleHaveString(profile) + + val contestResult = getContestResult(profile) + + var border = if (profile.showGreatBorder) 1 else 0 + border = border or ((if (profile.showExcellentBorder) 1 else 0) shl 1) + border = border or ((if (profile.showRivalBorder) 1 else 0) shl 2) + + return StartResponse( + profile.pdId, + Result.SUCCESS, + session.acceptId, + session.acceptId, + profile.playerName, + profile.headphoneVolume, + profile.buttonSeOn, + profile.buttonSeVolume, + profile.sliderSeVolume, + profile.sortMode, + profile.level, + profile.levelExp, + profile.levelTitle, + profile.plateEffectId, + profile.plateId, + profile.commonModule, + profile.commonCustomizeItems, + profile.moduleSelectItemFlag, + LocalDateTime.now(), + module_have, + customize_have, + profile.preferPerPvModule, + profile.preferCommonModule, + profile.usePerPvSkin, + profile.usePerPvButtonSe, + profile.usePerPvSliderSe, + profile.usePerPvChainSliderSe, + profile.usePerPvTouchSliderSe, + profile.vocaloidPoints, + profile.nextPvId, + profile.nextDifficulty, + profile.nextEdition, + contestResult["cv_cid"], // contest progress + contestResult["cv_sc"], + contestResult["cv_rr"], + contestResult["cv_bv"], + contestResult["cv_bf"], + if (profile.contestNowPlayingEnable) profile.contestNowPlayingId else -1, + profile.contestNowPlayingValue, + profile.contestNowPlayingResultRank, + profile.contestNowPlayingSpecifier, + profile.myList0, + profile.myList1, + profile.myList2, + null, + null, + border.toString(), + profile.showInterimRanking, + profile.showClearStatus, + countClearStatus(profile), + profile.showRgoSetting, + null, // Currently quest not working + null, + null, + null, + null, + null + ) + } + + private fun countClearStatus(profile: PlayerProfile): String { + val pvRecordList = db.pvRecord.findByPdId(profile) + val clearTally = ClearTally() + pvRecordList.forEach(Consumer { x: PlayerPvRecord -> + when (x.edition) { + Edition.ORIGINAL -> { + when (x.result) { + ClearResult.CHEAP -> getDiff(x, clearTally).addClear() + ClearResult.STANDARD -> getDiff(x, clearTally).addClear() + ClearResult.GREAT -> getDiff(x, clearTally).addGreat() + ClearResult.EXCELLENT -> getDiff(x, clearTally).addExcellent() + ClearResult.PERFECT -> getDiff(x, clearTally).addPerfect() + else -> {} + } + } + + Edition.EXTRA -> { + when (x.result) { + ClearResult.CHEAP -> clearTally.extraExtreme.addClear() + ClearResult.STANDARD -> clearTally.extraExtreme.addClear() + ClearResult.GREAT -> clearTally.extraExtreme.addGreat() + ClearResult.EXCELLENT -> clearTally.extraExtreme.addExcellent() + ClearResult.PERFECT -> clearTally.extraExtreme.addPerfect() + else -> {} + } + } + } + }) + return clearTally.toInternal() + } + + private fun getDiff(record: PlayerPvRecord, clearTally: ClearTally) = when (record.difficulty) { + Difficulty.EASY -> clearTally.easy + Difficulty.NORMAL -> clearTally.normal + Difficulty.HARD -> clearTally.hard + Difficulty.EXTREME -> clearTally.extreme + else -> throw PvRecordDataException("Difficulty data not exist, record id:" + record.id) + } + + private fun getContestResult(profile: PlayerProfile): MutableMap { + val cv_cid: MutableList = LinkedList() + val cv_sc: MutableList = LinkedList() + val cv_rr: MutableList = LinkedList() + val cv_bv: MutableList = LinkedList() + val cv_bf: MutableList = LinkedList() + val contestList = db.contest.findTop4ByPdIdOrderByLastUpdateTimeDesc(profile) + contestList.forEach(Consumer { x: PlayerContest -> + cv_cid.add(x.contestId) + cv_sc.add(x.startCount) + cv_rr.add(x.resultRank.value) + cv_bv.add(x.bestValue) + cv_bf.add(-1) + }) + for (i in cv_cid.size..3) { + cv_cid.add(-1) + cv_sc.add(-1) + cv_rr.add(-1) + cv_bv.add(-1) + cv_bf.add(-1) + } + val result: MutableMap = HashMap() + result["cv_cid"] = cv_cid.stream().map { it.toString() }.collect(Collectors.joining(",")) + result["cv_sc"] = cv_sc.stream().map { it.toString() }.collect(Collectors.joining(",")) + result["cv_rr"] = cv_rr.stream().map { it.toString() }.collect(Collectors.joining(",")) + result["cv_bv"] = cv_bv.stream().map { it.toString() }.collect(Collectors.joining(",")) + result["cv_bf"] = cv_bf.stream().map { it.toString() }.collect(Collectors.joining(",")) + return result + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/DivaRequestModels.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/DivaRequestModels.kt new file mode 100644 index 00000000..98292f25 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/DivaRequestModels.kt @@ -0,0 +1,142 @@ +package icu.samnyan.aqua.sega.diva.model + +import java.time.ZonedDateTime + +/** + * Data format from https://dev.s-ul.eu/mikumiku/minime/wikis/home + * + * @author samnyan (privateamusement@protonmail.com) + */ +open class BaseRequest { + var game_id: String = "" // Game Id + var place_id: String = "" // Place Id + var time_stamp: ZonedDateTime = ZonedDateTime.now() // Timestamp +} + +open class PdRequest : BaseRequest() { + var pd_id: Long = 0 +} + +class StageResultRequest : PdRequest() { + var hp_vol: Int = 0 + var btn_se_vol: Boolean = false + var btn_se_vol2: Int = 0 + var sldr_se_vol2: Int = 0 + var nxt_pv_id: Int = 0 + var nxt_dffclty: Int = 0 + var nxt_edtn: Int = 0 + var sort_kind: Int = 0 + var game_type: Int = 0 + var stg_difficulty: IntArray = intArrayOf() + var stg_edtn: IntArray = intArrayOf() + var stg_ply_pv_id: IntArray = intArrayOf() + var stg_scrpt_ver: IntArray = intArrayOf() + var stg_score: IntArray = intArrayOf() + var stg_chllng_kind: IntArray = intArrayOf() + var stg_chllng_result: IntArray = intArrayOf() + var stg_clr_kind: IntArray = intArrayOf() + var stg_vcld_pts: IntArray = intArrayOf() + var stg_cool_cnt: IntArray = intArrayOf() + var stg_cool_pct: IntArray = intArrayOf() + var stg_fine_cnt: IntArray = intArrayOf() + var stg_fine_pct: IntArray = intArrayOf() + var stg_safe_cnt: IntArray = intArrayOf() + var stg_safe_pct: IntArray = intArrayOf() + var stg_sad_cnt: IntArray = intArrayOf() + var stg_sad_pct: IntArray = intArrayOf() + var stg_wt_wg_cnt: IntArray = intArrayOf() + var stg_wt_wg_pct: IntArray = intArrayOf() + + var stg_max_cmb: IntArray = intArrayOf() + var stg_chance_tm: IntArray = intArrayOf() + var stg_sm_hl: IntArray = intArrayOf() + var stg_atn_pnt: IntArray = intArrayOf() + var stg_skin_id: IntArray = intArrayOf() + var stg_btn_se: IntArray = intArrayOf() + var stg_btn_se_vol: IntArray = intArrayOf() + var stg_sld_se: IntArray = intArrayOf() + var stg_chn_sld_se: IntArray = intArrayOf() + var stg_sldr_tch_se: IntArray = intArrayOf() + var stg_mdl_id: IntArray = intArrayOf() + var stg_cpt_rslt: IntArray = intArrayOf() + var stg_sld_scr: IntArray = intArrayOf() + var stg_vcl_chg: IntArray = intArrayOf() + var stg_c_itm_id: IntArray = intArrayOf() + var stg_rgo: IntArray = intArrayOf() + var stg_ss_num: IntArray = intArrayOf() + + var cr_cid: Int = 0 + var cr_tv: Int = 0 + var cr_if: Int = 0 + var cr_sp: Array = arrayOf() +} + +class StageStartRequest : PdRequest() { + var stg_ply_pv_id: IntArray = intArrayOf() +} + +class StartRequest : PdRequest() { +} + +class StoreSsRequest : PdRequest() { + var ss_mdl_id: IntArray = intArrayOf() + var ss_c_itm_id: IntArray = intArrayOf() +} + +class SpendCreditRequest : PdRequest() { +} + +class ShopExitRequest : PdRequest() { + var use_pv_mdl_eqp = 0 + var ply_pv_id = 0 + var mdl_eqp_cmn_ary: IntArray = intArrayOf() + var c_itm_eqp_cmn_ary: IntArray = intArrayOf() + var ms_itm_flg_cmn_ary: IntArray = intArrayOf() + var mdl_eqp_pv_ary: IntArray = intArrayOf() + var c_itm_eqp_pv_ary: IntArray = intArrayOf() + var ms_itm_flg_pv_ary: IntArray = intArrayOf() +} + +class RegistrationRequest : BaseRequest() { + var idm: String = "" + var aime_id: Long = 0 + var player_name: String = "" +} + +class PsRankingRequest : BaseRequest() { + var rnk_ps_pv_id_lst: IntArray = intArrayOf() + var rnk_ps_idx = 0 +} + +class PreStartRequest : BaseRequest() { + var idm: String = "" + var aime_id: Long = 0 +} + +class PdUnlockRequest : PdRequest() { +} + +class GetPvPdRequest : PdRequest() { + var difficulty = 0 + var pd_pv_id_lst: IntArray = intArrayOf() +} + +class ChangePasswdRequest : PdRequest() { + var new_passwd: String = "" +} + +class ChangeNameRequest : PdRequest() { + var player_name: String = "" +} + +class CardProcedureRequest : BaseRequest() { + var aime_id: Long = 0 +} + +class BuyModuleRequest : PdRequest() { + var mdl_id = 0 +} + +class BuyCstmzItmRequest : PdRequest() { + var cstmz_itm_id = 0 +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/DivaResponse.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/DivaResponse.kt new file mode 100644 index 00000000..cc341d52 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/DivaResponse.kt @@ -0,0 +1,599 @@ +@file:Suppress("unused") + +package icu.samnyan.aqua.sega.diva.model + +import icu.samnyan.aqua.sega.diva.model.common.* +import icu.samnyan.aqua.sega.diva.util.URIEncoder +import java.time.LocalDateTime + +class CardProcedureResponse { + var cd_adm_result: Result? + var chg_name_price = 100 + var accept_idx = 0 + var pd_id: Long = 0 + var player_name: String? = null + var lv_num: Int? = null + var lv_pnt: Int? = null + var lv_str: String? = null + var lv_efct_id: Int? = null + var lv_plt_id: Int? = null + var vcld_pts: Int? = null + var passwd_stat: PassStat? = null + + constructor( + cd_adm_result: Result?, + chg_name_price: Int, + accept_idx: Int, + pd_id: Long, + player_name: String?, + lv_num: Int?, + lv_pnt: Int?, + lv_str: String?, + lv_efct_id: Int?, + lv_plt_id: Int?, + vcld_pts: Int?, + passwd_stat: PassStat? + ) { + this.cd_adm_result = cd_adm_result + this.chg_name_price = chg_name_price + this.accept_idx = accept_idx + this.pd_id = pd_id + this.player_name = player_name + this.lv_num = lv_num + this.lv_pnt = lv_pnt + this.lv_str = lv_str + this.lv_efct_id = lv_efct_id + this.lv_plt_id = lv_plt_id + this.vcld_pts = vcld_pts + this.passwd_stat = passwd_stat + } + + constructor(cd_adm_result: Result?) { + this.cd_adm_result = cd_adm_result + } +} + +class ChangeNameResponse( + var cd_adm_result: Result?, + var accept_idx: Int, + var pd_id: Long, + var player_name: String? +) + +class ChangePasswdResponse(var cd_adm_result: Result?, var accept_idx: Int, var pd_id: Long) +class RegistrationResponse(var cd_adm_result: Result?, var pd_id: Long) +class ContestInfoResponse(var ci_lut: LocalDateTime?, var ci_str: String?) +class FestaInfoResponse( + var fi_id: String?, + var fi_name: String?, + var fi_kind: String?, + var fi_difficulty: String?, + var fi_pv_id_lst: String?, + var fi_attr: String?, + var fi_add_vp: String?, + var fi_mul_vp: String?, + var fi_st: String?, + var fi_et: String?, + var fi_lut: String? +) + +class NvRankingResponse( + var rnk_nv_tag_str: String?, + var rnk_nv_ts: LocalDateTime?, + var rnk_nv_data: String?, + var rnk_nv_lut: LocalDateTime? +) + +class PsRankingResponse( + var rnk_ps_lut: LocalDateTime?, + var rnk_ps_ts: LocalDateTime?, + var rnk_ps_dffclty: Int, + var rnk_ps_pv_id: String?, + var rnk_ps_edtn1: String?, + var rnk_ps_edtn2: String?, + var rnk_ps_edtn3: String?, + var rnk_ps_scr1: String?, + var rnk_ps_scr2: String?, + var rnk_ps_scr3: String?, + var rnk_ps_nm1: String?, + var rnk_ps_nm2: String?, + var rnk_ps_nm3: String? +) + +class PvListResponse(var pvl_lut: LocalDateTime?, var pv_lst: String?) +class ShopCatalogResponse(var shp_ctlg_lut: LocalDateTime?, var shp_ctlg: String?) +class BuyCstmzItmResponse { + var shp_rslt: Result? + var cstmz_itm_id = 0 + var cstmz_itm_have: String? = null + var vcld_pts = 0 + + constructor(shp_rslt: Result?, cstmz_itm_id: Int, cstmz_itm_have: String?, vcld_pts: Int) { + this.shp_rslt = shp_rslt + this.cstmz_itm_id = cstmz_itm_id + this.cstmz_itm_have = cstmz_itm_have + this.vcld_pts = vcld_pts + } + + constructor(shp_rslt: Result?) { + this.shp_rslt = shp_rslt + } +} + +class BuyModuleResponse { + var shp_rslt: Result? + var mdl_id = 0 + var mdl_have: String? = null + var vcld_pts = 0 + + constructor(shp_rslt: Result?, mdl_id: Int, mdl_have: String?, vcld_pts: Int) { + this.shp_rslt = shp_rslt + this.mdl_id = mdl_id + this.mdl_have = mdl_have + this.vcld_pts = vcld_pts + } + + constructor(shp_rslt: Result?) { + this.shp_rslt = shp_rslt + } +} + +class GetPvPdResponse(var pd_by_pv_id: String?, var pdddt_flg: Boolean?, var pdddt_tm: String?) +class ShopExitResponse(var shp_rslt: Result?) +class StageResultResponse { + var chllng_kind = 0 + var lv_num_old = 0 + var lv_pnt_old = 0 + var lv_num = 0 + var lv_pnt = 0 + var lv_str: String? = null + var lv_efct_id = 0 + var lv_plt_id = 0 + var vcld_pts = 0 + var prsnt_vcld_pts = 0 + var cnp_cid = 0 + var cnp_var = 0 + var cnp_sp: String? = null + var crwd_kind: String? = "-1,-1,-1" + var crwd_varue: String? = "-1,-1,-1" + var crwd_str_0: String? = "***,***,***" + var crwd_str_1: String? = "***,***,***" + var cerwd_kind = -1 + var cerwd_varue = -1 + var cerwd_str_0: String? = "***" + var cerwd_str_1: String? = "***" + var ttl_str_ary: String? = "xxx" + var ttl_plt_id_ary: String? = "-1,-1,-1,-1,-1" + var ttl_desc_ary: String? = "xxx" + var skin_id_ary: String? = "xxx" + var skin_name_ary: String? = "xxx" + var skin_illust_ary: String? = "xxx" + var skin_desc_ary: String? = "xxx" + var pdddt_flg = 0 + var pdddt_tm: LocalDateTime? = null + var nblss_ltt_stts = -1 + var nblss_ltt_tckt = -1 + var nblss_ltt_is_opn = 0 + var nblss_ltt_prz = 0 + var nblss_ltt_nxt_stts = 0 + var nblss_ltt_nxt_tckt = -1 + var my_qst_id: String? = null + var my_qst_r_qid: String? = null + var my_qst_r_knd: String? = null + var my_qst_r_vl: String? = null + var my_qst_r_nflg: String? = null + var my_ccd_r_qid: String? = null + var my_ccd_r_hnd: String? = null + var my_ccd_r_vp: String? = null + + constructor() + + constructor( + chllng_kind: Int, + lv_num_old: Int, + lv_pnt_old: Int, + lv_num: Int, + lv_pnt: Int, + lv_str: String?, + lv_efct_id: Int, + lv_plt_id: Int, + vcld_pts: Int, + prsnt_vcld_pts: Int, + cnp_cid: Int, + cnp_var: Int, + cnp_sp: String?, + crwd_kind: String?, + crwd_varue: String?, + crwd_str_0: String?, + crwd_str_1: String?, + cerwd_kind: Int, + cerwd_varue: Int, + cerwd_str_0: String?, + cerwd_str_1: String?, + ttl_str_ary: String?, + ttl_plt_id_ary: String?, + ttl_desc_ary: String?, + skin_id_ary: String?, + skin_name_ary: String?, + skin_illust_ary: String?, + skin_desc_ary: String?, + pdddt_flg: Int, + pdddt_tm: LocalDateTime?, + nblss_ltt_stts: Int, + nblss_ltt_tckt: Int, + nblss_ltt_is_opn: Int, + nblss_ltt_prz: Int, + nblss_ltt_nxt_stts: Int, + nblss_ltt_nxt_tckt: Int, + my_qst_id: String?, + my_qst_r_qid: String?, + my_qst_r_knd: String?, + my_qst_r_vl: String?, + my_qst_r_nflg: String?, + my_ccd_r_qid: String?, + my_ccd_r_hnd: String?, + my_ccd_r_vp: String? + ) { + this.chllng_kind = chllng_kind + this.lv_num_old = lv_num_old + this.lv_pnt_old = lv_pnt_old + this.lv_num = lv_num + this.lv_pnt = lv_pnt + this.lv_str = lv_str + this.lv_efct_id = lv_efct_id + this.lv_plt_id = lv_plt_id + this.vcld_pts = vcld_pts + this.prsnt_vcld_pts = prsnt_vcld_pts + this.cnp_cid = cnp_cid + this.cnp_var = cnp_var + this.cnp_sp = cnp_sp + this.crwd_kind = crwd_kind + this.crwd_varue = crwd_varue + this.crwd_str_0 = crwd_str_0 + this.crwd_str_1 = crwd_str_1 + this.cerwd_kind = cerwd_kind + this.cerwd_varue = cerwd_varue + this.cerwd_str_0 = cerwd_str_0 + this.cerwd_str_1 = cerwd_str_1 + this.ttl_str_ary = ttl_str_ary + this.ttl_plt_id_ary = ttl_plt_id_ary + this.ttl_desc_ary = ttl_desc_ary + this.skin_id_ary = skin_id_ary + this.skin_name_ary = skin_name_ary + this.skin_illust_ary = skin_illust_ary + this.skin_desc_ary = skin_desc_ary + this.pdddt_flg = pdddt_flg + this.pdddt_tm = pdddt_tm + this.nblss_ltt_stts = nblss_ltt_stts + this.nblss_ltt_tckt = nblss_ltt_tckt + this.nblss_ltt_is_opn = nblss_ltt_is_opn + this.nblss_ltt_prz = nblss_ltt_prz + this.nblss_ltt_nxt_stts = nblss_ltt_nxt_stts + this.nblss_ltt_nxt_tckt = nblss_ltt_nxt_tckt + this.my_qst_id = my_qst_id + this.my_qst_r_qid = my_qst_r_qid + this.my_qst_r_knd = my_qst_r_knd + this.my_qst_r_vl = my_qst_r_vl + this.my_qst_r_nflg = my_qst_r_nflg + this.my_ccd_r_qid = my_ccd_r_qid + this.my_ccd_r_hnd = my_ccd_r_hnd + this.my_ccd_r_vp = my_ccd_r_vp + } +} + +class PreStartResponse { + var ps_result: PreStartResult? + var accept_idx: Int? = null + var nblss_ltt_stts: Int? = null + var nblss_ltt_tckt: Int? = null + var nblss_ltt_is_opn: Int? = null + + var pd_id: Long = 0 + var player_name: String? = null + var sort_kind: SortMode? = null + var lv_num: Int? = null + var lv_pnt: Int? = null + var lv_str: String? = null + var lv_efct_id: Int? = null + var lv_plt_id: Int? = null + var mdl_eqp_ary: String? = null + var mdl_eqp_tm: LocalDateTime? = null + var skn_eqp: Int? = null + var btn_se_eqp: Int? = null + var sld_se_eqp: Int? = null + var chn_sld_se_eqp: Int? = null + var sldr_tch_se_eqp: Int? = null + var vcld_pts: Int? = null + var passwd_stat: PassStat? = null + + constructor(ps_result: PreStartResult?) { + this.ps_result = ps_result + } + + constructor( + ps_result: PreStartResult?, + accept_idx: Int?, + pd_id: Long, + player_name: String?, + sort_kind: SortMode?, + lv_num: Int?, + lv_pnt: Int?, + lv_str: String?, + lv_efct_id: Int?, + lv_plt_id: Int?, + mdl_eqp_ary: String?, + mdl_eqp_tm: LocalDateTime?, + skn_eqp: Int?, + btn_se_eqp: Int?, + sld_se_eqp: Int?, + chn_sld_se_eqp: Int?, + sldr_tch_se_eqp: Int?, + vcld_pts: Int?, + passwd_stat: PassStat? + ) { + this.ps_result = ps_result + this.accept_idx = accept_idx + this.nblss_ltt_stts = -1 + this.nblss_ltt_tckt = -1 + this.nblss_ltt_is_opn = -1 + this.pd_id = pd_id + this.player_name = player_name + this.sort_kind = sort_kind + this.lv_num = lv_num + this.lv_pnt = lv_pnt + this.lv_str = lv_str + this.lv_efct_id = lv_efct_id + this.lv_plt_id = lv_plt_id + this.mdl_eqp_ary = mdl_eqp_ary + this.mdl_eqp_tm = mdl_eqp_tm + this.skn_eqp = skn_eqp + this.btn_se_eqp = btn_se_eqp + this.sld_se_eqp = sld_se_eqp + this.chn_sld_se_eqp = chn_sld_se_eqp + this.sldr_tch_se_eqp = sldr_tch_se_eqp + this.vcld_pts = vcld_pts + this.passwd_stat = passwd_stat + } +} + +class PingResponse(ping_b_msg: String?, ping_m_msg: String?) { + var ping_b_msg: String? = URIEncoder.encode("Server Running No other news") + var ping_m_msg: String? = URIEncoder.encode("Network Service Running") + var atnd_lut: String? = null + var fi_lut: String? = null + var ci_lut: String? = null + var qi_lut: String? = null + var pvl_lut: String? = null + var pdcl_lut: String? = null + var pnml_lut: String? = null + var cinml_lut: String? = null + var rwl_lut: String? = null + var bdlol_lut: String? = null + var shp_ctlg_lut: String? = null + var cstmz_itm_ctlg_lut: String? = null + var ngwl_lut: String? = null + var rnk_nv_lut: String? = null + var rnk_ps_lut: String? = null + var bi_lut: String? = null + var cpi_lut: String? = null + var p_std_hc_lut: String? = null + var p_std_i_n_lut: String? = null + + var req_inv_cmd_num: String? = null + var req_inv_cmd_prm1: String? = null + var req_inv_cmd_prm2: String? = null + var req_inv_cmd_prm3: String? = null + var req_inv_cmd_prm4: String? = null + + var pow_save_flg = false + + var nblss_dnt_p = 0 + var nblss_ltt_rl_vp = 0 + var nblss_ex_ltt_flg = 0 + + var nblss_dnt_st_tm: String? = null + var nblss_dnt_ed_tm: String? = null + var nblss_ltt_st_tm: String? = null + var nblss_ltt_ed_tm: String? = null + + + init { + this.ping_b_msg = ping_b_msg + this.ping_m_msg = ping_m_msg + } +} + +class SpendCreditResponse( + var cmpgn_rslt: String?, + var cmpgn_rslt_num: Int, + var vcld_pts: Int, + var lv_str: String?, + var lv_efct_id: Int, + var lv_plt_id: Int +) + +class StartResponse( + var pd_id: Long, + start_result: Result?, + accept_idx: Int, + start_idx: Int, + player_name: String?, + hp_vol: Int, + btn_se_vol: Boolean, + btn_se_vol2: Int, + sldr_se_vol2: Int, + sort_kind: SortMode?, + lv_num: Int, + lv_pnt: Int, + lv_str: String?, + lv_efct_id: Int, + lv_plt_id: Int, + mdl_eqp_ary: String?, + c_itm_eqp_ary: String?, + ms_itm_flg_ary: String?, + mdl_eqp_tm: LocalDateTime?, + mdl_have: String?, + cstmz_itm_have: String?, + use_pv_mdl_eqp: Boolean, + use_mdl_pri: Boolean, + use_pv_skn_eqp: Boolean, + use_pv_btn_se_eqp: Boolean, + use_pv_sld_se_eqp: Boolean, + use_pv_chn_sld_se_eqp: Boolean, + use_pv_sldr_tch_se_eqp: Boolean, + vcld_pts: Int, + nxt_pv_id: Int, + nxt_dffclty: Difficulty?, + nxt_edtn: Edition?, + cv_cid: String?, + cv_sc: String?, + cv_rr: String?, + cv_bv: String?, + cv_bf: String?, + cnp_cid: Int, + cnp_var: Int, + cnp_rr: ContestBorder?, + cnp_sp: String?, + my_lst_0: String?, + my_lst_1: String?, + my_lst_2: String?, + my_lst_3: String?, + my_lst_4: String?, + dsp_clr_brdr: String?, + dsp_intrm_rnk: Boolean, + dsp_clr_sts: Boolean, + clr_sts: String?, + rgo_sts: Boolean, + my_qst_id: String?, + my_qst_sts: String?, + my_qst_prgrs: String?, + my_qst_et: String?, + p_std_ie_have: String?, + p_std_se_have: String? +) { + var start_result: Result? = Result.SUCCESS + var accept_idx: Int + var start_idx: Int + var player_name: String? + var hp_vol = 100 + var btn_se_vol = true + var btn_se_vol2 = 100 + var sldr_se_vol2 = 10 + var sort_kind: SortMode? = SortMode.RELEASE_DATE + var lv_num: Int + var lv_pnt: Int + var lv_str: String? + var lv_efct_id: Int + var lv_plt_id: Int + var mdl_eqp_ary: String? + var c_itm_eqp_ary: String? + var ms_itm_flg_ary: String? + var mdl_eqp_tm: LocalDateTime? = LocalDateTime.now() + var mdl_have: String? = Const.ALL_HAVE + var cstmz_itm_have: String? = Const.ALL_HAVE + var use_pv_mdl_eqp = false + var use_mdl_pri = false + var use_pv_skn_eqp = false + var use_pv_btn_se_eqp = false + var use_pv_sld_se_eqp = false + var use_pv_chn_sld_se_eqp = false + var use_pv_sldr_tch_se_eqp = false + var vcld_pts = 300 + var nxt_pv_id = -1 + var nxt_dffclty: Difficulty? = Difficulty.NORMAL + var nxt_edtn: Edition? = Edition.ORIGINAL + + // Contest play history, array of 4 + var cv_cid: String? + var cv_sc: String? + var cv_rr: String? + var cv_bv: String? + var cv_bf: String? + + // Contest now playing id, return -1 if no current playing contest + var cnp_cid = -1 + var cnp_var = 0 + var cnp_rr: ContestBorder? = ContestBorder.NONE + var cnp_sp: String? = "" + + var my_lst_0: String? + var my_lst_1: String? + var my_lst_2: String? + var my_lst_3: String? // Unused + var my_lst_4: String? // Unused + + var dsp_clr_brdr: String? + var dsp_intrm_rnk: Boolean + var dsp_clr_sts: Boolean + + var clr_sts: String? + + var rgo_sts: Boolean + + var my_qst_id: String? + var my_qst_sts: String? + var my_qst_prgrs: String? + var my_qst_et: String? + + var p_std_ie_have: String? = Const.ALL_NOT_HAVE + var p_std_se_have: String? = Const.ALL_NOT_HAVE + + init { + this.start_result = start_result + this.accept_idx = accept_idx + this.start_idx = start_idx + this.player_name = player_name + this.hp_vol = hp_vol + this.btn_se_vol = btn_se_vol + this.btn_se_vol2 = btn_se_vol2 + this.sldr_se_vol2 = sldr_se_vol2 + this.sort_kind = sort_kind + this.lv_num = lv_num + this.lv_pnt = lv_pnt + this.lv_str = lv_str + this.lv_efct_id = lv_efct_id + this.lv_plt_id = lv_plt_id + this.mdl_eqp_ary = mdl_eqp_ary + this.c_itm_eqp_ary = c_itm_eqp_ary + this.ms_itm_flg_ary = ms_itm_flg_ary + this.mdl_eqp_tm = mdl_eqp_tm + this.mdl_have = mdl_have + this.cstmz_itm_have = cstmz_itm_have + this.use_pv_mdl_eqp = use_pv_mdl_eqp + this.use_mdl_pri = use_mdl_pri + this.use_pv_skn_eqp = use_pv_skn_eqp + this.use_pv_btn_se_eqp = use_pv_btn_se_eqp + this.use_pv_sld_se_eqp = use_pv_sld_se_eqp + this.use_pv_chn_sld_se_eqp = use_pv_chn_sld_se_eqp + this.use_pv_sldr_tch_se_eqp = use_pv_sldr_tch_se_eqp + this.vcld_pts = vcld_pts + this.nxt_pv_id = nxt_pv_id + this.nxt_dffclty = nxt_dffclty + this.nxt_edtn = nxt_edtn + this.cv_cid = cv_cid + this.cv_sc = cv_sc + this.cv_rr = cv_rr + this.cv_bv = cv_bv + this.cv_bf = cv_bf + this.cnp_cid = cnp_cid + this.cnp_var = cnp_var + this.cnp_rr = cnp_rr + this.cnp_sp = cnp_sp + this.my_lst_0 = my_lst_0 + this.my_lst_1 = my_lst_1 + this.my_lst_2 = my_lst_2 + this.my_lst_3 = my_lst_3 + this.my_lst_4 = my_lst_4 + this.dsp_clr_brdr = dsp_clr_brdr + this.dsp_intrm_rnk = dsp_intrm_rnk + this.dsp_clr_sts = dsp_clr_sts + this.clr_sts = clr_sts + this.rgo_sts = rgo_sts + this.my_qst_id = my_qst_id + this.my_qst_sts = my_qst_sts + this.my_qst_prgrs = my_qst_prgrs + this.my_qst_et = my_qst_et + this.p_std_ie_have = p_std_ie_have + this.p_std_se_have = p_std_se_have + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.java deleted file mode 100644 index a73145ef..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.java +++ /dev/null @@ -1,8 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public interface Internalizable { - String toInternal(); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.kt new file mode 100644 index 00000000..6bc103ca --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.kt @@ -0,0 +1,8 @@ +package icu.samnyan.aqua.sega.diva.model + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +interface Internalizable { + fun toInternal(): String? +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ChallengeKind.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ChallengeKind.java deleted file mode 100644 index 6dd6e810..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ChallengeKind.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ChallengeKind { - UNDEFINED(-1), - CLEAR(0), - GREAT(1), - EXCELLENT(2), - PERFECT(3), - COMPLETED(4); - - - private int value; - - ChallengeKind(int i) { - this.value = i; - } - - public static ChallengeKind fromValue(int i) { - for (ChallengeKind challengeKind : - ChallengeKind.values()) { - if (challengeKind.getValue() == i) return challengeKind; - } - return ChallengeKind.UNDEFINED; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ClearResult.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ClearResult.java deleted file mode 100644 index 9fcea207..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ClearResult.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ClearResult implements ValueEnum { - NO_CLEAR(-1), - MISS_TAKE(0), - CHEAP(1), - STANDARD(2), - GREAT(3), - EXCELLENT(4), - PERFECT(5); - - - private int value; - - ClearResult(int i) { - this.value = i; - } - - public static ClearResult fromValue(int i) { - for (ClearResult clearResult : - ClearResult.values()) { - if (clearResult.getValue() == i) return clearResult; - } - return ClearResult.NO_CLEAR; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.java deleted file mode 100644 index e1c1d812..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.java +++ /dev/null @@ -1,11 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class Const { - public final static String ALL_NOT_HAVE = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; - public final static String ALL_NOT_HAVE_TEST = "0"; - public final static String ALL_HAVE = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; - public final static String NULL_QUEST = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.kt new file mode 100644 index 00000000..4f74e70b --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Const.kt @@ -0,0 +1,9 @@ +package icu.samnyan.aqua.sega.diva.model.common + +object Const { + const val ALL_NOT_HAVE: String = + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + const val ALL_HAVE: String = + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + const val NULL_QUEST: String = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestBorder.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestBorder.java deleted file mode 100644 index 0ab8303f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestBorder.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ContestBorder { - NONE(-1), - BRONZE(0), - SILVER(1), - GOLD(2); - - - private int value; - - ContestBorder(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestLeague.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestLeague.java deleted file mode 100644 index c192da6c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestLeague.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ContestLeague { - BEGINNER(0), - INTERMEDIATE(1), - ADVANCED(2), - PROFESSIONAL(3); - - - private int value; - - ContestLeague(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestNormaType.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestNormaType.java deleted file mode 100644 index bccf31ef..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestNormaType.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ContestNormaType { - SCORE(0), - PERCENTAGE(1), - COOL_PERCENTAGE(2); - - - private int value; - - ContestNormaType(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.java deleted file mode 100644 index c68d231b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -public class ContestProgress { - int pvId; - int hardness; - int edition; - int stars; - int scores; - int version; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.kt new file mode 100644 index 00000000..ac82a27c --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.kt @@ -0,0 +1,10 @@ +package icu.samnyan.aqua.sega.diva.model.common + +class ContestProgress( + var pvId: Int = 0, + var hardness: Int = 0, + var edition: Int = 0, + var stars: Int = 0, + var scores: Int = 0, + var version: Int = 0 +) \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestStageLimit.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestStageLimit.java deleted file mode 100644 index 578fa8ac..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestStageLimit.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ContestStageLimit { - UNLIMITED(0), - LIMITED(1); - - - private int value; - - ContestStageLimit(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Difficulty.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Difficulty.java deleted file mode 100644 index a444cd25..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Difficulty.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum Difficulty { - UNDEFINED(-1), - EASY(0), - NORMAL(1), - HARD(2), - EXTREME(3); - - - private int value; - - Difficulty(int i) { - this.value = i; - } - - public static Difficulty fromValue(int i) { - for (Difficulty difficulty : - Difficulty.values()) { - if (difficulty.getValue() == i) return difficulty; - } - return Difficulty.UNDEFINED; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Edition.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Edition.java deleted file mode 100644 index bb783b21..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Edition.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum Edition { - ORIGINAL(0), - EXTRA(1); - - - private int value; - - Edition(int i) { - this.value = i; - } - - public static Edition fromValue(int i) { - for (Edition edition : - Edition.values()) { - if (edition.getValue() == i) return edition; - } - return Edition.ORIGINAL; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/FestaKind.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/FestaKind.java deleted file mode 100644 index 75c910ce..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/FestaKind.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum FestaKind { - PINK_FESTA(0), - GREEN_FESTA(1); - - - private int value; - - FestaKind(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.java deleted file mode 100644 index 7e7222f7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class LevelInfo { - private int levelNumber; - private int levelExp; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.kt new file mode 100644 index 00000000..5d1be423 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.kt @@ -0,0 +1,6 @@ +package icu.samnyan.aqua.sega.diva.model.common + +class LevelInfo( + var levelNumber: Int = 0, + var levelExp: Int = 0, +) diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/PassStat.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/PassStat.java deleted file mode 100644 index 41858295..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/PassStat.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum PassStat { - MISS(0), - SET(1), - RESET(2), - REISSUE(3); - - - private int value; - - PassStat(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/PreStartResult.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/PreStartResult.java deleted file mode 100644 index 77a210d7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/PreStartResult.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum PreStartResult { - SUCCESS(1), - FAILED(0), - CARD_TOO_NEW(-1), - ALREADY_PLAYING(-2), - NEW_REGISTRATION(-3), - CARD_BANNED(-4); - - - private int value; - - PreStartResult(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Result.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Result.java deleted file mode 100644 index 77b383b7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/Result.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum Result { - FAILED(0), - SUCCESS(1); - - - private int value; - - Result(int i) { - this.value = i; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.java deleted file mode 100644 index 31ee3103..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum SortMode { - COMPLEXITY(0), - NAME(1), - RELEASE_DATE(2), - MY_LIST_A(3), - MY_LIST_B(4), - MY_LIST_C(5); - - - private int value; - - SortMode(int i) { - this.value = i; - } - - public static SortMode fromValue(int i) { - for (SortMode sortMode : - SortMode.values()) { - if (sortMode.getValue() == i) return sortMode; - } - return SortMode.RELEASE_DATE; - } - - @JsonValue - public int getValue() { - return value; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.kt new file mode 100644 index 00000000..e2330e11 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.kt @@ -0,0 +1,146 @@ +package icu.samnyan.aqua.sega.diva.model.common + +import com.fasterxml.jackson.annotation.JsonValue + +enum class SortMode(@get:JsonValue val value: Int) { + COMPLEXITY(0), + NAME(1), + RELEASE_DATE(2), + MY_LIST_A(3), + MY_LIST_B(4), + MY_LIST_C(5); + + companion object { + fun fromValue(i: Int): SortMode { + for (sortMode in entries) { + if (sortMode.value == i) return sortMode + } + return RELEASE_DATE + } + } +} + +enum class StartMode { + PRE_START, + START, + CARD_PROCEDURE +} + +enum class Result(@get:JsonValue val value: Int) { + FAILED(0), + SUCCESS(1) +} + +enum class PreStartResult(@get:JsonValue val value: Int) { + SUCCESS(1), + FAILED(0), + CARD_TOO_NEW(-1), + ALREADY_PLAYING(-2), + NEW_REGISTRATION(-3), + CARD_BANNED(-4) +} + +enum class PassStat(@get:JsonValue val value: Int) { + MISS(0), + SET(1), + RESET(2), + REISSUE(3) +} + +enum class FestaKind(@get:JsonValue val value: Int) { + PINK_FESTA(0), + GREEN_FESTA(1) +} + +enum class Edition(@get:JsonValue val value: Int) { + ORIGINAL(0), + EXTRA(1); + + companion object { + fun fromValue(i: Int): Edition { + for (edition in entries) { + if (edition.value == i) return edition + } + return ORIGINAL + } + } +} + +enum class Difficulty(@get:JsonValue val value: Int) { + UNDEFINED(-1), + EASY(0), + NORMAL(1), + HARD(2), + EXTREME(3); + + companion object { + fun fromValue(i: Int): Difficulty { + for (difficulty in entries) { + if (difficulty.value == i) return difficulty + } + return UNDEFINED + } + } +} + +enum class ContestStageLimit(@get:JsonValue val value: Int) { + UNLIMITED(0), + LIMITED(1) +} + +enum class ContestNormaType(@get:JsonValue val value: Int) { + SCORE(0), + PERCENTAGE(1), + COOL_PERCENTAGE(2) +} + +enum class ContestLeague(@get:JsonValue val value: Int) { + BEGINNER(0), + INTERMEDIATE(1), + ADVANCED(2), + PROFESSIONAL(3) +} + +enum class ContestBorder(@get:JsonValue val value: Int) { + NONE(-1), + BRONZE(0), + SILVER(1), + GOLD(2) +} + +enum class ClearResult(@get:JsonValue val value: Int) { + NO_CLEAR(-1), + MISS_TAKE(0), + CHEAP(1), + STANDARD(2), + GREAT(3), + EXCELLENT(4), + PERFECT(5); + + companion object { + fun fromValue(i: Int): ClearResult { + for (clearResult in entries) { + if (clearResult.value == i) return clearResult + } + return NO_CLEAR + } + } +} + +enum class ChallengeKind(@get:JsonValue val value: Int) { + UNDEFINED(-1), + CLEAR(0), + GREAT(1), + EXCELLENT(2), + PERFECT(3), + COMPLETED(4); + + companion object { + fun fromValue(i: Int): ChallengeKind { + for (challengeKind in entries) { + if (challengeKind.value == i) return challengeKind + } + return UNDEFINED + } + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/StartMode.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/StartMode.java deleted file mode 100644 index 83b13a1a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/StartMode.java +++ /dev/null @@ -1,10 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum StartMode { - PRE_START, - START, - CARD_PROCEDURE -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ValueEnum.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ValueEnum.java deleted file mode 100644 index 17c33077..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/ValueEnum.java +++ /dev/null @@ -1,8 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public interface ValueEnum { - int getValue(); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/DispersalParameter.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/DispersalParameter.java deleted file mode 100644 index f8d91a83..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/DispersalParameter.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.attend; - -import icu.samnyan.aqua.sega.diva.model.Internalizable; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -public class DispersalParameter implements Internalizable { - private int max_pd_items = 30; - private int max_ps_rankings = 100; - private int max_uploadable_screenshots = 2; - private int ss_upload_delay = 1; - - @Override - public String toInternal() { - List list = new LinkedList<>(); - list.add(max_pd_items); - list.add(1); - list.add(max_ps_rankings); - list.add(max_uploadable_screenshots); - list.add(ss_upload_delay); - list.add(1); - list.addAll(Collections.nCopies(100, 0)); - return list.stream().limit(100).map(Object::toString).collect(Collectors.joining(",")); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/EtcParameter.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/EtcParameter.java deleted file mode 100644 index c5b92b6e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/EtcParameter.java +++ /dev/null @@ -1,61 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.attend; - -import icu.samnyan.aqua.sega.diva.model.Internalizable; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -public class EtcParameter implements Internalizable { - private Boolean module_shop_close = false; - private Boolean card_reissue_close = true; - private Boolean card_renewal_close = true; - private Boolean reset_passwd_close = true; - private Boolean change_passwd_close = false; - private Boolean change_name_close = false; - private Boolean encore_mode_close = true; - private Boolean third_stg_mode_close = false; - private Integer slow_down_threshold = 0; - private Boolean log_write_flag = false; - private Boolean daily_quest_close = true; - private Boolean weekly_quest_close = true; - private Boolean special_quest_close = true; - private Boolean nppg_close = false; - - @Override - public String toInternal() { - List list = new LinkedList<>(); - list.add(module_shop_close); - list.add(card_reissue_close); - list.add(card_renewal_close); - list.add(reset_passwd_close); - list.add(change_passwd_close); - list.add(change_name_close); - list.add(encore_mode_close); - list.add(third_stg_mode_close); - list.add(slow_down_threshold); - list.add(log_write_flag); - list.add(daily_quest_close); - list.add(weekly_quest_close); - list.add(special_quest_close); - list.add(nppg_close); - list.addAll(Collections.nCopies(100, 0)); - return list.stream().limit(100).map(x -> { - if (x instanceof Boolean) { - return (Boolean) x ? "1" : "0"; - } - if (x instanceof Integer) { - return String.valueOf(x); - } - return "0"; - }).collect(Collectors.joining(",")); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java deleted file mode 100644 index f7353a87..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java +++ /dev/null @@ -1,104 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.attend; - -import icu.samnyan.aqua.sega.diva.model.Internalizable; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -public class GameBalanceParameter implements Internalizable { - - private int name_change_price = 100; - private GameBalanceTrialBidSet easy_trials = new GameBalanceTrialBidSet( - new GameBalanceTrialBid(5, 10), - new GameBalanceTrialBid(10, 25), - new GameBalanceTrialBid(20, 50), - new GameBalanceTrialBid(30, 90) - ); - private GameBalanceTrialBidSet normal_trials = new GameBalanceTrialBidSet( - new GameBalanceTrialBid(5, 10), - new GameBalanceTrialBid(10, 25), - new GameBalanceTrialBid(20, 50), - new GameBalanceTrialBid(30, 90) - ); - private GameBalanceTrialBidSet hard_trials = new GameBalanceTrialBidSet( - new GameBalanceTrialBid(5, 10), - new GameBalanceTrialBid(10, 25), - new GameBalanceTrialBid(20, 50), - new GameBalanceTrialBid(30, 90) - ); - private GameBalanceTrialBidSet extreme_trials = new GameBalanceTrialBidSet( - new GameBalanceTrialBid(5, 10), - new GameBalanceTrialBid(10, 25), - new GameBalanceTrialBid(20, 50), - new GameBalanceTrialBid(30, 90) - ); - private GameBalanceTrialBidSet extra_extreme_trials = new GameBalanceTrialBidSet( - new GameBalanceTrialBid(5, 10), - new GameBalanceTrialBid(10, 25), - new GameBalanceTrialBid(20, 50), - new GameBalanceTrialBid(30, 90) - ); - - @Override - public String toInternal() { - Integer[] arr = new Integer[]{ - this.name_change_price, - 0, // unkn - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 3, - 4, // unkn - 1, - 1, - 1, - 3, - 4, - 5, // unkn - 1, - 1, - 1, - 4, - 5, - 6, // unkn - 1, - 1, - 1, - 5, - 6, - 7, // unkn - 4, - 4, - 4, - 9, - 10, - 14 // unkn - }; - List list = new LinkedList<>(Arrays.asList(arr)); - list.addAll(easy_trials.getArr()); - list.addAll(normal_trials.getArr()); - list.addAll(hard_trials.getArr()); - list.addAll(extreme_trials.getArr()); - list.addAll(extra_extreme_trials.getArr()); - list.add(10); - list.add(30); - list.addAll(Collections.nCopies(100, 0)); - return list.stream().limit(100).map(Object::toString).collect(Collectors.joining(",")); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBid.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBid.java deleted file mode 100644 index e53c2e51..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBid.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.attend; - -import lombok.AllArgsConstructor; -import lombok.Data; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -public class GameBalanceTrialBid { - private int pay; - private int win; - - public String getString() { - return pay + "," + win; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBidSet.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBidSet.java deleted file mode 100644 index 4b726097..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBidSet.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.attend; - -import lombok.AllArgsConstructor; -import lombok.Data; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -public class GameBalanceTrialBidSet { - private GameBalanceTrialBid clear; - private GameBalanceTrialBid great; - private GameBalanceTrialBid excellent; - private GameBalanceTrialBid perfect; - - public List getArr() { - Integer[] arr = new Integer[]{ - clear.getPay(), - clear.getWin(), - great.getPay(), - great.getWin(), - excellent.getPay(), - excellent.getWin(), - perfect.getPay(), - perfect.getWin(), - }; - return new LinkedList<>(Arrays.asList(arr)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearSet.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearSet.java deleted file mode 100644 index b49a7c0b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearSet.java +++ /dev/null @@ -1,38 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.collection; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -public class ClearSet { - private int clear = 0; - private int great = 0; - private int excellent = 0; - private int perfect = 0; - - public void addClear() { - this.clear += 1; - } - - public void addGreat() { - this.clear += 1; - this.great += 1; - } - - public void addExcellent() { - this.clear += 1; - this.great += 1; - this.excellent += 1; - } - - public void addPerfect() { - this.clear += 1; - this.great += 1; - this.excellent += 1; - this.perfect += 1; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.java deleted file mode 100644 index bea57e2d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.collection; - -import icu.samnyan.aqua.sega.diva.model.Internalizable; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -public class ClearTally implements Internalizable { - - private ClearSet easy = new ClearSet(); - private ClearSet normal = new ClearSet(); - private ClearSet hard = new ClearSet(); - private ClearSet extreme = new ClearSet(); - private ClearSet extraExtreme = new ClearSet(); - - @Override - public String toInternal() { - List list = new LinkedList<>(); - list.add(easy.getClear()); - list.add(easy.getGreat()); - list.add(easy.getExcellent()); - list.add(easy.getPerfect()); - list.add(normal.getClear()); - list.add(normal.getGreat()); - list.add(normal.getExcellent()); - list.add(normal.getPerfect()); - list.add(hard.getClear()); - list.add(hard.getGreat()); - list.add(hard.getExcellent()); - list.add(hard.getPerfect()); - list.add(extreme.getClear()); - list.add(extreme.getGreat()); - list.add(extreme.getExcellent()); - list.add(extreme.getPerfect()); - list.add(extraExtreme.getClear()); - list.add(extraExtreme.getGreat()); - list.add(extraExtreme.getExcellent()); - list.add(extraExtreme.getPerfect()); - return list.stream().map(Object::toString).collect(Collectors.joining(",")); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.kt new file mode 100644 index 00000000..ce6d3c73 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/ClearTally.kt @@ -0,0 +1,49 @@ +package icu.samnyan.aqua.sega.diva.model.common.collection + +import ext.csv +import icu.samnyan.aqua.sega.diva.model.Internalizable + +class ClearSet { + var clear = 0 + var great = 0 + var excellent = 0 + var perfect = 0 + + fun addClear() { + this.clear += 1 + } + + fun addGreat() { + this.clear += 1 + this.great += 1 + } + + fun addExcellent() { + this.clear += 1 + this.great += 1 + this.excellent += 1 + } + + fun addPerfect() { + this.clear += 1 + this.great += 1 + this.excellent += 1 + this.perfect += 1 + } +} + +class ClearTally : Internalizable { + val easy = ClearSet() + val normal = ClearSet() + val hard = ClearSet() + val extreme = ClearSet() + val extraExtreme = ClearSet() + + override fun toInternal() = listOf( + easy.clear, easy.great, easy.excellent, easy.perfect, + normal.clear, normal.great, normal.excellent, normal.perfect, + hard.clear, hard.great, hard.excellent, hard.perfect, + extreme.clear, extreme.great, extreme.excellent, extreme.perfect, + extraExtreme.clear, extraExtreme.great, extraExtreme.excellent, extraExtreme.perfect + ).csv +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.java deleted file mode 100644 index 15ec7675..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.java +++ /dev/null @@ -1,79 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.collection; - -import icu.samnyan.aqua.sega.diva.model.gamedata.Festa; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.Data; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -public class FestaCollection { - private Festa firstFesta = new Festa(); - private Festa secondFesta = new Festa(); - - public FestaCollection(Festa firstFesta, Festa secondFesta) { - this.firstFesta = firstFesta; - this.secondFesta = secondFesta; - } - - public FestaCollection(Festa firstFesta) { - this.firstFesta = firstFesta; - } - - public FestaCollection(List festas) { - if (festas.size() >= 2) { - this.firstFesta = festas.get(0); - this.secondFesta = festas.get(1); - } else if (festas.size() == 1) { - this.firstFesta = festas.get(0); - } - } - - public String getIds() { - return this.firstFesta.getId() + "," + this.secondFesta.getId(); - } - - public String getNames() { - return URIEncoder.encode(this.firstFesta.getName()) + "," + URIEncoder.encode(this.secondFesta.getName()); - } - - public String getKinds() { - return this.firstFesta.getKind().getValue() + "," + this.secondFesta.getKind().getValue(); - } - - public String getDiffs() { - return this.firstFesta.getDifficulty().getValue() + "," + this.secondFesta.getDifficulty().getValue(); - } - - public String getPvIds() { - return this.firstFesta.getPvList() + "," + this.secondFesta.getPvList(); - } - - public String getAttr() { - return this.firstFesta.getAttributes() + "," + this.secondFesta.getAttributes(); - } - - public String getAddVps() { - return this.firstFesta.getAddVP() + "," + this.secondFesta.getAddVP(); - } - - public String getVpMultipliers() { - return this.firstFesta.getVpMultiplier() + "," + this.secondFesta.getVpMultiplier(); - } - - public String getStarts() { - return DivaDateTimeUtil.getString(this.firstFesta.getStart()) + "," + DivaDateTimeUtil.getString(this.secondFesta.getStart()); - } - - public String getEnds() { - return DivaDateTimeUtil.getString(this.firstFesta.getEnd()) + "," + DivaDateTimeUtil.getString(this.secondFesta.getEnd()); - } - - public String getLastUpdateTime() { - return DivaDateTimeUtil.getString(this.firstFesta.getCreateDate().compareTo(this.secondFesta.getCreateDate()) < 0 ? this.firstFesta.getCreateDate() : this.secondFesta.getCreateDate()); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.kt new file mode 100644 index 00000000..f5a3e6fa --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/FestaCollection.kt @@ -0,0 +1,52 @@ +package icu.samnyan.aqua.sega.diva.model.common.collection + +import icu.samnyan.aqua.sega.diva.model.db.gamedata.Festa +import icu.samnyan.aqua.sega.diva.util.DivaTime.getString +import icu.samnyan.aqua.sega.diva.util.URIEncoder.encode + +class FestaCollection { + var firstFesta = Festa() + var secondFesta = Festa() + + constructor(festas: MutableList) { + if (festas.size >= 2) { + this.firstFesta = festas.get(0) + this.secondFesta = festas.get(1) + } else if (festas.size == 1) { + this.firstFesta = festas.get(0) + } + } + + val ids: String + get() = this.firstFesta.id.toString() + "," + this.secondFesta.id + + val names: String + get() = encode(this.firstFesta.name) + "," + encode(this.secondFesta.name) + + val kinds: String + get() = this.firstFesta.kind.value.toString() + "," + this.secondFesta.kind.value + + val diffs: String + get() = this.firstFesta.difficulty.value.toString() + "," + this.secondFesta.difficulty.value + + val pvIds: String + get() = this.firstFesta.pvList + "," + this.secondFesta.pvList + + val attr: String + get() = this.firstFesta.attributes + "," + this.secondFesta.attributes + + val addVps: String + get() = this.firstFesta.addVP.toString() + "," + this.secondFesta.addVP + + val vpMultipliers: String + get() = this.firstFesta.vpMultiplier.toString() + "," + this.secondFesta.vpMultiplier + + val starts: String + get() = getString(this.firstFesta.start) + "," + getString(this.secondFesta.start) + + val ends: String + get() = getString(this.firstFesta.end) + "," + getString(this.secondFesta.end) + + val lastUpdateTime: String + get() = getString(if (this.firstFesta.createDate.isBefore(this.secondFesta.createDate)) this.firstFesta.createDate else this.secondFesta.createDate) +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.java deleted file mode 100644 index 0f6b64a4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.java +++ /dev/null @@ -1,32 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.common.collection; - -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord; -import lombok.Data; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -public class PsRankingCollection { - private PlayerPvRecord first; - private PlayerPvRecord second; - private PlayerPvRecord third; - - public PsRankingCollection(int pvId, Edition edition, List list) { - this.first = new PlayerPvRecord(pvId, edition); - this.second = new PlayerPvRecord(pvId, edition); - this.third = new PlayerPvRecord(pvId, edition); - if (list.size() >= 1) { - this.first = list.get(0); - } - if (list.size() >= 2) { - this.second = list.get(1); - } - if (list.size() >= 3) { - this.third = list.get(2); - } - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.kt new file mode 100644 index 00000000..4463701d --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/collection/PsRankingCollection.kt @@ -0,0 +1,26 @@ +package icu.samnyan.aqua.sega.diva.model.common.collection + +import icu.samnyan.aqua.sega.diva.model.common.Edition +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerPvRecord + + +class PsRankingCollection(pvId: Int, edition: Edition, list: MutableList) { + var first: PlayerPvRecord + var second: PlayerPvRecord + var third: PlayerPvRecord + + init { + this.first = PlayerPvRecord(pvId, edition) + this.second = PlayerPvRecord(pvId, edition) + this.third = PlayerPvRecord(pvId, edition) + if (list.size >= 1) { + this.first = list[0] + } + if (list.size >= 2) { + this.second = list.get(1) + } + if (list.size >= 3) { + this.third = list.get(2) + } + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Contest.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Contest.kt new file mode 100644 index 00000000..c258b86a --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Contest.kt @@ -0,0 +1,118 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import ext.csv +import icu.samnyan.aqua.sega.diva.model.common.ContestLeague +import icu.samnyan.aqua.sega.diva.model.common.ContestNormaType +import icu.samnyan.aqua.sega.diva.util.DivaTime +import icu.samnyan.aqua.sega.diva.util.URIEncoder +import jakarta.persistence.* +import org.apache.commons.lang3.StringUtils +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaContest") +@Table(name = "diva_contest") +class Contest : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id = 0 + var enable = false + var startTime: LocalDateTime = LocalDateTime.now() + var endTime: LocalDateTime = LocalDateTime.now() + var name: String = "" + var description: String = "" + + @Enumerated(EnumType.STRING) + var league: ContestLeague = ContestLeague.BEGINNER + var stars = 0 + var minComplexity = 0 // Only use when Pv difficulty list is not set. + var maxComplexity = 0 + var stages = 0 + var stageLimit: String = "" + + @Enumerated(EnumType.STRING) + var normaType: ContestNormaType = ContestNormaType.SCORE + var bronzeBorders = 0 + var sliverBorders = 0 + var goldBorders = 0 + + // Pv List format: "pv_id_start:pv_id_end,pv_id_start:pv_id_end,pv_id_start:pv_id_end" more than 20 group will be ignore, put in -1 for empty end + var pvList: String = "" + + // Pv difficulty list format: "pv_difficulty:min_complexity:max_complexity" + var pvDiffList: String = "" + + // ContestReward format: + // Reward Type: (-1 None, 0 VP, 1 Skin, 2 Callsign, 3 Customize) + // Format: "rewardType:reward:string1:string2" string1 and 2 should be urlencoded and must exist. use *** aka %2A%2A%2A as placeholder + var bronzeContestReward: String = "" + var sliverContestReward: String = "" + var goldContestReward: String = "" + + // ContestReward format: "rewardType:reward:string1:string2" + var contestEntryReward: String = "" + + constructor() + + val string: String + get() { + val list = mutableListOf( + this.id, // Contest ID + DivaTime.format(this.startTime), // Start time + DivaTime.format(this.endTime), // End time + URIEncoder.encode(this.name), // Contest name + URIEncoder.encode(this.description), // Contest description + this.league.value, // Contest league + this.stars, // Contest starts + this.stages, // Contest stage, 1~9 + this.stageLimit, // list_lump_num ( 0 will be all stage same. > 1 will became stage max defined chart ) + this.normaType.value, + this.bronzeBorders, + this.sliverBorders, + this.goldBorders + ) + for (i in 1..20) { + // format is "pv_range_start,pv_range_end,min_complexity,max_complexity,difficulty,unknown" + if (pvList.isBlank() || !pvList.contains(":")) { + list += listOf(-1, -1) + if (i == 1) { + list.add(this.minComplexity) + list.add(this.maxComplexity) + } else { + list.add(-2) + list.add(-2) + } + list += listOf(-1, -2, "7fffffffffffffffffffffffffffffff") + } else { + val groups = pvList.split(',').dropLastWhile { it.isEmpty() }.toTypedArray() + if (groups.size < i) { + list += listOf(-1, -1, -2, -2, -1, -2, "7fffffffffffffffffffffffffffffff") + } else { + val ids = groups[i - 1].split(':').dropLastWhile { it.isEmpty() }.toTypedArray() + list.add(ids[0]) + list.add(ids[1]) + if (StringUtils.isBlank(pvDiffList) || !pvDiffList.contains(":")) { + list.add(this.minComplexity) + list.add(this.maxComplexity) + list.add(-1) + } else { + val diffList = pvDiffList.split(',').dropLastWhile { it.isEmpty() }.toTypedArray() + if (diffList.size < i) { + list.add(this.minComplexity) + list.add(this.maxComplexity) + list.add(-1) + } else { + val diff = diffList[i - 1].split(':').dropLastWhile { it.isEmpty() }.toTypedArray() + list.add(diff[1]) + list.add(diff[2]) + list.add(diff[0]) + } + } + list.add(-2) + list.add("7fffffffffffffffffffffffffffffff") + } + } + } + return list.csv + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Difficulty.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Difficulty.kt new file mode 100644 index 00000000..acc79b79 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Difficulty.kt @@ -0,0 +1,33 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import com.fasterxml.jackson.annotation.JsonIgnore +import jakarta.persistence.* + +@Entity(name = "DivaPvLevel") +@Table(name = "diva_pv_info_level") +class Difficulty { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @JsonIgnore + var id: Long = 0 + + @JsonIgnore + @ManyToOne + @JoinColumn(name = "pv_id") + var pv: Pv = Pv() + var edition = 0 + var level: String = "" + var version = 0 + var diff: String = "" + + constructor(id: Long, pv: Pv, edition: Int, level: String, version: Int, diff: String) { + this.id = id + this.pv = pv + this.edition = edition + this.level = level + this.version = version + this.diff = diff + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaCustomize.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaCustomize.kt new file mode 100644 index 00000000..9e973a33 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaCustomize.kt @@ -0,0 +1,24 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import icu.samnyan.aqua.sega.diva.model.Internalizable +import icu.samnyan.aqua.sega.diva.util.DivaTime +import icu.samnyan.aqua.sega.diva.util.URIEncoder +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaCustomize") +@Table(name = "diva_customize") +class DivaCustomize : Serializable, Internalizable { + @Id + var id = 0 + var name: String = "" + var price = 0 + var releaseDate: LocalDateTime = LocalDateTime.now() + var endDate: LocalDateTime = LocalDateTime.now() + var sortOrder = 0 + + override fun toInternal() = "$id,0,${URIEncoder.encode(name)},$price,${DivaTime.format(releaseDate)},${DivaTime.format(endDate)},$sortOrder" +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaModule.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaModule.kt new file mode 100644 index 00000000..8e88857a --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/DivaModule.kt @@ -0,0 +1,24 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import icu.samnyan.aqua.sega.diva.model.Internalizable +import icu.samnyan.aqua.sega.diva.util.DivaTime +import icu.samnyan.aqua.sega.diva.util.URIEncoder +import jakarta.persistence.Entity +import jakarta.persistence.Id +import jakarta.persistence.Table +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaModule") +@Table(name = "diva_module") +class DivaModule : Serializable, Internalizable { + @Id + var id = 0 + var name: String = "" + var price = 0 + var releaseDate: LocalDateTime = LocalDateTime.now() + var endDate: LocalDateTime = LocalDateTime.now() + var sortOrder = 0 + + override fun toInternal() = "$id,0,${URIEncoder.encode(name)},$price,${DivaTime.format(releaseDate)},${DivaTime.format(endDate)},$sortOrder" +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Festa.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Festa.kt new file mode 100644 index 00000000..2f5cc654 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Festa.kt @@ -0,0 +1,30 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import icu.samnyan.aqua.sega.diva.model.common.Difficulty +import icu.samnyan.aqua.sega.diva.model.common.FestaKind +import jakarta.persistence.* +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaFesta") +@Table(name = "diva_festa") +class Festa : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id = -1 + var enable = true + var name: String = "xxx" + + @Enumerated(EnumType.STRING) + var kind: FestaKind = FestaKind.PINK_FESTA + + @Enumerated(EnumType.STRING) + var difficulty: Difficulty = Difficulty.UNDEFINED + var pvList: String = "ALL" + var attributes: String = "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + var addVP: Int = 0 + var vpMultiplier: Int = 1 + var start: LocalDateTime = LocalDateTime.of(2005, 1, 1, 0, 0) + var end: LocalDateTime = LocalDateTime.of(2005, 1, 1, 0, 0) + var createDate: LocalDateTime = LocalDateTime.of(2005, 1, 1, 0, 0) +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Pv.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Pv.kt new file mode 100644 index 00000000..02f8f6cc --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/Pv.kt @@ -0,0 +1,23 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import jakarta.persistence.* +import java.io.Serializable + +@Entity(name = "DivaPvInfo") +@Table(name = "diva_pv_info") +class Pv : Serializable { + @Id + var pvId: Int = 0 + var bpm: Int = 0 + var songName: String = "" + var songNameEng: String = "" + var songNameReading: String = "" + var arranger: String = "" + var lyrics: String = "" + var music: String = "" + var performerNumber: Int = 0 + + @OneToMany(cascade = [CascadeType.ALL], fetch = FetchType.LAZY, mappedBy = "pv") + @MapKey(name = "diff") + var difficulty: MutableMap = mutableMapOf() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/PvEntry.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/PvEntry.kt new file mode 100644 index 00000000..0eb60967 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/gamedata/PvEntry.kt @@ -0,0 +1,27 @@ +package icu.samnyan.aqua.sega.diva.model.db.gamedata + +import icu.samnyan.aqua.sega.diva.model.common.Difficulty +import icu.samnyan.aqua.sega.diva.model.common.Edition +import jakarta.persistence.* +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaPvEntry") +@Table(name = "diva_pv_entry") +class PvEntry : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + var pvId = 0 + + @Enumerated(EnumType.STRING) + var difficulty: Difficulty = Difficulty.NORMAL + var version = 0 + + @Enumerated(EnumType.STRING) + var edition: Edition = Edition.ORIGINAL + var demoStart: LocalDateTime = LocalDateTime.now() + var demoEnd: LocalDateTime = LocalDateTime.now() + var playableStart: LocalDateTime = LocalDateTime.now() + var playableEnd: LocalDateTime = LocalDateTime.now() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/GameSession.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/GameSession.kt new file mode 100644 index 00000000..c3fed1e5 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/GameSession.kt @@ -0,0 +1,64 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import icu.samnyan.aqua.sega.diva.model.common.StartMode +import jakarta.persistence.* +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaGameSession") +@Table(name = "diva_game_session") +class GameSession : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + var acceptId = 0 + + @OneToOne + @JoinColumn(name = "pd_id", unique = true) + var pdId: PlayerProfile = PlayerProfile() + + @Enumerated(EnumType.STRING) + var startMode: StartMode = StartMode.START + var startTime: LocalDateTime = LocalDateTime.now() + var lastUpdateTime: LocalDateTime = LocalDateTime.now() + var stageIndex: Int = 0 + var stageResultIndex: Int = 0 + var lastPvId: Int = 0 + var levelNumber: Int = 0 + var levelExp: Int = 0 + var oldLevelNumber: Int = 0 + var oldLevelExp: Int = 0 + var vp: Int = 0 + + constructor( + acceptId: Int, + pdId: PlayerProfile, + startMode: StartMode, + startTime: LocalDateTime, + lastUpdateTime: LocalDateTime, + stageIndex: Int, + stageResultIndex: Int, + lastPvId: Int, + levelNumber: Int, + levelExp: Int, + oldLevelNumber: Int, + oldLevelExp: Int, + vp: Int + ) { + this.acceptId = acceptId + this.pdId = pdId + this.startMode = startMode + this.startTime = startTime + this.lastUpdateTime = lastUpdateTime + this.stageIndex = stageIndex + this.stageResultIndex = stageResultIndex + this.lastPvId = lastPvId + this.levelNumber = levelNumber + this.levelExp = levelExp + this.oldLevelNumber = oldLevelNumber + this.oldLevelExp = oldLevelExp + this.vp = vp + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayLog.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayLog.kt new file mode 100644 index 00000000..0c79f6c6 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayLog.kt @@ -0,0 +1,152 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import com.fasterxml.jackson.annotation.JsonIgnore +import icu.samnyan.aqua.sega.diva.model.common.ChallengeKind +import icu.samnyan.aqua.sega.diva.model.common.ClearResult +import icu.samnyan.aqua.sega.diva.model.common.Difficulty +import icu.samnyan.aqua.sega.diva.model.common.Edition +import jakarta.persistence.* +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaPlayLog") +@Table(name = "diva_play_log") +class PlayLog : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + @JsonIgnore + var pdId: PlayerProfile = PlayerProfile() + var pvId = 0 + + @Enumerated(EnumType.STRING) + var difficulty: Difficulty = Difficulty.NORMAL + + @Enumerated(EnumType.STRING) + var edition: Edition = Edition.ORIGINAL + var scriptVer = 0 + var score = 0 + + @Enumerated(EnumType.STRING) + var challengeKind: ChallengeKind = ChallengeKind.UNDEFINED + var challengeResult = 0 + + @Enumerated(EnumType.STRING) + var clearResult: ClearResult = ClearResult.NO_CLEAR + var vp = 0 + var coolCount = 0 + var coolPercent = 0 + var fineCount = 0 + var finePercent = 0 + var safeCount = 0 + var safePercent = 0 + var sadCount = 0 + var sadPercent = 0 + var wrongCount = 0 + var wrongPercent = 0 + var maxCombo = 0 + var chanceTime = 0 + var holdScore = 0 + var attainPoint = 0 + var skinId = 0 + var buttonSe = 0 + var buttonSeVol = 0 + var sliderSe = 0 + var ChainSlideSe = 0 + var SliderTouchSe = 0 + var modules: String = "" + var stageCompletion = 0 + var slideScore = 0 + var isVocalChange = 0 + var customizeItems: String = "" + + // String customizeItemFlags; + var rhythmGameOptions: String = "" + var screenShotCount = -1 + var dateTime: LocalDateTime = LocalDateTime.now() + + constructor( + pdId: PlayerProfile, + pvId: Int, + difficulty: Difficulty, + edition: Edition, + scriptVer: Int, + score: Int, + challengeKind: ChallengeKind, + challengeResult: Int, + clearResult: ClearResult, + vp: Int, + coolCount: Int, + coolPercent: Int, + fineCount: Int, + finePercent: Int, + safeCount: Int, + safePercent: Int, + sadCount: Int, + sadPercent: Int, + wrongCount: Int, + wrongPercent: Int, + maxCombo: Int, + chanceTime: Int, + holdScore: Int, + attainPoint: Int, + skinId: Int, + buttonSe: Int, + buttonSeVol: Int, + sliderSe: Int, + chainSlideSe: Int, + sliderTouchSe: Int, + modules: String, + stageCompletion: Int, + slideScore: Int, + isVocalChange: Int, + customizeItems: String, + rhythmGameOptions: String, + screenShotCount: Int, + dateTime: LocalDateTime + ) { + this.pdId = pdId + this.pvId = pvId + this.difficulty = difficulty + this.edition = edition + this.scriptVer = scriptVer + this.score = score + this.challengeKind = challengeKind + this.challengeResult = challengeResult + this.clearResult = clearResult + this.vp = vp + this.coolCount = coolCount + this.coolPercent = coolPercent + this.fineCount = fineCount + this.finePercent = finePercent + this.safeCount = safeCount + this.safePercent = safePercent + this.sadCount = sadCount + this.sadPercent = sadPercent + this.wrongCount = wrongCount + this.wrongPercent = wrongPercent + this.maxCombo = maxCombo + this.chanceTime = chanceTime + this.holdScore = holdScore + this.attainPoint = attainPoint + this.skinId = skinId + this.buttonSe = buttonSe + this.buttonSeVol = buttonSeVol + this.sliderSe = sliderSe + ChainSlideSe = chainSlideSe + SliderTouchSe = sliderTouchSe + this.modules = modules + this.stageCompletion = stageCompletion + this.slideScore = slideScore + this.isVocalChange = isVocalChange + this.customizeItems = customizeItems + this.rhythmGameOptions = rhythmGameOptions + this.screenShotCount = screenShotCount + this.dateTime = dateTime + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerContest.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerContest.kt new file mode 100644 index 00000000..ca00f302 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerContest.kt @@ -0,0 +1,35 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import icu.samnyan.aqua.sega.diva.model.common.ContestBorder +import jakarta.persistence.* +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaPlayerContest") +@Table(name = "diva_player_contest", uniqueConstraints = [UniqueConstraint(columnNames = ["pd_id", "contest_id"])]) +class PlayerContest : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + var pdId: PlayerProfile = PlayerProfile() + + @Column(name = "contest_id") + var contestId = 0 + var startCount = 0 + + @Enumerated(EnumType.STRING) + var resultRank: ContestBorder = ContestBorder.NONE + var bestValue = -1 + var flag = -1 + var lastUpdateTime: LocalDateTime = LocalDateTime.now() + + constructor(pdId: PlayerProfile, contestId: Int) { + this.pdId = pdId + this.contestId = contestId + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerCustomize.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerCustomize.kt new file mode 100644 index 00000000..a59ae4d8 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerCustomize.kt @@ -0,0 +1,26 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import jakarta.persistence.* +import java.io.Serializable + +@Entity(name = "DivaPlayerCustomize") +@Table(name = "diva_player_customize", uniqueConstraints = [UniqueConstraint(columnNames = ["pd_id", "customize_id"])]) +class PlayerCustomize : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + var pdId: PlayerProfile = PlayerProfile() + + @Column(name = "customize_id") + var customizeId = 0 + + constructor(profile: PlayerProfile, customizeId: Int) { + this.pdId = profile + this.customizeId = customizeId + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerInventory.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerInventory.kt new file mode 100644 index 00000000..6d7e7901 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerInventory.kt @@ -0,0 +1,30 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import com.fasterxml.jackson.annotation.JsonIgnore +import jakarta.persistence.* +import java.io.Serializable + +@Entity(name = "DivaPlayerInventory") +@Table(name = "diva_player_inventory", uniqueConstraints = [UniqueConstraint(columnNames = ["pd_id", "value", "type"])]) +class PlayerInventory : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + @JsonIgnore + var pdId: PlayerProfile = PlayerProfile() + var value: String = "" + + // Type: (1: Skin, 2: Call sign plate, 3: Call sign) + var type: String = "" + + constructor(pdId: PlayerProfile, value: String, type: String) { + this.pdId = pdId + this.value = value + this.type = type + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerModule.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerModule.kt new file mode 100644 index 00000000..9cc691bd --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerModule.kt @@ -0,0 +1,26 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import jakarta.persistence.* +import java.io.Serializable + +@Entity(name = "DivaPlayerModule") +@Table(name = "diva_player_module", uniqueConstraints = [UniqueConstraint(columnNames = ["pd_id", "module_id"])]) +class PlayerModule : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + var pdId: PlayerProfile = PlayerProfile() + + @Column(name = "module_id") + var moduleId = 0 + + constructor(profile: PlayerProfile, moduleId: Int) { + this.pdId = profile + this.moduleId = moduleId + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerProfile.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerProfile.kt new file mode 100644 index 00000000..d6213f65 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerProfile.kt @@ -0,0 +1,225 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import com.fasterxml.jackson.annotation.JsonIgnore +import icu.samnyan.aqua.sega.diva.model.common.* +import icu.samnyan.aqua.sega.diva.util.DivaStringUtils.getDummyString +import jakarta.persistence.* +import java.io.Serializable +import java.time.LocalDateTime + +@Entity(name = "DivaPlayerProfile") +@Table(name = "diva_player_profile") +class PlayerProfile : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @Column(unique = true) + var pdId: Long = 0 + var playerName: String = "xxx" + var vocaloidPoints = 300 + var level = 1 + var levelExp = 0 + var levelTitle: String = "xxx" + var plateId = -1 + var plateEffectId = -1 + + @Enumerated(EnumType.STRING) + var passwordStatus: PassStat = PassStat.MISS + + @JsonIgnore + var password: String = "**********" + + /** + * Game play customize + */ + var preferPerPvModule = true + var preferCommonModule = false + var usePerPvSkin = false + var usePerPvButtonSe = false + var usePerPvSliderSe = false + var usePerPvChainSliderSe = false + var usePerPvTouchSliderSe = false + var commonModule: String = "-999,-999,-999" + var commonCustomizeItems: String = "-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999" + var commonModuleSetTime: LocalDateTime = LocalDateTime.now() + var moduleSelectItemFlag: String = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + + // -1 is disable + var commonSkin = -1 + + /** + * Sound Setting + */ + var headphoneVolume = 100 + var buttonSeOn = true + var buttonSeVolume = 100 + var sliderSeVolume = 100 + var buttonSe = -1 + var chainSlideSe = -1 + var slideSe = -1 + var sliderTouchSe = -1 + + /** + * View Setting + */ + @Enumerated(EnumType.STRING) + var sortMode: SortMode = SortMode.RELEASE_DATE + + @JsonIgnore + var nextPvId = -1 + + @JsonIgnore + @Enumerated(EnumType.STRING) + var nextDifficulty: Difficulty = Difficulty.NORMAL + + @JsonIgnore + @Enumerated(EnumType.STRING) + var nextEdition: Edition = Edition.ORIGINAL + var showInterimRanking = true + var showClearStatus = true + var showGreatBorder = true + var showExcellentBorder = true + var showRivalBorder = true + var showRgoSetting = true + + @JsonIgnore + var contestNowPlayingEnable = false + + @JsonIgnore + var contestNowPlayingId = -1 + + // Contest now playing progress + @JsonIgnore + var contestNowPlayingValue = -1 + + @JsonIgnore + @Enumerated(EnumType.STRING) + var contestNowPlayingResultRank: ContestBorder = ContestBorder.NONE + + // This store the current progress of contest + @JsonIgnore + var contestNowPlayingSpecifier: String = "" + + + /** + * MyList, comma separate string + */ + var myList0: String = getDummyString("-1", 40) + var myList1: String = getDummyString("-1", 40) + var myList2: String = getDummyString("-1", 40) + + @JsonIgnore + var rivalPdId: Long = -1 + + constructor(pdId: Long, playerName: String) { + this.pdId = pdId + this.playerName = playerName + } + + constructor( + id: Long, + pdId: Long, + playerName: String, + vocaloidPoints: Int, + level: Int, + levelExp: Int, + levelTitle: String, + plateId: Int, + plateEffectId: Int, + passwordStatus: PassStat, + password: String, + preferPerPvModule: Boolean, + preferCommonModule: Boolean, + usePerPvSkin: Boolean, + usePerPvButtonSe: Boolean, + usePerPvSliderSe: Boolean, + usePerPvChainSliderSe: Boolean, + usePerPvTouchSliderSe: Boolean, + commonModule: String, + commonCustomizeItems: String, + commonModuleSetTime: LocalDateTime, + moduleSelectItemFlag: String, + commonSkin: Int, + headphoneVolume: Int, + buttonSeOn: Boolean, + buttonSeVolume: Int, + sliderSeVolume: Int, + buttonSe: Int, + chainSlideSe: Int, + slideSe: Int, + sliderTouchSe: Int, + sortMode: SortMode, + nextPvId: Int, + nextDifficulty: Difficulty, + nextEdition: Edition, + showInterimRanking: Boolean, + showClearStatus: Boolean, + showGreatBorder: Boolean, + showExcellentBorder: Boolean, + showRivalBorder: Boolean, + showRgoSetting: Boolean, + contestNowPlayingEnable: Boolean, + contestNowPlayingId: Int, + contestNowPlayingValue: Int, + contestNowPlayingResultRank: ContestBorder, + contestNowPlayingSpecifier: String, + myList0: String, + myList1: String, + myList2: String, + rivalPdId: Long + ) { + this.id = id + this.pdId = pdId + this.playerName = playerName + this.vocaloidPoints = vocaloidPoints + this.level = level + this.levelExp = levelExp + this.levelTitle = levelTitle + this.plateId = plateId + this.plateEffectId = plateEffectId + this.passwordStatus = passwordStatus + this.password = password + this.preferPerPvModule = preferPerPvModule + this.preferCommonModule = preferCommonModule + this.usePerPvSkin = usePerPvSkin + this.usePerPvButtonSe = usePerPvButtonSe + this.usePerPvSliderSe = usePerPvSliderSe + this.usePerPvChainSliderSe = usePerPvChainSliderSe + this.usePerPvTouchSliderSe = usePerPvTouchSliderSe + this.commonModule = commonModule + this.commonCustomizeItems = commonCustomizeItems + this.commonModuleSetTime = commonModuleSetTime + this.moduleSelectItemFlag = moduleSelectItemFlag + this.commonSkin = commonSkin + this.headphoneVolume = headphoneVolume + this.buttonSeOn = buttonSeOn + this.buttonSeVolume = buttonSeVolume + this.sliderSeVolume = sliderSeVolume + this.buttonSe = buttonSe + this.chainSlideSe = chainSlideSe + this.slideSe = slideSe + this.sliderTouchSe = sliderTouchSe + this.sortMode = sortMode + this.nextPvId = nextPvId + this.nextDifficulty = nextDifficulty + this.nextEdition = nextEdition + this.showInterimRanking = showInterimRanking + this.showClearStatus = showClearStatus + this.showGreatBorder = showGreatBorder + this.showExcellentBorder = showExcellentBorder + this.showRivalBorder = showRivalBorder + this.showRgoSetting = showRgoSetting + this.contestNowPlayingEnable = contestNowPlayingEnable + this.contestNowPlayingId = contestNowPlayingId + this.contestNowPlayingValue = contestNowPlayingValue + this.contestNowPlayingResultRank = contestNowPlayingResultRank + this.contestNowPlayingSpecifier = contestNowPlayingSpecifier + this.myList0 = myList0 + this.myList1 = myList1 + this.myList2 = myList2 + this.rivalPdId = rivalPdId + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvCustomize.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvCustomize.kt new file mode 100644 index 00000000..3e5d276e --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvCustomize.kt @@ -0,0 +1,36 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import com.fasterxml.jackson.annotation.JsonIgnore +import jakarta.persistence.* +import java.io.Serializable + +@Entity(name = "DivaPlayerPvCustomize") +@Table(name = "diva_player_pv_customize", uniqueConstraints = [UniqueConstraint(columnNames = ["pd_id", "pv_id"])]) +class PlayerPvCustomize : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + @JsonIgnore + var pdId: PlayerProfile = PlayerProfile() + + @Column(name = "pv_id") + var pvId = -1 + var module: String = "-999,-999,-999" + var customize: String = "-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999" + var customizeFlag: String = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" + var skin = -1 + var buttonSe = -1 + var slideSe = -1 + var chainSlideSe = -1 + var sliderTouchSe = -1 + + constructor(pdId: PlayerProfile, pvId: Int) { + this.pdId = pdId + this.pvId = pvId + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvRecord.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvRecord.kt new file mode 100644 index 00000000..64168803 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerPvRecord.kt @@ -0,0 +1,58 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import com.fasterxml.jackson.annotation.JsonIgnore +import icu.samnyan.aqua.sega.diva.model.common.ChallengeKind +import icu.samnyan.aqua.sega.diva.model.common.ClearResult +import icu.samnyan.aqua.sega.diva.model.common.Difficulty +import icu.samnyan.aqua.sega.diva.model.common.Edition +import jakarta.persistence.* +import java.io.Serializable + +@Entity(name = "DivaPlayerPvRecord") +@Table( + name = "diva_player_pv_record", + uniqueConstraints = [UniqueConstraint(columnNames = ["pd_id", "pv_id", "edition", "difficulty"])] +) +class PlayerPvRecord : Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + @JsonIgnore + var pdId: PlayerProfile = PlayerProfile() + + @Column(name = "pv_id") + var pvId = -1 + + @Enumerated(EnumType.STRING) + var edition: Edition = Edition.ORIGINAL + + @Enumerated(EnumType.STRING) + var difficulty: Difficulty = Difficulty.NORMAL + + @Enumerated(EnumType.STRING) + var result: ClearResult = ClearResult.NO_CLEAR + var maxScore = -1 + var maxAttain = -1 + + @Enumerated(EnumType.STRING) + var challengeKind: ChallengeKind = ChallengeKind.UNDEFINED + var rgoPurchased: String = "0,0,0" + var rgoPlayed: String = "0,0,0" + + constructor(pvId: Int, edition: Edition) { + this.pvId = pvId + this.edition = edition + } + + constructor(pdId: PlayerProfile, pvId: Int, edition: Edition, difficulty: Difficulty) { + this.pdId = pdId + this.pvId = pvId + this.edition = edition + this.difficulty = difficulty + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerScreenShot.kt b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerScreenShot.kt new file mode 100644 index 00000000..01d0caed --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/db/userdata/PlayerScreenShot.kt @@ -0,0 +1,29 @@ +package icu.samnyan.aqua.sega.diva.model.db.userdata + +import jakarta.persistence.* + +@Entity(name = "DivaPlayerScreenShot") +@Table(name = "diva_player_screen_shot") +class PlayerScreenShot { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @ManyToOne + @JoinColumn(name = "pd_id") + var pdId: PlayerProfile = PlayerProfile() + var pvId: Long = 0 + var fileName: String = "" + var moduleList: String = "" + var customizeList: String = "" + + constructor(pdId: PlayerProfile, fileName: String, pvId: Long, moduleList: String, customizeList: String) { + this.pdId = pdId + this.fileName = fileName + this.pvId = pvId + this.moduleList = moduleList + this.customizeList = customizeList + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Contest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Contest.java deleted file mode 100644 index 9605925c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Contest.java +++ /dev/null @@ -1,153 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import icu.samnyan.aqua.sega.diva.model.common.ContestLeague; -import icu.samnyan.aqua.sega.diva.model.common.ContestNormaType; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.util.URIEncoder; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.apache.commons.lang3.StringUtils; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaContest") -@Table(name = "diva_contest") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Contest implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; - - private boolean enable; - - private LocalDateTime startTime; - - private LocalDateTime endTime; - - private String name; - - private String description; - - @Enumerated(EnumType.STRING) - private ContestLeague league; - - private int stars; - - private int minComplexity; // Only use when Pv difficulty list is not set. - - private int maxComplexity; - - private int stages; - - private String stageLimit; - - @Enumerated(EnumType.STRING) - private ContestNormaType normaType; - - private int bronzeBorders = 0; - - private int sliverBorders = 0; - - private int goldBorders = 0; - - // Pv List format: "pv_id_start:pv_id_end,pv_id_start:pv_id_end,pv_id_start:pv_id_end" more than 20 group will be ignore, put in -1 for empty end - private String pvList; - - // Pv difficulty list format: "pv_difficulty:min_complexity:max_complexity" - private String pvDiffList; - - // ContestReward format: - // Reward Type: (-1 None, 0 VP, 1 Skin, 2 Callsign, 3 Customize) - // Format: "rewardType:reward:string1:string2" string1 and 2 should be urlencoded and must exist. use *** aka %2A%2A%2A as placeholder - private String bronzeContestReward; - - private String sliverContestReward; - - private String goldContestReward; - - // ContestReward format: "rewardType:reward:string1:string2" - private String contestEntryReward; - - public String getString() { - List list = new LinkedList<>(); - list.add(this.id); // Contest ID - list.add(DivaDateTimeUtil.format(this.startTime)); // Start time - list.add(DivaDateTimeUtil.format(this.endTime)); // End time - list.add(URIEncoder.encode(this.name)); // Contest name - list.add(URIEncoder.encode(this.description)); // Contest description - list.add(this.league.getValue()); // Contest league - list.add(this.stars); // Contest starts - list.add(this.stages); // Contest stage, 1~9 - list.add(this.stageLimit); // list_lump_num ( 0 will be all stage same. > 1 will became stage max defined chart? ) - list.add(this.normaType.getValue()); - list.add(this.bronzeBorders); - list.add(this.sliverBorders); - list.add(this.goldBorders); - for (int i = 1; i <= 20; i++) { - // format is "pv_range_start,pv_range_end,min_complexity,max_complexity,difficulty,unknown" - if (StringUtils.isBlank(pvList) || !pvList.contains(":")) { - list.add(-1); - list.add(-1); - if (i == 1) { - list.add(this.minComplexity); - list.add(this.maxComplexity); - } else { - list.add(-2); - list.add(-2); - } - list.add(-1); - list.add(-2); - list.add("7fffffffffffffffffffffffffffffff"); - } else { - String[] groups = pvList.split(","); - if (groups.length < i) { - list.add(-1); - list.add(-1); - list.add(-2); - list.add(-2); - list.add(-1); - list.add(-2); - list.add("7fffffffffffffffffffffffffffffff"); - } else { - String[] ids = groups[i - 1].split(":"); - list.add(ids[0]); - list.add(ids[1]); - if(StringUtils.isBlank(pvDiffList) || !pvDiffList.contains(":")) { - list.add(this.minComplexity); - list.add(this.maxComplexity); - list.add(-1); - } else { - String[] diffList = pvDiffList.split(","); - if(diffList.length < i) { - list.add(this.minComplexity); - list.add(this.maxComplexity); - list.add(-1); - } else { - String[] diff = diffList[i-1].split(":"); - list.add(diff[1]); - list.add(diff[2]); - list.add(diff[0]); - } - } - list.add(-2); - list.add("7fffffffffffffffffffffffffffffff"); - } - } - } - return list.stream().map(Object::toString).collect(Collectors.joining(",")); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Difficulty.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Difficulty.java deleted file mode 100644 index 379d0240..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Difficulty.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPvLevel") -@Table(name = "diva_pv_info_level") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Difficulty { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "pv_id") - private Pv pv; - - private int edition; - - private String level; - - private int version; - - private String diff; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaCustomize.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaCustomize.java deleted file mode 100644 index 5f3e113c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaCustomize.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import icu.samnyan.aqua.sega.diva.model.Internalizable; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.util.URIEncoder; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaCustomize") -@Table(name = "diva_customize") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class DivaCustomize implements Serializable, Internalizable { - - private static final long serialVersionUID = 1L; - - @Id - private int id; - - private String name; - - private int price; - - private LocalDateTime releaseDate; - - private LocalDateTime endDate; - - private int sortOrder; - - @Override - public String toInternal() { - return id + ",0," + - URIEncoder.encode(name) + "," + - price + "," + - DivaDateTimeUtil.format(releaseDate) + "," + - DivaDateTimeUtil.format(endDate) + "," + - sortOrder; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaModule.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaModule.java deleted file mode 100644 index 92b4d684..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/DivaModule.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import icu.samnyan.aqua.sega.diva.model.Internalizable; -import icu.samnyan.aqua.sega.diva.util.DivaDateTimeUtil; -import icu.samnyan.aqua.sega.util.URIEncoder; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaModule") -@Table(name = "diva_module") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class DivaModule implements Serializable, Internalizable { - - private static final long serialVersionUID = 1L; - - @Id - private int id; - - private String name; - - private int price; - - private LocalDateTime releaseDate; - - private LocalDateTime endDate; - - private int sortOrder; - - @Override - public String toInternal() { - return id + ",0," + - URIEncoder.encode(name) + "," + - price + "," + - DivaDateTimeUtil.format(releaseDate) + "," + - DivaDateTimeUtil.format(endDate) + "," + - sortOrder; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Festa.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Festa.java deleted file mode 100644 index 5971e0c5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Festa.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.common.FestaKind; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaFesta") -@Table(name = "diva_festa") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Festa implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id = -1; - - private boolean enable = true; - - private String name = "xxx"; - - @Enumerated(EnumType.STRING) - private FestaKind kind = FestaKind.PINK_FESTA; - - @Enumerated(EnumType.STRING) - private Difficulty difficulty = Difficulty.UNDEFINED; - - private String pvList = "ALL"; - - private String attributes = "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; - - private Integer addVP = 0; - - private Integer vpMultiplier = 1; - - private LocalDateTime start = LocalDateTime.of(2005, 1, 1, 0, 0); - - private LocalDateTime end = LocalDateTime.of(2005, 1, 1, 0, 0); - - private LocalDateTime createDate = LocalDateTime.of(2005, 1, 1, 0, 0); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/NgWords.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/NgWords.java deleted file mode 100644 index c8be4f17..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/NgWords.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaNgWords") -@Table(name = "diva_ng_words") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class NgWords implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private int id; - - private String word; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Pv.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Pv.java deleted file mode 100644 index 191f0049..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Pv.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPvInfo") -@Table(name = "diva_pv_info") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Pv implements Serializable -{ - private static final long serialVersionUID = 1L; - - @Id - private Integer pvId; - - private Integer bpm; - - private String songName; - - private String songNameEng; - - private String songNameReading; - - private String arranger; - - private String lyrics; - - private String music; - - private Integer performerNumber; - - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pv") - @MapKey(name = "diff") - private Map difficulty; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/PvEntry.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/PvEntry.java deleted file mode 100644 index d1ce14cd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/PvEntry.java +++ /dev/null @@ -1,57 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.gamedata; - -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPvEntry") -@Table(name = "diva_pv_entry") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PvEntry implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - private int pvId; - - @Enumerated(EnumType.STRING) - private Difficulty difficulty; - - private int version; - - @Enumerated(EnumType.STRING) - private Edition edition; - - private LocalDateTime demoStart; - - private LocalDateTime demoEnd; - - private LocalDateTime playableStart; - - private LocalDateTime playableEnd; - - public PvEntry(int pvId, Difficulty difficulty, int version, Edition edition, LocalDateTime demoStart, LocalDateTime demoEnd, LocalDateTime playableStart, LocalDateTime playableEnd) { - this.pvId = pvId; - this.difficulty = difficulty; - this.version = version; - this.edition = edition; - this.demoStart = demoStart; - this.demoEnd = demoEnd; - this.playableStart = playableStart; - this.playableEnd = playableEnd; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/BaseRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/BaseRequest.java deleted file mode 100644 index 93d19c28..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/BaseRequest.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.time.ZonedDateTime; - -/** - * Data format from https://dev.s-ul.eu/mikumiku/minime/wikis/home - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class BaseRequest { - private String cmd; // Command - private String req_id; // Request Id - private String game_id; // Game Id - private String r_ver; // Game Version - private String kc_serial; // KeyChip Serial - private String b_serial; // Board Serial - private String place_id; // Place Id - private ZonedDateTime time_stamp; - private String start_up_mode; // Satellite mode, as on dipsw#1, 0 is SUB and 1 is MAIN - private String cmm_dly_mod; - private String cmm_dly_sec; - private String cmm_err_mod; - private String country_code; - private String region_code; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/FormRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/FormRequest.java deleted file mode 100644 index 4aca88d0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/FormRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.web.multipart.MultipartFile; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class FormRequest { - private String query; - private MultipartFile bin; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/AttendRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/AttendRequest.java deleted file mode 100644 index 5356cb7a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/AttendRequest.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.boot; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * https://dev.s-ul.eu/mikumiku/minime/wikis/Command/attend - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class AttendRequest extends BaseRequest { - public String atnd_lut; // Date-Time of last attend state update - public String atnd_prm1; // Etc. Parameter, only 14 are used, but array of 100 int - public String atnd_prm2; // Game balance parameter, only 89 are used of 100 - public String atnd_prm3; // Dispersal parameter, only 6 used of 100 -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/GameInitRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/GameInitRequest.java deleted file mode 100644 index 22b70a11..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/GameInitRequest.java +++ /dev/null @@ -1,14 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.boot; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class GameInitRequest extends BaseRequest { - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/CardProcedureRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/CardProcedureRequest.java deleted file mode 100644 index 59c76fd1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/CardProcedureRequest.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.card; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class CardProcedureRequest extends BaseRequest { - private int cd_adm_cmd; - private String a_code; - private long aime_id; - private String aime_a_code; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangeNameRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangeNameRequest.java deleted file mode 100644 index 1c2466db..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangeNameRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.card; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class ChangeNameRequest extends BaseRequest { - private String a_code; - private long aime_id; - private String aime_a_code; - private long pd_id; - private int accept_idx; - private String player_name; - private int chg_name_price; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangePasswdRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangePasswdRequest.java deleted file mode 100644 index 86287a8f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangePasswdRequest.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.card; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class ChangePasswdRequest extends BaseRequest { - private String a_code; - private long aime_id; - private String aime_a_code; - private long pd_id; - private int accept_idx; - private String new_passwd; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/RegistrationRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/RegistrationRequest.java deleted file mode 100644 index d0556c7e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/RegistrationRequest.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.card; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class RegistrationRequest extends BaseRequest { - private String pmm; - private String idm; - private String mmgameid; - private String mmuid; - private String a_code; - private long aime_id; - private String aime_a_code; - private String key_obj_type; - private String player_name; - private String passwd; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/BannerDataRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/BannerDataRequest.java deleted file mode 100644 index c88dec0e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/BannerDataRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.databank; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class BannerDataRequest extends BaseRequest { - private int bd_id; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/PsRankingRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/PsRankingRequest.java deleted file mode 100644 index fbfc61aa..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/PsRankingRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.databank; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class PsRankingRequest extends BaseRequest { - private int[] rnk_ps_pv_id_lst; - private int rnk_ps_idx; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyCstmzItmRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyCstmzItmRequest.java deleted file mode 100644 index e1142eb5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyCstmzItmRequest.java +++ /dev/null @@ -1,22 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class BuyCstmzItmRequest extends BaseRequest { - private long pd_id; - private int accept_idx; - private int start_idx; - private int cstmz_itm_id; - private int cstmz_itm_price; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyModuleRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyModuleRequest.java deleted file mode 100644 index 963e337d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyModuleRequest.java +++ /dev/null @@ -1,22 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class BuyModuleRequest extends BaseRequest { - private long pd_id; - private int accept_idx; - private int start_idx; - private int mdl_id; - private int mdl_price; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/GetPvPdRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/GetPvPdRequest.java deleted file mode 100644 index 1dca7e44..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/GetPvPdRequest.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class GetPvPdRequest extends BaseRequest { - private long pd_id; - private int difficulty; - private int[] pd_pv_id_lst; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/ShopExitRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/ShopExitRequest.java deleted file mode 100644 index aebb3c37..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/ShopExitRequest.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class ShopExitRequest extends BaseRequest { - private long pd_id; - private int accept_idx; - private int start_idx; - private int use_pv_mdl_eqp; - private int ply_pv_id; - private int[] mdl_eqp_cmn_ary; - private int[] c_itm_eqp_cmn_ary; - private int[] ms_itm_flg_cmn_ary; - private int[] mdl_eqp_pv_ary; - private int[] c_itm_eqp_pv_ary; - private int[] ms_itm_flg_pv_ary; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageResultRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageResultRequest.java deleted file mode 100644 index c4a733a7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageResultRequest.java +++ /dev/null @@ -1,111 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class StageResultRequest extends BaseRequest { - public long pd_id; - public int accept_idx; - public int start_idx; - public int hp_vol; - public boolean btn_se_vol; - public int btn_se_vol2; - public int sldr_se_vol2; - public boolean use_pv_mdl_eqp; - public int vcld_pts; - public int nxt_pv_id; - public int nxt_dffclty; - public int nxt_edtn; - public int sort_kind; - public int nblss_ltt_stts; - public int nblss_ltt_tckt; - public int[] my_qst_id; - public int[] my_qst_sts; - public boolean free_play; - public int game_type; - public int[] stg_difficulty; - public int[] stg_edtn; - public int[] stg_ply_pv_id; - public int[] stg_sel_pv_id; - public int[] stg_scrpt_ver; - public int[] stg_score; - public int[] stg_chllng_kind; - public int[] stg_chllng_result; - public int[] stg_clr_kind; - public int[] stg_vcld_pts; - public int[] stg_cool_cnt; - public int[] stg_cool_pct; - public int[] stg_fine_cnt; - public int[] stg_fine_pct; - public int[] stg_safe_cnt; - public int[] stg_safe_pct; - public int[] stg_sad_cnt; - public int[] stg_sad_pct; - public int[] stg_wt_wg_cnt; - public int[] stg_wt_wg_pct; - - public int[] stg_max_cmb; - public int[] stg_chance_tm; - public int[] stg_sm_hl; - public int[] stg_atn_pnt; - public int[] stg_skin_id; - public int[] stg_btn_se; - public int[] stg_btn_se_vol; - public int[] stg_sld_se; - public int[] stg_chn_sld_se; - public int[] stg_sldr_tch_se; - public int[] stg_mdl_id; - public int[] stg_sel_mdl_id; - public int[] stg_rvl_pd_id; - public int[] stg_rvl_wl; - public int[] stg_cpt_rslt; - public int[] stg_sld_scr; - public int[] stg_is_sr_gm; - public int[] stg_pv_brnch_rslt; - public int[] stg_vcl_chg; - public int[] stg_c_itm_id; - public int[] stg_ms_itm_flg; - public int[] stg_rgo; - public int[] stg_ss_num; - public int[] stg_is_cs_scs; - public int[] stg_is_nppg_use; - public int[] stg_p_std_lo_id; - public int[] stg_p_std_is_to; - public int[] stg_p_std_is_ccu; - public int[] stg_p_std_is_tiu; - public int[] stg_p_std_is_iu; - public int[] stg_p_std_is_npu; - public int[] stg_p_std_is_du; - - public int ply_pv_id; - - public int ttl_vp_add; - public int ttl_vp_sub; - - public int continue_cnt; - public int[] gu_cmd; - - public int[] mdl_eqp_cmn_ary; - public int[] c_itm_eqp_cmn_ary; - public int[] ms_itm_flg_cmn_ary; - public int[] mdl_eqp_pv_ary; - public int[] c_itm_eqp_pv_ary; - public int[] ms_itm_flg_pv_ary; - public int[] stg_mdl_s_sts; - - public int cr_cid; - public int cr_sc; - public int cr_tv; - public int cr_if; - public String[] cr_sp; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageStartRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageStartRequest.java deleted file mode 100644 index 9162507a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StageStartRequest.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class StageStartRequest extends BaseRequest { - public long pd_id; - public int accept_idx; - public int start_idx; - public boolean free_play; - public int game_type; - public int[] stg_difficulty; - public int[] stg_edtn; - public int[] stg_ply_pv_id; - public int[] stg_sel_pv_id; // - public int[] stg_scrpt_ver; - - public int[] stg_skin_id; - public int[] stg_btn_se; - public int[] stg_btn_se_vol; - public int[] stg_sld_se; - public int[] stg_chn_sld_se; - public int[] stg_sldr_tch_se; - public int[] stg_mdl_id; - public int[] stg_sel_mdl_id; - public int[] stg_rvl_pd_id; - public int[] stg_c_itm_id; - public int[] stg_ms_itm_flg; - public int[] stg_rgo; - public int[] stg_ss_num; - public int[] stg_is_cs_scs; - - public int continue_cnt; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StoreSsRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StoreSsRequest.java deleted file mode 100644 index df2ee3a7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StoreSsRequest.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.ingame; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class StoreSsRequest extends BaseRequest { - private long pd_id; - private String ss_dat_id; - private int ss_pv_id; - private int ss_sel_pv_id; - private int[] ss_mdl_id; - private int[] ss_sel_mdl_id; - private int[] ss_c_itm_id; - private int[] ss_pxl_sz; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PdUnlockRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PdUnlockRequest.java deleted file mode 100644 index 6d5317ed..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PdUnlockRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.user; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class PdUnlockRequest extends BaseRequest { - private long pd_id; - private int accept_idx; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PreStartRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PreStartRequest.java deleted file mode 100644 index 3460bacd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PreStartRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.user; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class PreStartRequest extends BaseRequest { - private String pmm; - private String idm; - private String mmgameid; - private String mmuid; - private String a_code; - private long aime_id; - private String aime_a_code; - private String key_obj_type; - private boolean exec_vu; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/SpendCreditRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/SpendCreditRequest.java deleted file mode 100644 index 52d7164c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/SpendCreditRequest.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.user; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class SpendCreditRequest extends BaseRequest { - private long pd_id; - private int[] my_qst_id; - private int[] my_qst_sts; - private int crdt_typ; - private int[] cmpgn_id; - private int[] cmpgn_pb; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/StartRequest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/StartRequest.java deleted file mode 100644 index 130eae2d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/StartRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.request.user; - -import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class StartRequest extends BaseRequest { - public long pd_id; - public int accept_idx; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/BaseResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/BaseResponse.java deleted file mode 100644 index 4093b3a4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/BaseResponse.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -public class BaseResponse { - private String cmd; - private String req_id; - private String stat; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/AttendResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/AttendResponse.java deleted file mode 100644 index bad9fd50..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/AttendResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.boot; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class AttendResponse extends BaseResponse { - private String atnd_prm1; - private String atnd_prm2; - private String atnd_prm3; - private LocalDateTime atnd_lut; - - public AttendResponse(String cmd, String req_id, String stat, String atnd_prm1, String atnd_prm2, String atnd_prm3, LocalDateTime atnd_lut) { - super(cmd, req_id, stat); - this.atnd_prm1 = atnd_prm1; - this.atnd_prm2 = atnd_prm2; - this.atnd_prm3 = atnd_prm3; - this.atnd_lut = atnd_lut; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/GameInitResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/GameInitResponse.java deleted file mode 100644 index 56743966..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/GameInitResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.boot; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class GameInitResponse extends BaseResponse { - private String db_close; - private String retry_time; - - public GameInitResponse(String cmd, String req_id, String stat, String db_close, String retry_time) { - super(cmd, req_id, stat); - this.db_close = db_close; - this.retry_time = retry_time; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/CardProcedureResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/CardProcedureResponse.java deleted file mode 100644 index 966db0f8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/CardProcedureResponse.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.card; - -import icu.samnyan.aqua.sega.diva.model.common.PassStat; -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class CardProcedureResponse extends BaseResponse { - private Result cd_adm_result; - private int chg_name_price = 100; - private int accept_idx; - private long pd_id; - private String player_name; - private Integer lv_num; - private Integer lv_pnt; - private String lv_str; - private Integer lv_efct_id; - private Integer lv_plt_id; - private Integer vcld_pts; - private PassStat passwd_stat; - - public CardProcedureResponse(String cmd, String req_id, String stat, Result cd_adm_result, int chg_name_price, int accept_idx, long pd_id, String player_name, Integer lv_num, Integer lv_pnt, String lv_str, Integer lv_efct_id, Integer lv_plt_id, Integer vcld_pts, PassStat passwd_stat) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - this.chg_name_price = chg_name_price; - this.accept_idx = accept_idx; - this.pd_id = pd_id; - this.player_name = player_name; - this.lv_num = lv_num; - this.lv_pnt = lv_pnt; - this.lv_str = lv_str; - this.lv_efct_id = lv_efct_id; - this.lv_plt_id = lv_plt_id; - this.vcld_pts = vcld_pts; - this.passwd_stat = passwd_stat; - } - - public CardProcedureResponse(String cmd, String req_id, String stat, Result cd_adm_result) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangeNameResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangeNameResponse.java deleted file mode 100644 index bf4a460f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangeNameResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.card; - -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class ChangeNameResponse extends BaseResponse { - private Result cd_adm_result; - private int accept_idx; - private long pd_id; - private String player_name; - - public ChangeNameResponse(String cmd, String req_id, String stat, Result cd_adm_result, int accept_idx, long pd_id, String player_name) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - this.accept_idx = accept_idx; - this.pd_id = pd_id; - this.player_name = player_name; - } - - public ChangeNameResponse(String cmd, String req_id, String stat, Result cd_adm_result) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangePasswdResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangePasswdResponse.java deleted file mode 100644 index 6f380265..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/ChangePasswdResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.card; - -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class ChangePasswdResponse extends BaseResponse { - private Result cd_adm_result; - private int accept_idx; - private long pd_id; - - public ChangePasswdResponse(String cmd, String req_id, String stat, Result cd_adm_result, int accept_idx, long pd_id) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - this.accept_idx = accept_idx; - this.pd_id = pd_id; - } - - public ChangePasswdResponse(String cmd, String req_id, String stat, Result cd_adm_result) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/RegistrationResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/RegistrationResponse.java deleted file mode 100644 index b3559db5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/RegistrationResponse.java +++ /dev/null @@ -1,22 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.card; - -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class RegistrationResponse extends BaseResponse { - private Result cd_adm_result; - private long pd_id; - - public RegistrationResponse(String cmd, String req_id, String stat, Result cd_adm_result, long pd_id) { - super(cmd, req_id, stat); - this.cd_adm_result = cd_adm_result; - this.pd_id = pd_id; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerDataResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerDataResponse.java deleted file mode 100644 index 103e802f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerDataResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class BannerDataResponse extends BaseResponse { - private LocalDateTime bd_ut; - private String bd_ti; - private String bd_hs; - private int bd_id; - - public BannerDataResponse(String cmd, String req_id, String stat, LocalDateTime bd_ut, String bd_ti, String bd_hs, int bd_id) { - super(cmd, req_id, stat); - this.bd_ut = bd_ut; - this.bd_ti = bd_ti; - this.bd_hs = bd_hs; - this.bd_id = bd_id; - } -} - diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerInfoResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerInfoResponse.java deleted file mode 100644 index 091aa7df..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerInfoResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class BannerInfoResponse extends BaseResponse { - private String bi_lut; - // Array of 10 - private String bi_id; - private String bi_st; - private String bi_et; - private String bi_ut; - - public BannerInfoResponse(String cmd, String req_id, String stat, String bi_lut, String bi_id, String bi_st, String bi_et, String bi_ut) { - super(cmd, req_id, stat); - this.bi_lut = bi_lut; - this.bi_id = bi_id; - this.bi_st = bi_st; - this.bi_et = bi_et; - this.bi_ut = bi_ut; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ContestInfoResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ContestInfoResponse.java deleted file mode 100644 index 4c6731fb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ContestInfoResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class ContestInfoResponse extends BaseResponse { - private LocalDateTime ci_lut; - private String ci_str; - - public ContestInfoResponse(String cmd, String req_id, String stat, LocalDateTime ci_lut, String ci_str) { - super(cmd, req_id, stat); - this.ci_lut = ci_lut; - this.ci_str = ci_str; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmCtlgResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmCtlgResponse.java deleted file mode 100644 index 36296b8c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmCtlgResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class CstmzItmCtlgResponse extends BaseResponse { - private String cstmz_itm_ctlg_lut; - private String cstmz_itm_ctlg; - - public CstmzItmCtlgResponse(String cmd, String req_id, String stat, String cstmz_itm_ctlg_lut, String cstmz_itm_ctlg) { - super(cmd, req_id, stat); - this.cstmz_itm_ctlg_lut = cstmz_itm_ctlg_lut; - this.cstmz_itm_ctlg = cstmz_itm_ctlg; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmNgMdlListResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmNgMdlListResponse.java deleted file mode 100644 index 2bd4b5f9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmNgMdlListResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class CstmzItmNgMdlListResponse extends BaseResponse { - private String cinml_lut; - private String cinm_lst; - - public CstmzItmNgMdlListResponse(String cmd, String req_id, String stat, String cinml_lut, String cinm_lst) { - super(cmd, req_id, stat); - this.cinml_lut = cinml_lut; - this.cinm_lst = cinm_lst; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/FestaInfoResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/FestaInfoResponse.java deleted file mode 100644 index 86c29e19..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/FestaInfoResponse.java +++ /dev/null @@ -1,39 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class FestaInfoResponse extends BaseResponse { - private String fi_id; - private String fi_name; - private String fi_kind; - private String fi_difficulty; - private String fi_pv_id_lst; - private String fi_attr; - private String fi_add_vp; - private String fi_mul_vp; - private String fi_st; - private String fi_et; - private String fi_lut; - - public FestaInfoResponse(String cmd, String req_id, String stat, String fi_id, String fi_name, String fi_kind, String fi_difficulty, String fi_pv_id_lst, String fi_attr, String fi_add_vp, String fi_mul_vp, String fi_st, String fi_et, String fi_lut) { - super(cmd, req_id, stat); - this.fi_id = fi_id; - this.fi_name = fi_name; - this.fi_kind = fi_kind; - this.fi_difficulty = fi_difficulty; - this.fi_pv_id_lst = fi_pv_id_lst; - this.fi_attr = fi_attr; - this.fi_add_vp = fi_add_vp; - this.fi_mul_vp = fi_mul_vp; - this.fi_st = fi_st; - this.fi_et = fi_et; - this.fi_lut = fi_lut; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/NvRankingResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/NvRankingResponse.java deleted file mode 100644 index fc3d9f84..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/NvRankingResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class NvRankingResponse extends BaseResponse { - private String rnk_nv_tag_str; - private LocalDateTime rnk_nv_ts; - private String rnk_nv_data; - private LocalDateTime rnk_nv_lut; - - public NvRankingResponse(String cmd, String req_id, String stat, String rnk_nv_tag_str, LocalDateTime rnk_nv_ts, String rnk_nv_data, LocalDateTime rnk_nv_lut) { - super(cmd, req_id, stat); - this.rnk_nv_tag_str = rnk_nv_tag_str; - this.rnk_nv_ts = rnk_nv_ts; - this.rnk_nv_data = rnk_nv_data; - this.rnk_nv_lut = rnk_nv_lut; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PsRankingResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PsRankingResponse.java deleted file mode 100644 index b4784a0f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PsRankingResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PsRankingResponse extends BaseResponse { - private LocalDateTime rnk_ps_lut; - private LocalDateTime rnk_ps_ts; - private int rnk_ps_dffclty; - private String rnk_ps_pv_id; - private String rnk_ps_edtn1; - private String rnk_ps_edtn2; - private String rnk_ps_edtn3; - private String rnk_ps_scr1; - private String rnk_ps_scr2; - private String rnk_ps_scr3; - private String rnk_ps_nm1; - private String rnk_ps_nm2; - private String rnk_ps_nm3; - - public PsRankingResponse(String cmd, String req_id, String stat, LocalDateTime rnk_ps_lut, LocalDateTime rnk_ps_ts, int rnk_ps_dffclty, String rnk_ps_pv_id, String rnk_ps_edtn1, String rnk_ps_edtn2, String rnk_ps_edtn3, String rnk_ps_scr1, String rnk_ps_scr2, String rnk_ps_scr3, String rnk_ps_nm1, String rnk_ps_nm2, String rnk_ps_nm3) { - super(cmd, req_id, stat); - this.rnk_ps_lut = rnk_ps_lut; - this.rnk_ps_ts = rnk_ps_ts; - this.rnk_ps_dffclty = rnk_ps_dffclty; - this.rnk_ps_pv_id = rnk_ps_pv_id; - this.rnk_ps_edtn1 = rnk_ps_edtn1; - this.rnk_ps_edtn2 = rnk_ps_edtn2; - this.rnk_ps_edtn3 = rnk_ps_edtn3; - this.rnk_ps_scr1 = rnk_ps_scr1; - this.rnk_ps_scr2 = rnk_ps_scr2; - this.rnk_ps_scr3 = rnk_ps_scr3; - this.rnk_ps_nm1 = rnk_ps_nm1; - this.rnk_ps_nm2 = rnk_ps_nm2; - this.rnk_ps_nm3 = rnk_ps_nm3; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdHCtrlResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdHCtrlResponse.java deleted file mode 100644 index 6106f49c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdHCtrlResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PstdHCtrlResponse extends BaseResponse { - private String p_std_hc_lut; - private String p_std_hc_str; - - public PstdHCtrlResponse(String cmd, String req_id, String stat, String p_std_hc_lut, String p_std_hc_str) { - super(cmd, req_id, stat); - this.p_std_hc_lut = p_std_hc_lut; - this.p_std_hc_str = p_std_hc_str; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdItemNgLstResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdItemNgLstResponse.java deleted file mode 100644 index b09c5d60..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdItemNgLstResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PstdItemNgLstResponse extends BaseResponse { - private String p_std_i_n_lut; - private String p_std_i_ie_n_lst; - private String p_std_i_se_n_lst; - - public PstdItemNgLstResponse(String cmd, String req_id, String stat, String p_std_i_n_lut, String p_std_i_ie_n_lst, String p_std_i_se_n_lst) { - super(cmd, req_id, stat); - this.p_std_i_n_lut = p_std_i_n_lut; - this.p_std_i_ie_n_lst = p_std_i_ie_n_lst; - this.p_std_i_se_n_lst = p_std_i_se_n_lst; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvDefChrLstResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvDefChrLstResponse.java deleted file mode 100644 index 212efad0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvDefChrLstResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PvDefChrLstResponse extends BaseResponse { - private String pdcl_lut; - private String pdc_lst; - - public PvDefChrLstResponse(String cmd, String req_id, String stat, String pdcl_lut, String pdc_lst) { - super(cmd, req_id, stat); - this.pdcl_lut = pdcl_lut; - this.pdc_lst = pdc_lst; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvListResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvListResponse.java deleted file mode 100644 index 18f6ca97..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvListResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PvListResponse extends BaseResponse { - private LocalDateTime pvl_lut; - private String pv_lst; - - public PvListResponse(String cmd, String req_id, String stat, LocalDateTime pvl_lut, String pv_lst) { - super(cmd, req_id, stat); - this.pvl_lut = pvl_lut; - this.pv_lst = pv_lst; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvNgMdlLstResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvNgMdlLstResponse.java deleted file mode 100644 index 23884e56..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvNgMdlLstResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PvNgMdlLstResponse extends BaseResponse { - private String pnml_lut; - private String pnm_lst; - - public PvNgMdlLstResponse(String cmd, String req_id, String stat, String pnml_lut, String pnm_lst) { - super(cmd, req_id, stat); - this.pnml_lut = pnml_lut; - this.pnm_lst = pnm_lst; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/QstInfResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/QstInfResponse.java deleted file mode 100644 index 9b86d815..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/QstInfResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class QstInfResponse extends BaseResponse { - private String qi_lut; - private String qhi_str; - private String qrai_str; - - public QstInfResponse(String cmd, String req_id, String stat, String qi_lut, String qhi_str, String qrai_str) { - super(cmd, req_id, stat); - this.qi_lut = qi_lut; - this.qhi_str = qhi_str; - this.qrai_str = qrai_str; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/RmtWpLstResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/RmtWpLstResponse.java deleted file mode 100644 index ef1c03a2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/RmtWpLstResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class RmtWpLstResponse extends BaseResponse { - private String rwl_lut; - private String rw_lst; - - public RmtWpLstResponse(String cmd, String req_id, String stat, String rwl_lut, String rw_lst) { - super(cmd, req_id, stat); - this.rwl_lut = rwl_lut; - this.rw_lst = rw_lst; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ShopCatalogResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ShopCatalogResponse.java deleted file mode 100644 index 697ea646..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ShopCatalogResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.databank; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class ShopCatalogResponse extends BaseResponse { - private LocalDateTime shp_ctlg_lut; - private String shp_ctlg; - - public ShopCatalogResponse(String cmd, String req_id, String stat, LocalDateTime shp_ctlg_lut, String shp_ctlg) { - super(cmd, req_id, stat); - this.shp_ctlg_lut = shp_ctlg_lut; - this.shp_ctlg = shp_ctlg; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyCstmzItmResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyCstmzItmResponse.java deleted file mode 100644 index 4a3784f0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyCstmzItmResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.ingame; - -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class BuyCstmzItmResponse extends BaseResponse { - private Result shp_rslt; - private int cstmz_itm_id; - private String cstmz_itm_have; - private int vcld_pts; - - public BuyCstmzItmResponse(String cmd, String req_id, String stat, Result shp_rslt, int cstmz_itm_id, String cstmz_itm_have, int vcld_pts) { - super(cmd, req_id, stat); - this.shp_rslt = shp_rslt; - this.cstmz_itm_id = cstmz_itm_id; - this.cstmz_itm_have = cstmz_itm_have; - this.vcld_pts = vcld_pts; - } - - public BuyCstmzItmResponse(String cmd, String req_id, String stat, Result shp_rslt) { - super(cmd, req_id, stat); - this.shp_rslt = shp_rslt; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyModuleResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyModuleResponse.java deleted file mode 100644 index 19a1907c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/BuyModuleResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.ingame; - -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class BuyModuleResponse extends BaseResponse { - private Result shp_rslt; - private int mdl_id; - private String mdl_have; - private int vcld_pts; - - public BuyModuleResponse(String cmd, String req_id, String stat, Result shp_rslt, int mdl_id, String mdl_have, int vcld_pts) { - super(cmd, req_id, stat); - this.shp_rslt = shp_rslt; - this.mdl_id = mdl_id; - this.mdl_have = mdl_have; - this.vcld_pts = vcld_pts; - } - - public BuyModuleResponse(String cmd, String req_id, String stat, Result shp_rslt) { - super(cmd, req_id, stat); - this.shp_rslt = shp_rslt; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/GetPvPdResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/GetPvPdResponse.java deleted file mode 100644 index 96f3ae5f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/GetPvPdResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.ingame; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class GetPvPdResponse extends BaseResponse { - private String pd_by_pv_id; - private Boolean pdddt_flg; - private String pdddt_tm; - - public GetPvPdResponse(String cmd, String req_id, String stat, String pd_by_pv_id, Boolean pdddt_flg, String pdddt_tm) { - super(cmd, req_id, stat); - this.pd_by_pv_id = pd_by_pv_id; - this.pdddt_flg = pdddt_flg; - this.pdddt_tm = pdddt_tm; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/ShopExitResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/ShopExitResponse.java deleted file mode 100644 index 5ffa93f1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/ShopExitResponse.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.ingame; - -import icu.samnyan.aqua.sega.diva.model.common.Result; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class ShopExitResponse extends BaseResponse { - private Result shp_rslt; - - public ShopExitResponse(String cmd, String req_id, String stat, Result shp_rslt) { - super(cmd, req_id, stat); - this.shp_rslt = shp_rslt; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/StageResultResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/StageResultResponse.java deleted file mode 100644 index 813907fd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/StageResultResponse.java +++ /dev/null @@ -1,112 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.ingame; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class StageResultResponse extends BaseResponse { - - private int chllng_kind; - private int lv_num_old; - private int lv_pnt_old; - private int lv_num; - private int lv_pnt; - private String lv_str; - private int lv_efct_id; - private int lv_plt_id; - private int vcld_pts; - private int prsnt_vcld_pts; - private int cnp_cid; - private int cnp_val; - private String cnp_sp; - private String crwd_kind = "-1,-1,-1"; - private String crwd_value = "-1,-1,-1"; - private String crwd_str_0 = "***,***,***"; - private String crwd_str_1 = "***,***,***"; - private int cerwd_kind = -1; - private int cerwd_value = -1; - private String cerwd_str_0 = "***"; - private String cerwd_str_1 = "***"; - private String ttl_str_ary = "xxx"; - private String ttl_plt_id_ary = "-1,-1,-1,-1,-1"; - private String ttl_desc_ary = "xxx"; - private String skin_id_ary = "xxx"; - private String skin_name_ary = "xxx"; - private String skin_illust_ary = "xxx"; - private String skin_desc_ary = "xxx"; - private int pdddt_flg = 0; - private LocalDateTime pdddt_tm; - private int nblss_ltt_stts = -1; - private int nblss_ltt_tckt = -1; - private int nblss_ltt_is_opn = 0; - private int nblss_ltt_prz = 0; - private int nblss_ltt_nxt_stts = 0; - private int nblss_ltt_nxt_tckt = -1; - private String my_qst_id; - private String my_qst_r_qid; - private String my_qst_r_knd; - private String my_qst_r_vl; - private String my_qst_r_nflg; - private String my_ccd_r_qid; - private String my_ccd_r_hnd; - private String my_ccd_r_vp; - - public StageResultResponse(String cmd, String req_id, String stat) { - super(cmd, req_id, stat); - } - - public StageResultResponse(String cmd, String req_id, String stat, int chllng_kind, int lv_num_old, int lv_pnt_old, int lv_num, int lv_pnt, String lv_str, int lv_efct_id, int lv_plt_id, int vcld_pts, int prsnt_vcld_pts, int cnp_cid, int cnp_val, String cnp_sp, String crwd_kind, String crwd_value, String crwd_str_0, String crwd_str_1, int cerwd_kind, int cerwd_value, String cerwd_str_0, String cerwd_str_1, String ttl_str_ary, String ttl_plt_id_ary, String ttl_desc_ary, String skin_id_ary, String skin_name_ary, String skin_illust_ary, String skin_desc_ary, int pdddt_flg, LocalDateTime pdddt_tm, int nblss_ltt_stts, int nblss_ltt_tckt, int nblss_ltt_is_opn, int nblss_ltt_prz, int nblss_ltt_nxt_stts, int nblss_ltt_nxt_tckt, String my_qst_id, String my_qst_r_qid, String my_qst_r_knd, String my_qst_r_vl, String my_qst_r_nflg, String my_ccd_r_qid, String my_ccd_r_hnd, String my_ccd_r_vp) { - super(cmd, req_id, stat); - this.chllng_kind = chllng_kind; - this.lv_num_old = lv_num_old; - this.lv_pnt_old = lv_pnt_old; - this.lv_num = lv_num; - this.lv_pnt = lv_pnt; - this.lv_str = lv_str; - this.lv_efct_id = lv_efct_id; - this.lv_plt_id = lv_plt_id; - this.vcld_pts = vcld_pts; - this.prsnt_vcld_pts = prsnt_vcld_pts; - this.cnp_cid = cnp_cid; - this.cnp_val = cnp_val; - this.cnp_sp = cnp_sp; - this.crwd_kind = crwd_kind; - this.crwd_value = crwd_value; - this.crwd_str_0 = crwd_str_0; - this.crwd_str_1 = crwd_str_1; - this.cerwd_kind = cerwd_kind; - this.cerwd_value = cerwd_value; - this.cerwd_str_0 = cerwd_str_0; - this.cerwd_str_1 = cerwd_str_1; - this.ttl_str_ary = ttl_str_ary; - this.ttl_plt_id_ary = ttl_plt_id_ary; - this.ttl_desc_ary = ttl_desc_ary; - this.skin_id_ary = skin_id_ary; - this.skin_name_ary = skin_name_ary; - this.skin_illust_ary = skin_illust_ary; - this.skin_desc_ary = skin_desc_ary; - this.pdddt_flg = pdddt_flg; - this.pdddt_tm = pdddt_tm; - this.nblss_ltt_stts = nblss_ltt_stts; - this.nblss_ltt_tckt = nblss_ltt_tckt; - this.nblss_ltt_is_opn = nblss_ltt_is_opn; - this.nblss_ltt_prz = nblss_ltt_prz; - this.nblss_ltt_nxt_stts = nblss_ltt_nxt_stts; - this.nblss_ltt_nxt_tckt = nblss_ltt_nxt_tckt; - this.my_qst_id = my_qst_id; - this.my_qst_r_qid = my_qst_r_qid; - this.my_qst_r_knd = my_qst_r_knd; - this.my_qst_r_vl = my_qst_r_vl; - this.my_qst_r_nflg = my_qst_r_nflg; - this.my_ccd_r_qid = my_ccd_r_qid; - this.my_ccd_r_hnd = my_ccd_r_hnd; - this.my_ccd_r_vp = my_ccd_r_vp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/operation/PingResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/operation/PingResponse.java deleted file mode 100644 index db75d6b7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/operation/PingResponse.java +++ /dev/null @@ -1,62 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.operation; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import icu.samnyan.aqua.sega.util.URIEncoder; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PingResponse extends BaseResponse { - private String ping_b_msg = URIEncoder.encode("Server Running No other news"); - private String ping_m_msg = URIEncoder.encode("Network Service Running"); - private String atnd_lut; - private String fi_lut; - private String ci_lut; - private String qi_lut; - private String pvl_lut; - private String pdcl_lut; - private String pnml_lut; - private String cinml_lut; - private String rwl_lut; - private String bdlol_lut; - private String shp_ctlg_lut; - private String cstmz_itm_ctlg_lut; - private String ngwl_lut; - private String rnk_nv_lut; - private String rnk_ps_lut; - private String bi_lut; - private String cpi_lut; - private String p_std_hc_lut; - private String p_std_i_n_lut; - - private String req_inv_cmd_num; - private String req_inv_cmd_prm1; - private String req_inv_cmd_prm2; - private String req_inv_cmd_prm3; - private String req_inv_cmd_prm4; - - private boolean pow_save_flg = false; - - private Integer nblss_dnt_p = 0; - private Integer nblss_ltt_rl_vp = 0; - private Integer nblss_ex_ltt_flg = 0; - - private String nblss_dnt_st_tm; - private String nblss_dnt_ed_tm; - private String nblss_ltt_st_tm; - private String nblss_ltt_ed_tm; - - public PingResponse(String cmd, String req_id, String stat) { - super(cmd, req_id, stat); - } - - public PingResponse(String cmd, String req_id, String stat, String ping_b_msg, String ping_m_msg) { - super(cmd, req_id, stat); - this.ping_b_msg = ping_b_msg; - this.ping_m_msg = ping_m_msg; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/PreStartResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/PreStartResponse.java deleted file mode 100644 index 86011ec4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/PreStartResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.user; - -import icu.samnyan.aqua.sega.diva.model.common.PassStat; -import icu.samnyan.aqua.sega.diva.model.common.PreStartResult; -import icu.samnyan.aqua.sega.diva.model.common.SortMode; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class PreStartResponse extends BaseResponse { - - private PreStartResult ps_result; - private Integer accept_idx; - private Integer nblss_ltt_stts; - private Integer nblss_ltt_tckt; - private Integer nblss_ltt_is_opn; - - private long pd_id; - private String player_name; - private SortMode sort_kind; - private Integer lv_num; - private Integer lv_pnt; - private String lv_str; - private Integer lv_efct_id; - private Integer lv_plt_id; - private String mdl_eqp_ary; - private LocalDateTime mdl_eqp_tm; - private Integer skn_eqp; - private Integer btn_se_eqp; - private Integer sld_se_eqp; - private Integer chn_sld_se_eqp; - private Integer sldr_tch_se_eqp; - private Integer vcld_pts; - private PassStat passwd_stat; - - public PreStartResponse(String cmd, String req_id, String stat, PreStartResult ps_result) { - super(cmd, req_id, stat); - this.ps_result = ps_result; - } - - public PreStartResponse(String cmd, String req_id, String stat, PreStartResult ps_result, Integer accept_idx, long pd_id, String player_name, SortMode sort_kind, Integer lv_num, Integer lv_pnt, String lv_str, Integer lv_efct_id, Integer lv_plt_id, String mdl_eqp_ary, LocalDateTime mdl_eqp_tm, Integer skn_eqp, Integer btn_se_eqp, Integer sld_se_eqp, Integer chn_sld_se_eqp, Integer sldr_tch_se_eqp, Integer vcld_pts, PassStat passwd_stat) { - super(cmd, req_id, stat); - this.ps_result = ps_result; - this.accept_idx = accept_idx; - this.nblss_ltt_stts = -1; - this.nblss_ltt_tckt = -1; - this.nblss_ltt_is_opn = -1; - this.pd_id = pd_id; - this.player_name = player_name; - this.sort_kind = sort_kind; - this.lv_num = lv_num; - this.lv_pnt = lv_pnt; - this.lv_str = lv_str; - this.lv_efct_id = lv_efct_id; - this.lv_plt_id = lv_plt_id; - this.mdl_eqp_ary = mdl_eqp_ary; - this.mdl_eqp_tm = mdl_eqp_tm; - this.skn_eqp = skn_eqp; - this.btn_se_eqp = btn_se_eqp; - this.sld_se_eqp = sld_se_eqp; - this.chn_sld_se_eqp = chn_sld_se_eqp; - this.sldr_tch_se_eqp = sldr_tch_se_eqp; - this.vcld_pts = vcld_pts; - this.passwd_stat = passwd_stat; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/SpendCreditResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/SpendCreditResponse.java deleted file mode 100644 index 5bc3b041..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/SpendCreditResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.user; - -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class SpendCreditResponse extends BaseResponse { - private String cmpgn_rslt; - private int cmpgn_rslt_num; - private int vcld_pts; - private String lv_str; - private int lv_efct_id; - private int lv_plt_id; - - public SpendCreditResponse(String cmd, String req_id, String stat, String cmpgn_rslt, int cmpgn_rslt_num, int vcld_pts, String lv_str, int lv_efct_id, int lv_plt_id) { - super(cmd, req_id, stat); - this.cmpgn_rslt = cmpgn_rslt; - this.cmpgn_rslt_num = cmpgn_rslt_num; - this.vcld_pts = vcld_pts; - this.lv_str = lv_str; - this.lv_efct_id = lv_efct_id; - this.lv_plt_id = lv_plt_id; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/StartResponse.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/StartResponse.java deleted file mode 100644 index 1b132520..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/response/user/StartResponse.java +++ /dev/null @@ -1,148 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.response.user; - -import icu.samnyan.aqua.sega.diva.model.common.*; -import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; -import lombok.Getter; -import lombok.Setter; - -import java.time.LocalDateTime; - -import static icu.samnyan.aqua.sega.diva.model.common.Const.ALL_HAVE; -import static icu.samnyan.aqua.sega.diva.model.common.Const.ALL_NOT_HAVE; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class StartResponse extends BaseResponse { - - private long pd_id; - private Result start_result = Result.SUCCESS; - private int accept_idx; - private int start_idx; - private String player_name; - private int hp_vol = 100; - private boolean btn_se_vol = true; - private int btn_se_vol2 = 100; - private int sldr_se_vol2 = 10; - private SortMode sort_kind = SortMode.RELEASE_DATE; - private int lv_num; - private int lv_pnt; - private String lv_str; - private int lv_efct_id; - private int lv_plt_id; - private String mdl_eqp_ary; - private String c_itm_eqp_ary; - private String ms_itm_flg_ary; - private LocalDateTime mdl_eqp_tm = LocalDateTime.now(); - private String mdl_have = ALL_HAVE; - private String cstmz_itm_have = ALL_HAVE; - private boolean use_pv_mdl_eqp = false; - private boolean use_mdl_pri = false; - private boolean use_pv_skn_eqp = false; - private boolean use_pv_btn_se_eqp = false; - private boolean use_pv_sld_se_eqp = false; - private boolean use_pv_chn_sld_se_eqp = false; - private boolean use_pv_sldr_tch_se_eqp = false; - private int vcld_pts = 300; - private int nxt_pv_id = -1; - private Difficulty nxt_dffclty = Difficulty.NORMAL; - private Edition nxt_edtn = Edition.ORIGINAL; - - // Contest play history, array of 4 - private String cv_cid; - private String cv_sc; - private String cv_rr; - private String cv_bv; - private String cv_bf; - - // Contest now playing id, return -1 if no current playing contest - private int cnp_cid = -1; - private int cnp_val = 0; - private ContestBorder cnp_rr = ContestBorder.NONE; - private String cnp_sp = ""; - - private String my_lst_0; - private String my_lst_1; - private String my_lst_2; - private String my_lst_3; // Unused - private String my_lst_4; // Unused - - private String dsp_clr_brdr; - private boolean dsp_intrm_rnk; - private boolean dsp_clr_sts; - - private String clr_sts; - - private boolean rgo_sts; - - private String my_qst_id; - private String my_qst_sts; - private String my_qst_prgrs; - private String my_qst_et; - - private String p_std_ie_have = ALL_NOT_HAVE; - private String p_std_se_have = ALL_NOT_HAVE; - - public StartResponse(String cmd, String req_id, String stat, long pd_id, Result start_result, int accept_idx, int start_idx, String player_name, int hp_vol, boolean btn_se_vol, int btn_se_vol2, int sldr_se_vol2, SortMode sort_kind, int lv_num, int lv_pnt, String lv_str, int lv_efct_id, int lv_plt_id, String mdl_eqp_ary, String c_itm_eqp_ary, String ms_itm_flg_ary, LocalDateTime mdl_eqp_tm, String mdl_have, String cstmz_itm_have, boolean use_pv_mdl_eqp, boolean use_mdl_pri, boolean use_pv_skn_eqp, boolean use_pv_btn_se_eqp, boolean use_pv_sld_se_eqp, boolean use_pv_chn_sld_se_eqp, boolean use_pv_sldr_tch_se_eqp, int vcld_pts, int nxt_pv_id, Difficulty nxt_dffclty, Edition nxt_edtn, String cv_cid, String cv_sc, String cv_rr, String cv_bv, String cv_bf, int cnp_cid, int cnp_val, ContestBorder cnp_rr, String cnp_sp, String my_lst_0, String my_lst_1, String my_lst_2, String my_lst_3, String my_lst_4, String dsp_clr_brdr, boolean dsp_intrm_rnk, boolean dsp_clr_sts, String clr_sts, boolean rgo_sts, String my_qst_id, String my_qst_sts, String my_qst_prgrs, String my_qst_et, String p_std_ie_have, String p_std_se_have) { - super(cmd, req_id, stat); - this.pd_id = pd_id; - this.start_result = start_result; - this.accept_idx = accept_idx; - this.start_idx = start_idx; - this.player_name = player_name; - this.hp_vol = hp_vol; - this.btn_se_vol = btn_se_vol; - this.btn_se_vol2 = btn_se_vol2; - this.sldr_se_vol2 = sldr_se_vol2; - this.sort_kind = sort_kind; - this.lv_num = lv_num; - this.lv_pnt = lv_pnt; - this.lv_str = lv_str; - this.lv_efct_id = lv_efct_id; - this.lv_plt_id = lv_plt_id; - this.mdl_eqp_ary = mdl_eqp_ary; - this.c_itm_eqp_ary = c_itm_eqp_ary; - this.ms_itm_flg_ary = ms_itm_flg_ary; - this.mdl_eqp_tm = mdl_eqp_tm; - this.mdl_have = mdl_have; - this.cstmz_itm_have = cstmz_itm_have; - this.use_pv_mdl_eqp = use_pv_mdl_eqp; - this.use_mdl_pri = use_mdl_pri; - this.use_pv_skn_eqp = use_pv_skn_eqp; - this.use_pv_btn_se_eqp = use_pv_btn_se_eqp; - this.use_pv_sld_se_eqp = use_pv_sld_se_eqp; - this.use_pv_chn_sld_se_eqp = use_pv_chn_sld_se_eqp; - this.use_pv_sldr_tch_se_eqp = use_pv_sldr_tch_se_eqp; - this.vcld_pts = vcld_pts; - this.nxt_pv_id = nxt_pv_id; - this.nxt_dffclty = nxt_dffclty; - this.nxt_edtn = nxt_edtn; - this.cv_cid = cv_cid; - this.cv_sc = cv_sc; - this.cv_rr = cv_rr; - this.cv_bv = cv_bv; - this.cv_bf = cv_bf; - this.cnp_cid = cnp_cid; - this.cnp_val = cnp_val; - this.cnp_rr = cnp_rr; - this.cnp_sp = cnp_sp; - this.my_lst_0 = my_lst_0; - this.my_lst_1 = my_lst_1; - this.my_lst_2 = my_lst_2; - this.my_lst_3 = my_lst_3; - this.my_lst_4 = my_lst_4; - this.dsp_clr_brdr = dsp_clr_brdr; - this.dsp_intrm_rnk = dsp_intrm_rnk; - this.dsp_clr_sts = dsp_clr_sts; - this.clr_sts = clr_sts; - this.rgo_sts = rgo_sts; - this.my_qst_id = my_qst_id; - this.my_qst_sts = my_qst_sts; - this.my_qst_prgrs = my_qst_prgrs; - this.my_qst_et = my_qst_et; - this.p_std_ie_have = p_std_ie_have; - this.p_std_se_have = p_std_se_have; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/GameSession.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/GameSession.java deleted file mode 100644 index 9cbaa209..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/GameSession.java +++ /dev/null @@ -1,72 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import icu.samnyan.aqua.sega.diva.model.common.StartMode; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaGameSession") -@Table(name = "diva_game_session") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameSession implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - private int acceptId; - - @OneToOne - @JoinColumn(name = "pd_id", unique = true) - private PlayerProfile pdId; - - @Enumerated(EnumType.STRING) - private StartMode startMode; - - private LocalDateTime startTime; - - private LocalDateTime lastUpdateTime; - - private Integer stageIndex; - - private Integer stageResultIndex; - - private Integer lastPvId; - - private Integer levelNumber; - - private Integer levelExp; - - private Integer oldLevelNumber; - - private Integer oldLevelExp; - - private Integer vp; - - public GameSession(int acceptId, PlayerProfile pdId, StartMode startMode, LocalDateTime startTime, LocalDateTime lastUpdateTime, Integer stageIndex, Integer stageResultIndex, Integer lastPvId, Integer levelNumber, Integer levelExp, Integer oldLevelNumber, Integer oldLevelExp, Integer vp) { - this.acceptId = acceptId; - this.pdId = pdId; - this.startMode = startMode; - this.startTime = startTime; - this.lastUpdateTime = lastUpdateTime; - this.stageIndex = stageIndex; - this.stageResultIndex = stageResultIndex; - this.lastPvId = lastPvId; - this.levelNumber = levelNumber; - this.levelExp = levelExp; - this.oldLevelNumber = oldLevelNumber; - this.oldLevelExp = oldLevelExp; - this.vp = vp; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayLog.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayLog.java deleted file mode 100644 index a85665cb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayLog.java +++ /dev/null @@ -1,157 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import icu.samnyan.aqua.sega.diva.model.common.ChallengeKind; -import icu.samnyan.aqua.sega.diva.model.common.ClearResult; -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayLog") -@Table(name = "diva_play_log") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class PlayLog implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - @JsonIgnore - private PlayerProfile pdId; - - private int pvId; - - @Enumerated(EnumType.STRING) - private Difficulty difficulty; - - @Enumerated(EnumType.STRING) - private Edition edition; - - private int scriptVer; - - private int score; - - @Enumerated(EnumType.STRING) - private ChallengeKind challengeKind; - - private int challengeResult; - - @Enumerated(EnumType.STRING) - private ClearResult clearResult; - - private int vp; - - private int coolCount; - - private int coolPercent; - - private int fineCount; - - private int finePercent; - - private int safeCount; - - private int safePercent; - - private int sadCount; - - private int sadPercent; - - private int wrongCount; - - private int wrongPercent; - - private int maxCombo; - - private int chanceTime; - - private int holdScore; - - private int attainPoint; - - private int skinId; - - private int buttonSe; - - private int buttonSeVol; - - private int sliderSe; - - private int ChainSlideSe; - - private int SliderTouchSe; - - private String modules; - - private int stageCompletion; - - private int slideScore; - - private int isVocalChange; - - private String customizeItems; - -// private String customizeItemFlags; - - private String rhythmGameOptions; - - private int screenShotCount = -1; - - private LocalDateTime dateTime; - - public PlayLog(PlayerProfile pdId, int pvId, Difficulty difficulty, Edition edition, int scriptVer, int score, ChallengeKind challengeKind, int challengeResult, ClearResult clearResult, int vp, int coolCount, int coolPercent, int fineCount, int finePercent, int safeCount, int safePercent, int sadCount, int sadPercent, int wrongCount, int wrongPercent, int maxCombo, int chanceTime, int holdScore, int attainPoint, int skinId, int buttonSe, int buttonSeVol, int sliderSe, int chainSlideSe, int sliderTouchSe, String modules, int stageCompletion, int slideScore, int isVocalChange, String customizeItems, String rhythmGameOptions, int screenShotCount, LocalDateTime dateTime) { - this.pdId = pdId; - this.pvId = pvId; - this.difficulty = difficulty; - this.edition = edition; - this.scriptVer = scriptVer; - this.score = score; - this.challengeKind = challengeKind; - this.challengeResult = challengeResult; - this.clearResult = clearResult; - this.vp = vp; - this.coolCount = coolCount; - this.coolPercent = coolPercent; - this.fineCount = fineCount; - this.finePercent = finePercent; - this.safeCount = safeCount; - this.safePercent = safePercent; - this.sadCount = sadCount; - this.sadPercent = sadPercent; - this.wrongCount = wrongCount; - this.wrongPercent = wrongPercent; - this.maxCombo = maxCombo; - this.chanceTime = chanceTime; - this.holdScore = holdScore; - this.attainPoint = attainPoint; - this.skinId = skinId; - this.buttonSe = buttonSe; - this.buttonSeVol = buttonSeVol; - this.sliderSe = sliderSe; - ChainSlideSe = chainSlideSe; - SliderTouchSe = sliderTouchSe; - this.modules = modules; - this.stageCompletion = stageCompletion; - this.slideScore = slideScore; - this.isVocalChange = isVocalChange; - this.customizeItems = customizeItems; - this.rhythmGameOptions = rhythmGameOptions; - this.screenShotCount = screenShotCount; - this.dateTime = dateTime; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerContest.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerContest.java deleted file mode 100644 index d0d6cbde..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerContest.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import icu.samnyan.aqua.sega.diva.model.common.ContestBorder; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerContest") -@Table(name = "diva_player_contest", uniqueConstraints = {@UniqueConstraint(columnNames = {"pd_id", "contest_id"})}) -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerContest implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - private PlayerProfile pdId; - - @Column(name = "contest_id") - private int contestId; - - private int startCount = 0; - - @Enumerated(EnumType.STRING) - private ContestBorder resultRank = ContestBorder.NONE; - - private int bestValue = -1; - - private int flag = -1; - - private LocalDateTime lastUpdateTime = LocalDateTime.now(); - - public PlayerContest(PlayerProfile pdId, int contestId) { - this.pdId = pdId; - this.contestId = contestId; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerCustomize.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerCustomize.java deleted file mode 100644 index d7a38491..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerCustomize.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerCustomize") -@Table(name = "diva_player_customize", uniqueConstraints = {@UniqueConstraint(columnNames = {"pd_id", "customize_id"})}) -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerCustomize implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - private PlayerProfile pdId; - - @Column(name = "customize_id") - private int customizeId; - - public PlayerCustomize(PlayerProfile profile, int customizeId) { - this.pdId = profile; - this.customizeId = customizeId; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerInventory.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerInventory.java deleted file mode 100644 index 0c130992..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerInventory.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerInventory") -@Table(name = "diva_player_inventory", uniqueConstraints = {@UniqueConstraint(columnNames = {"pd_id", "value", "type"})}) -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerInventory implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - @JsonIgnore - private PlayerProfile pdId; - - private String value; - - // Type: (1: Skin, 2: Call sign plate, 3: Call sign) - private String type; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerModule.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerModule.java deleted file mode 100644 index 54639e51..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerModule.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerModule") -@Table(name = "diva_player_module", uniqueConstraints = {@UniqueConstraint(columnNames = {"pd_id", "module_id"})}) -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerModule implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - private PlayerProfile pdId; - - @Column(name = "module_id") - private int moduleId; - - public PlayerModule(PlayerProfile profile, int moduleId) { - this.pdId = profile; - this.moduleId = moduleId; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerProfile.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerProfile.java deleted file mode 100644 index 74331741..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerProfile.java +++ /dev/null @@ -1,167 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import icu.samnyan.aqua.sega.diva.model.common.*; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serial; -import java.io.Serializable; -import java.time.LocalDateTime; - -import static icu.samnyan.aqua.sega.diva.util.DivaStringUtils.getDummyString; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerProfile") -@Table(name = "diva_player_profile") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerProfile implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @Column(unique = true) - private long pdId; - - private String playerName = "xxx"; - - private int vocaloidPoints = 300; - - private int level = 1; - - private int levelExp = 0; - - private String levelTitle = "xxx"; - - private int plateId = -1; - - private int plateEffectId = -1; - - @Enumerated(EnumType.STRING) - private PassStat passwordStatus = PassStat.MISS; - - @JsonIgnore - private String password = "**********"; - - /** - * Game play customize - */ - private boolean preferPerPvModule = true; - - private boolean preferCommonModule = false; - - private boolean usePerPvSkin = false; - - private boolean usePerPvButtonSe = false; - - private boolean usePerPvSliderSe = false; - - private boolean usePerPvChainSliderSe = false; - - private boolean usePerPvTouchSliderSe = false; - - private String commonModule = "-999,-999,-999"; - - private String commonCustomizeItems = "-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999"; - - private LocalDateTime commonModuleSetTime = LocalDateTime.now(); - - private String moduleSelectItemFlag = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"; - - // -1 is disable - private int commonSkin = -1; - - /** - * Sound Setting - */ - private int headphoneVolume = 100; - - private boolean buttonSeOn = true; - - private int buttonSeVolume = 100; - - private int sliderSeVolume = 100; - - private int buttonSe = -1; - - private int chainSlideSe = -1; - - private int slideSe = -1; - - private int sliderTouchSe = -1; - - /** - * View Setting - */ - @Enumerated(EnumType.STRING) - private SortMode sortMode = SortMode.RELEASE_DATE; - - @JsonIgnore - private int nextPvId = -1; - - @JsonIgnore - @Enumerated(EnumType.STRING) - private Difficulty nextDifficulty = Difficulty.NORMAL; - - @JsonIgnore - @Enumerated(EnumType.STRING) - private Edition nextEdition = Edition.ORIGINAL; - - private boolean showInterimRanking = true; - - private boolean showClearStatus = true; - - private boolean showGreatBorder = true; - - private boolean showExcellentBorder = true; - - private boolean showRivalBorder = true; - - private boolean showRgoSetting = true; - - @JsonIgnore - private boolean contestNowPlayingEnable = false; - - @JsonIgnore - private int contestNowPlayingId = -1; - - // Contest now playing progress - @JsonIgnore - private int contestNowPlayingValue = -1; - - @JsonIgnore - @Enumerated(EnumType.STRING) - private ContestBorder contestNowPlayingResultRank = ContestBorder.NONE; - - // This store the current progress of contest - @JsonIgnore - private String contestNowPlayingSpecifier = ""; - - - /** - * MyList, comma separate string - */ - private String myList0 = getDummyString("-1", 40); - - private String myList1 = getDummyString("-1", 40); - - private String myList2 = getDummyString("-1", 40); - - @JsonIgnore - private long rivalPdId = -1; - - public PlayerProfile(long pdId, String playerName) { - this.pdId = pdId; - this.playerName = playerName; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvCustomize.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvCustomize.java deleted file mode 100644 index 368a840c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvCustomize.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerPvCustomize") -@Table(name = "diva_player_pv_customize", uniqueConstraints = {@UniqueConstraint(columnNames = {"pd_id", "pv_id"})}) -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerPvCustomize implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - @JsonIgnore - private PlayerProfile pdId; - - @Column(name = "pv_id") - private int pvId = -1; - - private String module = "-999,-999,-999"; - - private String customize = "-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999"; - - private String customizeFlag = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"; - - private int skin = -1; - - private int buttonSe = -1; - - private int slideSe = -1; - - private int chainSlideSe = -1; - - private int sliderTouchSe = -1; - - public PlayerPvCustomize(PlayerProfile pdId, int pvId) { - this.pdId = pdId; - this.pvId = pvId; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvRecord.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvRecord.java deleted file mode 100644 index d2035059..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerPvRecord.java +++ /dev/null @@ -1,70 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import icu.samnyan.aqua.sega.diva.model.common.ChallengeKind; -import icu.samnyan.aqua.sega.diva.model.common.ClearResult; -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerPvRecord") -@Table(name = "diva_player_pv_record", uniqueConstraints = {@UniqueConstraint(columnNames = {"pd_id", "pv_id", "edition", "difficulty"})}) -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerPvRecord implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - @JsonIgnore - private PlayerProfile pdId; - - @Column(name = "pv_id") - private int pvId = -1; - - @Enumerated(EnumType.STRING) - private Edition edition = Edition.ORIGINAL; - - @Enumerated(EnumType.STRING) - private Difficulty difficulty = Difficulty.NORMAL; - - @Enumerated(EnumType.STRING) - private ClearResult result = ClearResult.NO_CLEAR; - - private int maxScore = -1; - - private int maxAttain = -1; - - @Enumerated(EnumType.STRING) - private ChallengeKind challengeKind = ChallengeKind.UNDEFINED; - - private String rgoPurchased = "0,0,0"; - - private String rgoPlayed = "0,0,0"; - - public PlayerPvRecord(int pvId, Edition edition) { - this.pvId = pvId; - this.edition = edition; - } - - public PlayerPvRecord(PlayerProfile pdId, int pvId, Edition edition, Difficulty difficulty) { - this.pdId = pdId; - this.pvId = pvId; - this.edition = edition; - this.difficulty = difficulty; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerScreenShot.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerScreenShot.java deleted file mode 100644 index 92487f56..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/userdata/PlayerScreenShot.java +++ /dev/null @@ -1,43 +0,0 @@ -package icu.samnyan.aqua.sega.diva.model.userdata; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "DivaPlayerScreenShot") -@Table(name = "diva_player_screen_shot") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class PlayerScreenShot { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @ManyToOne - @JoinColumn(name = "pd_id") - private PlayerProfile pdId; - - private long pvId; - - private String fileName; - - private String moduleList; - - private String customizeList; - - public PlayerScreenShot(PlayerProfile pdId, String fileName, long pvId, String moduleList, String customizeList) { - this.pdId = pdId; - this.fileName = fileName; - this.pvId = pvId; - this.moduleList = moduleList; - this.customizeList = customizeList; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerCustomizeService.java b/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerCustomizeService.java deleted file mode 100644 index 525bbd3d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerCustomizeService.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.service; - -import icu.samnyan.aqua.sega.diva.dao.userdata.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; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class PlayerCustomizeService { - - private final PlayerCustomizeRepository playerCustomizeRepository; - - public PlayerCustomizeService(PlayerCustomizeRepository playerCustomizeRepository) { - this.playerCustomizeRepository = playerCustomizeRepository; - } - - public PlayerCustomize buy(PlayerProfile profile, int customizeId) { - return playerCustomizeRepository.save(new PlayerCustomize(profile, customizeId)); - } - - public String getModuleHaveString(PlayerProfile profile) { - List customizeList = playerCustomizeRepository.findByPdId(profile); - BigInteger customize_have = new BigInteger("0"); - for (PlayerCustomize customize : - customizeList) { - customize_have = customize_have.or(BigInteger.valueOf(1).shiftLeft(customize.getCustomizeId())); - } - return StringUtils.leftPad(customize_have.toString(16), 250, "0"); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerModuleService.java b/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerModuleService.java deleted file mode 100644 index e072481e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerModuleService.java +++ /dev/null @@ -1,38 +0,0 @@ -package icu.samnyan.aqua.sega.diva.service; - -import icu.samnyan.aqua.sega.diva.dao.userdata.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.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class PlayerModuleService { - - private final PlayerModuleRepository playerModuleRepository; - - public PlayerModuleService(PlayerModuleRepository playerModuleRepository) { - this.playerModuleRepository = playerModuleRepository; - } - - public PlayerModule buy(PlayerProfile profile, int moduleId) { - return playerModuleRepository.save(new PlayerModule(profile, moduleId)); - } - - public String getModuleHaveString(PlayerProfile profile) { - List moduleList = playerModuleRepository.findByPdId(profile); - BigInteger module_have = new BigInteger("0"); - for (PlayerModule module : - moduleList) { - module_have = module_have.or(BigInteger.valueOf(1).shiftLeft(module.getModuleId())); - } - System.out.println(module_have.toString(2)); - return StringUtils.leftPad(module_have.toString(16), 250, "0").toUpperCase(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerProfileService.java b/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerProfileService.java deleted file mode 100644 index cb1b2434..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/service/PlayerProfileService.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.service; - -import icu.samnyan.aqua.sega.diva.dao.userdata.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.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Service -public class PlayerProfileService { - - private final PlayerProfileRepository playerProfileRepository; - - public PlayerProfileService(PlayerProfileRepository playerProfileRepository) { - this.playerProfileRepository = playerProfileRepository; - } - - public Optional findByPdId(long pdId) { - return playerProfileRepository.findByPdId(pdId); - } - - public PlayerProfile register(RegistrationRequest request) { - PlayerProfile profile = new PlayerProfile(); - profile.setPdId(request.getAime_id()); - profile.setPlayerName(request.getPlayer_name()); - - return playerProfileRepository.save(profile); - } - - public PlayerProfile save(PlayerProfile profile) { - return playerProfileRepository.save(profile); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaCalculator.java b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaCalculator.java deleted file mode 100644 index c3b1ae31..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaCalculator.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.diva.util; - -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerPvRecordRepository; -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import icu.samnyan.aqua.sega.diva.model.common.LevelInfo; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvRecord; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class DivaCalculator { - - private final PlayerPvRecordRepository playerPvRecordRepository; - - public DivaCalculator(PlayerPvRecordRepository playerPvRecordRepository) { - this.playerPvRecordRepository = playerPvRecordRepository; - } - - public LevelInfo getLevelInfo(PlayerProfile profile) { - List recordList = playerPvRecordRepository.findByPdIdAndEdition(profile, Edition.ORIGINAL); - int totalAttain = 0; - for (PlayerPvRecord record : - recordList) { - totalAttain += record.getMaxAttain(); - } - - int level = totalAttain / 13979; - int exp = Math.round((totalAttain % 13979) / 13979.0f * 100.0f); - - return new LevelInfo(level + 1, exp); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeSerializer.java b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeSerializer.java deleted file mode 100644 index a27d5dcf..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeSerializer.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.sega.diva.util; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; - -import java.io.IOException; -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class DivaDateTimeSerializer extends StdSerializer { - - public DivaDateTimeSerializer() { - this(null); - } - - public DivaDateTimeSerializer(Class t) { - super(t); - } - - @Override - public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider) throws IOException { - gen.writeString(DivaDateTimeUtil.getString(value)); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeUtil.java b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeUtil.java deleted file mode 100644 index 6ae4ed58..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeUtil.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.diva.util; - -import icu.samnyan.aqua.sega.util.URIEncoder; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class DivaDateTimeUtil { - - public static String getString(LocalDateTime time) { - return URIEncoder.encode(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0").format(time)); - } - - public static String format(LocalDateTime time) { - return DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0").format(time); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.java b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.java deleted file mode 100644 index 29fd5839..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.java +++ /dev/null @@ -1,59 +0,0 @@ -package icu.samnyan.aqua.sega.diva.util; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.json.JsonWriteFeature; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; -import icu.samnyan.aqua.sega.util.jackson.BooleanNumberDeserializer; -import icu.samnyan.aqua.sega.util.jackson.BooleanNumberSerializer; -import icu.samnyan.aqua.sega.util.jackson.ZonedDateTimeDeserializer; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class DivaMapper { - private final ObjectMapper mapper; - - public DivaMapper() { - SimpleModule module = new SimpleModule(); - module.addSerializer(LocalDateTime.class, new DivaDateTimeSerializer()); - module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0"))); - module.addDeserializer(ZonedDateTime.class, new ZonedDateTimeDeserializer()); - module.addSerializer(Boolean.class, new BooleanNumberSerializer()); - module.addSerializer(boolean.class, new BooleanNumberSerializer()); - module.addDeserializer(Boolean.class, new BooleanNumberDeserializer()); - module.addDeserializer(boolean.class, new BooleanNumberDeserializer()); - - mapper = JsonMapper.builder().enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - .build(); - - mapper.registerModule(module); - } - - public String write(Object o) throws JsonProcessingException { - return mapper.writeValueAsString(o); - - } - - public T convert(Map map, Class toClass) { - return mapper.convertValue(map, toClass); - } - - public LinkedHashMap toMap(Object object) { - return mapper.convertValue(object, new TypeReference<>() { - }); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.kt b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.kt new file mode 100644 index 00000000..f4f5bec4 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaMapper.kt @@ -0,0 +1,38 @@ +package icu.samnyan.aqua.sega.diva.util + +import com.fasterxml.jackson.core.json.JsonWriteFeature +import com.fasterxml.jackson.core.type.TypeReference +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.json.JsonMapper +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer +import ext.JDict +import icu.samnyan.aqua.sega.util.BooleanNumberDeserializer +import icu.samnyan.aqua.sega.util.BooleanNumberSerializer +import icu.samnyan.aqua.sega.util.ZonedDateTimeDeserializer +import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter + +@Component +class DivaMapper { + private val mapper: ObjectMapper = JsonMapper.builder().enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + .build().apply { + registerModule(SimpleModule().apply { + addSerializer(LocalDateTime::class.java, DivaDateTimeSerializer()) + addDeserializer(LocalDateTime::class.java, LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0"))) + addDeserializer(ZonedDateTime::class.java, ZonedDateTimeDeserializer()) + addSerializer(Boolean::class.java, BooleanNumberSerializer()) + addSerializer(Boolean::class.javaPrimitiveType, BooleanNumberSerializer()) + addDeserializer(Boolean::class.java, BooleanNumberDeserializer()) + addDeserializer(Boolean::class.javaPrimitiveType, BooleanNumberDeserializer()) + }) + } + + fun write(o: Any) = mapper.writeValueAsString(o) + fun convert(map: JDict, toClass: Class) = mapper.convertValue(map, toClass) + fun toMap(obj: Any) = mapper.convertValue(obj, object : TypeReference>() {}) +} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaStringUtils.java b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaStringUtils.java deleted file mode 100644 index 0df6b01d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaStringUtils.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.diva.util; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class DivaStringUtils { - - public static String arrToCsv(int[] arr) { - StringBuilder sb = new StringBuilder(); - for (int i : - arr) { - sb.append(i).append(","); - } - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } - - public static String getDummyString(String content, int length) { - StringBuilder sb = new StringBuilder(); - sb.append((content + ",").repeat(length)); - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaUtils.kt b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaUtils.kt new file mode 100644 index 00000000..e2413dbb --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/util/DivaUtils.kt @@ -0,0 +1,57 @@ +package icu.samnyan.aqua.sega.diva.util + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.databind.SerializerProvider +import com.fasterxml.jackson.databind.ser.std.StdSerializer +import icu.samnyan.aqua.sega.diva.PlayerPvRecordRepository +import icu.samnyan.aqua.sega.diva.model.common.Edition +import icu.samnyan.aqua.sega.diva.model.common.LevelInfo +import icu.samnyan.aqua.sega.diva.model.db.userdata.PlayerProfile +import org.springframework.stereotype.Component +import java.net.URLEncoder +import java.nio.charset.StandardCharsets +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import kotlin.math.roundToInt + +object DivaStringUtils { + @JvmStatic + fun getDummyString(content: String, length: Int) = "$content,".repeat(length).removeSuffix(",") +} + +object DivaTime { + val now get() = getString(LocalDateTime.now()) + + @JvmStatic + fun getString(time: LocalDateTime) = URIEncoder.encode(format(time)) + + @JvmStatic + fun format(time: LocalDateTime) = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0").format(time) +} + +class DivaDateTimeSerializer(t: Class? = null) : StdSerializer(t) { + override fun serialize(value: LocalDateTime, gen: JsonGenerator, provider: SerializerProvider) { + gen.writeString(DivaTime.getString(value)) + } +} + +@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) + } +} + +object URIEncoder { + @JvmStatic + fun encode(str: String) = URLEncoder.encode(str, StandardCharsets.UTF_8).replace("\\+".toRegex(), "%20") +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/util/Exceptions.kt b/src/main/java/icu/samnyan/aqua/sega/diva/util/Exceptions.kt new file mode 100644 index 00000000..d4aaced6 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/diva/util/Exceptions.kt @@ -0,0 +1,5 @@ +package icu.samnyan.aqua.sega.diva.util + +class PvRecordDataException(message: String?) : RuntimeException(message) +class SessionNotFoundException : RuntimeException() +class ProfileNotFoundException : RuntimeException() \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt b/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt index e241cbad..91a33ac9 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt +++ b/src/main/java/icu/samnyan/aqua/sega/general/GameMusicPopularity.kt @@ -1,7 +1,6 @@ package icu.samnyan.aqua.sega.general import ext.* -import icu.samnyan.aqua.net.db.AquaUserServices import jakarta.persistence.EntityManager import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Component diff --git a/src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.java b/src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.java deleted file mode 100644 index a5ce2a7e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.general.dao; - -import icu.samnyan.aqua.sega.general.model.Card; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("SegaCardRepository") -public interface CardRepository extends JpaRepository { - - Optional findByExtId(Long extId); - - Optional findByLuid(String luid); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.kt b/src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.kt new file mode 100644 index 00000000..538afe78 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.kt @@ -0,0 +1,14 @@ +package icu.samnyan.aqua.sega.general.dao + +import icu.samnyan.aqua.sega.general.model.Card +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Repository("SegaCardRepository") +interface CardRepository : JpaRepository { + fun findByExtId(extId: Long): Card? + fun findByLuid(luid: String): Card? +} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/dao/GameVersionRepository.java b/src/main/java/icu/samnyan/aqua/sega/general/dao/GameVersionRepository.java deleted file mode 100644 index 9ce4a749..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/dao/GameVersionRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.general.dao; - -import icu.samnyan.aqua.sega.general.model.GameVersion; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("GameVersionRepository") -public interface GameVersionRepository extends JpaRepository { - Optional findByUuid(String uuid); - List findByLastTimeBefore(LocalDateTime time); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.java b/src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.java deleted file mode 100644 index db09e6f6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.general.dao; - -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository -public interface PropertyEntryRepository extends JpaRepository { - Optional findByPropertyKey(String key); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.kt b/src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.kt new file mode 100644 index 00000000..7d928488 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.kt @@ -0,0 +1,14 @@ +package icu.samnyan.aqua.sega.general.dao + +import icu.samnyan.aqua.sega.general.model.PropertyEntry +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository +import java.util.* + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Repository +interface PropertyEntryRepository : JpaRepository { + fun findByPropertyKey(key: String): PropertyEntry? +} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.java b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.java deleted file mode 100644 index 291f758c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.java +++ /dev/null @@ -1,53 +0,0 @@ -package icu.samnyan.aqua.sega.general.filter; - -import jakarta.servlet.ReadListener; -import jakarta.servlet.ServletInputStream; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletRequestWrapper; -import java.io.ByteArrayInputStream; -import java.io.IOException; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class CompressRequestWrapper extends HttpServletRequestWrapper { - - private final ByteArrayInputStream input; - private ServletInputStream filterInput; - - public CompressRequestWrapper(HttpServletRequest request, byte[] input) { - super(request); - this.input = new ByteArrayInputStream(input); - } - - - @Override - public ServletInputStream getInputStream() { - if (filterInput == null) { - filterInput = new ServletInputStream() { - @Override - public boolean isFinished() { - return false; - } - - @Override - public boolean isReady() { - return false; - } - - @Override - public void setReadListener(ReadListener readListener) { - - } - - @Override - public int read() { - return input.read(); - } - }; - - - } - return filterInput; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.kt b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.kt new file mode 100644 index 00000000..5dcd44c5 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/general/filter/CompressRequestWrapper.kt @@ -0,0 +1,24 @@ +package icu.samnyan.aqua.sega.general.filter + +import jakarta.servlet.ReadListener +import jakarta.servlet.ServletInputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletRequestWrapper +import java.io.ByteArrayInputStream + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +class CompressRequestWrapper(request: HttpServletRequest, input: ByteArray) : HttpServletRequestWrapper(request) { + val input: ByteArrayInputStream = ByteArrayInputStream(input) + var filterInput: ServletInputStream? = null + + override fun getInputStream(): ServletInputStream { + return filterInput ?: object : ServletInputStream() { + override fun isFinished() = false + override fun isReady() = false + override fun setReadListener(readListener: ReadListener) {} + override fun read() = input.read() + }.also { filterInput = it } + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/GameVersion.java b/src/main/java/icu/samnyan/aqua/sega/general/model/GameVersion.java deleted file mode 100644 index 2e1ef9fd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/model/GameVersion.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.general.model; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.time.LocalDateTime; - -@Entity(name = "SegaGameVersion") -@Table(name = "sega_game_version") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameVersion { - @Id - private String uuid; - private String romVersion; - private String dataVersion; - private LocalDateTime lastTime; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.java b/src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.java deleted file mode 100644 index b2b7bc64..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.general.model; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "ServerPropertyEntry") -@Table(name = "property") -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PropertyEntry implements Serializable { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @Column(unique = true) - private String propertyKey; - - @Column(columnDefinition = "TEXT") - private String propertyValue; - - public PropertyEntry(String propertyKey, String propertyValue) { - this.propertyKey = propertyKey; - this.propertyValue = propertyValue; - } - public PropertyEntry(String propertyKey) { - this.propertyKey = propertyKey; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.kt b/src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.kt new file mode 100644 index 00000000..2fe3d55f --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/general/model/PropertyEntry.kt @@ -0,0 +1,27 @@ +package icu.samnyan.aqua.sega.general.model + +import jakarta.persistence.* + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Entity(name = "ServerPropertyEntry") +@Table(name = "property") +class PropertyEntry { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long = 0 + + @Column(unique = true) + var propertyKey: String = "" + + @Column(columnDefinition = "TEXT") + var propertyValue: String = "" + + constructor(propertyKey: String, propertyValue: String) { + this.propertyKey = propertyKey + this.propertyValue = propertyValue + } + + constructor() +} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/UserRecentRating.kt b/src/main/java/icu/samnyan/aqua/sega/general/model/UserRecentRating.kt new file mode 100644 index 00000000..2ae8f069 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/general/model/UserRecentRating.kt @@ -0,0 +1,10 @@ +package icu.samnyan.aqua.sega.general.model + +class UserRecentRating( + val musicId: Int = 0, + val difficultId: Int = 0, + val romVersionCode: String = "", + val score: Int = 0 +) { + override fun toString() = "$musicId:$difficultId:$score" +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java b/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java deleted file mode 100644 index 4d9fbeaa..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.general.model.response; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserRecentRating { - private int musicId; - private int difficultId; - private String romVersionCode; - private int score; - - @Override - public String toString() { - return musicId + ":" + difficultId + ":" + score; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt b/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt index 0ecc4e8a..d5761fe9 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt +++ b/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt @@ -12,9 +12,7 @@ import icu.samnyan.aqua.sega.general.model.CardTimestampRepo import org.springframework.stereotype.Service import java.time.Instant import java.time.LocalDateTime -import java.util.* import java.util.concurrent.ThreadLocalRandom -import kotlin.jvm.optionals.getOrNull /** * @author samnyan (privateamusement@protonmail.com) @@ -22,20 +20,13 @@ import kotlin.jvm.optionals.getOrNull @Service class CardService(val cardRepo: CardRepository, val cardTimestampRepo: CardTimestampRepo, val fedy: Fedy) { - /** - * Find a card by External ID - * @param extId External ID - * @return Optional of a Card - */ - fun getCardByExtId(extId: String): Optional = cardRepo.findByExtId(extId.toLong()) - /** * Find a card by External ID * * @param extId External ID * @return Optional of a Card */ - fun getCardByExtId(extId: Long?): Optional = cardRepo.findByExtId(extId) + fun getCardByExtId(extId: Long): Card? = cardRepo.findByExtId(extId) /** * Register a new card with access code @@ -64,19 +55,19 @@ class CardService(val cardRepo: CardRepository, val cardTimestampRepo: CardTimes val idm = id.replace(":", "").replace(" ", "") // Check case (1) and (4) - cardRepo.findByLuid(idm)?.getOrNull()?.let { return it } - cardRepo.findByLuid(idm.padStart(20, '0'))?.getOrNull()?.let { return it } + cardRepo.findByLuid(idm)?.let { return it } + cardRepo.findByLuid(idm.padStart(20, '0'))?.let { return it } // Check case (2) // Then convert to long, left pad zeros to make 20 digits, and look up idm.toLongOrNull(16)?.let { idmLong -> - cardRepo.findByLuid("%020d".format(idmLong))?.getOrNull()?.let { return it } + cardRepo.findByLuid("%020d".format(idmLong))?.let { return it } } // Check case (3) idm.padStart(16, '0').takeLast(12).let { "012E$it" }.let { idmMasked -> idmMasked.toLongOrNull(16)?.let { idmMaskedLong -> - cardRepo.findByLuid("%020d".format(idmMaskedLong))?.getOrNull()?.let { return it } + cardRepo.findByLuid("%020d".format(idmMaskedLong))?.let { return it } } } @@ -107,7 +98,7 @@ class CardService(val cardRepo: CardRepository, val cardTimestampRepo: CardTimes fun randExtID(lower: Long = 0, upper: Long = 1e9.toLong() - 1): Long { var eid = ThreadLocalRandom.current().nextLong(lower, upper) - while (cardRepo.findByExtId(eid).isPresent) { + while (cardRepo.findByExtId(eid) != null) { eid = ThreadLocalRandom.current().nextLong(lower, upper) } return eid diff --git a/src/main/java/icu/samnyan/aqua/sega/general/service/ClientSettingService.java b/src/main/java/icu/samnyan/aqua/sega/general/service/ClientSettingService.java deleted file mode 100644 index 6b789310..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/general/service/ClientSettingService.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.general.service; - -import icu.samnyan.aqua.sega.general.dao.GameVersionRepository; -import icu.samnyan.aqua.sega.general.model.GameVersion; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.Optional; - -import static icu.samnyan.aqua.sega.util.AquaConst.DEFAULT_KEYCHIP_ID; - -@Service -public class ClientSettingService { - - private final GameVersionRepository gameVersionRepository; - - public ClientSettingService(GameVersionRepository gameVersionRepository) { - this.gameVersionRepository = gameVersionRepository; - } - - public void writeSetting(GameVersion setting) { - gameVersionRepository.save(setting); - } - - public Optional getSetting(String serial) { - if (serial.equals(DEFAULT_KEYCHIP_ID)) { - return Optional.empty(); - } - try { - var vo = gameVersionRepository.findByUuid(serial); - if (vo.isPresent()) { - var v = vo.get(); - v.setLastTime(LocalDateTime.now()); - gameVersionRepository.save(v); - return Optional.of(v); - } - return Optional.empty(); - } catch (Exception e) { - return Optional.empty(); - } - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java b/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java deleted file mode 100644 index c3d23cef..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletController.java +++ /dev/null @@ -1,179 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.controller; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.handler.impl.*; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; -import jakarta.servlet.http.HttpServletRequest; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("/g/mai") -@AllArgsConstructor -public class MaimaiServletController { - - private final GetGameEventHandler getGameEventHandler; - private final GetGameRankingHandler getGameRankingHandler; - private final GetGameSettingHandler getGameSettingHandler; - private final GetTransferFriendHandler getTransferFriendHandler; - private final GetUserActivityHandler getUserActivityHandler; - private final GetUserBossHandler getUserBossHandler; - private final GetUserCharacterHandler getUserCharacterHandler; - private final GetUserCourseHandler getUserCourseHandler; - private final GetUserDataHandler getUserDataHandler; - private final GetUserGradeHandler getUserGradeHandler; - private final GetUserItemHandler getUserItemHandler; - private final GetUserMusicHandler getUserMusicHandler; - private final GetUserOptionHandler getUserOptionHandler; - private final GetUserPresentEventHandler getUserPresentEventHandler; - private final GetUserPresentHandler getUserPresentHandler; - private final GetUserPreviewHandler getUserPreviewHandler; - private final GetUserRecentRatingHandler getUserRecentRatingHandler; - private final GetUserSurvivalHandler getUserSurvivalHandler; - private final GetUserWebOptionHandler getUserWebOptionHandler; - private final UpsertTransferHandler upsertTransferHandler; - private final UpsertUserAllHandler upsertUserAllHandler; - private final UserLoginHandler userLoginHandler; - private final UserLogoutHandler userLogoutHandler; - - @PostMapping("GetGameEventApi") - public String getGameEvent(@ModelAttribute Map request) throws JsonProcessingException { - return getGameEventHandler.handle(request); - } - - @PostMapping("GetGameRankingApi") - public String getGameRanking(@ModelAttribute Map request) throws JsonProcessingException { - return getGameRankingHandler.handle(request); - } - - @PostMapping("GetGameSettingApi") - public String getGameSetting(@ModelAttribute Map request, HttpServletRequest http) throws JsonProcessingException { - request.put("localAddr", http.getLocalAddr()); - request.put("localPort", Integer.toString(http.getLocalPort())); - return getGameSettingHandler.handle(request); - } - - @PostMapping("GetUserActivityApi") - public String getUserActivity(@ModelAttribute Map request) throws JsonProcessingException { - return getUserActivityHandler.handle(request); - } - - @PostMapping("GetUserBossApi") - public String getUserBoss(@ModelAttribute Map request) throws JsonProcessingException { - return getUserBossHandler.handle(request); - } - - @PostMapping("GetUserCharacterApi") - public String getUserCharacter(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCharacterHandler.handle(request); - } - - @PostMapping("GetUserCourseApi") - public String getUserCourse(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCourseHandler.handle(request); - } - - @PostMapping("GetUserDataApi") - public String getUserData(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDataHandler.handle(request); - } - - @PostMapping("GetTransferFriendApi") - public String getTransferFriend(@ModelAttribute Map request) throws JsonProcessingException { - return getTransferFriendHandler.handle(request); - } - - @PostMapping("GetUserItemApi") - public String getUserItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserItemHandler.handle(request); - } - - @PostMapping("GetUserMusicApi") - public String getUserMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMusicHandler.handle(request); - } - - @PostMapping("GetUserOptionApi") - public String getUserOption(@ModelAttribute Map request) throws JsonProcessingException { - return getUserOptionHandler.handle(request); - } - - @PostMapping("GetUserPresent") - public String getUserPresent(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPresentHandler.handle(request); - } - - @PostMapping("GetUserPresentEventApi") - public String getUserPresentEvent(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPresentEventHandler.handle(request); - } - - @PostMapping("GetUserPreviewApi") - public String getUserPreview(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPreviewHandler.handle((request)); - } - - @PostMapping("GetUserGradeApi") - public String getUserGrade(@ModelAttribute Map request) throws JsonProcessingException { - return getUserGradeHandler.handle(request); - } - - @PostMapping("GetUserRecentRatingApi") - public String getUserRecentRating(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRecentRatingHandler.handle(request); - } - - @PostMapping("GetUserSurvivalApi") - public String getUserSurvival(@ModelAttribute Map request) throws JsonProcessingException { - return getUserSurvivalHandler.handle(request); - } - - @PostMapping("GetUserWebOptionApi") - public String getUserWebOption(@ModelAttribute Map request) throws JsonProcessingException { - return getUserWebOptionHandler.handle(request); - } - - @PostMapping("UpsertTransferApi") - public String upsertTransfer(@ModelAttribute Map request) throws JsonProcessingException { - return upsertTransferHandler.handle(request); - } - - @PostMapping("UpsertUserAllApi") - public String upsertUserAll(@ModelAttribute Map request) throws JsonProcessingException { - return upsertUserAllHandler.handle(request); - } - - @PostMapping("UserLoginApi") - public String userLogin(@ModelAttribute Map request) throws JsonProcessingException { - return userLoginHandler.handle(request); - } - - @PostMapping("UserLogoutApi") - public String userLogout(@ModelAttribute Map request) throws JsonProcessingException { - return userLogoutHandler.handle(request); - } - - @PostMapping("UpsertClientBookkeepingApi") - public String upsertClientBookkeeping(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("UpsertClientSettingApi") - public String upsertClientSetting(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimaiservlet.api.UpsertClientSettingApi\"}"; - } - - @PostMapping("UpsertClientTestmodeApi") - public String upsertClientTestmode(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimaiservlet.api.UpsertClientTestmodeApi\"}"; - } - - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletControllerAdvice.java b/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletControllerAdvice.java deleted file mode 100644 index d04045a8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/controller/MaimaiServletControllerAdvice.java +++ /dev/null @@ -1,38 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.controller; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import jakarta.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestControllerAdvice(basePackages = "icu.samnyan.aqua.sega.maimai") -public class MaimaiServletControllerAdvice { - - private static final Logger logger = LoggerFactory.getLogger(MaimaiServletControllerAdvice.class); - - /** - * Get the map object from json string - * - * @param request HttpServletRequest - */ - @ModelAttribute - public Map preHandle(HttpServletRequest request) throws IOException { - byte[] src = request.getInputStream().readAllBytes(); - String outputString = new String(src, StandardCharsets.UTF_8).trim(); - logger.info("Request {} : {}", request.getRequestURI(), outputString); - ObjectMapper mapper = new ObjectMapper(); - - return mapper.readValue(outputString, new TypeReference<>() { - }); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/gamedata/GameEventRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/gamedata/GameEventRepository.java deleted file mode 100644 index 36e1a66b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/gamedata/GameEventRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.gamedata; - -import icu.samnyan.aqua.sega.maimai.model.gamedata.GameEvent; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiGameEventRepository") -public interface GameEventRepository extends JpaRepository { - - List findByType(Integer type); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserActivityRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserActivityRepository.java deleted file mode 100644 index 88c77b71..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserActivityRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserActivityRepository") -public interface UserActivityRepository extends JpaRepository { - - Optional findByUserAndKindAndActivityId(UserData user, int kind, int id); - - List findByUser_Card_ExtIdAndKind(long userId, int kind); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserBossRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserBossRepository.java deleted file mode 100644 index 2fa5124c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserBossRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserBoss; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserBossRepository") -public interface UserBossRepository extends JpaRepository { - - Optional findByUser_Card_ExtId(long userId); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserCharacterRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserCharacterRepository.java deleted file mode 100644 index 4f57117b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserCharacterRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserCharacterRepository") -public interface UserCharacterRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndCharacterId(UserData user, int characterId); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserDataRepository.java deleted file mode 100644 index 99773272..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserDataRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserDataRepository") -public interface UserDataRepository extends JpaRepository { - Optional findByCard_ExtId(long userId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserGeneralDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserGeneralDataRepository.java deleted file mode 100644 index 318c4ad4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserGeneralDataRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserGeneralData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserGeneralDataRepository") -public interface UserGeneralDataRepository extends JpaRepository { - Optional findByUser_Card_ExtIdAndPropertyKey(long userId, String key); - - Optional findByUserAndPropertyKey(UserData user, String key); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserItemRepository.java deleted file mode 100644 index 469594a0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserItemRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserItem; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserItemRepository") -public interface UserItemRepository extends JpaRepository { - - Page findByUser_Card_ExtIdAndItemKind(long userId, int kind, Pageable page); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserMusicDetailRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserMusicDetailRepository.java deleted file mode 100644 index 4acfe56d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserMusicDetailRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserMusicDetail; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserMusicDetailRepository") -public interface UserMusicDetailRepository extends JpaRepository { - - @Query("SELECT musicId FROM MaiMaiUserMusicDetail WHERE user.card.extId = :userId AND musicId >= :offset GROUP BY musicId ORDER BY musicId") - List findMusicIdsByUser_Card_ExtIdAndOffset(long userId, long offset, Pageable page); - - List findByUser_Card_ExtIdAndMusicIdIn(long userId, List ids); - - Optional findByUserAndMusicIdAndLevel(UserData user, int musicId, int level); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserOptionRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserOptionRepository.java deleted file mode 100644 index 5d37e13e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserOptionRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserOption; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserOptionRepository") -public interface UserOptionRepository extends JpaRepository { - - Optional findByUser_Card_ExtId(long userId); - - Optional findByUser(UserData user); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPlaylogRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPlaylogRepository.java deleted file mode 100644 index ee9618f3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPlaylogRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserPlaylog; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserPlaylogRepository") -public interface UserPlaylogRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPresentEventRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPresentEventRepository.java deleted file mode 100644 index f7b4504c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPresentEventRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserPresentEvent; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserPresentEventRepository") -public interface UserPresentEventRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserSurvivalRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserSurvivalRepository.java deleted file mode 100644 index 2316892d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserSurvivalRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserSurvival; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserSurvivalRepository") -public interface UserSurvivalRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserWebOptionRepository.java b/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserWebOptionRepository.java deleted file mode 100644 index 6f55f757..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserWebOptionRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.dao.userdata; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserWebOption; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("MaimaiUserWebOptionRepository") -public interface UserWebOptionRepository extends JpaRepository { - - Optional findByUser_Card_ExtId(long userId); - - Optional findByUser(UserData user); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameEventHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameEventHandler.java deleted file mode 100644 index ffb5608c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameEventHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.gamedata.GameEventRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.gamedata.GameEvent; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetGameEventHandler") -public class GetGameEventHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameEventHandler.class); - - private final BasicMapper mapper; - - private final GameEventRepository gameEventRepository; - - public GetGameEventHandler(BasicMapper mapper, GameEventRepository gameEventRepository) { - this.mapper = mapper; - this.gameEventRepository = gameEventRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - int type = ((Number) request.get("type")).intValue(); - Boolean isAllEvent = (Boolean) request.get("isAllEvent"); - - List gameEventList = gameEventRepository.findByType(type); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", gameEventList.size()); - resultMap.put("gameEventList", gameEventList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameRankingHandler.java deleted file mode 100644 index 49abb8ea..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameRankingHandler.java +++ /dev/null @@ -1,65 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.data.GameRanking; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetGameRankingHandler") -public class GetGameRankingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameRankingHandler.class); - - private final BasicMapper mapper; - - private final PropertyEntryRepository propertyEntryRepository; - - @Autowired - public GetGameRankingHandler(BasicMapper mapper, PropertyEntryRepository propertyEntryRepository) { - this.mapper = mapper; - this.propertyEntryRepository = propertyEntryRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - int type = ((Number) request.get("type")).intValue(); - - String dataName = "maimai_game_ranking_"; - - Optional ranking = propertyEntryRepository.findByPropertyKey(dataName + type); - - List gameRankingList = new ArrayList<>(); - if (ranking.isPresent()) { - String rankingList = ranking.get().getPropertyValue(); - String[] r = rankingList.split(","); - for (String i : r) { - String[] v = i.split(":"); - if (v.length == 2) { - gameRankingList.add(new GameRanking(Integer.parseInt(v[0]), Integer.parseInt(v[1]), "")); - } else if (v.length == 3) { - gameRankingList.add(new GameRanking(Integer.parseInt(v[0]), Integer.parseInt(v[1]), v[2])); - - } - } - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("gameRankingList", gameRankingList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameSettingHandler.java deleted file mode 100644 index 8fac015e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetGameSettingHandler.java +++ /dev/null @@ -1,77 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.GetGameSettingResp; -import icu.samnyan.aqua.sega.maimai.model.response.data.GameSetting; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.Map; -import jakarta.servlet.http.HttpServletRequest; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetGameSettingHandler") -public class GetGameSettingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameSettingHandler.class); - - private final BasicMapper mapper; - - private final PropertyEntryRepository propertyEntryRepository; - - private final String HOST_OVERRIDE; - private final String PORT_OVERRIDE; - - @Autowired - public GetGameSettingHandler(BasicMapper mapper, PropertyEntryRepository propertyEntryRepository, - @Value("${allnet.server.host:}") String HOST, - @Value("${allnet.server.port:}") String PORT) { - this.mapper = mapper; - this.propertyEntryRepository = propertyEntryRepository; - this.HOST_OVERRIDE = HOST; - this.PORT_OVERRIDE = PORT; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - - PropertyEntry start = propertyEntryRepository.findByPropertyKey("reboot_start_time") - .orElseGet(() -> new PropertyEntry("reboot_start_time", "2020-01-01 07:00:00.0")); - PropertyEntry end = propertyEntryRepository.findByPropertyKey("reboot_end_time") - .orElseGet(() -> new PropertyEntry("reboot_end_time", "2020-01-01 07:59:59.0")); - - String addr = HOST_OVERRIDE.equals("") ? (String) request.get("localAddr") : HOST_OVERRIDE; - String port = PORT_OVERRIDE.equals("") ? (String) request.get("localPort") : PORT_OVERRIDE; - - GameSetting gameSetting = new GameSetting( - false, - 1800, - start.getPropertyValue(), - end.getPropertyValue(), - 0, - 0, - "", - "", - "http://" + addr + ":" + port + "/", - ""); - - GetGameSettingResp resp = new GetGameSettingResp( - false, - gameSetting - ); - - String json = mapper.write(resp); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetTransferFriendHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetTransferFriendHandler.java deleted file mode 100644 index 76ad0a23..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetTransferFriendHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetTransferFriendHandler") -public class GetTransferFriendHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetTransferFriendHandler.class); - - private final BasicMapper mapper; - - public GetTransferFriendHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - /** - * Response: - * transferFriendList - * playUserId - * playUserName - * playDate - * friendPoint - * isFavorite - * - */ - @Override - public String handle(Map request) throws JsonProcessingException { - return "{}"; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserActivityHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserActivityHandler.java deleted file mode 100644 index 682a99bc..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserActivityHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserActivityRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserActivityHandler") -public class GetUserActivityHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserActivityHandler.class); - - private final BasicMapper mapper; - - private final UserActivityRepository userActivityRepository; - - public GetUserActivityHandler(BasicMapper mapper, UserActivityRepository userActivityRepository) { - this.mapper = mapper; - this.userActivityRepository = userActivityRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - Integer kind = (Integer) request.get("kind"); - - List userActivityList = userActivityRepository.findByUser_Card_ExtIdAndKind(userId, kind); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userActivityList.size()); - resultMap.put("kind", kind); - resultMap.put("gameRankingList", userActivityList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserBossHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserBossHandler.java deleted file mode 100644 index fe1f8009..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserBossHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserBossRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserBoss; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserBossHandler") -public class GetUserBossHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserBossHandler.class); - - private final BasicMapper mapper; - - private final UserBossRepository userBossRepository; - - public GetUserBossHandler(BasicMapper mapper, UserBossRepository userBossRepository) { - this.mapper = mapper; - this.userBossRepository = userBossRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Optional userBossOptional = userBossRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - if (userBossOptional.isPresent()) { - resultMap.put("userBossData", userBossOptional.get()); - } else { - resultMap.put("userBossData", null); - } - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCharacterHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCharacterHandler.java deleted file mode 100644 index c15f2298..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCharacterHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserCharacterRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserCharacterHandler") -public class GetUserCharacterHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserCharacterHandler.class); - - private final BasicMapper mapper; - - private final UserCharacterRepository userCharacterRepository; - - public GetUserCharacterHandler(BasicMapper mapper, UserCharacterRepository userCharacterRepository) { - this.mapper = mapper; - this.userCharacterRepository = userCharacterRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userCharacterList = userCharacterRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userCharacterList.size()); - resultMap.put("userCharacterList", userCharacterList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCourseHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCourseHandler.java deleted file mode 100644 index 0686ac01..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserCourseHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserCourseHandler") -public class GetUserCourseHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserCourseHandler.class); - - private final BasicMapper mapper; - - public GetUserCourseHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - /** - * Response Format: - * nextIndex - * userCourseList - * courseId - * rate - * - */ - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userCourseList", null); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserDataHandler.java deleted file mode 100644 index d5590988..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserDataHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserDataRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserDataHandler") -public class GetUserDataHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserDataHandler.class); - - private final BasicMapper mapper; - - private final UserDataRepository userDataRepository; - - public GetUserDataHandler(BasicMapper mapper, UserDataRepository userDataRepository) { - this.mapper = mapper; - this.userDataRepository = userDataRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - UserData userData = userDataRepository.findByCard_ExtId(userId).orElseThrow(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userData", userData); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserGradeHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserGradeHandler.java deleted file mode 100644 index b52e27c6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserGradeHandler.java +++ /dev/null @@ -1,58 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserGeneralDataRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.data.UserGradeStatus; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserGeneralData; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserGradeHandler") -public class GetUserGradeHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserGradeHandler.class); - - private final BasicMapper mapper; - - private final UserGeneralDataRepository userGeneralDataRepository; - - public GetUserGradeHandler(BasicMapper mapper, UserGeneralDataRepository userGeneralDataRepository) { - this.mapper = mapper; - this.userGeneralDataRepository = userGeneralDataRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - UserGeneralData userData = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(userId, "user_grade_status") - .orElseGet(() -> new UserGeneralData(-1, null, "user_grade_status", "1,1,1,1")); - - String[] val = userData.getPropertyValue().split(","); - UserGradeStatus userGradeStatus = new UserGradeStatus( - Integer.parseInt(val[0]), - Integer.parseInt(val[1]), - Integer.parseInt(val[2]), - Integer.parseInt(val[3]) - ); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userGradeStatus", userGradeStatus); - resultMap.put("length", 0); - resultMap.put("userGradeList", null); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserItemHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserItemHandler.java deleted file mode 100644 index 1cae016a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserItemHandler.java +++ /dev/null @@ -1,59 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserItemRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserItem; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserItemHandler") -public class GetUserItemHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserItemHandler.class); - - private final BasicMapper mapper; - - private final UserItemRepository userItemRepository; - - public GetUserItemHandler(BasicMapper mapper, UserItemRepository userItemRepository) { - this.mapper = mapper; - this.userItemRepository = userItemRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - long nextIndexVal = ((Number) request.get("nextIndex")).longValue(); - int maxCount = ((Number) request.get("maxCount")).intValue(); - - long mul = 10000000000L; - - int kind = (int) (nextIndexVal / mul); - int nextIndex = (int) (nextIndexVal % mul); - int pageNum = nextIndex / maxCount; - - Page dbPage = userItemRepository.findByUser_Card_ExtIdAndItemKind(userId, kind, PageRequest.of(pageNum, maxCount)); - - long currentIndex = kind * mul + maxCount * pageNum + dbPage.getNumberOfElements(); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? 0 : currentIndex); - resultMap.put("itemKind", kind); - resultMap.put("userItemList", dbPage.getContent()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserMusicHandler.java deleted file mode 100644 index 621bc75b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserMusicHandler.java +++ /dev/null @@ -1,73 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserMusicDetailRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.data.UserMusic; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserMusicDetail; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.data.domain.PageRequest; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserMusicHandler") -public class GetUserMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserMusicHandler.class); - - private final BasicMapper mapper; - - private final UserMusicDetailRepository userMusicDetailRepository; - - public GetUserMusicHandler(BasicMapper mapper, UserMusicDetailRepository userMusicDetailRepository) { - this.mapper = mapper; - this.userMusicDetailRepository = userMusicDetailRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - long nextIndex = ((Number) request.get("nextIndex")).longValue(); - int maxCount = ((Number) request.get("maxCount")).intValue(); - - List musicIds = userMusicDetailRepository.findMusicIdsByUser_Card_ExtIdAndOffset(userId, nextIndex, PageRequest.of(0, maxCount)); - - List detailList = userMusicDetailRepository.findByUser_Card_ExtIdAndMusicIdIn(userId, musicIds); - - Map userMusicMap = new LinkedHashMap<>(); - - detailList.forEach(music -> { - UserMusic userMusic; - if (userMusicMap.containsKey(music.getMusicId())) { - userMusic = userMusicMap.get(music.getMusicId()); - } else { - userMusic = new UserMusic(new LinkedList<>(), 0); - userMusicMap.put(music.getMusicId(), userMusic); - } - userMusic.getUserMusicDetailList().add(music); - }); - - userMusicMap.forEach((key, val) -> { - val.setLength(val.getUserMusicDetailList().size()); - }); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", musicIds.size()); - resultMap.put("nextIndex", musicIds.size() != 50 ? 0 : musicIds.get(musicIds.size() - 1) + 1); - resultMap.put("userMusicList", userMusicMap.values()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserOptionHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserOptionHandler.java deleted file mode 100644 index de505b28..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserOptionHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserOptionRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserOption; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserOptionHandler") -public class GetUserOptionHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserOptionHandler.class); - - private final BasicMapper mapper; - - private final UserOptionRepository userOptionRepository; - - public GetUserOptionHandler(BasicMapper mapper, UserOptionRepository userOptionRepository) { - this.mapper = mapper; - this.userOptionRepository = userOptionRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - UserOption userOption = userOptionRepository.findByUser_Card_ExtId(userId).orElseThrow(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userOption", userOption); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentEventHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentEventHandler.java deleted file mode 100644 index 8ebbb587..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentEventHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserPresentEventRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserPresentEvent; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserPresentEventHandler") -public class GetUserPresentEventHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserPresentEventHandler.class); - - private final BasicMapper mapper; - - private final UserPresentEventRepository userPresentEventRepository; - - public GetUserPresentEventHandler(BasicMapper mapper, UserPresentEventRepository userPresentEventRepository) { - this.mapper = mapper; - this.userPresentEventRepository = userPresentEventRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userPresentEventList = userPresentEventRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userPresentEventList.size()); - resultMap.put("userPresentEventList", userPresentEventList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentHandler.java deleted file mode 100644 index 64724335..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPresentHandler.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserPresentHandler") -public class GetUserPresentHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserPresentHandler.class); - - private final BasicMapper mapper; - - public GetUserPresentHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - /** - * Empty - */ - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userPresentList", List.of()); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPreviewHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPreviewHandler.java deleted file mode 100644 index a75e3362..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserPreviewHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserDataRepository; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserWebOptionRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.GetUserPreviewResp; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserWebOption; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserPreviewHandler") -public class GetUserPreviewHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserPreviewHandler.class); - - private final BasicMapper mapper; - - private final UserDataRepository userDataRepository; - private final UserWebOptionRepository userWebOptionRepository; - - public GetUserPreviewHandler(BasicMapper mapper, UserDataRepository userDataRepository, UserWebOptionRepository userWebOptionRepository) { - this.mapper = mapper; - this.userDataRepository = userDataRepository; - this.userWebOptionRepository = userWebOptionRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Optional userDataOptional = userDataRepository.findByCard_ExtId(userId); - - GetUserPreviewResp resp = new GetUserPreviewResp(); - resp.setUserId(userId); - String json; - if (userDataOptional.isPresent() && userDataOptional.get().getUserName() != null) { - UserData user = userDataOptional.get(); - Optional userWebOptionOptional = userWebOptionRepository.findByUser_Card_ExtId(userId); - resp.setUserName(user.getUserName()); - resp.setLogin(true); - resp.setLastDataVersion(user.getLastDataVersion()); - resp.setLastLoginDate(user.getLastPlayDate()); - resp.setLastPlayDate(user.getLastPlayDate()); - resp.setPlayerRating(user.getPlayerRating()); - resp.setNameplateId(user.getNameplateId()); - resp.setFrameId(user.getFrameId()); - resp.setIconId(user.getIconId()); - resp.setTrophyId(user.getTrophyId()); - if (userWebOptionOptional.isPresent()) { - UserWebOption option = userWebOptionOptional.get(); - resp.setDispRate(option.getDispRate()); - resp.setDispRank(option.getDispRank()); - resp.setDispHomeRanker(option.getDispHomeRanker()); - resp.setDispTotalLv(option.getDispTotalLv()); - } - resp.setTotalLv(user.getTotalLv()); - json = mapper.write(resp); - } else { - json = "{}"; - } - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserRecentRatingHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserRecentRatingHandler.java deleted file mode 100644 index 572d5060..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserRecentRatingHandler.java +++ /dev/null @@ -1,58 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserGeneralDataRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.data.UserRecentRating; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserGeneralData; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserRecentRatingHandler") -public class GetUserRecentRatingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRecentRatingHandler.class); - - private final BasicMapper mapper; - - private final UserGeneralDataRepository userGeneralDataRepository; - - public GetUserRecentRatingHandler(BasicMapper mapper, UserGeneralDataRepository userGeneralDataRepository) { - this.mapper = mapper; - this.userGeneralDataRepository = userGeneralDataRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - UserGeneralData data = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(userId, "user_recent_rating") - .orElse(new UserGeneralData(-1, null, "user_recent_rating", "")); - - String[] ratings = data.getPropertyValue().split(","); - List recentRatingList = new LinkedList<>(); - for (String rating : ratings) { - String[] v = rating.split(":"); - recentRatingList.add(new UserRecentRating(Integer.parseInt(v[0]), Integer.parseInt(v[1]), Integer.parseInt(v[2]))); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", recentRatingList.size()); - resultMap.put("userRecentRatingList", recentRatingList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserSurvivalHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserSurvivalHandler.java deleted file mode 100644 index 8bc4f14b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserSurvivalHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserSurvivalRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserSurvival; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserSurvivalHandler") -public class GetUserSurvivalHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserSurvivalHandler.class); - - private final BasicMapper mapper; - - private final UserSurvivalRepository userSurvivalRepository; - - public GetUserSurvivalHandler(BasicMapper mapper, UserSurvivalRepository userSurvivalRepository) { - this.mapper = mapper; - this.userSurvivalRepository = userSurvivalRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userSurvivalList = userSurvivalRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userSurvivalList.size()); - resultMap.put("userSurvivalList", userSurvivalList); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserWebOptionHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserWebOptionHandler.java deleted file mode 100644 index 10ba43ca..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/GetUserWebOptionHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.maimai.dao.userdata.UserWebOptionRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.userdata.UserWebOption; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiGetUserWebOptionHandler") -public class GetUserWebOptionHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserWebOptionHandler.class); - - private final BasicMapper mapper; - - private final UserWebOptionRepository userWebOptionRepository; - - public GetUserWebOptionHandler(BasicMapper mapper, UserWebOptionRepository userWebOptionRepository) { - this.mapper = mapper; - this.userWebOptionRepository = userWebOptionRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - UserWebOption userWebOption = userWebOptionRepository.findByUser_Card_ExtId(userId) - .orElse(new UserWebOption(-1, null, true, 1, 1, 1, 1, 1)); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("userWebOption", userWebOption); - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertTransferHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertTransferHandler.java deleted file mode 100644 index 4a2c24c5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertTransferHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiUpsertTransferHandler") -public class UpsertTransferHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UpsertTransferHandler.class); - - private final BasicMapper mapper; - - public UpsertTransferHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - return "{\"returnCode\":1}"; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertUserAllHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertUserAllHandler.java deleted file mode 100644 index e773f34e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UpsertUserAllHandler.java +++ /dev/null @@ -1,212 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.maimai.dao.userdata.*; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.request.UpsertUserAll; -import icu.samnyan.aqua.sega.maimai.model.request.data.UserAll; -import icu.samnyan.aqua.sega.maimai.model.response.data.UserGradeStatus; -import icu.samnyan.aqua.sega.maimai.model.response.data.UserRecentRating; -import icu.samnyan.aqua.sega.maimai.model.userdata.*; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiUpsertUserAllHandler") -public class UpsertUserAllHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UpsertUserAllHandler.class); - - private final BasicMapper mapper; - - private final CardService cardService; - - private final UserDataRepository userDataRepository; - private final UserOptionRepository userOptionRepository; - private final UserWebOptionRepository userWebOptionRepository; - private final UserMusicDetailRepository userMusicDetailRepository; - private final UserGeneralDataRepository userGeneralDataRepository; - private final UserActivityRepository userActivityRepository; - private final UserCharacterRepository userCharacterRepository; - private final UserPlaylogRepository userPlaylogRepository; - - public UpsertUserAllHandler(BasicMapper mapper, CardService cardService, UserDataRepository userDataRepository, UserOptionRepository userOptionRepository, UserWebOptionRepository userWebOptionRepository, UserMusicDetailRepository userMusicDetailRepository, UserGeneralDataRepository userGeneralDataRepository, UserActivityRepository userActivityRepository, UserCharacterRepository userCharacterRepository, UserPlaylogRepository userPlaylogRepository) { - this.mapper = mapper; - this.cardService = cardService; - this.userDataRepository = userDataRepository; - this.userOptionRepository = userOptionRepository; - this.userWebOptionRepository = userWebOptionRepository; - this.userMusicDetailRepository = userMusicDetailRepository; - this.userGeneralDataRepository = userGeneralDataRepository; - this.userActivityRepository = userActivityRepository; - this.userCharacterRepository = userCharacterRepository; - this.userPlaylogRepository = userPlaylogRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - - UpsertUserAll upsertUserAll = mapper.convert(request, UpsertUserAll.class); - long userId = upsertUserAll.getUserId(); - UserAll userAll = upsertUserAll.getUpsertUserAll(); - - // UserData - UserData userData; - UserData newUserData; - if (userAll.getUserData() == null) { - return null; - } else { - newUserData = userAll.getUserData().get(0); - Optional userOptional = userDataRepository.findByCard_ExtId(userId); - - if (userOptional.isPresent()) { - userData = userOptional.get(); - } else { - userData = new UserData(); - Card card = cardService.getCardByExtId(userId).orElseThrow(); - userData.setCard(card); - } - - newUserData.setId(userData.getId()); - newUserData.setCard(userData.getCard()); - // Decode Username - String userName = new String(newUserData.getUserName() - .getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); - - - newUserData.setUserName(userName); - userDataRepository.saveAndFlush(newUserData); - } - - // UserOption - if (userAll.getUserOption() != null) { - UserOption newUserOption = userAll.getUserOption().get(0); - - Optional userOptionOptional = userOptionRepository.findByUser(newUserData); - UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData)); - - newUserOption.setId(userOption.getId()); - newUserOption.setUser(userOption.getUser()); - - userOptionRepository.save(newUserOption); - } - - // UserWebOption - if (userAll.getUserWebOption() != null) { - UserWebOption newUserWebOption = userAll.getUserWebOption().get(0); - - Optional userWebOptionOptional = userWebOptionRepository.findByUser(newUserData); - UserWebOption userWebOption = userWebOptionOptional.orElseGet(() -> new UserWebOption(newUserData)); - - newUserWebOption.setId(userWebOption.getId()); - newUserWebOption.setUser(userWebOption.getUser()); - - userWebOptionRepository.save(newUserWebOption); - } - - // UserMusicDetailList - if (userAll.getUserMusicDetailList() != null) { - List userMusicDetailList = userAll.getUserMusicDetailList(); - List newUserMusicDetailList = new ArrayList<>(); - - for (UserMusicDetail newUserMusicDetail : userMusicDetailList) { - int musicId = newUserMusicDetail.getMusicId(); - int level = newUserMusicDetail.getLevel(); - - Optional musicDetailOptional = userMusicDetailRepository.findByUserAndMusicIdAndLevel(newUserData, musicId, level); - UserMusicDetail userMusicDetail = musicDetailOptional.orElseGet(() -> new UserMusicDetail(newUserData)); - - newUserMusicDetail.setId(userMusicDetail.getId()); - newUserMusicDetail.setUser(newUserData); - newUserMusicDetailList.add(newUserMusicDetail); - } - userMusicDetailRepository.saveAll(newUserMusicDetailList); - } - - // UserRecentRatingList - if (userAll.getUserRecentRatingList() != null) { - List recentRatingList = userAll.getUserRecentRatingList(); - StringBuilder userRecentRating = new StringBuilder(); - recentRatingList.forEach(rating -> { - userRecentRating.append(rating.getMusicId()).append(":").append(rating.getLevel()).append(":").append(rating.getAchieve()).append(":"); - userRecentRating.append(","); - }); - if (userRecentRating.length() > 0) { - userRecentRating.deleteCharAt(userRecentRating.length() - 1); - } - UserGeneralData ratingData = userGeneralDataRepository.findByUserAndPropertyKey(newUserData, "user_recent_rating") - .orElseGet(() -> new UserGeneralData(newUserData, "user_recent_rating")); - ratingData.setPropertyValue(userRecentRating.toString()); - userGeneralDataRepository.save(ratingData); - } - - // UserActivityList - if (userAll.getUserActivityList() != null) { - List userActivityList = userAll.getUserActivityList(); - List newUserActivityList = new ArrayList<>(); - - for (UserActivity newUserActivity : userActivityList) { - int kind = newUserActivity.getKind(); - int id = newUserActivity.getActivityId(); - - if (kind != 0 && id != 0) { - Optional activityOptional = userActivityRepository.findByUserAndKindAndActivityId(newUserData, kind, id); - UserActivity userActivity = activityOptional.orElseGet(() -> new UserActivity(newUserData)); - - newUserActivity.setId(userActivity.getId()); - newUserActivity.setUser(newUserData); - newUserActivityList.add(newUserActivity); - } - } - newUserActivityList.sort((a, b) -> Long.compare(b.getSortNumber(), a.getSortNumber())); - userActivityRepository.saveAll(newUserActivityList); - } - - // UserGradeStatusList - if (userAll.getUserGradeStatusList() != null) { - UserGradeStatus userGradeStatus = userAll.getUserGradeStatusList().get(0); - UserGeneralData gradeData = userGeneralDataRepository.findByUserAndPropertyKey(newUserData, "user_grade_status") - .orElseGet(() -> new UserGeneralData(newUserData, "user_grade_status")); - gradeData.setPropertyValue(userGradeStatus.getGradeVersion() + "," + userGradeStatus.getGradeLevel() + "," + userGradeStatus.getGradeSubLevel() + "," + userGradeStatus.getGradeMaxId()); - userGeneralDataRepository.save(gradeData); - } - - // UserCharacterList - if (userAll.getUserCharacterList() != null) { - List userCharacterList = userAll.getUserCharacterList(); - List newUserCharacterList = new ArrayList<>(); - for (UserCharacter newUserCharacter : userCharacterList) { - int id = newUserCharacter.getCharacterId(); - - Optional characterOptional = userCharacterRepository.findByUserAndCharacterId(newUserData, id); - UserCharacter userCharacter = characterOptional.orElseGet(() -> new UserCharacter(newUserData)); - - newUserCharacter.setId(userCharacter.getId()); - newUserCharacter.setUser(newUserData); - newUserCharacterList.add(newUserCharacter); - } - userCharacterRepository.saveAll(newUserCharacterList); - } - - // UserPlaylogList - if (userAll.getUserPlaylogList() != null) { - List userPlaylogList = userAll.getUserPlaylogList(); - userPlaylogList.forEach(log -> log.setUser(newUserData)); - userPlaylogRepository.saveAll(userPlaylogList); - } - - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimaiservlet.api.UpsertUserAllApi\"}"; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLoginHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLoginHandler.java deleted file mode 100644 index a219a5d3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLoginHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.maimai.model.response.UserLoginResp; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiUserLoginHandler") -public class UserLoginHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UserLoginHandler.class); - - private final BasicMapper mapper; - - public UserLoginHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - String userId = (String) request.get("userId"); - - UserLoginResp resp = new UserLoginResp(); - - String json = mapper.write(resp); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLogoutHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLogoutHandler.java deleted file mode 100644 index da403934..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/handler/impl/UserLogoutHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("MaimaiUserLogoutHandler") -public class UserLogoutHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UserLogoutHandler.class); - - private final BasicMapper mapper; - - public UserLogoutHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - - String json = mapper.write(new CodeResp(1)); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/gamedata/GameEvent.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/gamedata/GameEvent.java deleted file mode 100644 index 04425360..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/gamedata/GameEvent.java +++ /dev/null @@ -1,32 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiGameEvent") -@Table(name = "maimai_game_event") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameEvent implements Serializable { - - private static final long serialVersionUID = 1L; - public int type; - @JsonProperty("id") - public int eventId; - public String startDate; - public String endDate; - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/request/UpsertUserAll.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/request/UpsertUserAll.java deleted file mode 100644 index 8cbaee26..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/request/UpsertUserAll.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.request; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.maimai.model.request.data.UserAll; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UpsertUserAll implements Serializable { - private long userId; - @JsonProperty("isEventMode") - private boolean isEventMode; - @JsonProperty("isFreePlay") - private boolean isFreePlay; - private UserAll upsertUserAll; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/request/data/UserAll.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/request/data/UserAll.java deleted file mode 100644 index ca080a55..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/request/data/UserAll.java +++ /dev/null @@ -1,33 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.request.data; - -import icu.samnyan.aqua.sega.maimai.model.response.data.UserGradeStatus; -import icu.samnyan.aqua.sega.maimai.model.response.data.UserRecentRating; -import icu.samnyan.aqua.sega.maimai.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserAll implements Serializable { - private List userPlaylogList; - private List userData; - private List userOption; - private Integer userId; - private List userWebOption; - private List userMusicDetailList; - private List userItemList; - private List userRecentRatingList; - private List userActivityList; - private List userGradeStatusList; - private List userBossList; - private List userCharacterList; - private String isNewCharacterList; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetGameSettingResp.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetGameSettingResp.java deleted file mode 100644 index 8dc9cf21..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetGameSettingResp.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.maimai.model.response.data.GameSetting; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetGameSettingResp { - @JsonProperty("isAouAccession") - private boolean isAouAccession; - private GameSetting gameSetting; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetUserPreviewResp.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetUserPreviewResp.java deleted file mode 100644 index 35f3bd5f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetUserPreviewResp.java +++ /dev/null @@ -1,33 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetUserPreviewResp { - - private Long userId = 0L; - private String userName = ""; - @JsonProperty("isLogin") - private boolean isLogin = false; - private int lastDataVersion = 0; - private String lastLoginDate = null; - private String lastPlayDate = null; - private int playerRating = 0; - private int nameplateId = 0; - private int frameId = 0; - private int iconId = 0; - private int trophyId = 0; - private int dispRate = 1; - private int dispRank = 1; - private int dispHomeRanker = 1; - private int dispTotalLv = 1; - private int totalLv = 0; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/UserLoginResp.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/UserLoginResp.java deleted file mode 100644 index ae6b977d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/UserLoginResp.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserLoginResp { - public int returnCode = 1; - public String lastLoginDate = "2020-01-01 00:00:00.0"; - public int loginCount = 0; - public int consecutiveLoginCount = 0; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameRanking.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameRanking.java deleted file mode 100644 index 974089bd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameRanking.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameRanking { - private Integer id; - private Integer point; - private String userName; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameSetting.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameSetting.java deleted file mode 100644 index ec0a573e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameSetting.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response.data; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameSetting { - @JsonProperty("isMaintenance") - private boolean isMaintenance; - private int requestInterval; - private String rebootStartTime; - private String rebootEndTime; - private int movieUploadLimit; - private int movieStatus; - private String movieServerUri; - private String deliverServerUri; - private String oldServerUri; - private String usbDlServerUri; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserGradeStatus.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserGradeStatus.java deleted file mode 100644 index f4daa4b9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserGradeStatus.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserGradeStatus { - int gradeVersion; - int gradeLevel; - int gradeSubLevel; - int gradeMaxId; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserMusic.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserMusic.java deleted file mode 100644 index 2ff6f3bf..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserMusic.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response.data; - -import icu.samnyan.aqua.sega.maimai.model.userdata.UserMusicDetail; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserMusic { - List userMusicDetailList; - int length; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserRecentRating.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserRecentRating.java deleted file mode 100644 index 6a0e179e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserRecentRating.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserRecentRating { - int musicId; - int level; - int achieve; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserActivity.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserActivity.java deleted file mode 100644 index 2b5984de..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserActivity.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserActivity") -@Table(name = "maimai_user_activity") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserActivity implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int kind; - - @JsonProperty("id") - private int activityId; - - private long sortNumber; - - private int param1; - - private int param2; - - private int param3; - - private int param4; - - public UserActivity(UserData user) { - this.user = user; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserBoss.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserBoss.java deleted file mode 100644 index 4aef8e15..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserBoss.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserBoss") -@Table(name = "maimai_user_boss") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserBoss implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private long pandoraFlagList0; - - private long pandoraFlagList1; - - private long pandoraFlagList2; - - private long pandoraFlagList3; - - private long pandoraFlagList4; - - private long pandoraFlagList5; - - private long pandoraFlagList6; - - private long emblemFlagList; - - public UserBoss(UserData user) { - this.user = user; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserCharacter.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserCharacter.java deleted file mode 100644 index 2507e4f9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserCharacter.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserCharacter") -@Table(name = "maimai_user_character") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserCharacter implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int characterId; - - private int point; - - private int level; - - public UserCharacter(UserData user) { - this.user = user; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserData.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserData.java deleted file mode 100644 index 6c38b07e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserData.java +++ /dev/null @@ -1,135 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserData") -@Table(name = "maimai_user_data") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserData implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonSerialize(using = AccessCodeSerializer.class) - @JsonProperty(value = "accessCode", access = JsonProperty.Access.READ_ONLY) - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "aime_card_id") - private Card card; - - private int lastDataVersion; - - private String userName; - - private int point; - - private int totalPoint; - - private int iconId; - - private int nameplateId; - - private int frameId; - - private int trophyId; - - private int playCount; - - private int playVsCount; - - private int playSyncCount; - - private int winCount; - - private int helpCount; - - private int comboCount; - - private int feverCount; - - private int totalHiScore; - - private int totalEasyHighScore; - - private int totalBasicHighScore; - - private int totalAdvancedHighScore; - - private int totalExpertHighScore; - - private int totalMasterHighScore; - - private int totalReMasterHighScore; - - private int totalHighSync; - - private int totalEasySync; - - private int totalBasicSync; - - private int totalAdvancedSync; - - private int totalExpertSync; - - private int totalMasterSync; - - private int totalReMasterSync; - - private int playerRating; - - private int highestRating; - - private int rankAuthTailId; - - private String eventWatchedDate; - - private String webLimitDate; - - private int challengeTrackPhase; - - private int firstPlayBits; - - private String lastPlayDate; - - private int lastPlaceId; - - private String lastPlaceName; - - private int lastRegionId; - - private String lastRegionName; - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; - - private String lastCountryCode; - - private int eventPoint; - - private int totalLv; - - private int lastLoginBonusDay; - - private int lastSurvivalBonusDay; - - private int loginBonusLv; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserGeneralData.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserGeneralData.java deleted file mode 100644 index 01079c95..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserGeneralData.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * For userGradeStatus, userRecentRatingList - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserGeneralData") -@Table(name = "maimai_user_general_data") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserGeneralData implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private String propertyKey; - - @Column(columnDefinition = "TEXT") - private String propertyValue; - - public UserGeneralData(UserData userData, String key) { - this.user = userData; - this.propertyKey = key; - this.propertyValue = ""; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserItem.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserItem.java deleted file mode 100644 index 3dbd542c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserItem.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserItem") -@Table(name = "maimai_user_item") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserItem implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int itemKind; - - private int itemId; - - private int stock; - - public UserItem(UserData user) { - this.user = user; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserMusicDetail.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserMusicDetail.java deleted file mode 100644 index 76192989..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserMusicDetail.java +++ /dev/null @@ -1,56 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaiMaiUserMusicDetail") -@Table(name = "maimai_user_music_detail") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserMusicDetail implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int musicId; - - private int level; - - private int playCount; - - private int scoreMax; - - private int syncRateMax; - - private boolean isAllPerfect; - - private int isAllPerfectPlus; - - private int fullCombo; - - private int maxFever; - - private int achievement; - - public UserMusicDetail(UserData user) { - this.user = user; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserOption.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserOption.java deleted file mode 100644 index dcc00d59..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserOption.java +++ /dev/null @@ -1,120 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserOption") -@Table(name = "maimai_user_option") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserOption implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int soudEffect; - - private int mirrorMode; - - private int guideSpeed; - - private int bgInfo; - - private int brightness; - - private int isStarRot; - - private int breakSe; - - private int slideSe; - - private int hardJudge; - - private int isTagJump; - - private int breakSeVol; - - private int slideSeVol; - - private int isUpperDisp; - - private int trackSkip; - - private int optionMode; - - private int simpleOptionParam; - - private int adjustTiming; - - private int dispTiming; - - private int timingPos; - - private int ansVol; - - private int noteVol; - - private int dmgVol; - - private int appealFlame; - - private int isFeverDisp; - - private int dispJudge; - - private int judgePos; - - private int ratingGuard; - - private int selectChara; - - private int sortType; - - private int filterGenre; - - private int filterLevel; - - private int filterRank; - - private int filterVersion; - - private int filterRec; - - private int filterFullCombo; - - private int filterAllPerfect; - - private int filterDifficulty; - - private int filterFullSync; - - private int filterReMaster; - - private int filterMaxFever; - - private int finalSelectId; - - private int finalSelectCategory; - - public UserOption(UserData user) { - this.user = user; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPlaylog.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPlaylog.java deleted file mode 100644 index 8cd22110..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPlaylog.java +++ /dev/null @@ -1,157 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserPlaylog") -@Table(name = "maimai_user_playlog") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserPlaylog implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int orderId; - - private long sortNumber; - - private int placeId; - - private String placeName; - - private String country; - - private int regionId; - - private String playDate; - - private String userPlayDate; - - private int musicId; - - private int level; - - private int gameMode; - - private int rivalNum; - - private int track; - - private int eventId; - - @JsonProperty("isFreeToPlay") - private boolean isFreeToPlay; - - private int playerRating; - - private long playedUserId1; - - private String playedUserName1; - - private int playedMusicLevel1; - - private long playedUserId2; - - private String playedUserName2; - - private int playedMusicLevel2; - - private long playedUserId3; - - private String playedUserName3; - - private int playedMusicLevel3; - - private int achievement; - - private int score; - - private int tapScore; - - private int holdScore; - - private int slideScore; - - private int breakScore; - - private int syncRate; - - private int vsWin; - - @JsonProperty("isAllPerfect") - private boolean isAllPerfect; - - private int fullCombo; - - private int maxFever; - - private int maxCombo; - - private int tapPerfect; - - private int tapGreat; - - private int tapGood; - - private int tapBad; - - private int holdPerfect; - - private int holdGreat; - - private int holdGood; - - private int holdBad; - - private int slidePerfect; - - private int slideGreat; - - private int slideGood; - - private int slideBad; - - private int breakPerfect; - - private int breakGreat; - - private int breakGood; - - private int breakBad; - - @JsonProperty("isTrackSkip") - private boolean isTrackSkip; - - @JsonProperty("isHighScore") - private boolean isHighScore; - - @JsonProperty("isChallengeTrack") - private boolean isChallengeTrack; - - private int challengeLife; - - private int challengeRemain; - - private int isAllPerfectPlus; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPresentEvent.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPresentEvent.java deleted file mode 100644 index 50ecc788..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserPresentEvent.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserPresentEvent") -@Table(name = "maimai_user_present_event") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserPresentEvent implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int presentEventId; - - private int point; - - private int presentCount; - - private int rate; - - public UserPresentEvent(UserData user) { - this.user = user; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserSurvival.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserSurvival.java deleted file mode 100644 index 2070a266..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserSurvival.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * Survival Course - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserSurvival") -@Table(name = "maimai_user_survival") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserSurvival implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int survivalId; - - private int totalScore; - - private int totalAchieve; - - @JsonProperty("isClear") - private boolean isClear; - - @JsonProperty("isNoDamage") - private boolean isNoDamage; - - public UserSurvival(UserData user) { - this.user = user; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserWebOption.java b/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserWebOption.java deleted file mode 100644 index 43bf107f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai/model/userdata/UserWebOption.java +++ /dev/null @@ -1,50 +0,0 @@ -package icu.samnyan.aqua.sega.maimai.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "MaimaiUserWebOption") -@Table(name = "maimai_user_web_option") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserWebOption implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - @JsonProperty("isNetMember") - private boolean isNetMember = true; - - private int dispRate; - - private int dispJudgeStyle; - - private int dispRank; - - private int dispHomeRanker; - - private int dispTotalLv; - - public UserWebOption(UserData user) { - this.user = user; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt index ce67bb4a..040f12ce 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt @@ -16,12 +16,12 @@ fun Maimai2ServletController.initApis() { "GetUserExtend" { mapOf( "userId" to uid, - "userExtend" to (db.userExtend.findSingleByUser_Card_ExtId(uid)() ?: (404 - "User not found")) + "userExtend" to (db.userExtend.findSingleByUser_Card_ExtId(uid) ?: (404 - "User not found")) ) } "GetUserData" { mapOf( "userId" to uid, - "userData" to (db.userData.findByCardExtId(uid)() ?: (404 - "User not found")), + "userData" to (db.userData.findByCardExtId(uid) ?: (404 - "User not found")), "banState" to 0 ) } @@ -56,7 +56,7 @@ fun Maimai2ServletController.initApis() { "GetUserOption" { mapOf( "userId" to uid, - "userOption" to (db.userOption.findSingleByUser_Card_ExtId(uid)() ?: (404 - "User not found")) + "userOption" to (db.userOption.findSingleByUser_Card_ExtId(uid) ?: (404 - "User not found")) ) } "CreateToken" static { """{"Bearer":"meow"}""" } @@ -75,7 +75,7 @@ fun Maimai2ServletController.initApis() { ) } } - "CMGetUserPreview" { db.userData.findByCardExtId(uid)()?.let { + "CMGetUserPreview" { db.userData.findByCardExtId(uid)?.let { mapOf( "userId" to uid, "userName" to it.userName, @@ -87,8 +87,8 @@ fun Maimai2ServletController.initApis() { } ?: (404 - "User not found") } "GetUserPreview" { - val d = db.userData.findByCardExtId(uid)() ?: (404 - "User not found") - val option = db.userOption.findSingleByUser_Card_ExtId(uid)() + val d = db.userData.findByCardExtId(uid) ?: (404 - "User not found") + val option = db.userOption.findSingleByUser_Card_ExtId(uid) val res = mutableMapOf( "userId" to uid, @@ -122,7 +122,7 @@ fun Maimai2ServletController.initApis() { } "UserLogin" { - val d = db.userData.findByCardExtId(uid)() + val d = db.userData.findByCardExtId(uid) val res = mutableMapOf( "returnCode" to 1, "loginCount" to 1, @@ -198,7 +198,7 @@ fun Maimai2ServletController.initApis() { } "GetUserIntimate".unpaged { - val u = db.userData.findByCardExtId(uid)() ?: (404 - "User not found") + val u = db.userData.findByCardExtId(uid) ?: (404 - "User not found") db.userIntimate.findByUser(u) } @@ -239,7 +239,7 @@ fun Maimai2ServletController.initApis() { // Request: {userId} // Response: {userId, userKaleidxScopeList} "GetUserKaleidxScope".unpaged { - val u = db.userData.findByCardExtId(uid)() ?: (404 - "User not found") + val u = db.userData.findByCardExtId(uid) ?: (404 - "User not found") val lst = db.userKaleidx.findByUser(u) .mapApply { isKeyFound = true }.toMutableList() @@ -347,7 +347,7 @@ fun Maimai2ServletController.initApis() { ) } "GetUserRecommendSelectMusic" { - val user = db.userData.findByCard_ExtId(uid)() ?: (404 - "User not found") + val user = db.userData.findByCard_ExtId(uid) ?: (404 - "User not found") mapOf( "userId" to uid, "userRecommendSelectionMusicIdList" to (net.recommendedMusic[user.id] ?: empty) diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt index 8b83cbab..3cbf80e3 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt @@ -1,6 +1,7 @@ package icu.samnyan.aqua.sega.maimai2 import ext.* +import icu.samnyan.aqua.net.Fedy import icu.samnyan.aqua.net.games.mai2.Maimai2 import icu.samnyan.aqua.net.utils.ApiException import icu.samnyan.aqua.net.utils.simpleDescribe @@ -9,15 +10,15 @@ import icu.samnyan.aqua.sega.general.* import icu.samnyan.aqua.sega.maimai2.handler.* import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import icu.samnyan.aqua.spring.Metrics -import io.ktor.client.request.* import jakarta.servlet.http.HttpServletRequest -import org.springframework.web.bind.annotation.* -import java.time.format.DateTimeFormatter -import kotlin.reflect.full.declaredMemberProperties -import icu.samnyan.aqua.net.Fedy import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Lazy -import org.springframework.beans.factory.ObjectProvider +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import java.time.format.DateTimeFormatter +import kotlin.reflect.full.declaredMemberProperties /** * @author samnyan (privateamusement@protonmail.com) diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserCharacterHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserCharacterHandler.kt index e89522b4..52dcf0fc 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserCharacterHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserCharacterHandler.kt @@ -10,7 +10,6 @@ import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2ItemKind import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserCharacter import org.springframework.stereotype.Component -import kotlin.jvm.optionals.getOrNull @Component("Maimai2GetUserCharacterHandler") class GetUserCharacterHandler( @@ -26,7 +25,7 @@ class GetUserCharacterHandler( override fun handle(request: Map): Any { val userId = (request["userId"] as Number).toLong() - val gameOptions = cardRepo.findByExtId(userId).getOrNull()?.aquaUser?.gameOptions + val gameOptions = cardRepo.findByExtId(userId)?.aquaUser?.gameOptions val userCharacterList = repos.userCharacter.findByUser_Card_ExtId(userId) .let { if (gameOptions?.mai2UnlockChara != true) it else ( charaIds.associateWith { Mai2UserCharacter().apply { characterId = it; level = 1 } } + diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserFavoriteItemHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserFavoriteItemHandler.kt index 4a715d9b..94fc6b0e 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserFavoriteItemHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserFavoriteItemHandler.kt @@ -1,10 +1,8 @@ package icu.samnyan.aqua.sega.maimai2.handler -import ext.invoke import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import org.springframework.stereotype.Component -import java.util.* @Component("Maimai2GetUserFavoriteItemHandler") class GetUserFavoriteItemHandler(val repos: Mai2Repos) : BaseHandler { @@ -15,8 +13,8 @@ class GetUserFavoriteItemHandler(val repos: Mai2Repos) : BaseHandler { val items = when (kind) { 1 -> repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "favorite_music") 2 -> repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "favorite_rival") - else -> Optional.empty() - }()?.let { fav -> + else -> null + }?.let { fav -> val v = fav.propertyValue if (v.isNotBlank()) v.split(",").filter { it.isNotEmpty() }.mapIndexed { i, record -> mapOf("id" to record.toInt(), "orderId" to i) } diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserItemHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserItemHandler.kt index d1db1624..7bae9966 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserItemHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserItemHandler.kt @@ -7,7 +7,6 @@ import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2ItemKind import org.springframework.stereotype.Component -import kotlin.jvm.optionals.getOrNull /** * @author samnyan (privateamusement@protonmail.com) @@ -48,7 +47,7 @@ class GetUserItemHandler( val kindType = Mai2ItemKind.ALL[kind]?.name // Aqua Net game unlock feature - cardRepo.findByExtId(userId).getOrNull()?.aquaUser?.gameOptions?.let { opt -> + cardRepo.findByExtId(userId)?.aquaUser?.gameOptions?.let { opt -> val items = when { (kind in 5..8) && opt.mai2UnlockMusic -> musicUnlock.getValue(kind) (kind in 1..3 || kind == 11) && opt.mai2UnlockCollectables -> itemUnlock[kind] diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserPortraitHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserPortraitHandler.kt index d36ed191..9dc9e400 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserPortraitHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserPortraitHandler.kt @@ -29,7 +29,7 @@ class GetUserPortraitHandler( val uid = (request["userId"] as Number).toLong() val list = ArrayList() - val profilePicture = cardRepo.findByExtId(uid)()?.aquaUser?.profilePicture?.ifBlank { null } + val profilePicture = cardRepo.findByExtId(uid)?.aquaUser?.profilePicture?.ifBlank { null } ?: return """{"length":0,"userPortraitList":[]}""" try { diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserRatingHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserRatingHandler.kt index c9a6813d..a8a1814d 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserRatingHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/GetUserRatingHandler.kt @@ -6,7 +6,7 @@ import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import icu.samnyan.aqua.sega.maimai2.model.UserRating import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserRate import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserUdemae -import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.sega.util.BasicMapper import org.springframework.stereotype.Component /** @@ -23,25 +23,25 @@ class GetUserRatingHandler( val ur = UserRating() - repos.userData.findByCardExtId(userId)()?.let { + repos.userData.findByCardExtId(userId)?.let { ur.rating = it.playerRating } // Old charts (standard) = 25 - ur.ratingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating")() + ur.ratingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating") ?.let { loadRateData(it.propertyValue) } ?: empty // New charts (DX) = 15 - ur.newRatingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_new")() + ur.newRatingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_new") ?.let { loadRateData(it.propertyValue) } ?: empty - ur.nextRatingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_next")() + ur.nextRatingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_next") ?.let { loadRateData(it.propertyValue) } ?: empty - ur.nextNewRatingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_next_new")() + ur.nextNewRatingList = repos.userGeneralData.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_next_new") ?.let { loadRateData(it.propertyValue) } ?: empty - ur.udemae = repos.userUdemae.findSingleByUser_Card_ExtId(userId)() ?: Mai2UserUdemae() + ur.udemae = repos.userUdemae.findSingleByUser_Card_ExtId(userId) ?: Mai2UserUdemae() return mapOf( "userId" to userId, diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPhotoHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPhotoHandler.kt index e3942a67..194edb91 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPhotoHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPhotoHandler.kt @@ -3,7 +3,7 @@ package icu.samnyan.aqua.sega.maimai2.handler import ext.* import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UserPhoto -import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.sega.util.BasicMapper import org.springframework.stereotype.Component import java.io.IOException import java.nio.file.Files diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPlaylogHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPlaylogHandler.kt index 92a89e5e..98267e1b 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPlaylogHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPlaylogHandler.kt @@ -10,11 +10,10 @@ import icu.samnyan.aqua.sega.general.service.CardService import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo import icu.samnyan.aqua.sega.maimai2.model.Mai2UserPlaylogRepo import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserPlaylog -import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.sega.util.BasicMapper import icu.samnyan.aqua.spring.Metrics import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Component -import kotlin.jvm.optionals.getOrNull /** * @author samnyan (privateamusement@protonmail.com) @@ -54,18 +53,15 @@ class UploadUserPlaylogHandler( uid, playlog.musicId, playlog.userPlayDate - ).size > 0 + ).isNotEmpty() if (isDup) { log.info("Duplicate playlog detected") return """{"returnCode":1,"apiName":"com.sega.maimai2servlet.api.UploadUserPlaylogApi"}""" } // Save if the user is registered - val u = userDataRepository.findByCardExtId(uid).getOrNull() - if (u != null) { - playlogRepo.save(playlog.apply { user = u }) - // u.card?.let { cardService.updateCardTimestamp(it, "mai2") } // No need: always followed by an UpsertUserAll - } + val u = userDataRepository.findByCardExtId(uid) + if (u != null) playlogRepo.save(playlog.apply { user = u }) // If the user hasn't registered (first play), save the playlog to a backlog else { diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPortraitHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPortraitHandler.kt index 1301bcb4..2b70a110 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPortraitHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UploadUserPortraitHandler.kt @@ -7,7 +7,7 @@ import ext.path import icu.samnyan.aqua.net.utils.PathProps import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UserPortrait -import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.sega.util.BasicMapper import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Component import java.io.IOException diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserAllHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserAllHandler.kt index 78ffcca6..5c5ad944 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserAllHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserAllHandler.kt @@ -1,8 +1,8 @@ package icu.samnyan.aqua.sega.maimai2.handler import com.fasterxml.jackson.core.JsonProcessingException -import ext.invoke import ext.mapApply +import ext.minus import ext.unique import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.general.model.CardStatus @@ -13,15 +13,13 @@ import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UpsertUserAll import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserDetail import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserGeneralData import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserRate -import icu.samnyan.aqua.sega.util.jackson.BasicMapper -import lombok.AllArgsConstructor +import icu.samnyan.aqua.sega.util.BasicMapper import org.slf4j.LoggerFactory import org.springframework.stereotype.Component /** * @author samnyan (privateamusement@protonmail.com) */ -@AllArgsConstructor @Component("Maimai2UpsertUserAllHandler") class UpsertUserAllHandler( val mapper: BasicMapper, @@ -39,10 +37,10 @@ class UpsertUserAllHandler( // If user is guest, just return OK response. if ((userId and 281474976710657L) == 281474976710657L) return SUCCESS - val userData = repos.userData.findByCardExtId(userId)() + val userData = repos.userData.findByCardExtId(userId) val u = repos.userData.saveAndFlush(req.userData[0].apply { id = userData?.id ?: 0 - card = userData?.card ?: cardService.getCardByExtId(userId).orElseThrow() + card = userData?.card ?: cardService.getCardByExtId(userId) ?: (404 - "User not found") isNetMember = 1 // Validate username @@ -82,30 +80,30 @@ class UpsertUserAllHandler( }.flatten().forEach { it.user = u } req.userExtend?.getOrNull(0)?.let { - repos.userExtend.save(it.apply { id = repos.userExtend.findSingleByUser(u)()?.id ?: 0 }) + repos.userExtend.save(it.apply { id = repos.userExtend.findSingleByUser(u)?.id ?: 0 }) } req.userOption?.getOrNull(0)?.let { - repos.userOption.save(it.apply { id = repos.userOption.findSingleByUser(u)()?.id ?: 0 }) + repos.userOption.save(it.apply { id = repos.userOption.findSingleByUser(u)?.id ?: 0 }) } req.userCharacterList?.unique { it.characterId }?.let { news -> repos.userCharacter.saveAll(news.mapApply { - id = repos.userCharacter.findByUserAndCharacterId(u, characterId)()?.id ?: 0 }) } + id = repos.userCharacter.findByUserAndCharacterId(u, characterId)?.id ?: 0 }) } req.userMapList?.unique { it.mapId }?.let { news -> repos.userMap.saveAll(news.mapApply { - id = repos.userMap.findByUserAndMapId(u, mapId)()?.id ?: 0 }) } + id = repos.userMap.findByUserAndMapId(u, mapId)?.id ?: 0 }) } req.userLoginBonusList?.unique { it.bonusId }?.let { news -> repos.userLoginBonus.saveAll(news.mapApply { - id = repos.userLoginBonus.findByUserAndBonusId(u, bonusId)()?.id ?: 0 + id = repos.userLoginBonus.findByUserAndBonusId(u, bonusId)?.id ?: 0 isCurrent = false }) } req.userRatingList?.getOrNull(0)?.let { r -> repos.userUdemae.saveAndFlush(r.udemae.apply { - id = repos.userUdemae.findSingleByUser(u)()?.id ?: 0 + id = repos.userUdemae.findSingleByUser(u)?.id ?: 0 user = u }) @@ -117,23 +115,23 @@ class UpsertUserAllHandler( req.userItemList?.unique { it.itemId to it.itemKind }?.let { news -> repos.userItem.saveAll(news.mapApply { - id = repos.userItem.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0 }) } + id = repos.userItem.findByUserAndItemKindAndItemId(u, itemKind, itemId)?.id ?: 0 }) } req.userMusicDetailList?.unique { it.musicId to it.level }?.let { news -> repos.userMusicDetail.saveAll(news.mapApply { - id = repos.userMusicDetail.findByUserAndMusicIdAndLevel(u, musicId, level)()?.id ?: 0 }) } + id = repos.userMusicDetail.findByUserAndMusicIdAndLevel(u, musicId, level)?.id ?: 0 }) } req.userCourseList?.unique { it.courseId }?.let { news -> repos.userCourse.saveAll(news.mapApply { - id = repos.userCourse.findByUserAndCourseId(u, courseId)()?.id ?: 0 }) } + id = repos.userCourse.findByUserAndCourseId(u, courseId)?.id ?: 0 }) } req.userFriendSeasonRankingList?.unique { it.seasonId }?.let { news -> repos.userFriendSeasonRanking.saveAll(news.mapApply { - id = repos.userFriendSeasonRanking.findByUserAndSeasonId(u, seasonId)()?.id ?: 0 }) } + id = repos.userFriendSeasonRanking.findByUserAndSeasonId(u, seasonId)?.id ?: 0 }) } req.userFavoriteList?.unique { it.itemKind }?.let { news -> repos.userFavorite.saveAll(news.mapApply { - id = repos.userFavorite.findByUserAndItemKind(u, itemKind)()?.id ?: 0 }) } + id = repos.userFavorite.findByUserAndItemKind(u, itemKind)?.id ?: 0 }) } // Added on 1.50 req.userKaleidxScopeList?.unique { it.gateId }?.let { lst -> @@ -151,7 +149,7 @@ class UpsertUserAllHandler( repos.userAct.saveAll(news.flatMap { listOf(it.musicList, it.playList) }.flatten() .filter { it.kind != 0 && it.activityId != 0 } .mapApply { - // id = repos.userAct.findByUserAndKindAndActivityId(u, kind, activityId)()?.id ?: 0 + // id = repos.userAct.findByUserAndKindAndActivityId(u, kind, activityId)?.id ?: 0 user = u }.sortedBy { it.sortNumber }) } @@ -164,7 +162,7 @@ class UpsertUserAllHandler( // Or userFavoritemusicList will be empty req.userFavoritemusicList?.let { news -> val key = "favorite_music" - val data = repos.userGeneralData.findByUserAndPropertyKey(u, key)() + val data = repos.userGeneralData.findByUserAndPropertyKey(u, key) ?: Mai2UserGeneralData().apply { user = u; propertyKey = key } repos.userGeneralData.save(data.apply { propertyValue = news.map { it.id }.joinToString(",") @@ -178,7 +176,7 @@ class UpsertUserAllHandler( fun saveRating(itemList: List, u: Mai2UserDetail, key: String) { val sb = itemList.joinToString(",") { "${it.musicId}:${it.level}:${it.romVersion}:${it.achievement}" } - val data = repos.userGeneralData.findByUserAndPropertyKey(u, key)() + val data = repos.userGeneralData.findByUserAndPropertyKey(u, key) ?: Mai2UserGeneralData().apply { user = u; propertyKey = key } repos.userGeneralData.save(data.apply { propertyValue = sb }) } diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserPrintHandler.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserPrintHandler.kt index 12e8250f..c12ffa5b 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserPrintHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/UpsertUserPrintHandler.kt @@ -8,7 +8,7 @@ import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.general.service.CardService import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserPrintDetail -import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.sega.util.BasicMapper import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Component import java.time.LocalDateTime @@ -27,7 +27,7 @@ class UpsertUserPrintHandler( override fun handle(request: Map): Any? { val userId = parsing { request["userId"]!!.long } - val userData = db.userData.findByCardExtId(userId)() ?: return null + val userData = db.userData.findByCardExtId(userId) ?: return null val userPrint = parsing { mapper.convert(request["userPrintDetail"]!!, Mai2UserPrintDetail::class.java) } val newCard = userPrint.userCard ?: return null @@ -35,7 +35,7 @@ class UpsertUserPrintHandler( newCard.user = userData newCard.startDate = LocalDateTime.now().format(formatter) newCard.endDate = LocalDateTime.now().plusDays(expirationTime).format(formatter) - newCard.id = db.userCard.findByUserAndCardId(newCard.user, newCard.cardId)()?.id ?: 0 + newCard.id = db.userCard.findByUserAndCardId(newCard.user, newCard.cardId)?.id ?: 0 db.userCard.save(newCard) userPrint.user = userData diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/GameDataEntities.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/GameDataEntities.kt index d2db3efe..ea990114 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/GameDataEntities.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/GameDataEntities.kt @@ -5,9 +5,8 @@ import icu.samnyan.aqua.net.games.BaseEntity import jakarta.persistence.Column import jakarta.persistence.Entity import jakarta.persistence.Table -import lombok.Data -@Data @Entity +@Entity @Table(name = "maimai2_game_event") class Mai2GameEvent : BaseEntity() { @JsonIgnore(false) @@ -22,7 +21,7 @@ class Mai2GameEvent : BaseEntity() { var disableArea = "" } -@Data @Entity +@Entity @Table(name = "maimai2_game_charge") class Mai2GameCharge : BaseEntity() { @Column(unique = true) @@ -33,7 +32,7 @@ class Mai2GameCharge : BaseEntity() { val endDate: String? = null } -@Data @Entity +@Entity @Table(name = "maimai2_game_selling_card") class Mai2GameSellingCard : BaseEntity() { var cardId = 0L diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/Repos.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/Repos.kt index 5883101a..ed62a0a0 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/Repos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/Repos.kt @@ -21,7 +21,7 @@ import java.util.* interface Mai2UserLinked: JpaRepository, IUserRepo { fun findByUser_Card_ExtId(userId: Long): List fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page - fun findSingleByUser_Card_ExtId(userId: Long): Optional + fun findSingleByUser_Card_ExtId(userId: Long): T? @Transactional fun deleteByUser(user: Mai2UserDetail) } @@ -31,21 +31,21 @@ interface Mai2MapEncountNpcRepo : Mai2UserLinked interface Mai2UserActRepo : Mai2UserLinked interface Mai2UserCardRepo : Mai2UserLinked { - fun findByUserAndCardId(user: Mai2UserDetail, cardId: Int): Optional + fun findByUserAndCardId(user: Mai2UserDetail, cardId: Int): Mai2UserCard? } interface Mai2UserCharacterRepo : Mai2UserLinked { - fun findByUserAndCharacterId(user: Mai2UserDetail, characterId: Int): Optional + fun findByUserAndCharacterId(user: Mai2UserDetail, characterId: Int): Mai2UserCharacter? } interface Mai2UserChargeRepo : Mai2UserLinked interface Mai2UserCourseRepo : Mai2UserLinked { - fun findByUserAndCourseId(user: Mai2UserDetail, courseId: Int): Optional + fun findByUserAndCourseId(user: Mai2UserDetail, courseId: Int): Mai2UserCourse? } interface Mai2UserDataRepo : GenericUserDataRepo { - fun findByCardExtId(userId: Long): Optional + fun findByCardExtId(userId: Long): Mai2UserDetail? @Modifying @Transactional @@ -55,40 +55,40 @@ interface Mai2UserDataRepo : GenericUserDataRepo { interface Mai2UserExtendRepo : Mai2UserLinked interface Mai2UserFavoriteRepo : Mai2UserLinked { - fun findByUserAndItemKind(user: Mai2UserDetail, kind: Int): Optional + fun findByUserAndItemKind(user: Mai2UserDetail, kind: Int): Mai2UserFavorite? - fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int): Optional + fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int): Mai2UserFavorite? } interface Mai2UserFriendSeasonRankingRepo : Mai2UserLinked { - fun findByUserAndSeasonId(user: Mai2UserDetail, seasonId: Int): Optional + fun findByUserAndSeasonId(user: Mai2UserDetail, seasonId: Int): Mai2UserFriendSeasonRanking? } interface Mai2UserGeneralDataRepo : Mai2UserLinked { - fun findByUserAndPropertyKey(user: Mai2UserDetail, key: String): Optional + fun findByUserAndPropertyKey(user: Mai2UserDetail, key: String): Mai2UserGeneralData? - fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Optional + fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Mai2UserGeneralData? } interface Mai2UserItemRepo : Mai2UserLinked { fun findByUserCardExtIdAndItemKind(userId: Long, kind: Int): List - fun findByUserAndItemKindAndItemId(user: Mai2UserDetail, itemKind: Int, itemId: Int): Optional + fun findByUserAndItemKindAndItemId(user: Mai2UserDetail, itemKind: Int, itemId: Int): Mai2UserItem? fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int, page: Pageable): Page } interface Mai2UserLoginBonusRepo : Mai2UserLinked { - fun findByUserAndBonusId(user: Mai2UserDetail, bonusId: Int): Optional + fun findByUserAndBonusId(user: Mai2UserDetail, bonusId: Int): Mai2UserLoginBonus? } interface Mai2UserMapRepo : Mai2UserLinked { - fun findByUserAndMapId(user: Mai2UserDetail, mapId: Int): Optional + fun findByUserAndMapId(user: Mai2UserDetail, mapId: Int): Mai2UserMap? } interface Mai2UserMusicDetailRepo : Mai2UserLinked, GenericUserMusicRepo { fun findByUser_Card_ExtIdAndMusicId(userId: Long, id: Int): List - fun findByUserAndMusicIdAndLevel(user: Mai2UserDetail, musicId: Int, level: Int): Optional + fun findByUserAndMusicIdAndLevel(user: Mai2UserDetail, musicId: Int, level: Int): Mai2UserMusicDetail? fun findByUserId(userId: Long): List } diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/Mai2UserDetail.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/Mai2UserDetail.kt index c82efefb..a5903a96 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/Mai2UserDetail.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/Mai2UserDetail.kt @@ -8,7 +8,7 @@ import icu.samnyan.aqua.net.games.BaseEntity import icu.samnyan.aqua.net.games.IUserData import icu.samnyan.aqua.sega.general.IntegerListConverter import icu.samnyan.aqua.sega.general.model.Card -import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer +import icu.samnyan.aqua.sega.util.AccessCodeSerializer import jakarta.persistence.* @Entity(name = "Maimai2UserData") diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserEntities.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserEntities.kt index f2187650..4d39264c 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserEntities.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserEntities.kt @@ -5,6 +5,10 @@ package icu.samnyan.aqua.sega.maimai2.model.userdata import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.databind.JsonSerializer +import com.fasterxml.jackson.databind.SerializerProvider +import com.fasterxml.jackson.databind.annotation.JsonSerialize import ext.toJson import icu.samnyan.aqua.net.games.BaseEntity import icu.samnyan.aqua.net.games.IGenericGamePlaylog @@ -12,16 +16,9 @@ import icu.samnyan.aqua.net.games.IGenericUserMusic import icu.samnyan.aqua.net.games.IUserEntity import icu.samnyan.aqua.sega.general.IntegerListConverter import jakarta.persistence.* -import lombok.AllArgsConstructor -import lombok.Data -import lombok.NoArgsConstructor -import java.time.LocalDateTime -import com.fasterxml.jackson.databind.annotation.JsonSerialize -import java.time.format.DateTimeFormatter -import com.fasterxml.jackson.databind.JsonSerializer -import com.fasterxml.jackson.databind.SerializerProvider -import com.fasterxml.jackson.core.JsonGenerator import java.time.LocalDate +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter @MappedSuperclass open class Mai2UserEntity : BaseEntity(), IUserEntity { @@ -33,7 +30,7 @@ open class Mai2UserEntity : BaseEntity(), IUserEntity { @Table(name = "maimai2_user_npc_encount") -@Data @Entity +@Entity class Mai2MapEncountNpc : Mai2UserEntity() { var npcId = 0 @@ -46,7 +43,7 @@ class Mai2MapEncountNpc : Mai2UserEntity() { } @Table(name = "maimai2_user_activity") -@Data @Entity +@Entity class Mai2UserAct : Mai2UserEntity() { var kind = 0 @@ -61,7 +58,7 @@ class Mai2UserAct : Mai2UserEntity() { } @Table(name = "maimai2_user_card") -@Data @Entity +@Entity class Mai2UserCard : Mai2UserEntity() { var cardId: Int = 0 var cardTypeId: Int = 0 @@ -72,7 +69,7 @@ class Mai2UserCard : Mai2UserEntity() { } @Table(name = "maimai2_user_character") -@Data @Entity +@Entity class Mai2UserCharacter : Mai2UserEntity() { var characterId = 0 @@ -101,7 +98,7 @@ class Mai2UserCharacter : Mai2UserEntity() { } @Table(name = "maimai2_user_charge", uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "charge_id"])]) -@Data @Entity +@Entity class Mai2UserCharge : Mai2UserEntity() { @Column(name = "charge_id") var chargeId = 0 @@ -111,7 +108,7 @@ class Mai2UserCharge : Mai2UserEntity() { } @Table(name = "maimai2_user_course") -@Data @Entity +@Entity class Mai2UserCourse : Mai2UserEntity() { var courseId = 0 var isLastClear = false @@ -128,7 +125,7 @@ class Mai2UserCourse : Mai2UserEntity() { } @Table(name = "maimai2_user_extend") -@Data @Entity +@Entity class Mai2UserExtend : Mai2UserEntity() { var selectMusicId = 0 var selectDifficultyId = 0 @@ -153,7 +150,7 @@ class Mai2UserExtend : Mai2UserEntity() { } @Table(name = "maimai2_user_favorite") -@Data @Entity +@Entity class Mai2UserFavorite : Mai2UserEntity() { @JsonProperty("userId") var favUserId: Long = 0 @@ -164,7 +161,7 @@ class Mai2UserFavorite : Mai2UserEntity() { } @Table(name = "maimai2_user_friend_season_ranking") -@Data @Entity +@Entity class Mai2UserFriendSeasonRanking : Mai2UserEntity() { var seasonId = 0 var point = 0 @@ -181,7 +178,7 @@ class Mai2UserFriendSeasonRanking : Mai2UserEntity() { * @author samnyan (privateamusement@protonmail.com) */ @Table(name = "maimai2_user_general_data") -@Data @Entity +@Entity class Mai2UserGeneralData : Mai2UserEntity() { var propertyKey = "" @@ -189,9 +186,6 @@ class Mai2UserGeneralData : Mai2UserEntity() { var propertyValue = "" } -@Data -@AllArgsConstructor -@NoArgsConstructor class Mai2UserGhost { var name: String = "" var iconId = 0 @@ -215,7 +209,7 @@ class Mai2UserGhost { } @Table(name = "maimai2_user_item") -@Data @Entity +@Entity class Mai2UserItem : Mai2UserEntity() { var itemKind = 0 var itemId = 0 @@ -243,7 +237,7 @@ enum class Mai2ItemKind(val id: Int) { } @Table(name = "maimai2_user_login_bonus") -@Data @Entity +@Entity class Mai2UserLoginBonus : Mai2UserEntity() { var bonusId = 0 var point = 0 @@ -252,7 +246,7 @@ class Mai2UserLoginBonus : Mai2UserEntity() { } @Table(name = "maimai2_user_map") -@Data @Entity +@Entity class Mai2UserMap : Mai2UserEntity() { var mapId = 0 var distance = 0 @@ -262,7 +256,7 @@ class Mai2UserMap : Mai2UserEntity() { } @Table(name = "maimai2_user_music_detail") -@Data @Entity +@Entity class Mai2UserMusicDetail : Mai2UserEntity(), IGenericUserMusic { override var musicId = 0 @@ -277,7 +271,7 @@ class Mai2UserMusicDetail : Mai2UserEntity(), IGenericUserMusic { } @Table(name = "maimai2_user_option") -@Data @Entity +@Entity class Mai2UserOption : Mai2UserEntity() { var optionKind = 0 var noteSpeed = 0 @@ -330,7 +324,7 @@ class Mai2UserOption : Mai2UserEntity() { } @Table(name = "maimai2_user_playlog") -@Data @Entity +@Entity class Mai2UserPlaylog : Mai2UserEntity(), IGenericGamePlaylog { var orderId = 0 var playlogId: Long = 0 @@ -464,7 +458,7 @@ fun main(args: Array) { } @Table(name = "maimai2_user_print_detail") -@Data @Entity +@Entity class Mai2UserPrintDetail : Mai2UserEntity() { var orderId: Long = 0 var printNumber = 0 @@ -500,7 +494,7 @@ data class Mai2UserRate( ) @Table(name = "maimai2_user_udemae") -@Data @Entity +@Entity class Mai2UserUdemae : Mai2UserEntity() { var rate = 0 var maxRate = 0 @@ -521,7 +515,7 @@ class Mai2UserUdemae : Mai2UserEntity() { } @Table(name = "maimai2_user_kaleidx") -@Data @Entity +@Entity class Mai2UserKaleidx : Mai2UserEntity() { var gateId = 1 var isGateFound = true @@ -545,7 +539,7 @@ class Mai2UserKaleidx : Mai2UserEntity() { } @Table(name = "maimai2_user_intimate") -@Data @Entity +@Entity class Mai2UserIntimate : Mai2UserEntity() { var partnerId = 1; var intimateLevel = 0; diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiCMApis.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiCMApis.kt index 3cbf992d..0797ef8d 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiCMApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiCMApis.kt @@ -1,19 +1,12 @@ package icu.samnyan.aqua.sega.ongeki -import ext.asDateTime -import ext.empty -import ext.int -import ext.invoke -import ext.long -import ext.mapApply -import ext.minus -import ext.parsing +import ext.* import icu.samnyan.aqua.sega.ongeki.model.* import java.time.LocalDateTime fun OngekiController.cmApiInit() { "CMGetUserData" { - val user = db.data.findByCard_ExtId(uid)() ?: (400 - "User not found") + val user = db.data.findByCard_ExtId(uid) ?: (400 - "User not found") mapOf("userId" to uid, "userData" to user) } @@ -32,7 +25,7 @@ fun OngekiController.cmApiInit() { // Check if user have infinite kaika if (kind == OgkItemType.KaikaItem.ordinal) { - val u = db.data.findByCard_ExtId(uid)() + val u = db.data.findByCard_ExtId(uid) u?.card?.aquaUser?.gameOptions?.let { if (it.ongekiInfiniteKaika) { dat = listOf(UserItem().apply { @@ -74,7 +67,7 @@ fun OngekiController.cmApiInit() { val (gachaId, tmpTimes) = parsing { data["gachaId"]!!.long to data["times"]!!.int } var times = tmpTimes - val user = db.data.findByCard_ExtId(uid)() ?: (400 - "User not found") + val user = db.data.findByCard_ExtId(uid) ?: (400 - "User not found") val foundGacha = gdb.gacha.findById(gachaId)() ?: (404 - "Gacha not found") val foundUserGacha = db.gacha.findByUserAndGachaId(user, gachaId) @@ -118,10 +111,10 @@ fun OngekiController.cmApiInit() { val earnedSelectPoints = parsing { data["selectPoint"]!!.int } // User data - val oldUser = db.data.findByCard_ExtId(uid)() + val oldUser = db.data.findByCard_ExtId(uid) val u: UserData = all.userData?.get(0)?.apply { id = oldUser?.id ?: 0 - card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found") + card = oldUser?.card ?: us.cardRepo.findByExtId(uid) ?: (404 - "Card not found") // Set eventWatchedDate with lastPlayDate, because client doesn't update it cmEventWatchedDate = oldUser?.lastPlayDate ?: "" @@ -178,21 +171,21 @@ fun OngekiController.cmApiInit() { // UserCharacterList userCharacterList?.let { list -> db.character.saveAll(list.distinctBy { it.characterId }.mapApply { - id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0 + id = db.character.findByUserAndCharacterId(u, characterId)?.id ?: 0 }) } // UserCardList userCardList?.let { list -> db.card.saveAll(list.distinctBy { it.cardId }.mapApply { - id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0 + id = db.card.findByUserAndCardId(u, cardId)?.id ?: 0 }) } // UserItemList userItemList?.let { list -> db.item.saveAll(list.distinctBy { it.itemKind to it.itemId }.mapApply { - id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0 + id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)?.id ?: 0 }) } } @@ -206,10 +199,10 @@ fun OngekiController.cmApiInit() { val all: OngekiCMUpsertAll = mapper.convert(data["cmUpsertUserAll"]!!) // User data - val oldUser = db.data.findByCard_ExtId(uid)() + val oldUser = db.data.findByCard_ExtId(uid) val u: UserData = all.userData?.get(0)?.apply { id = oldUser?.id ?: 0 - card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found") + card = oldUser?.card ?: us.cardRepo.findByExtId(uid) ?: (404 - "Card not found") // Set eventWatchedDate with lastPlayDate, because client doesn't update it cmEventWatchedDate = oldUser?.lastPlayDate ?: "" @@ -225,7 +218,7 @@ fun OngekiController.cmApiInit() { // UserActivityList userActivityList?.let { list -> db.activity.saveAll(list.distinctBy { it.activityId to it.kind }.mapApply { - id = db.activity.findByUserAndKindAndActivityId(u, kind, activityId)()?.id ?: 0 + id = db.activity.findByUserAndKindAndActivityId(u, kind, activityId)?.id ?: 0 }) } @@ -233,21 +226,21 @@ fun OngekiController.cmApiInit() { // UserCharacterList userCharacterList?.let { list -> db.character.saveAll(list.distinctBy { it.characterId }.mapApply { - id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0 + id = db.character.findByUserAndCharacterId(u, characterId)?.id ?: 0 }) } // UserCardList userCardList?.let { list -> db.card.saveAll(list.distinctBy { it.cardId }.mapApply { - id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0 + id = db.card.findByUserAndCardId(u, cardId)?.id ?: 0 }) } // UserItemList userItemList?.let { list -> db.item.saveAll(list.distinctBy { it.itemKind to it.itemId }.mapApply { - id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0 + id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)?.id ?: 0 }) } } @@ -262,10 +255,10 @@ fun OngekiController.cmApiInit() { val selectLog:List = mapper.convert(data["selectGachaLogList"]!!) // User data - val oldUser = db.data.findByCard_ExtId(uid)() + val oldUser = db.data.findByCard_ExtId(uid) val u: UserData = all.userData?.get(0)?.apply { id = oldUser?.id ?: 0 - card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found") + card = oldUser?.card ?: us.cardRepo.findByExtId(uid) ?: (404 - "Card not found") // Set eventWatchedDate with lastPlayDate, because client doesn't update it cmEventWatchedDate = oldUser?.lastPlayDate ?: "" @@ -302,7 +295,7 @@ fun OngekiController.cmApiInit() { // UserCharacterList userCharacterList?.let { list -> db.character.saveAll(list.distinctBy { it.characterId }.mapApply { - id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0 + id = db.character.findByUserAndCharacterId(u, characterId)?.id ?: 0 }) } } @@ -311,7 +304,7 @@ fun OngekiController.cmApiInit() { // UserCardList userCardList?.let { list -> db.card.saveAll(list.distinctBy { it.cardId }.mapApply { - id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0 + id = db.card.findByUserAndCardId(u, cardId)?.id ?: 0 }) } } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt index 09ad23bd..a82bb06c 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt @@ -8,11 +8,10 @@ import icu.samnyan.aqua.sega.general.GameMusicPopularity import icu.samnyan.aqua.sega.general.MeowApi import icu.samnyan.aqua.sega.general.RequestContext import icu.samnyan.aqua.sega.general.service.CardService -import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.sega.util.BasicMapper import icu.samnyan.aqua.spring.Metrics import jakarta.servlet.http.HttpServletRequest import org.springframework.web.bind.annotation.RestController -import kotlin.collections.set @Suppress("unused") @RestController diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt index fb19d48f..a30403e2 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt @@ -6,8 +6,6 @@ import icu.samnyan.aqua.net.games.GenericUserDataRepo import icu.samnyan.aqua.net.games.GenericUserMusicRepo import icu.samnyan.aqua.net.games.IUserRepo import icu.samnyan.aqua.sega.ongeki.model.* -import icu.samnyan.aqua.sega.ongeki.model.UserEventMap -import icu.samnyan.aqua.sega.ongeki.model.UserSkin import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository @@ -20,7 +18,7 @@ import java.util.* @NoRepositoryBean interface OngekiUserLinked : IUserRepo { fun findByUser_Card_ExtId(extId: Long): List - fun findSingleByUser_Card_ExtId(extId: Long): Optional + fun findSingleByUser_Card_ExtId(extId: Long): T? fun findByUser_Card_ExtId(extId: Long, pageable: Pageable): Page } @@ -29,28 +27,28 @@ interface OgkUserDataRepo : GenericUserDataRepo { } interface OgkUserActivityRepo : OngekiUserLinked { - fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): Optional + fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): UserActivity? fun findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId: Long, kind: Int): List } interface OgkUserBossRepo : OngekiUserLinked { - fun findByUserAndMusicId(user: UserData, musicId: Int): Optional + fun findByUserAndMusicId(user: UserData, musicId: Int): UserBoss? } interface OgkUserCardRepo : OngekiUserLinked { - fun findByUserAndCardId(userData: UserData, cardId: Int): Optional + fun findByUserAndCardId(userData: UserData, cardId: Int): UserCard? } interface OgkUserChapterRepo : OngekiUserLinked { - fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional + fun findByUserAndChapterId(userData: UserData, chapterId: Int): UserChapter? } interface OgkUserCharacterRepo : OngekiUserLinked { - fun findByUserAndCharacterId(userData: UserData, characterId: Int): Optional + fun findByUserAndCharacterId(userData: UserData, characterId: Int): UserCharacter? } interface OgkUserDeckRepo : OngekiUserLinked { - fun findByUserAndDeckId(userData: UserData, deckId: Int): Optional + fun findByUserAndDeckId(userData: UserData, deckId: Int): UserDeck? } interface OgkUserEventMusicRepo : OngekiUserLinked { @@ -59,11 +57,11 @@ interface OgkUserEventMusicRepo : OngekiUserLinked { eventId: Int, type: Int, musicId: Int - ): Optional + ): UserEventMusic? } interface OgkUserEventPointRepo : OngekiUserLinked { - fun findByUserAndEventId(userData: UserData, eventId: Int): Optional + fun findByUserAndEventId(userData: UserData, eventId: Int): UserEventPoint? //@Query(value = "SELECT rank from (SELECT user_id , DENSE_RANK() OVER (ORDER BY point DESC) as rank from ongeki_user_event_point where event_id = :eventId) where user_id == :userId limit 1", nativeQuery = true) @Query("SELECT COUNT(u)+1 FROM OngekiUserEventPoint u WHERE u.eventId = :eventId AND u.point > (SELECT u2.point FROM OngekiUserEventPoint u2 WHERE u2.user.id = :userId AND u2.eventId = :eventId)") @@ -71,40 +69,40 @@ interface OgkUserEventPointRepo : OngekiUserLinked { } interface OgkUserGeneralDataRepo : OngekiUserLinked { - fun findByUserAndPropertyKey(user: UserData, key: String): Optional + fun findByUserAndPropertyKey(user: UserData, key: String): UserGeneralData? - fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Optional + fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): UserGeneralData? } interface OgkUserItemRepo : OngekiUserLinked { - fun findByUserAndItemKindAndItemId(userData: UserData, itemKind: Int, itemId: Int): Optional + fun findByUserAndItemKindAndItemId(userData: UserData, itemKind: Int, itemId: Int): UserItem? fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int, page: Pageable): Page fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int): List } interface OgkUserKopRepo : OngekiUserLinked { - fun findByUserAndKopIdAndAreaId(userData: UserData, kopId: Int, areaId: Int): Optional + fun findByUserAndKopIdAndAreaId(userData: UserData, kopId: Int, areaId: Int): UserKop? } interface OgkUserLoginBonusRepo : OngekiUserLinked { - fun findByUserAndBonusId(userData: UserData, bonusId: Int): Optional + fun findByUserAndBonusId(userData: UserData, bonusId: Int): UserLoginBonus? } interface OgkUserMemoryChapterRepo : OngekiUserLinked { - fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional + fun findByUserAndChapterId(userData: UserData, chapterId: Int): UserMemoryChapter? } interface OgkUserMissionPointRepo : OngekiUserLinked { - fun findByUserAndEventId(userData: UserData, eventId: Int): Optional + fun findByUserAndEventId(userData: UserData, eventId: Int): UserMissionPoint? } interface OgkUserMusicDetailRepo : OngekiUserLinked, GenericUserMusicRepo { - fun findByUserAndMusicIdAndLevel(userData: UserData, musicId: Int, level: Int): Optional + fun findByUserAndMusicIdAndLevel(userData: UserData, musicId: Int, level: Int): UserMusicDetail? } interface OgkUserMusicItemRepo : OngekiUserLinked { - fun findByUserAndMusicId(userData: UserData, musicId: Int): Optional + fun findByUserAndMusicId(userData: UserData, musicId: Int): UserMusicItem? } interface OgkUserOptionRepo : OngekiUserLinked @@ -114,19 +112,19 @@ interface OgkUserPlaylogRepo : OngekiUserLinked, GenericPlaylogRepo interface OgkUserRivalDataRepo : OngekiUserLinked interface OgkUserScenarioRepo : OngekiUserLinked { - fun findByUserAndScenarioId(user: UserData, scenarioId: Int): Optional + fun findByUserAndScenarioId(user: UserData, scenarioId: Int): UserScenario? } interface OgkUserStoryRepo : OngekiUserLinked { - fun findByUserAndStoryId(userData: UserData, storyId: Int): Optional + fun findByUserAndStoryId(userData: UserData, storyId: Int): UserStory? } interface OgkUserTechCountRepo : OngekiUserLinked { - fun findByUserAndLevelId(user: UserData, levelId: Int): Optional + fun findByUserAndLevelId(user: UserData, levelId: Int): UserTechCount? } interface OgkUserTechEventRepo : OngekiUserLinked { - fun findByUserAndEventId(userData: UserData, eventId: Int): Optional + fun findByUserAndEventId(userData: UserData, eventId: Int): UserTechEvent? } interface OgkUserTradeItemRepo : OngekiUserLinked { @@ -140,11 +138,11 @@ interface OgkUserTradeItemRepo : OngekiUserLinked { userData: UserData, chapterId: Int, tradeItemId: Int - ): Optional + ): UserTradeItem? } interface OgkUserTrainingRoomRepo : OngekiUserLinked { - fun findByUserAndRoomId(user: UserData, roomId: Int): Optional + fun findByUserAndRoomId(user: UserData, roomId: Int): UserTrainingRoom? } interface OgkUserRegionsRepo: OngekiUserLinked { diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt index 74d4c07c..67f11000 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt @@ -14,7 +14,7 @@ import icu.samnyan.aqua.sega.ongeki.model.UserRegions fun OngekiController.initUpsertAll() { fun saveGeneralData(items: List, u: UserData, key: String) { db.generalData.save(UserGeneralData().apply { - id = db.generalData.findByUserAndPropertyKey(u, key)()?.id ?: 0 + id = db.generalData.findByUserAndPropertyKey(u, key)?.id ?: 0 user = u propertyKey = key propertyValue = items.joinToString(",") @@ -25,10 +25,10 @@ fun OngekiController.initUpsertAll() { val all: OngekiUpsertUserAll = mapper.convert(data["upsertUserAll"]!!) // User data - val oldUser = db.data.findByCard_ExtId(uid)() + val oldUser = db.data.findByCard_ExtId(uid) val u: UserData = all.userData?.get(0)?.apply { id = oldUser?.id ?: 0 - card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found") + card = oldUser?.card ?: us.cardRepo.findByExtId(uid) ?: (404 - "Card not found") // Set eventWatchedDate with lastPlayDate, because client doesn't update it eventWatchedDate = oldUser?.lastPlayDate ?: "" @@ -69,12 +69,12 @@ fun OngekiController.initUpsertAll() { // UserOption userOption?.get(0)?.let { db.option.save(it.apply { - id = db.option.findSingleByUser(u)()?.id ?: 0 }) } + id = db.option.findSingleByUser(u)?.id ?: 0 }) } // UserEventMap userEventMap?.let { db.eventMap.save(it.apply { - id = db.eventMap.findSingleByUser(u)()?.id ?: 0 }) } + id = db.eventMap.findSingleByUser(u)?.id ?: 0 }) } // UserPlaylogList userPlaylogList?.let { db.playlog.saveAll(it) } @@ -104,109 +104,109 @@ fun OngekiController.initUpsertAll() { // UserActivityList userActivityList?.let { list -> db.activity.saveAll(list.distinctBy { it.activityId to it.kind }.mapApply { - id = db.activity.findByUserAndKindAndActivityId(u, kind, activityId)()?.id ?: 0 }) } + id = db.activity.findByUserAndKindAndActivityId(u, kind, activityId)?.id ?: 0 }) } // UserMusicDetailList userMusicDetailList?.let { list -> db.musicDetail.saveAll(list.distinctBy { it.musicId to it.level }.mapApply { - id = db.musicDetail.findByUserAndMusicIdAndLevel(u, musicId, level)()?.id ?: 0 }) } + id = db.musicDetail.findByUserAndMusicIdAndLevel(u, musicId, level)?.id ?: 0 }) } // UserCharacterList userCharacterList?.let { list -> db.character.saveAll(list.distinctBy { it.characterId }.mapApply { - id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0 }) } + id = db.character.findByUserAndCharacterId(u, characterId)?.id ?: 0 }) } // UserCardList userCardList?.let { list -> db.card.saveAll(list.distinctBy { it.cardId }.mapApply { - id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0 }) } + id = db.card.findByUserAndCardId(u, cardId)?.id ?: 0 }) } // UserDeckList userDeckList?.let { list -> db.deck.saveAll(list.distinctBy { it.deckId }.mapApply { - id = db.deck.findByUserAndDeckId(u, deckId)()?.id ?: 0 }) } + id = db.deck.findByUserAndDeckId(u, deckId)?.id ?: 0 }) } // UserTrainingRoomList userTrainingRoomList?.let { list -> db.trainingRoom.saveAll(list.distinctBy { it.roomId }.mapApply { - id = db.trainingRoom.findByUserAndRoomId(u, roomId)()?.id ?: 0 }) } + id = db.trainingRoom.findByUserAndRoomId(u, roomId)?.id ?: 0 }) } // UserStoryList userStoryList?.let { list -> db.story.saveAll(list.distinctBy { it.storyId }.mapApply { - id = db.story.findByUserAndStoryId(u, storyId)()?.id ?: 0 }) } + id = db.story.findByUserAndStoryId(u, storyId)?.id ?: 0 }) } // UserChapterList userChapterList?.let { list -> db.chapter.saveAll(list.distinctBy { it.chapterId }.mapApply { - id = db.chapter.findByUserAndChapterId(u, chapterId)()?.id ?: 0 }) } + id = db.chapter.findByUserAndChapterId(u, chapterId)?.id ?: 0 }) } // UserMemoryChapterList userMemoryChapterList?.let { list -> db.memoryChapter.saveAll(list.distinctBy { it.chapterId }.mapApply { - id = db.memoryChapter.findByUserAndChapterId(u, chapterId)()?.id ?: 0 }) } + id = db.memoryChapter.findByUserAndChapterId(u, chapterId)?.id ?: 0 }) } // UserItemList userItemList?.let { list -> db.item.saveAll(list.distinctBy { it.itemKind to it.itemId }.mapApply { - id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0 }) } + id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)?.id ?: 0 }) } // UserMusicItemList userMusicItemList?.let { list -> db.musicItem.saveAll(list.distinctBy { it.musicId }.mapApply { - id = db.musicItem.findByUserAndMusicId(u, musicId)()?.id ?: 0 }) } + id = db.musicItem.findByUserAndMusicId(u, musicId)?.id ?: 0 }) } // UserLoginBonusList userLoginBonusList?.let { list -> db.loginBonus.saveAll(list.distinctBy { it.bonusId }.mapApply { - id = db.loginBonus.findByUserAndBonusId(u, bonusId)()?.id ?: 0 }) } + id = db.loginBonus.findByUserAndBonusId(u, bonusId)?.id ?: 0 }) } // UserEventPointList userEventPointList?.let { list -> db.eventPoint.saveAll(list.distinctBy { it.eventId }.mapApply { - id = db.eventPoint.findByUserAndEventId(u, eventId)()?.id ?: 0 }) } + id = db.eventPoint.findByUserAndEventId(u, eventId)?.id ?: 0 }) } // UserMissionPointList userMissionPointList?.let { list -> db.missionPoint.saveAll(list.distinctBy { it.eventId }.mapApply { - id = db.missionPoint.findByUserAndEventId(u, eventId)()?.id ?: 0 }) } + id = db.missionPoint.findByUserAndEventId(u, eventId)?.id ?: 0 }) } // UserRatinglogList (For the highest rating of each version) // UserBossList userBossList?.let { list -> db.boss.saveAll(list.distinctBy { it.musicId }.mapApply { - id = db.boss.findByUserAndMusicId(u, musicId)()?.id ?: 0 }) } + id = db.boss.findByUserAndMusicId(u, musicId)?.id ?: 0 }) } // UserTechCountList userTechCountList?.let { list -> db.techCount.saveAll(list.distinctBy { it.levelId }.mapApply { - id = db.techCount.findByUserAndLevelId(u, levelId)()?.id ?: 0 }) } + id = db.techCount.findByUserAndLevelId(u, levelId)?.id ?: 0 }) } // UserScenarioList userScenarioList?.let { list -> db.scenario.saveAll(list.distinctBy { it.scenarioId }.mapApply { - id = db.scenario.findByUserAndScenarioId(u, scenarioId)()?.id ?: 0 }) } + id = db.scenario.findByUserAndScenarioId(u, scenarioId)?.id ?: 0 }) } // UserTradeItemList userTradeItemList?.let { list -> db.tradeItem.saveAll(list.distinctBy { it.chapterId to it.tradeItemId }.mapApply { - id = db.tradeItem.findByUserAndChapterIdAndTradeItemId(u, chapterId, tradeItemId)()?.id ?: 0 }) } + id = db.tradeItem.findByUserAndChapterIdAndTradeItemId(u, chapterId, tradeItemId)?.id ?: 0 }) } // UserEventMusicList userEventMusicList?.let { list -> db.eventMusic.saveAll(list.distinctBy { it.eventId to it.type to it.musicId }.mapApply { - id = db.eventMusic.findByUserAndEventIdAndTypeAndMusicId(u, eventId, type, musicId)()?.id ?: 0 }) } + id = db.eventMusic.findByUserAndEventIdAndTypeAndMusicId(u, eventId, type, musicId)?.id ?: 0 }) } // UserTechEventList userTechEventList?.let { list -> db.techEvent.saveAll(list.distinctBy { it.eventId }.mapApply { - id = db.techEvent.findByUserAndEventId(u, eventId)()?.id ?: 0 }) } + id = db.techEvent.findByUserAndEventId(u, eventId)?.id ?: 0 }) } // UserKopList userKopList?.let { list -> db.kop.saveAll(list.distinctBy { it.kopId to it.areaId }.mapApply { - id = db.kop.findByUserAndKopIdAndAreaId(u, kopId, areaId)()?.id ?: 0 }) } + id = db.kop.findByUserAndKopIdAndAreaId(u, kopId, areaId)?.id ?: 0 }) } } u.card?.let { cardService.updateCardTimestamp(it, "ongeki") } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt index 3fa6f510..59fb88b0 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt @@ -4,7 +4,7 @@ package icu.samnyan.aqua.sega.ongeki import ext.* import icu.samnyan.aqua.sega.general.model.CardStatus -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating +import icu.samnyan.aqua.sega.general.model.UserRecentRating import icu.samnyan.aqua.sega.ongeki.model.OgkItemType import icu.samnyan.aqua.sega.ongeki.model.UserItem import org.springframework.data.domain.PageRequest @@ -14,10 +14,10 @@ import java.time.format.DateTimeFormatter fun OngekiController.initUser() { - "GetUserData" { mapOf("userId" to uid, "userData" to db.data.findByCard_ExtId(uid)()) } + "GetUserData" { mapOf("userId" to uid, "userData" to db.data.findByCard_ExtId(uid)) } - "GetUserOption" { mapOf("userId" to uid, "userOption" to db.option.findSingleByUser_Card_ExtId(uid)()) } - "GetUserEventMap" { mapOf("userId" to uid, "userEventMap" to db.eventMap.findSingleByUser_Card_ExtId(uid)()) } + "GetUserOption" { mapOf("userId" to uid, "userOption" to db.option.findSingleByUser_Card_ExtId(uid)) } + "GetUserEventMap" { mapOf("userId" to uid, "userEventMap" to db.eventMap.findSingleByUser_Card_ExtId(uid)) } "GetUserTechEvent".unpaged { db.techEvent.findByUser_Card_ExtId(uid) } "GetUserBoss".unpaged { db.boss.findByUser_Card_ExtId(uid) } @@ -91,7 +91,7 @@ fun OngekiController.initUser() { // Check if user have infinite kaika if (kind == OgkItemType.KaikaItem.ordinal) { - val u = db.data.findByCard_ExtId(uid)() + val u = db.data.findByCard_ExtId(uid) u?.card?.aquaUser?.gameOptions?.let { if (it.ongekiInfiniteKaika) { dat = listOf(UserItem().apply { @@ -115,7 +115,7 @@ fun OngekiController.initUser() { } "GetUserPreview" api@ { - val u = db.data.findByCard_ExtId(uid)() ?: return@api mapOf( + val u = db.data.findByCard_ExtId(uid) ?: return@api mapOf( "userId" to uid, "isLogin" to false, "lastLoginDate" to "0000-00-00 00:00:00", @@ -138,7 +138,7 @@ fun OngekiController.initUser() { "banStatus" to 0, "isWarningConfirmed" to true ) - val o = db.option.findSingleByUser(u)() + val o = db.option.findSingleByUser(u) val res = mutableMapOf( "userId" to uid, "isLogin" to false, @@ -171,7 +171,7 @@ fun OngekiController.initUser() { "GameLogin" { """{"returnCode":"1"}""" } "GetUserRecentRating".unpaged { - db.generalData.findByUser_Card_ExtIdAndPropertyKey(uid, "recent_rating_list")()?.let { recent -> + db.generalData.findByUser_Card_ExtIdAndPropertyKey(uid, "recent_rating_list")?.let { recent -> recent.propertyValue.split(',').dropLastWhile { it.isEmpty() }.map { val (m, d, s) = it.split(':').map { it.int } UserRecentRating(m, d, "1000000", s) diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt index e5b58f0b..2ca86841 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt @@ -1,5 +1,5 @@ package icu.samnyan.aqua.sega.ongeki.model -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating +import icu.samnyan.aqua.sega.general.model.UserRecentRating class OngekiUpsertUserAll { var userData: List? = null diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt index b3b2fce8..47aa146d 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.annotation.JsonSerialize import icu.samnyan.aqua.net.games.* import icu.samnyan.aqua.sega.general.model.Card -import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer +import icu.samnyan.aqua.sega.util.AccessCodeSerializer import jakarta.persistence.* import java.time.LocalDate import java.time.LocalDateTime diff --git a/src/main/java/icu/samnyan/aqua/sega/util/AquaConst.java b/src/main/java/icu/samnyan/aqua/sega/util/AquaConst.java deleted file mode 100644 index bc5de58f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/util/AquaConst.java +++ /dev/null @@ -1,8 +0,0 @@ -package icu.samnyan.aqua.sega.util; - -public class AquaConst { - public static String SERIAL_KEY = "CLIENT_ID"; - public static String VERSION_KEY = "ROM_VERSION"; - public static String CHUNI_DEFAULT_VERSION = "1.30"; - public static String DEFAULT_KEYCHIP_ID = "A69E01A8888"; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/util/jackson/BasicMapper.kt b/src/main/java/icu/samnyan/aqua/sega/util/BasicMapper.kt similarity index 98% rename from src/main/java/icu/samnyan/aqua/sega/util/jackson/BasicMapper.kt rename to src/main/java/icu/samnyan/aqua/sega/util/BasicMapper.kt index 758e6c03..a5b9eb01 100644 --- a/src/main/java/icu/samnyan/aqua/sega/util/jackson/BasicMapper.kt +++ b/src/main/java/icu/samnyan/aqua/sega/util/BasicMapper.kt @@ -1,4 +1,4 @@ -package icu.samnyan.aqua.sega.util.jackson +package icu.samnyan.aqua.sega.util import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.json.JsonWriteFeature diff --git a/src/main/java/icu/samnyan/aqua/sega/util/ByteBufUtil.java b/src/main/java/icu/samnyan/aqua/sega/util/ByteBufUtil.java deleted file mode 100644 index 557e64c6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/util/ByteBufUtil.java +++ /dev/null @@ -1,59 +0,0 @@ -package icu.samnyan.aqua.sega.util; - -import io.netty.buffer.ByteBuf; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class ByteBufUtil { - - private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); - - /** - * Read bytes from start to current writer index - * Not modifying the reader index - * - * @param byteBuf The input buffer - * @return bytes - */ - public static byte[] toBytes(ByteBuf byteBuf) { - - int readerPos = byteBuf.readerIndex(); - byteBuf.resetReaderIndex(); - byte[] result = new byte[byteBuf.readableBytes()]; - byteBuf.readBytes(result); - - byteBuf.readerIndex(readerPos); - return result; - } - - /** - * Move writer index to the capacity and read all the byte to the end - * Not modifying the reader index - * - * @param byteBuf The input buffer - * @return bytes - */ - public static byte[] toAllBytes(ByteBuf byteBuf) { - - int readerPos = byteBuf.readerIndex(); - byteBuf.resetReaderIndex(); - byteBuf.writerIndex(byteBuf.capacity()); - byte[] result = new byte[byteBuf.capacity()]; - byteBuf.readBytes(result); - - byteBuf.readerIndex(readerPos); - return result; - } - - public static String bytesToHex(byte[] bytes) { - char[] hexChars = new char[bytes.length * 2]; - for (int j = 0; j < bytes.length; j++) { - int v = bytes[j] & 0xFF; - hexChars[j * 2] = HEX_ARRAY[v >>> 4]; - hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F]; - } - return new String(hexChars); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/util/jackson/Serializers.kt b/src/main/java/icu/samnyan/aqua/sega/util/Serializers.kt similarity index 97% rename from src/main/java/icu/samnyan/aqua/sega/util/jackson/Serializers.kt rename to src/main/java/icu/samnyan/aqua/sega/util/Serializers.kt index 369591a5..05a2ff7a 100644 --- a/src/main/java/icu/samnyan/aqua/sega/util/jackson/Serializers.kt +++ b/src/main/java/icu/samnyan/aqua/sega/util/Serializers.kt @@ -1,4 +1,4 @@ -package icu.samnyan.aqua.sega.util.jackson +package icu.samnyan.aqua.sega.util import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.JsonParser diff --git a/src/main/java/icu/samnyan/aqua/sega/util/URIEncoder.java b/src/main/java/icu/samnyan/aqua/sega/util/URIEncoder.java deleted file mode 100644 index 8916984c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/util/URIEncoder.java +++ /dev/null @@ -1,14 +0,0 @@ -package icu.samnyan.aqua.sega.util; - -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class URIEncoder { - - public static String encode(String str) { - return URLEncoder.encode(str, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/util/VersionInfo.java b/src/main/java/icu/samnyan/aqua/sega/util/VersionInfo.java deleted file mode 100644 index dd4afb97..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/util/VersionInfo.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.util; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author sam_nya (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class VersionInfo { - private Integer majorVersion; - private Integer minorVersion; - private Integer releaseVersion; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/util/VersionUtil.java b/src/main/java/icu/samnyan/aqua/sega/util/VersionUtil.java deleted file mode 100644 index 49a13069..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/util/VersionUtil.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.util; - -public class VersionUtil { - - public static VersionInfo parseVersion(String version) { - var vs = version.split("\\."); - try { - VersionInfo v = new VersionInfo(); - if (vs.length > 0) { - v.setMajorVersion(Integer.parseInt(vs[0])); - } - if (vs.length > 1) { - v.setMinorVersion(Integer.parseInt(vs[1])); - } - if (vs.length > 2) { - v.setReleaseVersion(Integer.parseInt(vs[2])); - } - return v; - } catch (Exception e) { - return new VersionInfo(0, 0, 0); - } - - } - - public static String getTargetVersion(String savedVersion, String currentVersion) { - var v1s = savedVersion.split("\\."); - var v2s = currentVersion.split("\\."); - try { - for (int i = 0; i < v1s.length; i++) { - int v1n = Integer.parseInt(v1s[i]); - int v2n = Integer.parseInt(v2s[i]); - if (v1n > v2n) { - return currentVersion; - } - if (v1n < v2n) { - return savedVersion; - } - } - // if all same - return savedVersion; - } catch (Exception e) { - return savedVersion; - } - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt index 433d00ff..3c5e28a4 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/WaccaServer.kt @@ -155,7 +155,7 @@ fun WaccaServer.init() { if (user(uid) != null) 404 - "User already exists" val u = rp.user.save(WaccaUser().apply { - card = cardRepo.findByExtId(uid.uint32())() ?: (404 - "Card not found") + card = cardRepo.findByExtId(uid.uint32()) ?: (404 - "Card not found") userName = name.toString() }) diff --git a/src/main/java/icu/samnyan/aqua/spring/SecurityConfig.kt b/src/main/java/icu/samnyan/aqua/spring/SecurityConfig.kt index eb06828c..4c756559 100644 --- a/src/main/java/icu/samnyan/aqua/spring/SecurityConfig.kt +++ b/src/main/java/icu/samnyan/aqua/spring/SecurityConfig.kt @@ -6,7 +6,6 @@ import org.springframework.security.config.Customizer import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder -import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.security.web.SecurityFilterChain import org.springframework.web.cors.CorsConfiguration import org.springframework.web.cors.UrlBasedCorsConfigurationSource diff --git a/src/main/java/icu/samnyan/aqua/spring/data/OffsetPageRequest.java b/src/main/java/icu/samnyan/aqua/spring/data/OffsetPageRequest.java deleted file mode 100644 index 6942fd0d..00000000 --- a/src/main/java/icu/samnyan/aqua/spring/data/OffsetPageRequest.java +++ /dev/null @@ -1,161 +0,0 @@ -package icu.samnyan.aqua.spring.data; - -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.lang.Nullable; -import org.springframework.util.Assert; - -import java.io.Serializable; - -/** - * Somehow spring boot jpa doesn't provide a class to use offset to to the pagination - * @author samnyan (privateamusement@protonmail.com) - */ -public class OffsetPageRequest implements Pageable, Serializable { - - private static final long serialVersionUID = 1L; - private final int offset; - private final int limit; - private final Sort sort; - - /** - * Creates a new {@link OffsetPageRequest} with sort parameters applied. - * - * @param offset offset of the request index, must not be negative. - * @param limit the size of the page to be returned, must be greater than 0. - * @param sort must not be {@literal null}, use {@link Sort#unsorted()} instead. - */ - public OffsetPageRequest(int offset, int limit, Sort sort) { - - if (offset < 0) { - throw new IllegalArgumentException("Offset must not be less than zero!"); - } - - if (limit < 1) { - throw new IllegalArgumentException("Limit must not be less than one!"); - } - - Assert.notNull(sort, "Sort must not be null!"); - - this.offset = offset; - this.limit = limit; - this.sort = sort; - } - - public static OffsetPageRequest of(int page, int size) { - return of(page, size, Sort.unsorted()); - } - - public static OffsetPageRequest of(int page, int size, Sort sort) { - return new OffsetPageRequest(page, size, sort); - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#getPageNumber() - */ - @Override - public int getPageNumber() { - return offset / limit; - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#getPageSize() - */ - @Override - public int getPageSize() { - return limit; - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#getOffset() - */ - @Override - public long getOffset() { - return offset; - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#getSort() - */ - @Override - public Sort getSort() { - return sort; - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#next() - */ - @Override - public Pageable next() { - return new OffsetPageRequest(Math.toIntExact(getOffset() + getPageSize()), getPageSize(), getSort()); - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#previousOrFirst() - */ - @Override - public Pageable previousOrFirst() { - return hasPrevious() ? new OffsetPageRequest(Math.toIntExact(getOffset() - getPageSize()), getPageSize(), getSort()) : this; - } - - /* - * (non-Javadoc) - * @see org.springframework.data.domain.Pageable#first() - */ - @Override - public Pageable first() { - return new OffsetPageRequest(0, getPageSize(), getSort()); - } - - @Override - public boolean hasPrevious() { - return offset > limit; - } - - /* - * (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - - final int prime = 31; - int result = 1; - - result = prime * result + offset; - result = prime * result + limit; - - return result; - } - - /* - * (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(@Nullable Object obj) { - - if (this == obj) { - return true; - } - - if (obj == null || getClass() != obj.getClass()) { - return false; - } - - OffsetPageRequest other = (OffsetPageRequest) obj; - return this.offset == other.offset && this.limit == other.limit; - } - - @Override - public Pageable withPage(int pageNumber) { - return new OffsetPageRequest(pageNumber, getPageSize(), getSort()); - } - -} diff --git a/src/main/resources/db/80/V1000_65__drop_the_codebase.sql b/src/main/resources/db/80/V1000_65__drop_the_codebase.sql new file mode 100644 index 00000000..085417bd --- /dev/null +++ b/src/main/resources/db/80/V1000_65__drop_the_codebase.sql @@ -0,0 +1,42 @@ +drop table maimai_user_web_option; +drop table maimai_user_survival; +drop table maimai_user_present_event; +drop table maimai_user_playlog; +drop table maimai_user_option; +drop table maimai_user_music_detail; +drop table maimai_user_general_data; +drop table maimai_user_character; +drop table maimai_user_boss; +drop table maimai_user_activity; +drop table maimai_user_item; +drop table maimai_game_event; + +drop table maimai_user_data; + +drop table chuni_game_character; +drop table chuni_game_charge; +drop table chuni_game_event; +drop table chuni_game_message; +drop table chuni_game_skill; +drop table chuni_music_level; +drop table chuni_user_activity; +drop table chuni_user_character; +drop table chuni_user_charge; +drop table chuni_user_course; +drop table chuni_user_duel; +drop table chuni_user_game_option; +drop table chuni_user_game_option_ex; +drop table chuni_user_general_data; +drop table chuni_user_item; +drop table chuni_user_map; +drop table chuni_user_music_detail; +drop table chuni_user_playlog; + +drop table chuni_music; +drop table chuni_user_data_ex; +drop table chuni_user_data; + +drop table sega_game_version; + +drop table diva_ng_words; + diff --git a/start.bat b/start.bat deleted file mode 100644 index 10c0a8d4..00000000 --- a/start.bat +++ /dev/null @@ -1,42 +0,0 @@ -@echo off -cd /d %~dp0 - -@rem set JAVA_HOME=C:\Program Files\RedHat\java-11-openjdk-11.0.4-1 - -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init -echo. -echo Error: jave.exe not found. in JAVA_HOME>&2 -echo. -goto error - -:init -SET JAVA_EXE="%JAVA_HOME%\bin\java.exe" -for /f tokens^=2-5^ delims^=.-_^" %%j in ('%JAVA_EXE% -fullversion 2^>^&1') do set "JAVA_VER=%%j%%k" -if not %JAVA_VER% LSS 170 goto run -echo. -echo Error: Java version is lower than 17, please update your Java version. >&2 -echo. -goto error - -:run -%JAVA_EXE% -jar aqua.jar -if ERRORLEVEL 1 goto error -goto end - - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% -pause \ No newline at end of file