├── .github └── workflows │ └── main.yml ├── .gitignore ├── Dockerfile ├── README.md ├── config └── application.properties ├── data ├── db.sqlite └── diva_musiclist.json ├── docker-compose.yml ├── docs ├── dev │ └── chusan_dev_notes.md └── game_specific_notes.md ├── pom.xml └── src ├── main ├── java │ └── icu │ │ └── samnyan │ │ └── aqua │ │ ├── AquaServerApplication.java │ │ ├── api │ │ ├── config │ │ │ └── WebConfig.java │ │ ├── controller │ │ │ ├── ApiControllerAdvice.java │ │ │ ├── general │ │ │ │ └── StaticController.java │ │ │ └── sega │ │ │ │ ├── ApiAimeController.java │ │ │ │ ├── game │ │ │ │ ├── chuni │ │ │ │ │ ├── v1 │ │ │ │ │ │ ├── ApiChuniV1GameDataController.java │ │ │ │ │ │ └── ApiChuniV1PlayerDataController.java │ │ │ │ │ └── v2 │ │ │ │ │ │ ├── ApiChuniV2GameDataController.java │ │ │ │ │ │ └── ApiChuniV2PlayerDataController.java │ │ │ │ ├── diva │ │ │ │ │ ├── ApiDivaGameDataController.java │ │ │ │ │ └── ApiDivaPlayerDataController.java │ │ │ │ └── ongeki │ │ │ │ │ ├── ApiOngekiGameDataController.java │ │ │ │ │ └── ApiOngekiPlayerDataController.java │ │ │ │ └── manage │ │ │ │ ├── ApiChuniV1ManageController.java │ │ │ │ └── ApiDivaManageController.java │ │ ├── model │ │ │ ├── MessageResponse.java │ │ │ ├── ReducedPageResponse.java │ │ │ ├── req │ │ │ │ └── sega │ │ │ │ │ └── diva │ │ │ │ │ ├── DatePair.java │ │ │ │ │ ├── ModuleEntry.java │ │ │ │ │ ├── PvListEntry.java │ │ │ │ │ └── PvListRequest.java │ │ │ └── resp │ │ │ │ └── sega │ │ │ │ ├── chuni │ │ │ │ ├── v1 │ │ │ │ │ ├── ProfileResp.java │ │ │ │ │ ├── RatingItem.java │ │ │ │ │ ├── RecentResp.java │ │ │ │ │ ├── ScoreResp.java │ │ │ │ │ └── external │ │ │ │ │ │ ├── ChuniDataExport.java │ │ │ │ │ │ ├── ChuniDataImport.java │ │ │ │ │ │ └── ExternalUserData.java │ │ │ │ └── v2 │ │ │ │ │ ├── ProfileResp.java │ │ │ │ │ ├── RatingItem.java │ │ │ │ │ ├── RecentResp.java │ │ │ │ │ ├── ScoreResp.java │ │ │ │ │ └── external │ │ │ │ │ ├── ChuniDataExport.java │ │ │ │ │ ├── ChuniDataImport.java │ │ │ │ │ └── ExternalUserData.java │ │ │ │ ├── diva │ │ │ │ ├── PlayerInfo.java │ │ │ │ └── PvRankRecord.java │ │ │ │ └── ongeki │ │ │ │ ├── ProfileResp.java │ │ │ │ └── external │ │ │ │ ├── ExternalUserData.java │ │ │ │ ├── OngekiDataExport.java │ │ │ │ └── OngekiDataImport.java │ │ └── util │ │ │ └── ApiMapper.java │ │ ├── security │ │ └── config │ │ │ └── SecurityConfig.java │ │ ├── sega │ │ ├── aimedb │ │ │ ├── AimeDbDecoder.java │ │ │ ├── AimeDbEncoder.java │ │ │ ├── AimeDbRequestHandler.java │ │ │ ├── AimeDbServer.java │ │ │ ├── AimeDbServerInitializer.java │ │ │ ├── exception │ │ │ │ └── InvalidRequestException.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ └── impl │ │ │ │ │ ├── CampaignHandler.java │ │ │ │ │ ├── FeliCaLookup2Handler.java │ │ │ │ │ ├── FeliCaLookupHandler.java │ │ │ │ │ ├── GoodbyeHandler.java │ │ │ │ │ ├── HelloHandler.java │ │ │ │ │ ├── LogHandler.java │ │ │ │ │ ├── Lookup2Handler.java │ │ │ │ │ ├── LookupHandler.java │ │ │ │ │ ├── RegisterHandler.java │ │ │ │ │ ├── TouchHandler.java │ │ │ │ │ └── Unknown19Handler.java │ │ │ └── util │ │ │ │ ├── AimeDbUtil.java │ │ │ │ ├── Encryption.java │ │ │ │ └── LogMapper.java │ │ ├── allnet │ │ │ ├── AllNetController.java │ │ │ ├── model │ │ │ │ ├── request │ │ │ │ │ └── PowerOnRequest.java │ │ │ │ └── response │ │ │ │ │ ├── PowerOnResponse.java │ │ │ │ │ ├── PowerOnResponseV2.java │ │ │ │ │ └── PowerOnResponseV3.java │ │ │ └── util │ │ │ │ └── Decoder.java │ │ ├── billing │ │ │ ├── BillingController.java │ │ │ ├── model │ │ │ │ └── response │ │ │ │ │ └── BillingResponse.java │ │ │ └── util │ │ │ │ ├── Decoder.java │ │ │ │ └── RawCompression.java │ │ ├── chunithm │ │ │ ├── controller │ │ │ │ ├── ChuniServletController.java │ │ │ │ └── ChuniServletControllerAdvice.java │ │ │ ├── dao │ │ │ │ ├── gamedata │ │ │ │ │ ├── GameCharacterRepository.java │ │ │ │ │ ├── GameCharacterSkillRepository.java │ │ │ │ │ ├── GameChargeRepository.java │ │ │ │ │ ├── GameEventRepository.java │ │ │ │ │ ├── GameMessageRepository.java │ │ │ │ │ └── GameMusicRepository.java │ │ │ │ └── userdata │ │ │ │ │ ├── UserActivityRepository.java │ │ │ │ │ ├── UserCharacterRepository.java │ │ │ │ │ ├── UserChargeRepository.java │ │ │ │ │ ├── UserCourseRepository.java │ │ │ │ │ ├── UserDataExRepository.java │ │ │ │ │ ├── UserDataRepository.java │ │ │ │ │ ├── UserDuelRepository.java │ │ │ │ │ ├── UserGameOptionExRepository.java │ │ │ │ │ ├── UserGameOptionRepository.java │ │ │ │ │ ├── UserGeneralDataRepository.java │ │ │ │ │ ├── UserItemRepository.java │ │ │ │ │ ├── UserMapRepository.java │ │ │ │ │ ├── UserMusicDetailRepository.java │ │ │ │ │ └── UserPlaylogRepository.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ └── impl │ │ │ │ │ ├── GameLoginHandler.java │ │ │ │ │ ├── GameLogoutHandler.java │ │ │ │ │ ├── GetGameChargeHandler.java │ │ │ │ │ ├── GetGameEventHandler.java │ │ │ │ │ ├── GetGameIdlistHandler.java │ │ │ │ │ ├── GetGameMessageHandler.java │ │ │ │ │ ├── GetGameRankingHandler.java │ │ │ │ │ ├── GetGameSaleHandler.java │ │ │ │ │ ├── GetGameSettingHandler.java │ │ │ │ │ ├── GetTeamCourseRuleHandler.java │ │ │ │ │ ├── GetTeamCourseSettingHandler.java │ │ │ │ │ ├── GetUserActivityHandler.java │ │ │ │ │ ├── GetUserCharacterHandler.java │ │ │ │ │ ├── GetUserChargeHandler.java │ │ │ │ │ ├── GetUserCourseHandler.java │ │ │ │ │ ├── GetUserDataExHandler.java │ │ │ │ │ ├── GetUserDataHandler.java │ │ │ │ │ ├── GetUserDuelHandler.java │ │ │ │ │ ├── GetUserFavoriteItemHandler.java │ │ │ │ │ ├── GetUserFavoriteMusicHandler.java │ │ │ │ │ ├── GetUserItemHandler.java │ │ │ │ │ ├── GetUserLoginBonusHandler.java │ │ │ │ │ ├── GetUserMapHandler.java │ │ │ │ │ ├── GetUserMusicHandler.java │ │ │ │ │ ├── GetUserOptionExHandler.java │ │ │ │ │ ├── GetUserOptionHandler.java │ │ │ │ │ ├── GetUserPreviewHandler.java │ │ │ │ │ ├── GetUserRecentRatingHandler.java │ │ │ │ │ ├── GetUserRegionHandler.java │ │ │ │ │ ├── GetUserRivalDataHandler.java │ │ │ │ │ ├── GetUserRivalMusicHandler.java │ │ │ │ │ ├── GetUserTeamHandler.java │ │ │ │ │ ├── UpsertClientBookkeepingHandler.java │ │ │ │ │ ├── UpsertClientDevelopHandler.java │ │ │ │ │ ├── UpsertClientErrorHandler.java │ │ │ │ │ ├── UpsertClientSettingHandler.java │ │ │ │ │ ├── UpsertClientTestmodeHandler.java │ │ │ │ │ ├── UpsertUserAllHandler.java │ │ │ │ │ └── UpsertUserChargelogHandler.java │ │ │ ├── model │ │ │ │ ├── gamedata │ │ │ │ │ ├── Character.java │ │ │ │ │ ├── CharacterSkill.java │ │ │ │ │ ├── Diff.java │ │ │ │ │ ├── GameCharge.java │ │ │ │ │ ├── GameEvent.java │ │ │ │ │ ├── GameMessage.java │ │ │ │ │ ├── Genre.java │ │ │ │ │ ├── Level.java │ │ │ │ │ └── Music.java │ │ │ │ ├── requet │ │ │ │ │ ├── ClientSetting.java │ │ │ │ │ ├── ClientSettingRequest.java │ │ │ │ │ └── UpsertUserAll.java │ │ │ │ ├── response │ │ │ │ │ ├── CodeResp.java │ │ │ │ │ ├── GetGameSettingResp.java │ │ │ │ │ ├── GetUserPreviewResp.java │ │ │ │ │ └── data │ │ │ │ │ │ ├── AllMusicMapItem.java │ │ │ │ │ │ ├── GameRanking.java │ │ │ │ │ │ ├── GameSale.java │ │ │ │ │ │ ├── GameSetting.java │ │ │ │ │ │ └── UserMusicListItem.java │ │ │ │ └── userdata │ │ │ │ │ ├── UserActivity.java │ │ │ │ │ ├── UserCharacter.java │ │ │ │ │ ├── UserCharge.java │ │ │ │ │ ├── UserCourse.java │ │ │ │ │ ├── UserData.java │ │ │ │ │ ├── UserDataEx.java │ │ │ │ │ ├── UserDuel.java │ │ │ │ │ ├── UserGameOption.java │ │ │ │ │ ├── UserGameOptionEx.java │ │ │ │ │ ├── UserGeneralData.java │ │ │ │ │ ├── UserItem.java │ │ │ │ │ ├── UserMap.java │ │ │ │ │ ├── UserMusicDetail.java │ │ │ │ │ └── UserPlaylog.java │ │ │ └── service │ │ │ │ ├── GameMusicService.java │ │ │ │ ├── UserActivityService.java │ │ │ │ ├── UserCharacterService.java │ │ │ │ ├── UserChargeService.java │ │ │ │ ├── UserCourseService.java │ │ │ │ ├── UserDataExService.java │ │ │ │ ├── UserDataService.java │ │ │ │ ├── UserDuelService.java │ │ │ │ ├── UserGameOptionExService.java │ │ │ │ ├── UserGameOptionService.java │ │ │ │ ├── UserGeneralDataService.java │ │ │ │ ├── UserItemService.java │ │ │ │ ├── UserMapService.java │ │ │ │ ├── UserMusicDetailService.java │ │ │ │ └── UserPlaylogService.java │ │ ├── chusan │ │ │ ├── controller │ │ │ │ ├── ChusanServletController.java │ │ │ │ └── ChusanServletControllerAdvice.java │ │ │ ├── dao │ │ │ │ ├── gamedata │ │ │ │ │ ├── GameAvatarAccRepository.java │ │ │ │ │ ├── GameCharacterRepository.java │ │ │ │ │ ├── GameChargeRepository.java │ │ │ │ │ ├── GameEventRepository.java │ │ │ │ │ ├── GameFrameRepository.java │ │ │ │ │ ├── GameMapIconRepository.java │ │ │ │ │ ├── GameMusicRepository.java │ │ │ │ │ ├── GameNamePlateRepository.java │ │ │ │ │ ├── GameSystemVoiceRepository.java │ │ │ │ │ └── GameTrophyRepository.java │ │ │ │ └── userdata │ │ │ │ │ ├── UserActivityRepository.java │ │ │ │ │ ├── UserCharacterRepository.java │ │ │ │ │ ├── UserChargeRepository.java │ │ │ │ │ ├── UserCourseRepository.java │ │ │ │ │ ├── UserDataRepository.java │ │ │ │ │ ├── UserDuelRepository.java │ │ │ │ │ ├── UserGameOptionRepository.java │ │ │ │ │ ├── UserGeneralDataRepository.java │ │ │ │ │ ├── UserItemRepository.java │ │ │ │ │ ├── UserMapAreaRepository.java │ │ │ │ │ ├── UserMusicDetailRepository.java │ │ │ │ │ └── UserPlaylogRepository.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ └── impl │ │ │ │ │ ├── GameLoginHandler.java │ │ │ │ │ ├── GameLogoutHandler.java │ │ │ │ │ ├── GetGameChargeHandler.java │ │ │ │ │ ├── GetGameEventHandler.java │ │ │ │ │ ├── GetGameIdlistHandler.java │ │ │ │ │ ├── GetGameRankingHandler.java │ │ │ │ │ ├── GetGameSettingHandler.java │ │ │ │ │ ├── GetTeamCourseRuleHandler.java │ │ │ │ │ ├── GetTeamCourseSettingHandler.java │ │ │ │ │ ├── GetUserActivityHandler.java │ │ │ │ │ ├── GetUserCharacterHandler.java │ │ │ │ │ ├── GetUserChargeHandler.java │ │ │ │ │ ├── GetUserCourseHandler.java │ │ │ │ │ ├── GetUserDataHandler.java │ │ │ │ │ ├── GetUserDuelHandler.java │ │ │ │ │ ├── GetUserFavoriteItemHandler.java │ │ │ │ │ ├── GetUserItemHandler.java │ │ │ │ │ ├── GetUserLoginBonusHandler.java │ │ │ │ │ ├── GetUserMapAreaHandler.java │ │ │ │ │ ├── GetUserMusicHandler.java │ │ │ │ │ ├── GetUserNetBattleDataHandler.java │ │ │ │ │ ├── GetUserOptionHandler.java │ │ │ │ │ ├── GetUserPreviewHandler.java │ │ │ │ │ ├── GetUserRecentRatingHandler.java │ │ │ │ │ ├── GetUserRegionHandler.java │ │ │ │ │ ├── GetUserRivalDataHandler.java │ │ │ │ │ ├── GetUserRivalMusicHandler.java │ │ │ │ │ ├── GetUserSymbolChatSettingHandler.java │ │ │ │ │ ├── GetUserTeamHandler.java │ │ │ │ │ ├── UpsertUserAllHandler.java │ │ │ │ │ └── UpsertUserChargelogHandler.java │ │ │ ├── model │ │ │ │ ├── gamedata │ │ │ │ │ ├── AvatarAcc.java │ │ │ │ │ ├── Character.java │ │ │ │ │ ├── Frame.java │ │ │ │ │ ├── GameCharge.java │ │ │ │ │ ├── GameEvent.java │ │ │ │ │ ├── Genre.java │ │ │ │ │ ├── Level.java │ │ │ │ │ ├── MapIcon.java │ │ │ │ │ ├── Music.java │ │ │ │ │ ├── NamePlate.java │ │ │ │ │ ├── SystemVoice.java │ │ │ │ │ └── Trophy.java │ │ │ │ ├── request │ │ │ │ │ └── UpsertUserAll.java │ │ │ │ ├── response │ │ │ │ │ ├── CodeResp.java │ │ │ │ │ ├── GetGameSettingResp.java │ │ │ │ │ ├── GetUserPreviewResp.java │ │ │ │ │ └── data │ │ │ │ │ │ ├── GameRanking.java │ │ │ │ │ │ ├── GameSetting.java │ │ │ │ │ │ └── UserMusicListItem.java │ │ │ │ └── userdata │ │ │ │ │ ├── UserActivity.java │ │ │ │ │ ├── UserCharacter.java │ │ │ │ │ ├── UserCharge.java │ │ │ │ │ ├── UserCourse.java │ │ │ │ │ ├── UserData.java │ │ │ │ │ ├── UserDuel.java │ │ │ │ │ ├── UserGameOption.java │ │ │ │ │ ├── UserGeneralData.java │ │ │ │ │ ├── UserItem.java │ │ │ │ │ ├── UserMapArea.java │ │ │ │ │ ├── UserMusicDetail.java │ │ │ │ │ └── UserPlaylog.java │ │ │ └── service │ │ │ │ ├── GameMusicService.java │ │ │ │ ├── UserActivityService.java │ │ │ │ ├── UserCharacterService.java │ │ │ │ ├── UserChargeService.java │ │ │ │ ├── UserCourseService.java │ │ │ │ ├── UserDataService.java │ │ │ │ ├── UserDuelService.java │ │ │ │ ├── UserGameOptionService.java │ │ │ │ ├── UserGeneralDataService.java │ │ │ │ ├── UserItemService.java │ │ │ │ ├── UserMapAreaService.java │ │ │ │ ├── UserMusicDetailService.java │ │ │ │ └── UserPlaylogService.java │ │ ├── diva │ │ │ ├── controller │ │ │ │ ├── DivaController.java │ │ │ │ └── DivaControllerAdvice.java │ │ │ ├── dao │ │ │ │ ├── gamedata │ │ │ │ │ ├── ContestRepository.java │ │ │ │ │ ├── DivaCustomizeRepository.java │ │ │ │ │ ├── DivaModuleRepository.java │ │ │ │ │ ├── DivaPvRepository.java │ │ │ │ │ ├── FestaRepository.java │ │ │ │ │ ├── NgWordsRepository.java │ │ │ │ │ └── PvEntryRepository.java │ │ │ │ └── userdata │ │ │ │ │ ├── GameSessionRepository.java │ │ │ │ │ ├── PlayLogRepository.java │ │ │ │ │ ├── PlayerContestRepository.java │ │ │ │ │ ├── PlayerCustomizeRepository.java │ │ │ │ │ ├── PlayerInventoryRepository.java │ │ │ │ │ ├── PlayerModuleRepository.java │ │ │ │ │ ├── PlayerProfileRepository.java │ │ │ │ │ ├── PlayerPvCustomizeRepository.java │ │ │ │ │ ├── PlayerPvRecordRepository.java │ │ │ │ │ └── PlayerScreenShotRepository.java │ │ │ ├── exception │ │ │ │ ├── ProfileNotFoundException.java │ │ │ │ ├── PvRecordDataException.java │ │ │ │ ├── SessionNotExistException.java │ │ │ │ └── SessionNotFoundException.java │ │ │ ├── filter │ │ │ │ └── DivaCompressionFilter.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ ├── boot │ │ │ │ │ ├── AttendHandler.java │ │ │ │ │ └── GameInitHandler.java │ │ │ │ ├── card │ │ │ │ │ ├── CardProcedureHandler.java │ │ │ │ │ ├── ChangeNameHandler.java │ │ │ │ │ ├── ChangePasswdHandler.java │ │ │ │ │ ├── InitPasswdHandler.java │ │ │ │ │ └── RegistrationHandler.java │ │ │ │ ├── databank │ │ │ │ │ ├── BannerDataHandler.java │ │ │ │ │ ├── BannerInfoHandler.java │ │ │ │ │ ├── CmPlyInfoHandler.java │ │ │ │ │ ├── ContestInfoHandler.java │ │ │ │ │ ├── CstmzItmCtlgHandler.java │ │ │ │ │ ├── CstmzItmNgMdlListHandler.java │ │ │ │ │ ├── FestaInfoHandler.java │ │ │ │ │ ├── NgWordHandler.java │ │ │ │ │ ├── NvRankingHandler.java │ │ │ │ │ ├── PsRankingHandler.java │ │ │ │ │ ├── PstdHCtrlHandler.java │ │ │ │ │ ├── PstdItemNgLstHandler.java │ │ │ │ │ ├── PvDefChrLstHandler.java │ │ │ │ │ ├── PvListHandler.java │ │ │ │ │ ├── PvNgMdlLstHandler.java │ │ │ │ │ ├── QstInfHandler.java │ │ │ │ │ ├── RmtWpLstHandler.java │ │ │ │ │ └── ShopCatalogHandler.java │ │ │ │ ├── ingame │ │ │ │ │ ├── BuyCstmzItmHandler.java │ │ │ │ │ ├── BuyModuleHandler.java │ │ │ │ │ ├── GetPvPdHandler.java │ │ │ │ │ ├── ShopExitHandler.java │ │ │ │ │ ├── StageResultHandler.java │ │ │ │ │ ├── StageStartHandler.java │ │ │ │ │ └── StoreSsHandler.java │ │ │ │ ├── operation │ │ │ │ │ └── PingHandler.java │ │ │ │ └── user │ │ │ │ │ ├── EndHandler.java │ │ │ │ │ ├── PdUnlockHandler.java │ │ │ │ │ ├── PreStartHandler.java │ │ │ │ │ ├── SpendCreditHandler.java │ │ │ │ │ └── StartHandler.java │ │ │ ├── model │ │ │ │ ├── Internalizable.java │ │ │ │ ├── common │ │ │ │ │ ├── ChallengeKind.java │ │ │ │ │ ├── ClearResult.java │ │ │ │ │ ├── Const.java │ │ │ │ │ ├── ContestBorder.java │ │ │ │ │ ├── ContestLeague.java │ │ │ │ │ ├── ContestNormaType.java │ │ │ │ │ ├── ContestProgress.java │ │ │ │ │ ├── ContestStageLimit.java │ │ │ │ │ ├── Difficulty.java │ │ │ │ │ ├── Edition.java │ │ │ │ │ ├── FestaKind.java │ │ │ │ │ ├── LevelInfo.java │ │ │ │ │ ├── PassStat.java │ │ │ │ │ ├── PreStartResult.java │ │ │ │ │ ├── Result.java │ │ │ │ │ ├── SortMode.java │ │ │ │ │ ├── StartMode.java │ │ │ │ │ ├── ValueEnum.java │ │ │ │ │ ├── attend │ │ │ │ │ │ ├── DispersalParameter.java │ │ │ │ │ │ ├── EtcParameter.java │ │ │ │ │ │ ├── GameBalanceParameter.java │ │ │ │ │ │ ├── GameBalanceTrialBid.java │ │ │ │ │ │ └── GameBalanceTrialBidSet.java │ │ │ │ │ └── collection │ │ │ │ │ │ ├── ClearSet.java │ │ │ │ │ │ ├── ClearTally.java │ │ │ │ │ │ ├── FestaCollection.java │ │ │ │ │ │ └── PsRankingCollection.java │ │ │ │ ├── gamedata │ │ │ │ │ ├── Contest.java │ │ │ │ │ ├── Difficulty.java │ │ │ │ │ ├── DivaCustomize.java │ │ │ │ │ ├── DivaModule.java │ │ │ │ │ ├── Festa.java │ │ │ │ │ ├── NgWords.java │ │ │ │ │ ├── Pv.java │ │ │ │ │ └── PvEntry.java │ │ │ │ ├── request │ │ │ │ │ ├── BaseRequest.java │ │ │ │ │ ├── FormRequest.java │ │ │ │ │ ├── boot │ │ │ │ │ │ ├── AttendRequest.java │ │ │ │ │ │ └── GameInitRequest.java │ │ │ │ │ ├── card │ │ │ │ │ │ ├── CardProcedureRequest.java │ │ │ │ │ │ ├── ChangeNameRequest.java │ │ │ │ │ │ ├── ChangePasswdRequest.java │ │ │ │ │ │ └── RegistrationRequest.java │ │ │ │ │ ├── databank │ │ │ │ │ │ ├── BannerDataRequest.java │ │ │ │ │ │ └── PsRankingRequest.java │ │ │ │ │ ├── ingame │ │ │ │ │ │ ├── BuyCstmzItmRequest.java │ │ │ │ │ │ ├── BuyModuleRequest.java │ │ │ │ │ │ ├── GetPvPdRequest.java │ │ │ │ │ │ ├── ShopExitRequest.java │ │ │ │ │ │ ├── StageResultRequest.java │ │ │ │ │ │ ├── StageStartRequest.java │ │ │ │ │ │ └── StoreSsRequest.java │ │ │ │ │ └── user │ │ │ │ │ │ ├── PdUnlockRequest.java │ │ │ │ │ │ ├── PreStartRequest.java │ │ │ │ │ │ ├── SpendCreditRequest.java │ │ │ │ │ │ └── StartRequest.java │ │ │ │ ├── response │ │ │ │ │ ├── BaseResponse.java │ │ │ │ │ ├── boot │ │ │ │ │ │ ├── AttendResponse.java │ │ │ │ │ │ └── GameInitResponse.java │ │ │ │ │ ├── card │ │ │ │ │ │ ├── CardProcedureResponse.java │ │ │ │ │ │ ├── ChangeNameResponse.java │ │ │ │ │ │ ├── ChangePasswdResponse.java │ │ │ │ │ │ └── RegistrationResponse.java │ │ │ │ │ ├── databank │ │ │ │ │ │ ├── BannerDataResponse.java │ │ │ │ │ │ ├── BannerInfoResponse.java │ │ │ │ │ │ ├── ContestInfoResponse.java │ │ │ │ │ │ ├── CstmzItmCtlgResponse.java │ │ │ │ │ │ ├── CstmzItmNgMdlListResponse.java │ │ │ │ │ │ ├── FestaInfoResponse.java │ │ │ │ │ │ ├── NvRankingResponse.java │ │ │ │ │ │ ├── PsRankingResponse.java │ │ │ │ │ │ ├── PstdHCtrlResponse.java │ │ │ │ │ │ ├── PstdItemNgLstResponse.java │ │ │ │ │ │ ├── PvDefChrLstResponse.java │ │ │ │ │ │ ├── PvListResponse.java │ │ │ │ │ │ ├── PvNgMdlLstResponse.java │ │ │ │ │ │ ├── QstInfResponse.java │ │ │ │ │ │ ├── RmtWpLstResponse.java │ │ │ │ │ │ └── ShopCatalogResponse.java │ │ │ │ │ ├── ingame │ │ │ │ │ │ ├── BuyCstmzItmResponse.java │ │ │ │ │ │ ├── BuyModuleResponse.java │ │ │ │ │ │ ├── GetPvPdResponse.java │ │ │ │ │ │ ├── ShopExitResponse.java │ │ │ │ │ │ └── StageResultResponse.java │ │ │ │ │ ├── operation │ │ │ │ │ │ └── PingResponse.java │ │ │ │ │ └── user │ │ │ │ │ │ ├── PreStartResponse.java │ │ │ │ │ │ ├── SpendCreditResponse.java │ │ │ │ │ │ └── StartResponse.java │ │ │ │ └── userdata │ │ │ │ │ ├── GameSession.java │ │ │ │ │ ├── PlayLog.java │ │ │ │ │ ├── PlayerContest.java │ │ │ │ │ ├── PlayerCustomize.java │ │ │ │ │ ├── PlayerInventory.java │ │ │ │ │ ├── PlayerModule.java │ │ │ │ │ ├── PlayerProfile.java │ │ │ │ │ ├── PlayerPvCustomize.java │ │ │ │ │ ├── PlayerPvRecord.java │ │ │ │ │ └── PlayerScreenShot.java │ │ │ ├── service │ │ │ │ ├── PlayerCustomizeService.java │ │ │ │ ├── PlayerModuleService.java │ │ │ │ └── PlayerProfileService.java │ │ │ └── util │ │ │ │ ├── DivaCalculator.java │ │ │ │ ├── DivaDateTimeSerializer.java │ │ │ │ ├── DivaDateTimeUtil.java │ │ │ │ ├── DivaMapper.java │ │ │ │ └── DivaStringUtils.java │ │ ├── general │ │ │ ├── dao │ │ │ │ ├── CardRepository.java │ │ │ │ ├── GameVersionRepository.java │ │ │ │ └── PropertyEntryRepository.java │ │ │ ├── filter │ │ │ │ ├── CompressRequestWrapper.java │ │ │ │ ├── CompressResponseWrapper.java │ │ │ │ └── CompressionFilter.java │ │ │ ├── model │ │ │ │ ├── Card.java │ │ │ │ ├── GameVersion.java │ │ │ │ ├── PropertyEntry.java │ │ │ │ └── response │ │ │ │ │ └── UserRecentRating.java │ │ │ └── service │ │ │ │ ├── CardService.java │ │ │ │ └── ClientSettingService.java │ │ ├── maimai │ │ │ ├── controller │ │ │ │ ├── MaimaiServletController.java │ │ │ │ └── MaimaiServletControllerAdvice.java │ │ │ ├── dao │ │ │ │ ├── gamedata │ │ │ │ │ └── GameEventRepository.java │ │ │ │ └── userdata │ │ │ │ │ ├── UserActivityRepository.java │ │ │ │ │ ├── UserBossRepository.java │ │ │ │ │ ├── UserCharacterRepository.java │ │ │ │ │ ├── UserDataRepository.java │ │ │ │ │ ├── UserGeneralDataRepository.java │ │ │ │ │ ├── UserItemRepository.java │ │ │ │ │ ├── UserMusicDetailRepository.java │ │ │ │ │ ├── UserOptionRepository.java │ │ │ │ │ ├── UserPlaylogRepository.java │ │ │ │ │ ├── UserPresentEventRepository.java │ │ │ │ │ ├── UserSurvivalRepository.java │ │ │ │ │ └── UserWebOptionRepository.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ └── impl │ │ │ │ │ ├── GetGameEventHandler.java │ │ │ │ │ ├── GetGameRankingHandler.java │ │ │ │ │ ├── GetGameSettingHandler.java │ │ │ │ │ ├── GetTransferFriendHandler.java │ │ │ │ │ ├── GetUserActivityHandler.java │ │ │ │ │ ├── GetUserBossHandler.java │ │ │ │ │ ├── GetUserCharacterHandler.java │ │ │ │ │ ├── GetUserCourseHandler.java │ │ │ │ │ ├── GetUserDataHandler.java │ │ │ │ │ ├── GetUserGradeHandler.java │ │ │ │ │ ├── GetUserItemHandler.java │ │ │ │ │ ├── GetUserMusicHandler.java │ │ │ │ │ ├── GetUserOptionHandler.java │ │ │ │ │ ├── GetUserPresentEventHandler.java │ │ │ │ │ ├── GetUserPresentHandler.java │ │ │ │ │ ├── GetUserPreviewHandler.java │ │ │ │ │ ├── GetUserRecentRatingHandler.java │ │ │ │ │ ├── GetUserSurvivalHandler.java │ │ │ │ │ ├── GetUserWebOptionHandler.java │ │ │ │ │ ├── UpsertTransferHandler.java │ │ │ │ │ ├── UpsertUserAllHandler.java │ │ │ │ │ ├── UserLoginHandler.java │ │ │ │ │ └── UserLogoutHandler.java │ │ │ └── model │ │ │ │ ├── gamedata │ │ │ │ └── GameEvent.java │ │ │ │ ├── request │ │ │ │ ├── UpsertUserAll.java │ │ │ │ └── data │ │ │ │ │ └── UserAll.java │ │ │ │ ├── response │ │ │ │ ├── GetGameSettingResp.java │ │ │ │ ├── GetUserPreviewResp.java │ │ │ │ ├── UserLoginResp.java │ │ │ │ └── data │ │ │ │ │ ├── GameRanking.java │ │ │ │ │ ├── GameSetting.java │ │ │ │ │ ├── UserGradeStatus.java │ │ │ │ │ ├── UserMusic.java │ │ │ │ │ └── UserRecentRating.java │ │ │ │ └── userdata │ │ │ │ ├── UserActivity.java │ │ │ │ ├── UserBoss.java │ │ │ │ ├── UserCharacter.java │ │ │ │ ├── UserData.java │ │ │ │ ├── UserGeneralData.java │ │ │ │ ├── UserItem.java │ │ │ │ ├── UserMusicDetail.java │ │ │ │ ├── UserOption.java │ │ │ │ ├── UserPlaylog.java │ │ │ │ ├── UserPresentEvent.java │ │ │ │ ├── UserSurvival.java │ │ │ │ └── UserWebOption.java │ │ ├── maimai2 │ │ │ ├── controller │ │ │ │ ├── Maimai2ServletController.java │ │ │ │ └── Maimai2ServletControllerAdvice.java │ │ │ ├── dao │ │ │ │ ├── gamedata │ │ │ │ │ ├── GameChargeRepository.java │ │ │ │ │ └── GameEventRepository.java │ │ │ │ └── userdata │ │ │ │ │ ├── MapEncountNpcRepository.java │ │ │ │ │ ├── UserActRepository.java │ │ │ │ │ ├── UserCharacterRepository.java │ │ │ │ │ ├── UserChargeRepository.java │ │ │ │ │ ├── UserCourseRepository.java │ │ │ │ │ ├── UserDataRepository.java │ │ │ │ │ ├── UserExtendRepository.java │ │ │ │ │ ├── UserFavoriteRepository.java │ │ │ │ │ ├── UserFriendSeasonRankingRepository.java │ │ │ │ │ ├── UserGeneralDataRepository.java │ │ │ │ │ ├── UserItemRepository.java │ │ │ │ │ ├── UserLoginBonusRepository.java │ │ │ │ │ ├── UserMapRepository.java │ │ │ │ │ ├── UserMusicDetailRepository.java │ │ │ │ │ ├── UserOptionRepository.java │ │ │ │ │ ├── UserPlaylogRepository.java │ │ │ │ │ └── UserUdemaeRepository.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ └── impl │ │ │ │ │ ├── GetGameChargeHandler.java │ │ │ │ │ ├── GetGameEventHandler.java │ │ │ │ │ ├── GetGameNgMusicIdHandler.java │ │ │ │ │ ├── GetGameRankingHandler.java │ │ │ │ │ ├── GetGameSettingHandler.java │ │ │ │ │ ├── GetGameTournamentInfoHandler.java │ │ │ │ │ ├── GetTransferFriendHandler.java │ │ │ │ │ ├── GetUserActivityHandler.java │ │ │ │ │ ├── GetUserCardHandler.java │ │ │ │ │ ├── GetUserCharacterHandler.java │ │ │ │ │ ├── GetUserChargeHandler.java │ │ │ │ │ ├── GetUserCourseHandler.java │ │ │ │ │ ├── GetUserDataHandler.java │ │ │ │ │ ├── GetUserExtendHandler.java │ │ │ │ │ ├── GetUserFavoriteHandler.java │ │ │ │ │ ├── GetUserFriendSeasonRankingHandler.java │ │ │ │ │ ├── GetUserGhostHandler.java │ │ │ │ │ ├── GetUserItemHandler.java │ │ │ │ │ ├── GetUserLoginBonusHandler.java │ │ │ │ │ ├── GetUserMapHandler.java │ │ │ │ │ ├── GetUserMusicHandler.java │ │ │ │ │ ├── GetUserOptionHandler.java │ │ │ │ │ ├── GetUserPreviewHandler.java │ │ │ │ │ ├── GetUserRatingHandler.java │ │ │ │ │ ├── GetUserRegionHandler.java │ │ │ │ │ ├── UploadUserPhotoHandler.java │ │ │ │ │ ├── UploadUserPlaylogHandler.java │ │ │ │ │ ├── UpsertUserAllHandler.java │ │ │ │ │ ├── UserLoginHandler.java │ │ │ │ │ └── UserLogoutHandler.java │ │ │ ├── model │ │ │ │ ├── gamedata │ │ │ │ │ ├── GameCharge.java │ │ │ │ │ └── GameEvent.java │ │ │ │ ├── request │ │ │ │ │ ├── UploadUserPhoto.java │ │ │ │ │ ├── UploadUserPlaylog.java │ │ │ │ │ ├── UpsertUserAll.java │ │ │ │ │ └── data │ │ │ │ │ │ ├── UserAll.java │ │ │ │ │ │ └── UserPhoto.java │ │ │ │ ├── response │ │ │ │ │ ├── GetGameSettingResp.java │ │ │ │ │ ├── GetUserPreviewResp.java │ │ │ │ │ ├── UserLoginResp.java │ │ │ │ │ └── data │ │ │ │ │ │ ├── GameSetting.java │ │ │ │ │ │ ├── UserActivity.java │ │ │ │ │ │ ├── UserMusic.java │ │ │ │ │ │ └── UserRating.java │ │ │ │ └── userdata │ │ │ │ │ ├── MapEncountNpc.java │ │ │ │ │ ├── UserAct.java │ │ │ │ │ ├── UserCharacter.java │ │ │ │ │ ├── UserCharge.java │ │ │ │ │ ├── UserCourse.java │ │ │ │ │ ├── UserDetail.java │ │ │ │ │ ├── UserExtend.java │ │ │ │ │ ├── UserFavorite.java │ │ │ │ │ ├── UserFriendSeasonRanking.java │ │ │ │ │ ├── UserGeneralData.java │ │ │ │ │ ├── UserGhost.java │ │ │ │ │ ├── UserItem.java │ │ │ │ │ ├── UserLoginBonus.java │ │ │ │ │ ├── UserMap.java │ │ │ │ │ ├── UserMusicDetail.java │ │ │ │ │ ├── UserOption.java │ │ │ │ │ ├── UserPlaylog.java │ │ │ │ │ ├── UserRate.java │ │ │ │ │ └── UserUdemae.java │ │ │ └── util │ │ │ │ └── IntegerListConverter.java │ │ ├── ongeki │ │ │ ├── controller │ │ │ │ ├── OngekiController.java │ │ │ │ └── OngekiControllerAdvice.java │ │ │ ├── dao │ │ │ │ ├── gamedata │ │ │ │ │ ├── GameCardRepository.java │ │ │ │ │ ├── GameCharaRepository.java │ │ │ │ │ ├── GameEventRepository.java │ │ │ │ │ ├── GameMusicRepository.java │ │ │ │ │ ├── GamePointRepository.java │ │ │ │ │ ├── GamePresentRepository.java │ │ │ │ │ ├── GameRewardRepository.java │ │ │ │ │ └── GameSkillRepository.java │ │ │ │ └── userdata │ │ │ │ │ ├── UserActivityRepository.java │ │ │ │ │ ├── UserBossRepository.java │ │ │ │ │ ├── UserCardRepository.java │ │ │ │ │ ├── UserChapterRepository.java │ │ │ │ │ ├── UserCharacterRepository.java │ │ │ │ │ ├── UserDataRepository.java │ │ │ │ │ ├── UserDeckRepository.java │ │ │ │ │ ├── UserEventMusicRepository.java │ │ │ │ │ ├── UserEventPointRepository.java │ │ │ │ │ ├── UserGeneralDataRepository.java │ │ │ │ │ ├── UserItemRepository.java │ │ │ │ │ ├── UserKopRepository.java │ │ │ │ │ ├── UserLoginBonusRepository.java │ │ │ │ │ ├── UserMemoryChapterRepository.java │ │ │ │ │ ├── UserMissionPointRepository.java │ │ │ │ │ ├── UserMusicDetailRepository.java │ │ │ │ │ ├── UserMusicItemRepository.java │ │ │ │ │ ├── UserOptionRepository.java │ │ │ │ │ ├── UserPlaylogRepository.java │ │ │ │ │ ├── UserScenarioRepository.java │ │ │ │ │ ├── UserStoryRepository.java │ │ │ │ │ ├── UserTechCountRepository.java │ │ │ │ │ ├── UserTechEventRepository.java │ │ │ │ │ ├── UserTradeItemRepository.java │ │ │ │ │ └── UserTrainingRoomRepository.java │ │ │ ├── handler │ │ │ │ ├── BaseHandler.java │ │ │ │ └── impl │ │ │ │ │ ├── GetClientBookkeepingHandler.java │ │ │ │ │ ├── GetClientTestmodeHandler.java │ │ │ │ │ ├── GetGameEventHandler.java │ │ │ │ │ ├── GetGameIdlistHandler.java │ │ │ │ │ ├── GetGameMessageHandler.java │ │ │ │ │ ├── GetGameMusicReleaseStateHandler.java │ │ │ │ │ ├── GetGamePointHandler.java │ │ │ │ │ ├── GetGamePresentHandler.java │ │ │ │ │ ├── GetGameRankingHandler.java │ │ │ │ │ ├── GetGameRewardHandler.java │ │ │ │ │ ├── GetGameSettingHandler.java │ │ │ │ │ ├── GetGameTechMusicHandler.java │ │ │ │ │ ├── GetUserActivityHandler.java │ │ │ │ │ ├── GetUserBossHandler.java │ │ │ │ │ ├── GetUserBpBaseHandler.java │ │ │ │ │ ├── GetUserCardHandler.java │ │ │ │ │ ├── GetUserChapterHandler.java │ │ │ │ │ ├── GetUserCharacterHandler.java │ │ │ │ │ ├── GetUserDataHandler.java │ │ │ │ │ ├── GetUserDeckByKeyHandler.java │ │ │ │ │ ├── GetUserEventMusicHandler.java │ │ │ │ │ ├── GetUserEventPointHandler.java │ │ │ │ │ ├── GetUserEventRankingHandler.java │ │ │ │ │ ├── GetUserItemHandler.java │ │ │ │ │ ├── GetUserKopHandler.java │ │ │ │ │ ├── GetUserLoginBonusHandler.java │ │ │ │ │ ├── GetUserMemoryChapterHandler.java │ │ │ │ │ ├── GetUserMissionPointHandler.java │ │ │ │ │ ├── GetUserMusicHandler.java │ │ │ │ │ ├── GetUserMusicItemHandler.java │ │ │ │ │ ├── GetUserOptionHandler.java │ │ │ │ │ ├── GetUserPreviewHandler.java │ │ │ │ │ ├── GetUserRatinglogListHandler.java │ │ │ │ │ ├── GetUserRecentRatingHandler.java │ │ │ │ │ ├── GetUserRegionHandler.java │ │ │ │ │ ├── GetUserRivalHandler.java │ │ │ │ │ ├── GetUserRivalMusicHandler.java │ │ │ │ │ ├── GetUserScenarioHandler.java │ │ │ │ │ ├── GetUserStoryHandler.java │ │ │ │ │ ├── GetUserTechCountHandler.java │ │ │ │ │ ├── GetUserTechEventHandler.java │ │ │ │ │ ├── GetUserTechEventRankingHandler.java │ │ │ │ │ ├── GetUserTradeItemHandler.java │ │ │ │ │ ├── GetUserTrainingRoomByKeyHandler.java │ │ │ │ │ └── UpsertUserAllHandler.java │ │ │ └── model │ │ │ │ ├── common │ │ │ │ ├── GpProductID.java │ │ │ │ ├── IdListType.java │ │ │ │ └── ItemType.java │ │ │ │ ├── gamedata │ │ │ │ ├── GameCard.java │ │ │ │ ├── GameChara.java │ │ │ │ ├── GameEvent.java │ │ │ │ ├── GameMusic.java │ │ │ │ ├── GamePoint.java │ │ │ │ ├── GamePresent.java │ │ │ │ ├── GameReward.java │ │ │ │ └── GameSkill.java │ │ │ │ ├── request │ │ │ │ └── UpsertUserAll.java │ │ │ │ ├── response │ │ │ │ ├── CodeResp.java │ │ │ │ ├── GetGameSettingResp.java │ │ │ │ ├── GetUserPreviewResp.java │ │ │ │ └── data │ │ │ │ │ ├── GameEventItem.java │ │ │ │ │ ├── GameIdListItem.java │ │ │ │ │ ├── GameRankingItem.java │ │ │ │ │ ├── GameSetting.java │ │ │ │ │ ├── UserEventRankingItem.java │ │ │ │ │ ├── UserMusicListItem.java │ │ │ │ │ └── UserTechEventRankingItem.java │ │ │ │ └── userdata │ │ │ │ ├── UserActivity.java │ │ │ │ ├── UserBoss.java │ │ │ │ ├── UserCard.java │ │ │ │ ├── UserChapter.java │ │ │ │ ├── UserCharacter.java │ │ │ │ ├── UserData.java │ │ │ │ ├── UserDeck.java │ │ │ │ ├── UserEventMusic.java │ │ │ │ ├── UserEventPoint.java │ │ │ │ ├── UserGeneralData.java │ │ │ │ ├── UserItem.java │ │ │ │ ├── UserKop.java │ │ │ │ ├── UserLoginBonus.java │ │ │ │ ├── UserMemoryChapter.java │ │ │ │ ├── UserMissionPoint.java │ │ │ │ ├── UserMusicDetail.java │ │ │ │ ├── UserMusicItem.java │ │ │ │ ├── UserOption.java │ │ │ │ ├── UserPlaylog.java │ │ │ │ ├── UserScenario.java │ │ │ │ ├── UserStory.java │ │ │ │ ├── UserTechCount.java │ │ │ │ ├── UserTechEvent.java │ │ │ │ ├── UserTradeItem.java │ │ │ │ └── UserTrainingRoom.java │ │ └── util │ │ │ ├── AquaConst.java │ │ │ ├── ByteBufUtil.java │ │ │ ├── Compression.java │ │ │ ├── URIEncoder.java │ │ │ ├── VersionInfo.java │ │ │ ├── VersionUtil.java │ │ │ └── jackson │ │ │ ├── AccessCodeSerializer.java │ │ │ ├── BasicMapper.java │ │ │ ├── BooleanNumberDeserializer.java │ │ │ ├── BooleanNumberSerializer.java │ │ │ ├── BooleanStringSerializer.java │ │ │ ├── ByteBufSerializer.java │ │ │ ├── StringMapper.java │ │ │ └── ZonedDateTimeDeserializer.java │ │ └── spring │ │ ├── configuration │ │ └── Config.java │ │ ├── data │ │ └── OffsetPageRequest.java │ │ └── util │ │ └── AutoChecker.java └── resources │ ├── application.properties │ ├── billing.der │ ├── db │ └── migration │ │ ├── mysql │ │ ├── V10__move_diva_pv_list_to_db.sql │ │ ├── V11__add_pv_diff_and_reward_to_contest.sql │ │ ├── V12__chuni_event_add_enable.sql │ │ ├── V13__add_chuni_legacy_event.sql │ │ ├── V14__add_mega_39_list.sql │ │ ├── V15__ongeki_init.sql │ │ ├── V16__ongeki_game_data.sql │ │ ├── V17__addition_ongeki_game_data.sql │ │ ├── V18__add_default_reboot_time.sql │ │ ├── V19__add_chuni_general_data.sql │ │ ├── V1__init_db.sql │ │ ├── V20__add_chuni_character_and_skill.sql │ │ ├── V21__fix_incorrect_add_image.sql │ │ ├── V22__add_ongeki_summer_table.sql │ │ ├── V23__add_ongeki_summer_data.sql │ │ ├── V24__fix_ongeki_user_story_table.sql │ │ ├── V25__add_client_setting.sql │ │ ├── V26__add_chuni_am_event.sql │ │ ├── V27__add_chuni_am_music.sql │ │ ├── V28__add_maimai_table.sql │ │ ├── V29__add_chuni_more_event.sql │ │ ├── V2__property_table.sql │ │ ├── V30__add_chuni_more_songs.sql │ │ ├── V31__add_maimai2_table.sql │ │ ├── V32__add_ongeki_redplus_data.sql │ │ ├── V33__add_ongeki_redplus_chara_card.sql │ │ ├── V34__add_chuni_para_skill_chara.sql │ │ ├── V35__add_chuni_music_levels.sql │ │ ├── V36__add_ongeki_redplus_table.sql │ │ ├── V37__add_ongeki_a112_event_music.sql │ │ ├── V38__fix_ongeki_user_option_table.sql │ │ ├── V39__add_ongeki_a116_event_card_music.sql │ │ ├── V3__fix_chuni_music_detail_constraint.sql │ │ ├── V40__add_chuni_a020_event_music_musiclv.sql │ │ ├── V41__add_chuni_a021_data.sql │ │ ├── V42__add_chuni_a023_data.sql │ │ ├── V43__add_ongeki_a124_data.sql │ │ ├── V44__fix_chuni_event_popup.sql │ │ ├── V45__add_ongeki_redplus_properties.sql │ │ ├── V46__add_chuni_a025_data.sql │ │ ├── V47__add_maimai2_spp_table.sql │ │ ├── V48__add_maimai2_more_table.sql │ │ ├── V49__add_chuni_a027_data.sql │ │ ├── V4__correct_pv_entry_date.sql │ │ ├── V50__add_ongeki_a128_data.sql │ │ ├── V51__add_chuni_a028_data.sql │ │ ├── V52__add_ongeki_a129_data.sql │ │ ├── V53__add_chuni_a029_data.sql │ │ ├── V54__add_ongeki_a132_data.sql │ │ ├── V55__add_chuni_a031_data.sql │ │ ├── V56__extend_reboot_time.sql │ │ ├── V57__add_maimai2_general_table.sql │ │ ├── V58__fix_sqlite_table_references.sql │ │ ├── V59__rename_maimai2_rate_table.sql │ │ ├── V5__diva_profile_add_border_and_rival.sql │ │ ├── V60__add_maimai2_splash_events.sql │ │ ├── V61__add_maimai2_splash_p_event.sql │ │ ├── V62__add_chuni_a032_data.sql │ │ ├── V63__fix_maimai2_spp_table.sql │ │ ├── V64__fix_ongeki_bright.sql │ │ ├── V65__add_ongeki_bright_data.sql │ │ ├── V66__cleanup_tables.sql │ │ ├── V67__delete_unobtainable_ongeki_cards.sql │ │ ├── V68__add_ongeki_a002_a004_music_event.sql │ │ ├── V69__disable_ongeki_red_plus_announce.sql │ │ ├── V6__add_hard_song.sql │ │ ├── V70__add_ongeki_a008_music_event.sql │ │ ├── V71__disable_ongeki_bright_announce.sql │ │ ├── V72__add_ongeki_a016_data.sql │ │ ├── V73__add_maimai2_univ_table.sql │ │ ├── V74__add_maimai2_univ_events.sql │ │ ├── V75__add_ongeki_a009_a012_music_event.sql │ │ ├── V76__add_chusan_table.sql │ │ ├── V77__add_chusan_events.sql │ │ ├── V78__add_chusan_charge.sql │ │ ├── V79__add_ongeki_memory_table.sql │ │ ├── V7__add_diva_session_stage_result_index.sql │ │ ├── V80__add_ongeki_memory_chara.sql │ │ ├── V81__add_chusan_newplus_events.sql │ │ ├── V82__add_maimai2_d061_events.sql │ │ ├── V83__add_maimai2_univp_table.sql │ │ ├── V84__add_maimai2_univp_events.sql │ │ ├── V85__add_chusan_api_table.sql │ │ ├── V86__add_chusan_api_music.sql │ │ ├── V87__add_chusan_api_music_level.sql │ │ ├── V88__add_chusan_api_chara.sql │ │ ├── V89__add_chusan_api_trophy.sql │ │ ├── V8__drop_player_rating_column_in_course.sql │ │ ├── V90__add_chusan_api_nameplate.sql │ │ ├── V91__add_chusan_api_sysvoice.sql │ │ ├── V92__add_chusan_api_mapicon.sql │ │ ├── V93__add_chusan_api_frame.sql │ │ ├── V94__add_chusan_api_avatar.sql │ │ └── V9__add_more_chuni_song_info.sql │ │ └── sqlite │ │ ├── V10__move_diva_pv_list_to_db.sql │ │ ├── V11__add_pv_diff_and_reward_to_contest.sql │ │ ├── V12__chuni_event_add_enable.sql │ │ ├── V13__add_chuni_legacy_event.sql │ │ ├── V14__add_mega_39_list.sql │ │ ├── V15__ongeki_init.sql │ │ ├── V16__ongeki_game_data.sql │ │ ├── V17__addition_ongeki_game_data.sql │ │ ├── V18__add_default_reboot_time.sql │ │ ├── V19__add_chuni_general_data.sql │ │ ├── V1__init_db.sql │ │ ├── V20__add_chuni_character_and_skill.sql │ │ ├── V21__fix_incorrect_add_image.sql │ │ ├── V22__add_ongeki_summer_table.sql │ │ ├── V23__add_ongeki_summer_data.sql │ │ ├── V24__fix_ongeki_user_story_table.sql │ │ ├── V25__add_client_setting.sql │ │ ├── V26__add_chuni_am_event.sql │ │ ├── V27__add_chuni_am_music.sql │ │ ├── V28__add_maimai_table.sql │ │ ├── V29__add_chuni_more_event.sql │ │ ├── V2__property_table.sql │ │ ├── V30__add_chuni_more_songs.sql │ │ ├── V31__add_maimai2_table.sql │ │ ├── V32__add_ongeki_redplus_data.sql │ │ ├── V33__add_ongeki_redplus_chara_card.sql │ │ ├── V34__add_chuni_para_skill_chara.sql │ │ ├── V35__add_chuni_music_levels.sql │ │ ├── V36__add_ongeki_redplus_table.sql │ │ ├── V37__add_ongeki_a112_event_music.sql │ │ ├── V38__fix_ongeki_user_option_table.sql │ │ ├── V39__add_ongeki_a116_event_card_music.sql │ │ ├── V3__fix_chuni_music_detail_constraint.sql │ │ ├── V40__add_chuni_a020_event_music_musiclv.sql │ │ ├── V41__add_chuni_a021_data.sql │ │ ├── V42__add_chuni_a023_data.sql │ │ ├── V43__add_ongeki_a124_data.sql │ │ ├── V44__fix_chuni_event_popup.sql │ │ ├── V45__add_ongeki_redplus_properties.sql │ │ ├── V46__add_chuni_a025_data.sql │ │ ├── V47__add_maimai2_spp_table.sql │ │ ├── V48__add_maimai2_more_table.sql │ │ ├── V49__add_chuni_a027_data.sql │ │ ├── V4__correct_pv_entry_date.sql │ │ ├── V50__add_ongeki_a128_data.sql │ │ ├── V51__add_chuni_a028_data.sql │ │ ├── V52__add_ongeki_a129_data.sql │ │ ├── V53__add_chuni_a029_data.sql │ │ ├── V54__add_ongeki_a132_data.sql │ │ ├── V55__add_chuni_a031_data.sql │ │ ├── V56__extend_reboot_time.sql │ │ ├── V57__add_maimai2_general_table.sql │ │ ├── V58__fix_sqlite_table_references.sql │ │ ├── V59__rename_maimai2_rate_table.sql │ │ ├── V5__diva_profile_add_border_and_rival.sql │ │ ├── V5__diva_profile_add_border_and_rival.sql.conf │ │ ├── V60__add_maimai2_splash_events.sql │ │ ├── V61__add_maimai2_splash_p_event.sql │ │ ├── V62__add_chuni_a032_data.sql │ │ ├── V63__fix_maimai2_spp_table.sql │ │ ├── V64__fix_ongeki_bright.sql │ │ ├── V65__add_ongeki_bright_data.sql │ │ ├── V66__cleanup_tables.sql │ │ ├── V66__cleanup_tables.sql.conf │ │ ├── V67__delete_unobtainable_ongeki_cards.sql │ │ ├── V68__add_ongeki_a002_a004_music_event.sql │ │ ├── V69__disable_ongeki_red_plus_announce.sql │ │ ├── V6__add_hard_song.sql │ │ ├── V70__add_ongeki_a008_music_event.sql │ │ ├── V71__disable_ongeki_bright_announce.sql │ │ ├── V72__add_ongeki_a016_data.sql │ │ ├── V73__add_maimai2_univ_table.conf │ │ ├── V73__add_maimai2_univ_table.sql │ │ ├── V74__add_maimai2_univ_events.sql │ │ ├── V75__add_ongeki_a009_a012_music_event.sql │ │ ├── V76__add_chusan_table.sql │ │ ├── V77__add_chusan_events.sql │ │ ├── V78__add_chusan_charge.sql │ │ ├── V79__add_ongeki_memory_table.sql │ │ ├── V7__add_diva_session_stage_result_index.sql │ │ ├── V80__add_ongeki_memory_chara.sql │ │ ├── V81__add_chusan_newplus_events.sql │ │ ├── V82__add_maimai2_d061_events.sql │ │ ├── V83__add_maimai2_univp_table.sql │ │ ├── V84__add_maimai2_univp_events.sql │ │ ├── V85__add_chusan_api_table.sql │ │ ├── V86__add_chusan_api_music.sql │ │ ├── V87__add_chusan_api_music_level.sql │ │ ├── V88__add_chusan_api_chara.sql │ │ ├── V89__add_chusan_api_trophy.sql │ │ ├── V8__drop_player_rating_column_in_course.sql │ │ ├── V90__add_chusan_api_nameplate.sql │ │ ├── V91__add_chusan_api_sysvoice.sql │ │ ├── V92__add_chusan_api_mapicon.sql │ │ ├── V93__add_chusan_api_frame.sql │ │ ├── V94__add_chusan_api_avatar.sql │ │ └── V9__add_more_chuni_song_info.sql │ └── server.p12 └── test ├── java └── icu │ └── samnyan │ └── aqua │ ├── AquaServerApplicationTests.java │ ├── FlywayTestConfig.java │ ├── sega │ ├── chunithm │ │ └── dao │ │ │ └── userdata │ │ │ └── ChuniRepositoryTest.java │ ├── diva │ │ └── model │ │ │ └── userdata │ │ │ └── DivaRepositoryTest.java │ ├── general │ │ └── dao │ │ │ └── CardRepositoryTest.java │ └── ongeki │ │ └── dao │ │ └── userdata │ │ └── OngekiRepositoryTest.java │ └── util │ └── CardHelper.java └── resources ├── application-testMysql.properties ├── application-testSqlite.properties └── application.properties /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/** 5 | !**/src/test/** 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | 30 | ### VS Code ### 31 | .vscode/ 32 | 33 | ### Dev env ### 34 | /application.properties 35 | /aqua*.jar 36 | 37 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:17.0.2-slim 2 | WORKDIR /aqua 3 | COPY ./target/aqua.jar /aqua/ 4 | ENTRYPOINT ["java","-jar","/aqua/aqua.jar"] 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Aqua Server 2 | Multipurpose game server powered by Spring Boot, for ALL.Net based games 3 | 4 | This is a forked maintaining attempt of the [domeori-aqua](https://dev.s-ul.net/domeori/aqua) 5 | 6 | Using docker to get simplified stat up 7 | 8 | # Usage 9 | 10 | - Download `datasource.zip` in the latest release and unzip 11 | - edit file `config/application.properties:15`, change `allnet.server.host` to the ipv4 address of your docker machine 12 | - be sure port 80, 8443, 22345 is opened 13 | - `datasource$ sudo docker-compose up` 14 | 15 | # Data file 16 | - Directory `config/` and `data/` contains your own configuration and userdata, you can get help in [domeori's project](https://dev.s-ul.net/domeori/aqua) 17 | 18 | # Notice 19 | - Because of using docker, `allnet.server.host` in `config/application.properties:15` should be set as your server host 20 | -------------------------------------------------------------------------------- /data/db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kanajin/Aqua-docker/70305f2759e818288b27090ccfd935e59e114a4a/data/db.sqlite -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | 3 | services: 4 | 5 | aqua: 6 | image: kanajin/aqua:latest 7 | restart: unless-stopped 8 | volumes: 9 | - "./config/application.properties:/aqua/config/application.properties" 10 | - "./data/db.sqlite:/aqua/data/db.sqlite" 11 | - "./data/diva_musiclist.json:/aqua/data/diva_musiclist.json" 12 | ports: 13 | - "80:80" 14 | - "22345:22345" 15 | - "8443:8443" -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/AquaServerApplication.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua; 2 | 3 | import icu.samnyan.aqua.sega.aimedb.AimeDbServer; 4 | import icu.samnyan.aqua.spring.util.AutoChecker; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.context.ConfigurableApplicationContext; 8 | 9 | @SpringBootApplication 10 | public class AquaServerApplication { 11 | 12 | public static void main(String[] args) throws Exception { 13 | ConfigurableApplicationContext ctx = SpringApplication.run(AquaServerApplication.class, args); 14 | 15 | final AimeDbServer aimeDbServer = ctx.getBean(AimeDbServer.class); 16 | aimeDbServer.start(); 17 | 18 | final AutoChecker checker = ctx.getBean(AutoChecker.class); 19 | checker.check(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/controller/ApiControllerAdvice.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.controller; 2 | 3 | import org.springframework.http.ResponseEntity; 4 | import org.springframework.web.bind.annotation.ExceptionHandler; 5 | import org.springframework.web.bind.annotation.RestControllerAdvice; 6 | 7 | import java.util.NoSuchElementException; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @RestControllerAdvice(basePackages = "icu.samnyan.aqua.api") 13 | public class ApiControllerAdvice { 14 | 15 | @ExceptionHandler(NoSuchElementException.class) 16 | public ResponseEntity noSuchElement() { 17 | return ResponseEntity.notFound().build(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/MessageResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class MessageResponse { 7 | private String message = "ok"; 8 | 9 | public MessageResponse(String message) { 10 | this.message = message; 11 | } 12 | 13 | public MessageResponse() { 14 | } 15 | 16 | public String getMessage() { 17 | return message; 18 | } 19 | 20 | public void setMessage(String message) { 21 | this.message = message; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/ReducedPageResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import java.util.Collection; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Getter 12 | @Setter 13 | public class ReducedPageResponse { 14 | private Collection content; 15 | private Integer page; 16 | private Integer totalPages; 17 | private Long totalElements; 18 | 19 | public ReducedPageResponse(Collection content, Integer page, Integer totalPages, Long totalElements) { 20 | this.content = content; 21 | this.page = page; 22 | this.totalPages = totalPages; 23 | this.totalElements = totalElements; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/DatePair.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.req.sega.diva; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.time.LocalDateTime; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class DatePair { 17 | @JsonProperty("Start") 18 | private LocalDateTime Start; 19 | @JsonProperty("End") 20 | private LocalDateTime End; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/ModuleEntry.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.req.sega.diva; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.time.LocalDateTime; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class ModuleEntry { 17 | @JsonProperty("ID") 18 | private int ID; 19 | @JsonProperty("Name") 20 | private String Name; 21 | @JsonProperty("Price") 22 | private int Price; 23 | @JsonProperty("ReleaseDate") 24 | private LocalDateTime ReleaseDate; 25 | @JsonProperty("EndDate") 26 | private LocalDateTime EndDate; 27 | @JsonProperty("SortOrder") 28 | private int SortOrder; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListEntry.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.req.sega.diva; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class PvListEntry { 15 | @JsonProperty("PVID") 16 | private int PVID; 17 | @JsonProperty("Version") 18 | private int Version; 19 | @JsonProperty("Edition") 20 | private int Edition; 21 | @JsonProperty("AdvDemo") 22 | private DatePair AdvDemo; 23 | @JsonProperty("Playable") 24 | private DatePair Playable; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.req.sega.diva; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.time.LocalDateTime; 9 | import java.util.List; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class PvListRequest { 18 | @JsonProperty("CreationDate") 19 | private LocalDateTime CreationDate; 20 | @JsonProperty("Easy") 21 | private List Easy; 22 | @JsonProperty("Normal") 23 | private List Normal; 24 | @JsonProperty("Hard") 25 | private List Hard; 26 | @JsonProperty("Extreme") 27 | private List Extreme; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RatingItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.resp.sega.chuni.v1; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class RatingItem { 14 | 15 | private int musicId; 16 | 17 | private String musicName; 18 | 19 | private String artistName; 20 | 21 | private int level; 22 | 23 | private int score; 24 | 25 | private int ratingBase; 26 | 27 | private int rating; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RatingItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.resp.sega.chuni.v2; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class RatingItem { 14 | 15 | private int musicId; 16 | 17 | private String musicName; 18 | 19 | private String artistName; 20 | 21 | private int level; 22 | 23 | private int score; 24 | 25 | private int ratingBase; 26 | 27 | private int rating; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PlayerInfo.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.resp.sega.diva; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | @Data 9 | public class PlayerInfo { 10 | private int pdId; 11 | private String playerName; 12 | private int vocaloidPoints; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PvRankRecord.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.api.model.resp.sega.diva; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * @author samnyan (privateamusement@protonmail.com) 8 | */ 9 | @Data 10 | @AllArgsConstructor 11 | public class PvRankRecord { 12 | private long id; 13 | private String playerName; 14 | private int score; 15 | private int attain; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/aimedb/exception/InvalidRequestException.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.aimedb.exception; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class InvalidRequestException extends Exception { 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/aimedb/handler/BaseHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.aimedb.handler; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | import io.netty.buffer.ByteBuf; 5 | import io.netty.channel.ChannelHandlerContext; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public interface BaseHandler { 11 | 12 | void handle(ChannelHandlerContext ctx, ByteBuf msg) throws JsonProcessingException; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/aimedb/util/AimeDbUtil.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.aimedb.util; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | 5 | import java.nio.charset.StandardCharsets; 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | public class AimeDbUtil { 13 | 14 | public static Map getBaseInfo(ByteBuf in) { 15 | Map resultMap = new HashMap<>(); 16 | resultMap.put("gameId", in.toString(0x000a, 0x000e - 0x000a, StandardCharsets.US_ASCII)); 17 | resultMap.put("keychipId", in.toString(0x0014, 0x001f - 0x0014, StandardCharsets.US_ASCII)); 18 | return resultMap; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/allnet/model/request/PowerOnRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.allnet.model.request; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @NoArgsConstructor 12 | @AllArgsConstructor 13 | public class PowerOnRequest { 14 | 15 | private String game_id; 16 | private String ver; 17 | private String serial; 18 | private String ip; 19 | private String firm_ver; 20 | private String boot_ver; 21 | private String encode; 22 | private String format_ver; 23 | private String hops; 24 | private String token; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/allnet/model/response/PowerOnResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.allnet.model.response; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public interface PowerOnResponse { 7 | String toString(); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/billing/util/Decoder.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.billing.util; 2 | 3 | import java.nio.charset.StandardCharsets; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public class Decoder { 11 | 12 | public static Map decode(byte[] src) { 13 | //byte[] bytes = Base64.getMimeDecoder().decode(src); 14 | 15 | byte[] output = RawCompression.decompress(src); 16 | 17 | String outputString = new String(output, StandardCharsets.UTF_8).trim(); 18 | String[] split = outputString.split("&"); 19 | Map resultMap = new HashMap<>(); 20 | for (String s : 21 | split) { 22 | String[] kv = s.split("="); 23 | resultMap.put(kv[0], kv[1]); 24 | } 25 | 26 | return resultMap; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.gamedata.Character; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("ChuniGameCharacterRepository") 11 | public interface GameCharacterRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameCharacterSkillRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.gamedata.CharacterSkill; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("ChuniGameCharacterSkillRepository") 11 | public interface GameCharacterSkillRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameChargeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameCharge; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("ChuniGameChargeRepository") 11 | public interface GameChargeRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameEventRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameEvent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("ChuniGameEventRepository") 13 | public interface GameEventRepository extends JpaRepository { 14 | 15 | List findByEnable(boolean enable); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMessageRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.gamedata.GameMessage; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("ChuniGameMessageRepository") 11 | public interface GameMessageRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/gamedata/GameMusicRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("ChuniGameMusicRepository") 13 | public interface GameMusicRepository extends JpaRepository { 14 | 15 | Optional findByMusicId(int musicId); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserActivityRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserActivity; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository 15 | public interface UserActivityRepository extends JpaRepository { 16 | 17 | Optional findTopByUserAndActivityIdAndKindOrderByIdDesc(UserData user, int activityId, int kind); 18 | 19 | List findAllByUser_Card_ExtIdAndKindOrderBySortNumberDesc(Long extId, int kind); 20 | 21 | List findAllByUser_Card_ExtId(Long extId); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserChargeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserCharge; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository 15 | public interface UserChargeRepository extends JpaRepository { 16 | List findByUser_Card_ExtId(Long extId); 17 | 18 | Optional findByUserAndChargeId(UserData extId, int chargeId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataExRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDataEx; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface UserDataExRepository extends JpaRepository { 15 | 16 | Optional findByUser(UserData user); 17 | 18 | Optional findByUser_Card_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.general.model.Card; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface UserDataRepository extends JpaRepository { 15 | 16 | Optional findByCard(Card card); 17 | 18 | Optional findByCard_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserDuelRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserDuel; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository 15 | public interface UserDuelRepository extends JpaRepository { 16 | 17 | Optional findTopByUserAndDuelIdOrderByIdDesc(UserData user, int duelId); 18 | 19 | List findByUser_Card_ExtId(Long extId); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionExRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOptionEx; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface UserGameOptionExRepository extends JpaRepository { 15 | Optional findByUser(UserData user); 16 | 17 | Optional findByUser_Card_ExtId(Long extId); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGameOptionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGameOption; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface UserGameOptionRepository extends JpaRepository { 15 | 16 | Optional findByUser(UserData user); 17 | 18 | Optional findByUser_Card_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserGeneralDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserGeneralData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChuniUserGeneralDataRepository") 14 | public interface UserGeneralDataRepository extends JpaRepository { 15 | 16 | Optional findByUserAndPropertyKey(UserData user, String key); 17 | 18 | Optional findByUser_Card_ExtIdAndPropertyKey(Long extId, String key); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMapRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMap; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository 15 | public interface UserMapRepository extends JpaRepository { 16 | List findAllByUser(UserData user); 17 | 18 | List findAllByUser_Card_ExtId(Long extId); 19 | 20 | Optional findTopByUserAndMapIdOrderByIdDesc(UserData user, int mapId); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/handler/BaseHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.handler; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public interface BaseHandler { 11 | 12 | String handle(Map request) throws JsonProcessingException; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientBookkeepingHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.handler.impl; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | @Component 9 | public class UpsertClientBookkeepingHandler { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientDevelopHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.handler.impl; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | @Component 9 | public class UpsertClientDevelopHandler { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientErrorHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.handler.impl; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | @Component 9 | public class UpsertClientErrorHandler { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/UpsertClientTestmodeHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.handler.impl; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | @Component 9 | public class UpsertClientTestmodeHandler { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/CharacterSkill.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.gamedata; 2 | 3 | import lombok.*; 4 | 5 | import javax.persistence.Entity; 6 | import javax.persistence.Id; 7 | import javax.persistence.Table; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "ChuniCharacterSkill") 14 | @Table(name = "chuni_game_skill") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class CharacterSkill implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | 27 | private String category; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Diff.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.gamedata; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public enum Diff { 7 | 8 | BASIC("BASIC"), 9 | ADVANCED("ADVANCED"), 10 | EXPERT("EXPERT"), 11 | MASTER("MASTER"), 12 | WE("WORLD'S END"); 13 | 14 | private String displayName; 15 | 16 | Diff(String displayName) { 17 | this.displayName = displayName; 18 | } 19 | 20 | public String displayName() { 21 | return displayName; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return displayName; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/Genre.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.gamedata; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public enum Genre { 7 | POPS_ANIME("POPS & ANIME"), 8 | GAME("GAME"), 9 | NICONICO("niconico"), 10 | TOUHOU("東方Project"), 11 | RESERVE2("Reserve2"), 12 | ORIGINAL("Original"), 13 | VARIETY("Variety"), 14 | IRODORI("イロドリミドリ"), 15 | KOTONOHA("言ノ葉Project"), 16 | GEKICHUMA("ゲキマイ"); 17 | 18 | 19 | private String displayName; 20 | 21 | Genre(String displayName) { 22 | this.displayName = displayName; 23 | } 24 | 25 | public String displayName() { 26 | return displayName; 27 | } 28 | 29 | @Override 30 | public String toString() { 31 | return displayName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSetting.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.requet; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class ClientSetting { 11 | private String placeId; 12 | private String clientId; 13 | private String placeName; 14 | private String regionId; 15 | private String regionName; 16 | private String allNetId; 17 | private String bordId; 18 | private String romVersion; 19 | private String dataVersion; 20 | private String dumpFileNum; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/requet/ClientSettingRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.requet; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class ClientSettingRequest { 11 | private ClientSetting clientSetting; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/CodeResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class CodeResp { 14 | private int returnCode; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/GetGameSettingResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.chunithm.model.response.data.GameSetting; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GetGameSettingResp { 16 | 17 | private GameSetting gameSetting; 18 | @JsonProperty("isDumpUpload") 19 | private boolean isDumpUpload; 20 | @JsonProperty("isAou") 21 | private boolean isAou; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/AllMusicMapItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response.data; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class AllMusicMapItem { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameRanking.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class GameRanking { 14 | private int id; 15 | private long point; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSale.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GameSale { 16 | 17 | private int orderId; 18 | 19 | private int type; 20 | 21 | private int id; 22 | // should be float number?? 23 | private int rate; 24 | 25 | private LocalDateTime startDate; 26 | 27 | private LocalDateTime endDate; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/GameSetting.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response.data; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class GameSetting { 15 | private int dataVersion; 16 | @JsonProperty("isMaintenance") 17 | private boolean isMaintenance; 18 | private int requestInterval; 19 | private String rebootStartTime; 20 | private String rebootEndTime; 21 | @JsonProperty("isBackgroundDistribute") 22 | private boolean isBackgroundDistribute; 23 | private int maxCountCharacter; 24 | private int maxCountItem; 25 | private int maxCountMusic; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chunithm/model/response/data/UserMusicListItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chunithm.model.response.data; 2 | 3 | import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMusicDetail; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UserMusicListItem { 17 | private int length; 18 | private List userMusicDetailList; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameAvatarAccRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.AvatarAcc; 4 | 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanGameAvatarAccRepository") 14 | public interface GameAvatarAccRepository extends JpaRepository { 15 | 16 | Optional findById(int trophyId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameCharacterRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.Character; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("ChusanGameCharacterRepository") 11 | public interface GameCharacterRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameChargeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.GameCharge; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("ChusanGameChargeRepository") 11 | public interface GameChargeRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameEventRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.GameEvent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("ChusanGameEventRepository") 13 | public interface GameEventRepository extends JpaRepository { 14 | 15 | List findByEnable(boolean enable); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameFrameRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.Frame; 4 | 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanGameFrameRepository") 14 | public interface GameFrameRepository extends JpaRepository { 15 | 16 | Optional findById(int trophyId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameMapIconRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.MapIcon; 4 | 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanGameMapIconRepository") 14 | public interface GameMapIconRepository extends JpaRepository { 15 | 16 | Optional findById(int mapIconId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameMusicRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.Music; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("ChusanGameMusicRepository") 13 | public interface GameMusicRepository extends JpaRepository { 14 | 15 | Optional findByMusicId(int musicId); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameNamePlateRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.NamePlate; 4 | 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanGameNamePlateRepository") 14 | public interface GameNamePlateRepository extends JpaRepository { 15 | 16 | Optional findById(int trophyId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameSystemVoiceRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.SystemVoice; 4 | 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanGameSystemVoiceRepository") 14 | public interface GameSystemVoiceRepository extends JpaRepository { 15 | 16 | Optional findById(int trophyId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/gamedata/GameTrophyRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.gamedata.Trophy; 4 | 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanGameTrophyRepository") 14 | public interface GameTrophyRepository extends JpaRepository { 15 | 16 | Optional findById(int trophyId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/userdata/UserChargeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharge; 4 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("ChusanUserChargeRepository") 15 | public interface UserChargeRepository extends JpaRepository { 16 | List findByUser_Card_ExtId(Long extId); 17 | 18 | Optional findByUserAndChargeId(UserData extId, int chargeId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/userdata/UserDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.general.model.Card; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanUserDataRepository") 14 | public interface UserDataRepository extends JpaRepository { 15 | 16 | Optional findByCard(Card card); 17 | 18 | Optional findByCard_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/userdata/UserDuelRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserDuel; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("ChusanUserDuelRepository") 15 | public interface UserDuelRepository extends JpaRepository { 16 | 17 | Optional findTopByUserAndDuelIdOrderByIdDesc(UserData user, int duelId); 18 | 19 | List findByUser_Card_ExtId(Long extId); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/userdata/UserGameOptionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserGameOption; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanUserGameOptionRepository") 14 | public interface UserGameOptionRepository extends JpaRepository { 15 | 16 | Optional findByUser(UserData user); 17 | 18 | Optional findByUser_Card_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/userdata/UserGeneralDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserGeneralData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("ChusanUserGeneralDataRepository") 14 | public interface UserGeneralDataRepository extends JpaRepository { 15 | 16 | Optional findByUserAndPropertyKey(UserData user, String key); 17 | 18 | Optional findByUser_Card_ExtIdAndPropertyKey(Long extId, String key); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/dao/userdata/UserMapAreaRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserMapArea; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository 15 | public interface UserMapAreaRepository extends JpaRepository { 16 | List findAllByUser(UserData user); 17 | 18 | List findAllByUser_Card_ExtId(Long extId); 19 | 20 | Optional findTopByUserAndMapAreaIdOrderByIdDesc(UserData user, int mapAreaId); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/handler/BaseHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.handler; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public interface BaseHandler { 11 | 12 | String handle(Map request) throws JsonProcessingException; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/AvatarAcc.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "AvatarAcc") 14 | @Table(name = "chusan_avatar") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class AvatarAcc implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | 27 | private int category; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/Frame.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "ChusanFrame") 14 | @Table(name = "chusan_frame") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class Frame implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/Genre.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public enum Genre { 7 | POPS_ANIME("POPS & ANIME"), 8 | GAME("GAME"), 9 | NICONICO("niconico"), 10 | TOUHOU("東方Project"), 11 | RESERVE2("Reserve2"), 12 | ORIGINAL("Original"), 13 | VARIETY("Variety"), 14 | IRODORI("イロドリミドリ"), 15 | KOTONOHA("言ノ葉Project"), 16 | GEKICHUMA("ゲキマイ"); 17 | 18 | private String displayName; 19 | 20 | Genre(String displayName) { 21 | this.displayName = displayName; 22 | } 23 | 24 | public String displayName() { 25 | return displayName; 26 | } 27 | 28 | @Override 29 | public String toString() { 30 | return displayName; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/MapIcon.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "ChusanMapIcon") 14 | @Table(name = "chusan_mapicon") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class MapIcon implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/NamePlate.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "ChusanNamePlate") 14 | @Table(name = "chusan_nameplate") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class NamePlate implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/SystemVoice.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "ChusanSystemVoice") 14 | @Table(name = "chusan_voice") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class SystemVoice implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/gamedata/Trophy.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "ChusanTrophy") 14 | @Table(name = "chusan_trophy") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class Trophy implements Serializable { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @Id 23 | private long id; 24 | 25 | private String name; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/response/CodeResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class CodeResp { 14 | private int returnCode; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/response/GetGameSettingResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.response; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.chusan.model.response.data.GameSetting; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GetGameSettingResp { 16 | 17 | private GameSetting gameSetting; 18 | @JsonProperty("isDumpUpload") 19 | private boolean isDumpUpload; 20 | @JsonProperty("isAou") 21 | private boolean isAou; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/response/data/GameRanking.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class GameRanking { 14 | private int id; 15 | private long point; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/chusan/model/response/data/UserMusicListItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.chusan.model.response.data; 2 | 3 | import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UserMusicListItem { 17 | private int length; 18 | private List userMusicDetailList; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/controller/DivaControllerAdvice.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.controller; 2 | 3 | import org.springframework.web.bind.annotation.ControllerAdvice; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | @ControllerAdvice(basePackages = "icu.samnyan.aqua.sega.diva") 9 | public class DivaControllerAdvice { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/ContestRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.gamedata.Contest; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository 13 | public interface ContestRepository extends JpaRepository { 14 | List findTop8ByEnable(boolean enable); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaCustomizeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.gamedata.DivaCustomize; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository 11 | public interface DivaCustomizeRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaModuleRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.gamedata.DivaModule; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository 13 | public interface DivaModuleRepository extends JpaRepository { 14 | Optional findById(int id); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/DivaPvRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.gamedata.Pv; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | /** 7 | * @author samnyan (privateamusement@protonmail.com) 8 | */ 9 | public interface DivaPvRepository extends JpaRepository { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/FestaRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.gamedata.Festa; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository 13 | public interface FestaRepository extends JpaRepository { 14 | List findTop2ByEnableOrderByCreateDateDesc(boolean enable); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/NgWordsRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.gamedata.NgWords; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository 11 | public interface NgWordsRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/gamedata/PvEntryRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.common.Difficulty; 4 | import icu.samnyan.aqua.sega.diva.model.gamedata.PvEntry; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface PvEntryRepository extends JpaRepository { 15 | List findByDifficulty(Difficulty difficulty); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/GameSessionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.GameSession; 4 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface GameSessionRepository extends JpaRepository { 15 | Optional findByPdId(PlayerProfile profile); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayLogRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayLog; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | import org.springframework.data.jpa.repository.JpaRepository; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository 13 | public interface PlayLogRepository extends JpaRepository { 14 | Page findByPdId_PdIdOrderByDateTimeDesc(int pdId, Pageable page); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerContestRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerContest; 4 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | 7 | import java.util.List; 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | public interface PlayerContestRepository extends JpaRepository { 14 | Optional findByPdIdAndContestId(PlayerProfile pdId, int contestId); 15 | 16 | List findTop4ByPdIdOrderByLastUpdateTimeDesc(PlayerProfile pdId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerInventoryRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerInventory; 4 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface PlayerInventoryRepository extends JpaRepository { 15 | Optional findByPdIdAndTypeAndValue(PlayerProfile profile, String type, String value); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerModuleRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerModule; 4 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; 5 | import org.springframework.data.domain.Page; 6 | import org.springframework.data.domain.Pageable; 7 | import org.springframework.data.jpa.repository.JpaRepository; 8 | import org.springframework.stereotype.Repository; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author samnyan (privateamusement@protonmail.com) 14 | */ 15 | @Repository 16 | public interface PlayerModuleRepository extends JpaRepository { 17 | List findByPdId(PlayerProfile profile); 18 | 19 | Page findByPdId_PdId(int pdId, Pageable pageable); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerProfileRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository 13 | public interface PlayerProfileRepository extends JpaRepository { 14 | 15 | Optional findByPdId(int pdId); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerPvCustomizeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerProfile; 4 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerPvCustomize; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository 14 | public interface PlayerPvCustomizeRepository extends JpaRepository { 15 | Optional findByPdIdAndPvId(PlayerProfile profile, int pvId); 16 | 17 | Optional findByPdId_PdIdAndPvId(int pdId, int pvId); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/dao/userdata/PlayerScreenShotRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | import java.util.List; 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | public interface PlayerScreenShotRepository extends JpaRepository { 13 | List findByPdId_PdId(int pdId); 14 | Optional findByFileName(String fileName); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/exception/ProfileNotFoundException.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.exception; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class ProfileNotFoundException extends RuntimeException { 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/exception/PvRecordDataException.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.exception; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class PvRecordDataException extends RuntimeException { 7 | public PvRecordDataException(String message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotExistException.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.exception; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class SessionNotExistException extends RuntimeException { 7 | 8 | public SessionNotExistException(String message) { 9 | super(message); 10 | } 11 | 12 | public SessionNotExistException() { 13 | super(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/exception/SessionNotFoundException.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.exception; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class SessionNotFoundException extends RuntimeException { 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/Internalizable.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public interface Internalizable { 7 | String toInternal(); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ChallengeKind.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ChallengeKind { 9 | UNDEFINED(-1), 10 | CLEAR(0), 11 | GREAT(1), 12 | EXCELLENT(2), 13 | PERFECT(3), 14 | COMPLETED(4); 15 | 16 | 17 | private int value; 18 | 19 | ChallengeKind(int i) { 20 | this.value = i; 21 | } 22 | 23 | public static ChallengeKind fromValue(int i) { 24 | for (ChallengeKind challengeKind : 25 | ChallengeKind.values()) { 26 | if (challengeKind.getValue() == i) return challengeKind; 27 | } 28 | return ChallengeKind.UNDEFINED; 29 | } 30 | 31 | @JsonValue 32 | public int getValue() { 33 | return value; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ClearResult.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ClearResult implements ValueEnum { 9 | NO_CLEAR(-1), 10 | MISS_TAKE(0), 11 | CHEAP(1), 12 | STANDARD(2), 13 | GREAT(3), 14 | EXCELLENT(4), 15 | PERFECT(5); 16 | 17 | 18 | private int value; 19 | 20 | ClearResult(int i) { 21 | this.value = i; 22 | } 23 | 24 | public static ClearResult fromValue(int i) { 25 | for (ClearResult clearResult : 26 | ClearResult.values()) { 27 | if (clearResult.getValue() == i) return clearResult; 28 | } 29 | return ClearResult.NO_CLEAR; 30 | } 31 | 32 | @JsonValue 33 | public int getValue() { 34 | return value; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestBorder.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ContestBorder { 9 | NONE(-1), 10 | BRONZE(0), 11 | SILVER(1), 12 | GOLD(2); 13 | 14 | 15 | private int value; 16 | 17 | ContestBorder(int i) { 18 | this.value = i; 19 | } 20 | 21 | @JsonValue 22 | public int getValue() { 23 | return value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestLeague.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ContestLeague { 9 | BEGINNER(0), 10 | INTERMEDIATE(1), 11 | ADVANCED(2), 12 | PROFESSIONAL(3); 13 | 14 | 15 | private int value; 16 | 17 | ContestLeague(int i) { 18 | this.value = i; 19 | } 20 | 21 | @JsonValue 22 | public int getValue() { 23 | return value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestNormaType.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ContestNormaType { 9 | SCORE(0), 10 | PERCENTAGE(1), 11 | COOL_PERCENTAGE(2); 12 | 13 | 14 | private int value; 15 | 16 | ContestNormaType(int i) { 17 | this.value = i; 18 | } 19 | 20 | @JsonValue 21 | public int getValue() { 22 | return value; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestProgress.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | @AllArgsConstructor 13 | public class ContestProgress { 14 | int pvId; 15 | int hardness; 16 | int edition; 17 | int stars; 18 | int scores; 19 | int version; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ContestStageLimit.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ContestStageLimit { 9 | UNLIMITED(0), 10 | LIMITED(1); 11 | 12 | 13 | private int value; 14 | 15 | ContestStageLimit(int i) { 16 | this.value = i; 17 | } 18 | 19 | @JsonValue 20 | public int getValue() { 21 | return value; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/Difficulty.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum Difficulty { 9 | UNDEFINED(-1), 10 | EASY(0), 11 | NORMAL(1), 12 | HARD(2), 13 | EXTREME(3); 14 | 15 | 16 | private int value; 17 | 18 | Difficulty(int i) { 19 | this.value = i; 20 | } 21 | 22 | public static Difficulty fromValue(int i) { 23 | for (Difficulty difficulty : 24 | Difficulty.values()) { 25 | if (difficulty.getValue() == i) return difficulty; 26 | } 27 | return Difficulty.UNDEFINED; 28 | } 29 | 30 | @JsonValue 31 | public int getValue() { 32 | return value; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/Edition.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum Edition { 9 | ORIGINAL(0), 10 | EXTRA(1); 11 | 12 | 13 | private int value; 14 | 15 | Edition(int i) { 16 | this.value = i; 17 | } 18 | 19 | public static Edition fromValue(int i) { 20 | for (Edition edition : 21 | Edition.values()) { 22 | if (edition.getValue() == i) return edition; 23 | } 24 | return Edition.ORIGINAL; 25 | } 26 | 27 | @JsonValue 28 | public int getValue() { 29 | return value; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/FestaKind.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum FestaKind { 9 | PINK_FESTA(0), 10 | GREEN_FESTA(1); 11 | 12 | 13 | private int value; 14 | 15 | FestaKind(int i) { 16 | this.value = i; 17 | } 18 | 19 | @JsonValue 20 | public int getValue() { 21 | return value; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/LevelInfo.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class LevelInfo { 14 | private int levelNumber; 15 | private int levelExp; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/PassStat.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum PassStat { 9 | MISS(0), 10 | SET(1), 11 | RESET(2), 12 | REISSUE(3); 13 | 14 | 15 | private int value; 16 | 17 | PassStat(int i) { 18 | this.value = i; 19 | } 20 | 21 | @JsonValue 22 | public int getValue() { 23 | return value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/PreStartResult.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum PreStartResult { 9 | SUCCESS(1), 10 | FAILED(0), 11 | CARD_TOO_NEW(-1), 12 | ALREADY_PLAYING(-2), 13 | NEW_REGISTRATION(-3), 14 | CARD_BANNED(-4); 15 | 16 | 17 | private int value; 18 | 19 | PreStartResult(int i) { 20 | this.value = i; 21 | } 22 | 23 | @JsonValue 24 | public int getValue() { 25 | return value; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/Result.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum Result { 9 | FAILED(0), 10 | SUCCESS(1); 11 | 12 | 13 | private int value; 14 | 15 | Result(int i) { 16 | this.value = i; 17 | } 18 | 19 | @JsonValue 20 | public int getValue() { 21 | return value; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/SortMode.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum SortMode { 9 | COMPLEXITY(0), 10 | NAME(1), 11 | RELEASE_DATE(2), 12 | MY_LIST_A(3), 13 | MY_LIST_B(4), 14 | MY_LIST_C(5); 15 | 16 | 17 | private int value; 18 | 19 | SortMode(int i) { 20 | this.value = i; 21 | } 22 | 23 | public static SortMode fromValue(int i) { 24 | for (SortMode sortMode : 25 | SortMode.values()) { 26 | if (sortMode.getValue() == i) return sortMode; 27 | } 28 | return SortMode.RELEASE_DATE; 29 | } 30 | 31 | @JsonValue 32 | public int getValue() { 33 | return value; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/StartMode.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public enum StartMode { 7 | PRE_START, 8 | START, 9 | CARD_PROCEDURE 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/ValueEnum.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public interface ValueEnum { 7 | int getValue(); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceTrialBid.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.common.attend; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * @author samnyan (privateamusement@protonmail.com) 8 | */ 9 | @Data 10 | @AllArgsConstructor 11 | public class GameBalanceTrialBid { 12 | private int pay; 13 | private int win; 14 | 15 | public String getString() { 16 | return pay + "," + win; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/Difficulty.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.gamedata; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import javax.persistence.*; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Entity(name = "DivaPvLevel") 14 | @Table(name = "diva_pv_info_level") 15 | @Data 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class Difficulty { 19 | @Id 20 | @GeneratedValue(strategy = GenerationType.IDENTITY) 21 | @JsonIgnore 22 | private long id; 23 | 24 | @JsonIgnore 25 | @ManyToOne 26 | @JoinColumn(name = "pv_id") 27 | private Pv pv; 28 | 29 | private int edition; 30 | 31 | private String level; 32 | 33 | private int version; 34 | 35 | private String diff; 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/gamedata/NgWords.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.gamedata; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import javax.persistence.*; 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Entity(name = "DivaNgWords") 15 | @Table(name = "diva_ng_words") 16 | @Data 17 | @AllArgsConstructor 18 | @NoArgsConstructor 19 | public class NgWords implements Serializable { 20 | 21 | private static final long serialVersionUID = 1L; 22 | 23 | @Id 24 | @GeneratedValue(strategy = GenerationType.IDENTITY) 25 | @JsonIgnore 26 | private int id; 27 | 28 | private String word; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/FormRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.springframework.web.multipart.MultipartFile; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class FormRequest { 15 | private String query; 16 | private MultipartFile bin; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/AttendRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.boot; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * https://dev.s-ul.eu/mikumiku/minime/wikis/Command/attend 11 | * 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Getter 15 | @Setter 16 | @AllArgsConstructor 17 | @NoArgsConstructor 18 | public class AttendRequest extends BaseRequest { 19 | public String atnd_lut; // Date-Time of last attend state update 20 | public String atnd_prm1; // Etc. Parameter, only 14 are used, but array of 100 int 21 | public String atnd_prm2; // Game balance parameter, only 89 are used of 100 22 | public String atnd_prm3; // Dispersal parameter, only 6 used of 100 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/boot/GameInitRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.boot; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class GameInitRequest extends BaseRequest { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/CardProcedureRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.card; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class CardProcedureRequest extends BaseRequest { 17 | private int cd_adm_cmd; 18 | private String a_code; 19 | private int aime_id; 20 | private String aime_a_code; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangeNameRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.card; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class ChangeNameRequest extends BaseRequest { 17 | private String a_code; 18 | private int aime_id; 19 | private String aime_a_code; 20 | private int pd_id; 21 | private int accept_idx; 22 | private String player_name; 23 | private int chg_name_price; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/ChangePasswdRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.card; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class ChangePasswdRequest extends BaseRequest { 17 | private String a_code; 18 | private int aime_id; 19 | private String aime_a_code; 20 | private int pd_id; 21 | private int accept_idx; 22 | private String new_passwd; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/card/RegistrationRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.card; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class RegistrationRequest extends BaseRequest { 17 | private String pmm; 18 | private String idm; 19 | private String mmgameid; 20 | private String mmuid; 21 | private String a_code; 22 | private int aime_id; 23 | private String aime_a_code; 24 | private String key_obj_type; 25 | private String player_name; 26 | private String passwd; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/BannerDataRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class BannerDataRequest extends BaseRequest { 17 | private int bd_id; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/databank/PsRankingRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class PsRankingRequest extends BaseRequest { 17 | private int[] rnk_ps_pv_id_lst; 18 | private int rnk_ps_idx; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyCstmzItmRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class BuyCstmzItmRequest extends BaseRequest { 17 | private int pd_id; 18 | private int accept_idx; 19 | private int start_idx; 20 | private int cstmz_itm_id; 21 | private int cstmz_itm_price; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/BuyModuleRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class BuyModuleRequest extends BaseRequest { 17 | private int pd_id; 18 | private int accept_idx; 19 | private int start_idx; 20 | private int mdl_id; 21 | private int mdl_price; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/GetPvPdRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class GetPvPdRequest extends BaseRequest { 17 | private int pd_id; 18 | private int difficulty; 19 | private int[] pd_pv_id_lst; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/ShopExitRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class ShopExitRequest extends BaseRequest { 17 | private int pd_id; 18 | private int accept_idx; 19 | private int start_idx; 20 | private int use_pv_mdl_eqp; 21 | private int ply_pv_id; 22 | private int[] mdl_eqp_cmn_ary; 23 | private int[] c_itm_eqp_cmn_ary; 24 | private int[] ms_itm_flg_cmn_ary; 25 | private int[] mdl_eqp_pv_ary; 26 | private int[] c_itm_eqp_pv_ary; 27 | private int[] ms_itm_flg_pv_ary; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/ingame/StoreSsRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class StoreSsRequest extends BaseRequest { 17 | private int pd_id; 18 | private String ss_dat_id; 19 | private int ss_pv_id; 20 | private int ss_sel_pv_id; 21 | private int[] ss_mdl_id; 22 | private int[] ss_sel_mdl_id; 23 | private int[] ss_c_itm_id; 24 | private int[] ss_pxl_sz; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PdUnlockRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.user; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class PdUnlockRequest extends BaseRequest { 17 | private int pd_id; 18 | private int accept_idx; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/PreStartRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.user; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class PreStartRequest extends BaseRequest { 17 | private String pmm; 18 | private String idm; 19 | private String mmgameid; 20 | private String mmuid; 21 | private String a_code; 22 | private int aime_id; 23 | private String aime_a_code; 24 | private String key_obj_type; 25 | private boolean exec_vu; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/SpendCreditRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.user; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class SpendCreditRequest extends BaseRequest { 17 | private int pd_id; 18 | private int[] my_qst_id; 19 | private int[] my_qst_sts; 20 | private int crdt_typ; 21 | private int[] cmpgn_id; 22 | private int[] cmpgn_pb; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/request/user/StartRequest.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.request.user; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.request.BaseRequest; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class StartRequest extends BaseRequest { 17 | public int pd_id; 18 | public int accept_idx; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/BaseResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.NoArgsConstructor; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Getter 12 | @Setter 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class BaseResponse { 16 | private String cmd; 17 | private String req_id; 18 | private String stat; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/boot/GameInitResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.boot; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class GameInitResponse extends BaseResponse { 13 | private String db_close; 14 | private String retry_time; 15 | 16 | public GameInitResponse(String cmd, String req_id, String stat, String db_close, String retry_time) { 17 | super(cmd, req_id, stat); 18 | this.db_close = db_close; 19 | this.retry_time = retry_time; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/card/RegistrationResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.card; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.common.Result; 4 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Getter 12 | @Setter 13 | public class RegistrationResponse extends BaseResponse { 14 | private Result cd_adm_result; 15 | private int pd_id; 16 | 17 | public RegistrationResponse(String cmd, String req_id, String stat, Result cd_adm_result, int pd_id) { 18 | super(cmd, req_id, stat); 19 | this.cd_adm_result = cd_adm_result; 20 | this.pd_id = pd_id; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/BannerDataResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | public class BannerDataResponse extends BaseResponse { 15 | private LocalDateTime bd_ut; 16 | private String bd_ti; 17 | private String bd_hs; 18 | private int bd_id; 19 | 20 | public BannerDataResponse(String cmd, String req_id, String stat, LocalDateTime bd_ut, String bd_ti, String bd_hs, int bd_id) { 21 | super(cmd, req_id, stat); 22 | this.bd_ut = bd_ut; 23 | this.bd_ti = bd_ti; 24 | this.bd_hs = bd_hs; 25 | this.bd_id = bd_id; 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ContestInfoResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | public class ContestInfoResponse extends BaseResponse { 15 | private LocalDateTime ci_lut; 16 | private String ci_str; 17 | 18 | public ContestInfoResponse(String cmd, String req_id, String stat, LocalDateTime ci_lut, String ci_str) { 19 | super(cmd, req_id, stat); 20 | this.ci_lut = ci_lut; 21 | this.ci_str = ci_str; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmCtlgResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class CstmzItmCtlgResponse extends BaseResponse { 13 | private String cstmz_itm_ctlg_lut; 14 | private String cstmz_itm_ctlg; 15 | 16 | public CstmzItmCtlgResponse(String cmd, String req_id, String stat, String cstmz_itm_ctlg_lut, String cstmz_itm_ctlg) { 17 | super(cmd, req_id, stat); 18 | this.cstmz_itm_ctlg_lut = cstmz_itm_ctlg_lut; 19 | this.cstmz_itm_ctlg = cstmz_itm_ctlg; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/CstmzItmNgMdlListResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class CstmzItmNgMdlListResponse extends BaseResponse { 13 | private String cinml_lut; 14 | private String cinm_lst; 15 | 16 | public CstmzItmNgMdlListResponse(String cmd, String req_id, String stat, String cinml_lut, String cinm_lst) { 17 | super(cmd, req_id, stat); 18 | this.cinml_lut = cinml_lut; 19 | this.cinm_lst = cinm_lst; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdHCtrlResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class PstdHCtrlResponse extends BaseResponse { 13 | private String p_std_hc_lut; 14 | private String p_std_hc_str; 15 | 16 | public PstdHCtrlResponse(String cmd, String req_id, String stat, String p_std_hc_lut, String p_std_hc_str) { 17 | super(cmd, req_id, stat); 18 | this.p_std_hc_lut = p_std_hc_lut; 19 | this.p_std_hc_str = p_std_hc_str; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PstdItemNgLstResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class PstdItemNgLstResponse extends BaseResponse { 13 | private String p_std_i_n_lut; 14 | private String p_std_i_ie_n_lst; 15 | private String p_std_i_se_n_lst; 16 | 17 | 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) { 18 | super(cmd, req_id, stat); 19 | this.p_std_i_n_lut = p_std_i_n_lut; 20 | this.p_std_i_ie_n_lst = p_std_i_ie_n_lst; 21 | this.p_std_i_se_n_lst = p_std_i_se_n_lst; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvDefChrLstResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class PvDefChrLstResponse extends BaseResponse { 13 | private String pdcl_lut; 14 | private String pdc_lst; 15 | 16 | public PvDefChrLstResponse(String cmd, String req_id, String stat, String pdcl_lut, String pdc_lst) { 17 | super(cmd, req_id, stat); 18 | this.pdcl_lut = pdcl_lut; 19 | this.pdc_lst = pdc_lst; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvListResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | public class PvListResponse extends BaseResponse { 15 | private LocalDateTime pvl_lut; 16 | private String pv_lst; 17 | 18 | public PvListResponse(String cmd, String req_id, String stat, LocalDateTime pvl_lut, String pv_lst) { 19 | super(cmd, req_id, stat); 20 | this.pvl_lut = pvl_lut; 21 | this.pv_lst = pv_lst; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/PvNgMdlLstResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class PvNgMdlLstResponse extends BaseResponse { 13 | private String pnml_lut; 14 | private String pnm_lst; 15 | 16 | public PvNgMdlLstResponse(String cmd, String req_id, String stat, String pnml_lut, String pnm_lst) { 17 | super(cmd, req_id, stat); 18 | this.pnml_lut = pnml_lut; 19 | this.pnm_lst = pnm_lst; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/QstInfResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class QstInfResponse extends BaseResponse { 13 | private String qi_lut; 14 | private String qhi_str; 15 | private String qrai_str; 16 | 17 | public QstInfResponse(String cmd, String req_id, String stat, String qi_lut, String qhi_str, String qrai_str) { 18 | super(cmd, req_id, stat); 19 | this.qi_lut = qi_lut; 20 | this.qhi_str = qhi_str; 21 | this.qrai_str = qrai_str; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/RmtWpLstResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class RmtWpLstResponse extends BaseResponse { 13 | private String rwl_lut; 14 | private String rw_lst; 15 | 16 | public RmtWpLstResponse(String cmd, String req_id, String stat, String rwl_lut, String rw_lst) { 17 | super(cmd, req_id, stat); 18 | this.rwl_lut = rwl_lut; 19 | this.rw_lst = rw_lst; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/databank/ShopCatalogResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.databank; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Getter 13 | @Setter 14 | public class ShopCatalogResponse extends BaseResponse { 15 | private LocalDateTime shp_ctlg_lut; 16 | private String shp_ctlg; 17 | 18 | public ShopCatalogResponse(String cmd, String req_id, String stat, LocalDateTime shp_ctlg_lut, String shp_ctlg) { 19 | super(cmd, req_id, stat); 20 | this.shp_ctlg_lut = shp_ctlg_lut; 21 | this.shp_ctlg = shp_ctlg; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/GetPvPdResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Getter 11 | @Setter 12 | public class GetPvPdResponse extends BaseResponse { 13 | private String pd_by_pv_id; 14 | private Boolean pdddt_flg; 15 | private String pdddt_tm; 16 | 17 | public GetPvPdResponse(String cmd, String req_id, String stat, String pd_by_pv_id, Boolean pdddt_flg, String pdddt_tm) { 18 | super(cmd, req_id, stat); 19 | this.pd_by_pv_id = pd_by_pv_id; 20 | this.pdddt_flg = pdddt_flg; 21 | this.pdddt_tm = pdddt_tm; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/model/response/ingame/ShopExitResponse.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.model.response.ingame; 2 | 3 | import icu.samnyan.aqua.sega.diva.model.common.Result; 4 | import icu.samnyan.aqua.sega.diva.model.response.BaseResponse; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Getter 12 | @Setter 13 | public class ShopExitResponse extends BaseResponse { 14 | private Result shp_rslt; 15 | 16 | public ShopExitResponse(String cmd, String req_id, String stat, Result shp_rslt) { 17 | super(cmd, req_id, stat); 18 | this.shp_rslt = shp_rslt; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeSerializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.util; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.ser.std.StdSerializer; 6 | 7 | import java.io.IOException; 8 | import java.time.LocalDateTime; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | public class DivaDateTimeSerializer extends StdSerializer { 14 | 15 | public DivaDateTimeSerializer() { 16 | this(null); 17 | } 18 | 19 | public DivaDateTimeSerializer(Class t) { 20 | super(t); 21 | } 22 | 23 | @Override 24 | public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider) throws IOException { 25 | gen.writeString(DivaDateTimeUtil.getString(value)); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/util/DivaDateTimeUtil.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.util; 2 | 3 | import icu.samnyan.aqua.sega.util.URIEncoder; 4 | 5 | import java.time.LocalDateTime; 6 | import java.time.format.DateTimeFormatter; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | public class DivaDateTimeUtil { 12 | 13 | public static String getString(LocalDateTime time) { 14 | return URIEncoder.encode(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0").format(time)); 15 | } 16 | 17 | public static String format(LocalDateTime time) { 18 | return DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0").format(time); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/diva/util/DivaStringUtils.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.diva.util; 2 | 3 | /** 4 | * @author samnyan (privateamusement@protonmail.com) 5 | */ 6 | public class DivaStringUtils { 7 | 8 | public static String arrToCsv(int[] arr) { 9 | StringBuilder sb = new StringBuilder(); 10 | for (int i : 11 | arr) { 12 | sb.append(i).append(","); 13 | } 14 | sb.deleteCharAt(sb.length() - 1); 15 | return sb.toString(); 16 | } 17 | 18 | public static String getDummyString(String content, int length) { 19 | StringBuilder sb = new StringBuilder(); 20 | sb.append((content + ",").repeat(length)); 21 | sb.deleteCharAt(sb.length() - 1); 22 | return sb.toString(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/general/dao/CardRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.general.dao; 2 | 3 | import icu.samnyan.aqua.sega.general.model.Card; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("SegaCardRepository") 13 | public interface CardRepository extends JpaRepository { 14 | 15 | Optional findByExtId(Long extId); 16 | 17 | Optional findByLuid(String luid); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/general/dao/GameVersionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.general.dao; 2 | 3 | import icu.samnyan.aqua.sega.general.model.GameVersion; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.time.LocalDateTime; 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("GameVersionRepository") 15 | public interface GameVersionRepository extends JpaRepository { 16 | Optional findByUuid(String uuid); 17 | List findByLastTimeBefore(LocalDateTime time); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/general/dao/PropertyEntryRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.general.dao; 2 | 3 | import icu.samnyan.aqua.sega.general.model.PropertyEntry; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository 13 | public interface PropertyEntryRepository extends JpaRepository { 14 | Optional findByPropertyKey(String key); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/general/model/GameVersion.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.general.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.*; 8 | import java.time.LocalDateTime; 9 | 10 | @Entity(name = "SegaGameVersion") 11 | @Table(name = "sega_game_version") 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GameVersion { 16 | @Id 17 | private String uuid; 18 | private String romVersion; 19 | private String dataVersion; 20 | private LocalDateTime lastTime; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.general.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @NoArgsConstructor 12 | @AllArgsConstructor 13 | public class UserRecentRating { 14 | private int musicId; 15 | private int difficultId; 16 | private String romVersionCode; 17 | private int score; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/gamedata/GameEventRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.gamedata.GameEvent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("MaimaiGameEventRepository") 13 | public interface GameEventRepository extends JpaRepository { 14 | 15 | List findByType(Integer type); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserActivityRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserActivity; 4 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("MaimaiUserActivityRepository") 15 | public interface UserActivityRepository extends JpaRepository { 16 | 17 | Optional findByUserAndKindAndActivityId(UserData user, int kind, int id); 18 | 19 | List findByUser_Card_ExtIdAndKind(long userId, int kind); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserBossRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserBoss; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("MaimaiUserBossRepository") 13 | public interface UserBossRepository extends JpaRepository { 14 | 15 | Optional findByUser_Card_ExtId(long userId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserCharacterRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserCharacter; 4 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("MaimaiUserCharacterRepository") 15 | public interface UserCharacterRepository extends JpaRepository { 16 | 17 | List findByUser_Card_ExtId(long userId); 18 | 19 | Optional findByUserAndCharacterId(UserData user, int characterId); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("MaimaiUserDataRepository") 13 | public interface UserDataRepository extends JpaRepository { 14 | Optional findByCard_ExtId(long userId); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserGeneralDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserGeneralData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("MaimaiUserGeneralDataRepository") 14 | public interface UserGeneralDataRepository extends JpaRepository { 15 | Optional findByUser_Card_ExtIdAndPropertyKey(long userId, String key); 16 | 17 | Optional findByUserAndPropertyKey(UserData user, String key); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserItemRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserItem; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | import org.springframework.data.jpa.repository.JpaRepository; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("MaimaiUserItemRepository") 13 | public interface UserItemRepository extends JpaRepository { 14 | 15 | Page findByUser_Card_ExtIdAndItemKind(long userId, int kind, Pageable page); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserOptionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserOption; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("MaimaiUserOptionRepository") 14 | public interface UserOptionRepository extends JpaRepository { 15 | 16 | Optional findByUser_Card_ExtId(long userId); 17 | 18 | Optional findByUser(UserData user); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPlaylogRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserPlaylog; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Repository("MaimaiUserPlaylogRepository") 12 | public interface UserPlaylogRepository extends JpaRepository { 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserPresentEventRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserPresentEvent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("MaimaiUserPresentEventRepository") 13 | public interface UserPresentEventRepository extends JpaRepository { 14 | 15 | List findByUser_Card_ExtId(long userId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserSurvivalRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserSurvival; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("MaimaiUserSurvivalRepository") 13 | public interface UserSurvivalRepository extends JpaRepository { 14 | 15 | List findByUser_Card_ExtId(long userId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/dao/userdata/UserWebOptionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserWebOption; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("MaimaiUserWebOptionRepository") 14 | public interface UserWebOptionRepository extends JpaRepository { 15 | 16 | Optional findByUser_Card_ExtId(long userId); 17 | 18 | Optional findByUser(UserData user); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/handler/BaseHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.handler; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public interface BaseHandler { 11 | 12 | String handle(Map request) throws JsonProcessingException; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/request/UpsertUserAll.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.maimai.model.request.data.UserAll; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class UpsertUserAll implements Serializable { 18 | private long userId; 19 | @JsonProperty("isEventMode") 20 | private boolean isEventMode; 21 | @JsonProperty("isFreePlay") 22 | private boolean isFreePlay; 23 | private UserAll upsertUserAll; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/GetGameSettingResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.maimai.model.response.data.GameSetting; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GetGameSettingResp { 16 | @JsonProperty("isAouAccession") 17 | private boolean isAouAccession; 18 | private GameSetting gameSetting; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/UserLoginResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserLoginResp { 14 | public int returnCode = 1; 15 | public String lastLoginDate = "2020-01-01 00:00:00.0"; 16 | public int loginCount = 0; 17 | public int consecutiveLoginCount = 0; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameRanking.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class GameRanking { 14 | private Integer id; 15 | private Integer point; 16 | private String userName; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/GameSetting.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response.data; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class GameSetting { 15 | @JsonProperty("isMaintenance") 16 | private boolean isMaintenance; 17 | private int requestInterval; 18 | private String rebootStartTime; 19 | private String rebootEndTime; 20 | private int movieUploadLimit; 21 | private int movieStatus; 22 | private String movieServerUri; 23 | private String deliverServerUri; 24 | private String oldServerUri; 25 | private String usbDlServerUri; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserGradeStatus.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserGradeStatus { 14 | int gradeVersion; 15 | int gradeLevel; 16 | int gradeSubLevel; 17 | int gradeMaxId; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserMusic.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response.data; 2 | 3 | import icu.samnyan.aqua.sega.maimai.model.userdata.UserMusicDetail; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UserMusic { 17 | List userMusicDetailList; 18 | int length; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai/model/response/data/UserRecentRating.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserRecentRating { 14 | int musicId; 15 | int level; 16 | int achieve; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/gamedata/GameChargeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.gamedata.GameCharge; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("Maimai2GameChargeRepository") 11 | public interface GameChargeRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/gamedata/GameEventRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.gamedata.GameEvent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("Maimai2GameEventRepository") 13 | public interface GameEventRepository extends JpaRepository { 14 | 15 | List findByTypeAndEnable(int type, boolean enable); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserActRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserAct; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("Maimai2UserActRepository") 15 | public interface UserActRepository extends JpaRepository { 16 | 17 | Optional findByUserAndKindAndActivityId(UserDetail user, int kind, int id); 18 | 19 | List findByUser_Card_ExtIdAndKind(long userId, int kind); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserCharacterRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserCharacter; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("Maimai2UserCharacterRepository") 15 | public interface UserCharacterRepository extends JpaRepository { 16 | 17 | List findByUser_Card_ExtId(long userId); 18 | 19 | Optional findByUserAndCharacterId(UserDetail user, int characterId); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserChargeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserCharge; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("Maimai2UserChargeRepository") 15 | public interface UserChargeRepository extends JpaRepository { 16 | List findByUser_Card_ExtId(Long extId); 17 | 18 | Optional findByUserAndChargeId(UserDetail extId, int chargeId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserCourseRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserCourse; 5 | 6 | import org.springframework.data.domain.Page; 7 | import org.springframework.data.domain.Pageable; 8 | import org.springframework.data.jpa.repository.JpaRepository; 9 | import org.springframework.stereotype.Repository; 10 | 11 | import java.util.Optional; 12 | 13 | /** 14 | * @author samnyan (privateamusement@protonmail.com) 15 | */ 16 | @Repository("Maimai2UserCourseRepository") 17 | public interface UserCourseRepository extends JpaRepository { 18 | 19 | Optional findByUserAndCourseId(UserDetail user, int courseId); 20 | 21 | Page findByUser_Card_ExtId(long userId, Pageable page); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.Optional; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Repository("Maimai2UserDataRepository") 13 | public interface UserDataRepository extends JpaRepository { 14 | Optional findByCard_ExtId(long userId); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserExtendRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserExtend; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("Maimai2UserExtendRepository") 14 | public interface UserExtendRepository extends JpaRepository { 15 | 16 | Optional findByUser(UserDetail user); 17 | 18 | Optional findByUser_Card_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserFavoriteRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserFavorite; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("Maimai2UserFavoriteRepository") 15 | public interface UserFavoriteRepository extends JpaRepository { 16 | 17 | Optional findByUserAndItemKind(UserDetail user, int kind); 18 | //Optional findByUserIdAndItemKind(long userId, int kind); 19 | 20 | List findByUserIdAndItemKind(long userId, int kind); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserItemRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserItem; 5 | 6 | import java.util.Optional; 7 | 8 | import org.springframework.data.domain.Page; 9 | import org.springframework.data.domain.Pageable; 10 | import org.springframework.data.jpa.repository.JpaRepository; 11 | import org.springframework.stereotype.Repository; 12 | 13 | /** 14 | * @author samnyan (privateamusement@protonmail.com) 15 | */ 16 | @Repository("Maimai2UserItemRepository") 17 | public interface UserItemRepository extends JpaRepository { 18 | 19 | Optional findByUserAndItemKindAndItemId(UserDetail user, int itemKind, int itemId); 20 | 21 | Page findByUser_Card_ExtIdAndItemKind(long userId, int kind, Pageable page); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserLoginBonusRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserLoginBonus; 5 | 6 | import java.util.Optional; 7 | 8 | import org.springframework.data.domain.Page; 9 | import org.springframework.data.domain.Pageable; 10 | import org.springframework.data.jpa.repository.JpaRepository; 11 | import org.springframework.stereotype.Repository; 12 | 13 | /** 14 | * @author samnyan (privateamusement@protonmail.com) 15 | */ 16 | @Repository("Maimai2UserLoginBonusRepository") 17 | public interface UserLoginBonusRepository extends JpaRepository { 18 | 19 | Optional findByUserAndBonusId(UserDetail user, int bonusId); 20 | 21 | Page findByUser_Card_ExtId(long userId, Pageable page); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserMapRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserMap; 5 | 6 | import java.util.Optional; 7 | 8 | import org.springframework.data.domain.Page; 9 | import org.springframework.data.domain.Pageable; 10 | import org.springframework.data.jpa.repository.JpaRepository; 11 | import org.springframework.stereotype.Repository; 12 | 13 | /** 14 | * @author samnyan (privateamusement@protonmail.com) 15 | */ 16 | @Repository("Maimai2UserMapRepository") 17 | public interface UserMapRepository extends JpaRepository { 18 | 19 | Optional findByUserAndMapId(UserDetail user, int mapId); 20 | 21 | Page findByUser_Card_ExtId(long userId, Pageable page); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserOptionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserOption; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("Maimai2UserOptionRepository") 14 | public interface UserOptionRepository extends JpaRepository { 15 | 16 | Optional findByUser(UserDetail user); 17 | 18 | Optional findByUser_Card_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserPlaylogRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserPlaylog; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("Maimai2UserPlaylogRepository") 11 | public interface UserPlaylogRepository extends JpaRepository { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/dao/userdata/UserUdemaeRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; 4 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserUdemae; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.Optional; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Repository("Maimai2UserUdemaeRepository") 14 | public interface UserUdemaeRepository extends JpaRepository { 15 | 16 | Optional findByUser(UserDetail user); 17 | 18 | Optional findByUser_Card_ExtId(Long extId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/handler/BaseHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.handler; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public interface BaseHandler { 11 | 12 | String handle(Map request) throws JsonProcessingException; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/request/UploadUserPhoto.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.request; 2 | 3 | import icu.samnyan.aqua.sega.maimai2.model.request.data.UserPhoto; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UploadUserPhoto implements Serializable { 17 | private UserPhoto userPhoto; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/request/UploadUserPlaylog.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.request; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserPlaylog; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class UploadUserPlaylog implements Serializable { 18 | private long userId; 19 | private UserPlaylog userPlaylog; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/request/UpsertUserAll.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.maimai2.model.request.data.UserAll; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class UpsertUserAll implements Serializable { 18 | private long userId; 19 | private long playlogId; 20 | @JsonProperty("isEventMode") 21 | private boolean isEventMode; 22 | @JsonProperty("isFreePlay") 23 | private boolean isFreePlay; 24 | private UserAll upsertUserAll; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/request/data/UserPhoto.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.request.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class UserPhoto implements Serializable { 16 | private int orderId; 17 | private long userId; 18 | private int divNumber; 19 | private int divLength; 20 | private String divData; 21 | private int placeId; 22 | private String clientId; 23 | private String uploadDate; 24 | private long playlogId; 25 | private int trackNo; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/response/GetGameSettingResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.response; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.maimai2.model.response.data.GameSetting; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GetGameSettingResp { 16 | 17 | @JsonProperty("isAouAccession") 18 | private boolean isAouAccession; 19 | private GameSetting gameSetting; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/response/UserLoginResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserLoginResp { 14 | public int returnCode = 1; 15 | public String lastLoginDate = "2020-01-01 00:00:00.0"; 16 | public int loginCount = 1; 17 | public int consecutiveLoginCount = 0; 18 | public int loginId = 1; // What is this? 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/response/data/GameSetting.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.response.data; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class GameSetting { 15 | @JsonProperty("isMaintenance") 16 | private boolean isMaintenance; 17 | private int requestInterval; 18 | private String rebootStartTime; 19 | private String rebootEndTime; 20 | private int movieUploadLimit; 21 | private int movieStatus; 22 | private String movieServerUri; 23 | private String deliverServerUri; 24 | private String oldServerUri; 25 | private String usbDlServerUri; 26 | private int rebootInterval; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/response/data/UserActivity.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.response.data; 2 | 3 | import java.util.List; 4 | 5 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserAct; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UserActivity { 17 | private List playList; 18 | private List musicList; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/response/data/UserMusic.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.response.data; 2 | 3 | import java.util.List; 4 | 5 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserMusicDetail; 6 | import lombok.AllArgsConstructor; 7 | import lombok.Data; 8 | import lombok.NoArgsConstructor; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UserMusic { 17 | private List userMusicDetailList; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/response/data/UserRating.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.response.data; 2 | 3 | import java.util.List; 4 | 5 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserRate; 6 | import icu.samnyan.aqua.sega.maimai2.model.userdata.UserUdemae; 7 | import lombok.AllArgsConstructor; 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class UserRating { 18 | private int rating; 19 | private List ratingList; 20 | private List newRatingList; 21 | private List nextRatingList; 22 | private List nextNewRatingList; 23 | private UserUdemae udemae; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserRate.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.maimai2.model.userdata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserRate { 14 | private int musicId; 15 | private int level; 16 | private int romVersion; 17 | private int achievement; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCardRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameCard; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGameCardRepository") 11 | public interface GameCardRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCharaRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameChara; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGameCharaRepository") 11 | public interface GameCharaRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameEventRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameEvent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGameEventRepository") 11 | public interface GameEventRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameMusicRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameMusic; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGameMusicRepository") 11 | public interface GameMusicRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePointRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePoint; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGamePointRepository") 11 | public interface GamePointRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePresentRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePresent; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGamePresentRepository") 11 | public interface GamePresentRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameRewardRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameReward; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGameRewardRepository") 11 | public interface GameRewardRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameSkillRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.gamedata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameSkill; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Repository("OngekiGameSkillRepository") 11 | public interface GameSkillRepository extends JpaRepository { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserBoss; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("OngekiUserBossRepository") 15 | public interface UserBossRepository extends JpaRepository { 16 | 17 | List findByUser_Card_ExtId(long userId); 18 | 19 | Optional findByUserAndMusicId(UserData user, int musicId); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.general.model.Card; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("OngekiUserDataRepository") 15 | public interface UserDataRepository extends JpaRepository { 16 | 17 | Optional findByCard(Card card); 18 | 19 | Optional findByCard_ExtId(long aimeId); 20 | 21 | @Transactional 22 | void deleteByCard(Card card); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserDeck; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.List; 10 | import java.util.Optional; 11 | 12 | /** 13 | * @author samnyan (privateamusement@protonmail.com) 14 | */ 15 | @Repository("OngekiUserDeckRepository") 16 | public interface UserDeckRepository extends JpaRepository { 17 | 18 | List findByUser_Card_ExtId(long userId); 19 | 20 | Optional findByUserAndDeckId(UserData userData, int deckId); 21 | 22 | @Transactional 23 | void deleteByUser(UserData user); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserLoginBonus; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.transaction.annotation.Transactional; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | public interface UserLoginBonusRepository extends JpaRepository { 15 | 16 | List findByUser_Card_ExtId(long userId); 17 | 18 | Optional findByUserAndBonusId(UserData userData, int bonusId); 19 | 20 | @Transactional 21 | void deleteByUser(UserData user); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserOption; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("OngekiUserOptionRepository") 15 | public interface UserOptionRepository extends JpaRepository { 16 | 17 | Optional findByUser(UserData userData); 18 | 19 | Optional findByUser_Card_ExtId(long userId); 20 | 21 | @Transactional 22 | void deleteByUser(UserData user); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserScenario; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("OngekiUserScenarioRepository") 15 | public interface UserScenarioRepository extends JpaRepository { 16 | 17 | List findByUser_Card_ExtId(long userId); 18 | 19 | Optional findByUserAndScenarioId(UserData user, int scenarioId); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserStory; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.List; 10 | import java.util.Optional; 11 | 12 | /** 13 | * @author samnyan (privateamusement@protonmail.com) 14 | */ 15 | @Repository("OngekiUserStoryRepository") 16 | public interface UserStoryRepository extends JpaRepository { 17 | 18 | List findByUser_Card_ExtId(long userId); 19 | 20 | Optional findByUserAndStoryId(UserData userData, int storyId); 21 | 22 | @Transactional 23 | void deleteByUser(UserData user); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.dao.userdata; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; 4 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechCount; 5 | import org.springframework.data.jpa.repository.JpaRepository; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | @Repository("OngekiUserTechCountRepository") 15 | public interface UserTechCountRepository extends JpaRepository { 16 | 17 | List findByUser_Card_ExtId(long userId); 18 | 19 | Optional findByUserAndLevelId(UserData user, int levelId); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/handler/BaseHandler.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.handler; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | 5 | import java.util.Map; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | public interface BaseHandler { 11 | 12 | String handle(Map request) throws JsonProcessingException; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/GpProductID.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum GpProductID { 9 | A_Credit1(0), 10 | A_Credit2(1), 11 | A_Credit3(2), 12 | B_Credit1(3), 13 | B_Credit2(4), 14 | B_Credit3(5), 15 | End(6); 16 | 17 | private int value; 18 | 19 | GpProductID(int i) { this.value = i; } 20 | 21 | @JsonValue 22 | public int getValue() { 23 | return this.value; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/IdListType.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum IdListType { 9 | Invalid, 10 | NgMusic, 11 | Recommend; 12 | 13 | @JsonValue 14 | public int toValue() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/ItemType.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.common; 2 | 3 | import com.fasterxml.jackson.annotation.JsonValue; 4 | 5 | /** 6 | * @author samnyan (privateamusement@protonmail.com) 7 | */ 8 | public enum ItemType { 9 | None, 10 | Card, 11 | NamePlate, 12 | Trophy, 13 | LimitBreakItem, 14 | AlmightyJewel, 15 | Money, 16 | Music, 17 | ProfileVoice, 18 | Present, 19 | ChapterJewel, 20 | GachaTicket, 21 | Max; 22 | 23 | @JsonValue 24 | public int toValue() { 25 | return ordinal(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameChara.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.Entity; 8 | import javax.persistence.Id; 9 | import javax.persistence.Table; 10 | import java.io.Serializable; 11 | 12 | /** 13 | * @author samnyan (privateamusement@protonmail.com) 14 | */ 15 | @Entity(name = "OngekiGameChara") 16 | @Table(name = "ongeki_game_chara") 17 | @Data 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class GameChara implements Serializable { 21 | 22 | private static final long serialVersionUID = 1L; 23 | 24 | @Id 25 | private long id; 26 | 27 | private String name; 28 | 29 | private String cv; 30 | 31 | private int modelId; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameEvent.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.Entity; 8 | import javax.persistence.Id; 9 | import javax.persistence.Table; 10 | import java.io.Serializable; 11 | 12 | /** 13 | * @author samnyan (privateamusement@protonmail.com) 14 | */ 15 | @Entity(name = "OngekiGameEvent") 16 | @Table(name = "ongeki_game_event") 17 | @Data 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class GameEvent implements Serializable { 21 | 22 | private static final long serialVersionUID = 1L; 23 | 24 | @Id 25 | private long id; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameSkill.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.gamedata; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.persistence.Entity; 8 | import javax.persistence.Id; 9 | import javax.persistence.Table; 10 | import java.io.Serializable; 11 | 12 | /** 13 | * @author samnyan (privateamusement@protonmail.com) 14 | */ 15 | @Entity(name = "OngekiGameSkill") 16 | @Table(name = "ongeki_game_skill") 17 | @Data 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class GameSkill implements Serializable { 21 | 22 | private static final long serialVersionUID = 1L; 23 | 24 | @Id 25 | private long id; 26 | 27 | private String name; 28 | 29 | private String category; 30 | 31 | private String info; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/CodeResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class CodeResp { 14 | private int returnCode; 15 | private String apiName; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetGameSettingResp.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import icu.samnyan.aqua.sega.ongeki.model.response.data.GameSetting; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class GetGameSettingResp { 16 | private GameSetting gameSetting; 17 | @JsonProperty("isDumpUpload") 18 | private boolean isDumpUpload; 19 | @JsonProperty("isAou") 20 | private boolean isAou; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameEventItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class GameEventItem { 14 | private long id; 15 | private int type; 16 | private String startDate; 17 | private String endDate; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameIdListItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class GameIdListItem { 14 | private int id; 15 | private int type; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameRankingItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * Fro getGameRanking request 9 | * @author samnyan (privateamusement@protonmail.com) 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | @NoArgsConstructor 14 | public class GameRankingItem { 15 | private long id; 16 | // this 2 field never use in game code, 17 | // maybe for the future update like in game player ranking 18 | private long point; 19 | private String userName; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserEventRankingItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserEventRankingItem { 14 | private int eventId; 15 | private int type; 16 | private String date; 17 | private int rank; 18 | private long point; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserMusicListItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response.data; 2 | 3 | import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicDetail; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class UserMusicListItem { 17 | private int length; 18 | private List userMusicDetailList; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserTechEventRankingItem.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.ongeki.model.response.data; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author samnyan (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class UserTechEventRankingItem { 14 | private int eventId; 15 | private String date; 16 | private int rank; 17 | private int totalTechScore; 18 | private int totalPlatinumScore; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/AquaConst.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util; 2 | 3 | public class AquaConst { 4 | public static String SERIAL_KEY = "CLIENT_ID"; 5 | public static String VERSION_KEY = "ROM_VERSION"; 6 | public static String CHUNI_DEFAULT_VERSION = "1.30"; 7 | public static String DEFAULT_KEYCHIP_ID = "A69E01A8888"; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/URIEncoder.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util; 2 | 3 | import java.net.URLEncoder; 4 | import java.nio.charset.StandardCharsets; 5 | 6 | /** 7 | * @author samnyan (privateamusement@protonmail.com) 8 | */ 9 | public class URIEncoder { 10 | 11 | public static String encode(String str) { 12 | return URLEncoder.encode(str, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/VersionInfo.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author sam_nya (privateamusement@protonmail.com) 9 | */ 10 | @Data 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class VersionInfo { 14 | private Integer majorVersion; 15 | private Integer minorVersion; 16 | private Integer releaseVersion; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/jackson/AccessCodeSerializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util.jackson; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.ser.std.StdSerializer; 6 | import icu.samnyan.aqua.sega.general.model.Card; 7 | 8 | import java.io.IOException; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | public class AccessCodeSerializer extends StdSerializer { 14 | 15 | public AccessCodeSerializer() { 16 | this(null); 17 | } 18 | 19 | public AccessCodeSerializer(Class t) { 20 | super(t); 21 | } 22 | 23 | @Override 24 | public void serialize(Card value, JsonGenerator gen, SerializerProvider provider) throws IOException { 25 | gen.writeString(value.getLuid()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/jackson/BooleanNumberDeserializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util.jackson; 2 | 3 | import com.fasterxml.jackson.core.JsonParser; 4 | import com.fasterxml.jackson.databind.DeserializationContext; 5 | import com.fasterxml.jackson.databind.JsonDeserializer; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | public class BooleanNumberDeserializer extends JsonDeserializer { 13 | 14 | @Override 15 | public Boolean deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { 16 | return !"0".equals(p.getText()); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/jackson/BooleanNumberSerializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util.jackson; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.ser.std.StdSerializer; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | public class BooleanNumberSerializer extends StdSerializer { 13 | 14 | public BooleanNumberSerializer() { 15 | this(null); 16 | } 17 | 18 | public BooleanNumberSerializer(Class t) { 19 | super(t); 20 | } 21 | 22 | @Override 23 | public void serialize(Boolean value, JsonGenerator gen, SerializerProvider provider) throws IOException { 24 | gen.writeNumber(value ? 1 : 0); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/jackson/BooleanStringSerializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util.jackson; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.ser.std.StdSerializer; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * @author samnyan (privateamusement@protonmail.com) 11 | */ 12 | public class BooleanStringSerializer extends StdSerializer { 13 | 14 | public BooleanStringSerializer() { 15 | this(null); 16 | } 17 | 18 | public BooleanStringSerializer(Class t) { 19 | super(t); 20 | } 21 | 22 | @Override 23 | public void serialize(Boolean value, JsonGenerator gen, SerializerProvider provider) throws IOException { 24 | gen.writeString(value.toString()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/jackson/ByteBufSerializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util.jackson; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.ser.std.StdSerializer; 6 | import io.netty.buffer.ByteBuf; 7 | import io.netty.buffer.ByteBufUtil; 8 | 9 | import java.io.IOException; 10 | 11 | /** 12 | * @author samnyan (privateamusement@protonmail.com) 13 | */ 14 | public class ByteBufSerializer extends StdSerializer { 15 | 16 | public ByteBufSerializer() { 17 | this(null); 18 | } 19 | 20 | public ByteBufSerializer(Class t) { 21 | super(t); 22 | } 23 | 24 | @Override 25 | public void serialize(ByteBuf value, JsonGenerator gen, SerializerProvider provider) throws IOException { 26 | 27 | gen.writeString(ByteBufUtil.hexDump(value)); 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/icu/samnyan/aqua/sega/util/jackson/ZonedDateTimeDeserializer.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.sega.util.jackson; 2 | 3 | import com.fasterxml.jackson.core.JsonParser; 4 | import com.fasterxml.jackson.databind.DeserializationContext; 5 | import com.fasterxml.jackson.databind.JsonDeserializer; 6 | 7 | import java.io.IOException; 8 | import java.time.ZonedDateTime; 9 | 10 | /** 11 | * @author samnyan (privateamusement@protonmail.com) 12 | */ 13 | public class ZonedDateTimeDeserializer extends JsonDeserializer { 14 | 15 | @Override 16 | public ZonedDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { 17 | return ZonedDateTime.parse(p.getText()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/resources/billing.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kanajin/Aqua-docker/70305f2759e818288b27090ccfd935e59e114a4a/src/main/resources/billing.der -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V12__chuni_event_add_enable.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `chuni_game_event` 2 | ADD COLUMN `enable` bit(1) NOT NULL DEFAULT true; 3 | 4 | UPDATE `chuni_game_event` SET `enable`=false WHERE `type` = 1; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V18__add_default_reboot_time.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `property` (property_key, property_value) VALUE ('reboot_start_time', '2020-01-01 23:59:00.0'); 2 | INSERT INTO `property` (property_key, property_value) VALUE ('reboot_end_time', '2020-01-01 23:59:00.0'); 3 | INSERT INTO `property` (property_key, property_value) VALUE ('ongeki_music_ng_list', ''); 4 | INSERT INTO `property` (property_key, property_value) VALUE ('ongeki_music_recommend_list', ''); -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V19__add_chuni_general_data.sql: -------------------------------------------------------------------------------- 1 | create table chuni_user_general_data 2 | ( 3 | id bigint auto_increment 4 | primary key, 5 | property_key varchar(255) not null, 6 | property_value text not null, 7 | user_id bigint null, 8 | constraint UK2up23a6n1ghlf5gewa4tm5f2d 9 | unique (user_id, property_key), 10 | constraint FK2dkb8agh5ye1f15g5hbcv63uj 11 | foreign key (user_id) references chuni_user_data (id) 12 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V24__fix_ongeki_user_story_table.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `ongeki_user_story` 2 | ADD COLUMN `jewel_count` int(11) DEFAULT 0, 3 | ADD COLUMN `last_play_music_id` int(11) DEFAULT 0, 4 | ADD COLUMN `last_play_music_category` int(11) DEFAULT 0, 5 | ADD COLUMN `last_play_music_level` int(11) DEFAULT 0; 6 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V25__add_client_setting.sql: -------------------------------------------------------------------------------- 1 | create table sega_game_version 2 | ( 3 | uuid varchar(255) 4 | primary key, 5 | rom_version varchar(255) not null, 6 | data_version varchar(255) not null, 7 | last_time DATETIME not null 8 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V2__property_table.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- テーブルの構造 `property` 3 | -- 4 | 5 | CREATE TABLE `property` 6 | ( 7 | `id` bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, 8 | `property_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 9 | `property_value` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL 10 | ) ENGINE = InnoDB 11 | DEFAULT CHARSET = utf8mb4 12 | COLLATE = utf8mb4_unicode_ci; 13 | 14 | -- 15 | -- Indexes for table `property` 16 | -- 17 | ALTER TABLE `property` 18 | ADD UNIQUE KEY `UK_ekbti34ksu6o2sfms9yumvp4o` (`property_key`); 19 | COMMIT; 20 | 21 | INSERT INTO `property` (id, property_key, property_value) 22 | VALUES (1, 'diva_news', 'Server Running No other news'); 23 | INSERT INTO `property` (id, property_key, property_value) 24 | VALUES (2, 'diva_warning', 'Network Service Running'); -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V38__fix_ongeki_user_option_table.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `ongeki_user_option` 2 | ADD COLUMN `judge_adjustment` int(11) DEFAULT 20; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V3__fix_chuni_music_detail_constraint.sql: -------------------------------------------------------------------------------- 1 | 2 | ALTER TABLE `chuni_user_character` 3 | ADD UNIQUE KEY `UK_chuni_user_character` (`user_id`, `character_id`); 4 | 5 | ALTER TABLE `chuni_user_charge` 6 | ADD UNIQUE KEY `UK_chuni_user_charge` (`user_id`, `charge_id`); 7 | 8 | ALTER TABLE `chuni_user_course` 9 | ADD UNIQUE KEY `UK_chuni_user_course` (`user_id`, `course_id`); 10 | 11 | ALTER TABLE `chuni_user_duel` 12 | ADD UNIQUE KEY `UK_chuni_user_duel` (`user_id`, `duel_id`); 13 | 14 | ALTER TABLE `chuni_user_item` 15 | ADD UNIQUE KEY `UK_chuni_user_item` (`user_id`, `item_id`, `item_kind`); 16 | 17 | ALTER TABLE `chuni_user_map` 18 | ADD UNIQUE KEY `UK_chuni_user_map` (`user_id`, `map_id`); 19 | 20 | ALTER TABLE `chuni_user_music_detail` 21 | ADD UNIQUE KEY `UK_chuni_user_music_detail` (`user_id`, `music_id`, `level`); 22 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V44__fix_chuni_event_popup.sql: -------------------------------------------------------------------------------- 1 | UPDATE `chuni_game_event` SET `enable` = b'0' WHERE `type` = 1 AND `enable` = b'1'; 2 | DELETE FROM `chuni_game_event` WHERE `id` = 19000; 3 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V45__add_ongeki_redplus_properties.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `ongeki_user_option` 2 | ADD COLUMN `platinum_break_disp` int DEFAULT 1, 3 | ADD COLUMN `judge_critical_break` int DEFAULT 0, 4 | MODIFY COLUMN `judge_adjustment` int NULL; 5 | 6 | ALTER TABLE `ongeki_user_login_bonus` 7 | ADD COLUMN `last_update_date` varchar(255) DEFAULT "2000-01-01 05:00:00.0"; 8 | 9 | ALTER TABLE `ongeki_user_data` 10 | ADD COLUMN `medal_count` int DEFAULT 0, 11 | ADD COLUMN `cm_event_watched_date` varchar(255) DEFAULT "2000-01-01 05:00:00.0"; 12 | 13 | ALTER TABLE `ongeki_user_character` 14 | ADD COLUMN `costume_id` int DEFAULT 0, 15 | ADD COLUMN `attachment_id` int DEFAULT 0; 16 | 17 | ALTER TABLE `ongeki_user_chapter` 18 | ADD COLUMN `last_play_music_level` int DEFAULT 0; 19 | 20 | ALTER TABLE `ongeki_user_boss` 21 | ADD COLUMN `event_id` int DEFAULT 0; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V56__extend_reboot_time.sql: -------------------------------------------------------------------------------- 1 | UPDATE `property` SET `property_value` = '2099-01-01 23:59:00.0' WHERE `property_key` LIKE 'reboot_%_time'; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V57__add_maimai2_general_table.sql: -------------------------------------------------------------------------------- 1 | create table maimai2_user_general_data 2 | ( 3 | id bigint auto_increment 4 | primary key, 5 | property_key varchar(255) not null, 6 | property_value text not null, 7 | user_id bigint null, 8 | constraint UKiPb2EMwbXzqTUfMun6Y4AeAKx 9 | unique (user_id, property_key), 10 | constraint FK6BJbvEH8Z22SLbwWKxsb7uarS 11 | foreign key (user_id) references maimai2_user_detail (id) 12 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V58__fix_sqlite_table_references.sql: -------------------------------------------------------------------------------- 1 | -- mysql is good to go -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V59__rename_maimai2_rate_table.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE maimai2_user_rate RENAME TO bak_maimai2_user_rate; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V5__diva_profile_add_border_and_rival.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `diva_player_profile` 2 | ADD COLUMN `show_excellent_border` bit(1), 3 | ADD COLUMN `show_rival_border` bit(1), 4 | ADD COLUMN `rival_pd_id` int(11); 5 | 6 | UPDATE `diva_player_profile` SET 7 | `show_excellent_border` = 1, 8 | `show_rival_border` = 1, 9 | `rival_pd_id` = -1; 10 | 11 | 12 | ALTER TABLE `diva_player_profile` 13 | MODIFY COLUMN `show_excellent_border` bit(1) NOT NULL, 14 | MODIFY COLUMN `show_rival_border` bit(1) NOT NULL, 15 | MODIFY COLUMN `rival_pd_id` int(11) NOT NULL; 16 | 17 | ALTER TABLE `diva_player_profile` 18 | CHANGE COLUMN `show_clear_border` `show_great_border` bit(1) NOT NULL; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V63__fix_maimai2_spp_table.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `maimai2_user_course` 2 | RENAME COLUMN `total_rest_life` TO `total_restlife`; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V64__fix_ongeki_bright.sql: -------------------------------------------------------------------------------- 1 | -- Ongeki user option: stealth_field, color_wall_bright 2 | ALTER TABLE `ongeki_user_option` 3 | ADD COLUMN `color_wall_bright` int DEFAULT 0, 4 | ADD COLUMN `stealth_field` int DEFAULT 3; 5 | 6 | -- Ongeki user data: best_battle_point, over_damage_battle_point, rival_score_category_setting, last_emoney_brand 7 | ALTER TABLE `ongeki_user_data` 8 | ADD COLUMN `best_battle_point` int DEFAULT 0, 9 | ADD COLUMN `over_damage_battle_point` int DEFAULT 0, 10 | ADD COLUMN `rival_score_category_setting` int DEFAULT 0, 11 | ADD COLUMN `last_emoney_brand` int DEFAULT 0; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V66__cleanup_tables.sql: -------------------------------------------------------------------------------- 1 | -- Mysql variant doesn't affected -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V6__add_hard_song.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kanajin/Aqua-docker/70305f2759e818288b27090ccfd935e59e114a4a/src/main/resources/db/migration/mysql/V6__add_hard_song.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V73__add_maimai2_univ_table.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `maimai2_user_detail` 2 | ADD COLUMN `player_old_rating` BIGINT DEFAULT 0, 3 | ADD COLUMN `player_new_rating` BIGINT DEFAULT 0; 4 | 5 | CREATE TABLE maimai2_user_friend_season_ranking ( 6 | id BIGINT auto_increment PRIMARY KEY, 7 | season_id INTEGER, 8 | point INTEGER, 9 | rank INTEGER, 10 | reward_get BOOLEAN, 11 | user_name VARCHAR (255), 12 | record_date VARCHAR (255), 13 | user_id BIGINT, 14 | constraint FKcTHZpS3jrefY5NMf 15 | foreign key (user_id) references maimai2_user_detail (id) 16 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V7__add_diva_session_stage_result_index.sql: -------------------------------------------------------------------------------- 1 | TRUNCATE TABLE `diva_game_session`; 2 | 3 | ALTER TABLE `diva_game_session` 4 | ADD `stage_result_index` int(11) DEFAULT NULL; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V82__add_maimai2_d061_events.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `maimai2_game_event` (`id`, `end_date`, `start_date`, `type`, `enable`) VALUES (220391, '2029-01-01 00:00:00.000000', '2019-01-01 00:00:00.000000',0, b'0'); 2 | INSERT INTO `maimai2_game_event` (`id`, `end_date`, `start_date`, `type`, `enable`) VALUES (22030321, '2029-01-01 00:00:00.000000', '2019-01-01 00:00:00.000000',0, b'1'); 3 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V83__add_maimai2_univp_table.sql: -------------------------------------------------------------------------------- 1 | -- maimai2_user_detail 2 | ALTER TABLE maimai2_user_detail ADD COLUMN last_pair_login_date VARCHAR(255); 3 | ALTER TABLE maimai2_user_detail ADD COLUMN last_trial_play_date VARCHAR(255); 4 | ALTER TABLE maimai2_user_detail ADD COLUMN ban_state INTEGER; 5 | 6 | UPDATE maimai2_user_detail SET ban_state=0; 7 | UPDATE maimai2_user_detail SET last_pair_login_date="2019-01-01 09:00:00.0"; 8 | UPDATE maimai2_user_detail SET last_trial_play_date="2019-01-01 09:00:00.0"; 9 | 10 | -- maimai2_user_playlog 11 | ALTER TABLE maimai2_user_playlog ADD COLUMN trial_play_achievement INTEGER; 12 | UPDATE maimai2_user_playlog SET trial_play_achievement=0; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V8__drop_player_rating_column_in_course.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE chuni_user_course DROP COLUMN player_rating; -------------------------------------------------------------------------------- /src/main/resources/db/migration/mysql/V93__add_chusan_api_frame.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO chusan_frame (id, name) VALUES (1, 'ノーマル'); 2 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V12__chuni_event_add_enable.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE chuni_game_event_new 2 | ( 3 | id INTEGER NOT NULL, 4 | end_date DATETIME, 5 | start_date DATETIME, 6 | type INTEGER NOT NULL, 7 | enable BOOLEAN NOT NULL, 8 | PRIMARY KEY ( 9 | id 10 | ) 11 | ); 12 | 13 | INSERT INTO chuni_game_event_new(id, 14 | end_date, 15 | start_date, 16 | type, 17 | enable) 18 | SELECT id, 19 | end_date, 20 | start_date, 21 | type, 22 | true 23 | FROM chuni_game_event; 24 | 25 | DROP TABLE chuni_game_event; 26 | ALTER TABLE chuni_game_event_new RENAME TO chuni_game_event; 27 | 28 | UPDATE `chuni_game_event` 29 | SET `enable`= false 30 | WHERE `type` = 1; -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V18__add_default_reboot_time.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `property` (id, property_key, property_value) VALUES (3, 'reboot_start_time', '2020-01-01 23:59:00.0'); 2 | INSERT INTO `property` (id, property_key, property_value) VALUES (4, 'reboot_end_time', '2020-01-01 23:59:00.0'); 3 | INSERT INTO `property` (id, property_key, property_value) VALUES (5, 'ongeki_music_ng_list', ''); 4 | INSERT INTO `property` (id, property_key, property_value) VALUES (6, 'ongeki_music_recommend_list', ''); -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V19__add_chuni_general_data.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE chuni_user_general_data 2 | ( 3 | id INTEGER, 4 | property_key VARCHAR NOT NULL, 5 | property_value VARCHAR NOT NULL, 6 | user_id BIGINT REFERENCES chuni_user_data (id) ON DELETE CASCADE, 7 | PRIMARY KEY ( 8 | id 9 | ), 10 | CONSTRAINT chuni_user_general_data_uq UNIQUE ( 11 | property_key, 12 | user_id 13 | ) ON CONFLICT REPLACE 14 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V25__add_client_setting.sql: -------------------------------------------------------------------------------- 1 | create table sega_game_version 2 | ( 3 | uuid varchar 4 | primary key, 5 | rom_version varchar not null, 6 | data_version varchar not null, 7 | last_time DATETIME not null 8 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V2__property_table.sql: -------------------------------------------------------------------------------- 1 | -- Table: property 2 | CREATE TABLE property 3 | ( 4 | id BIGINT NOT NULL, 5 | property_key VARCHAR(255) UNIQUE, 6 | property_value VARCHAR(255), 7 | PRIMARY KEY ( 8 | id 9 | ) 10 | ); 11 | 12 | INSERT INTO `property` (id, property_key, property_value) 13 | VALUES (1, 'diva_news', 'Server Running No other news'); 14 | INSERT INTO `property` (id, property_key, property_value) 15 | VALUES (2, 'diva_warning', 'Network Service Running'); -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V44__fix_chuni_event_popup.sql: -------------------------------------------------------------------------------- 1 | UPDATE `chuni_game_event` SET `enable` = false WHERE `type` = 1 AND `enable` = true; 2 | DELETE FROM `chuni_game_event` WHERE `id` = 19000; 3 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V56__extend_reboot_time.sql: -------------------------------------------------------------------------------- 1 | UPDATE `property` SET `property_value` = '2099-01-01 23:59:00.0' WHERE `property_key` LIKE 'reboot_%_time'; -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V57__add_maimai2_general_table.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE maimai2_user_general_data ( 2 | id INTEGER, 3 | property_key VARCHAR NOT NULL, 4 | property_value VARCHAR NOT NULL, 5 | user_id BIGINT REFERENCES maimai2_user_detail (id) ON DELETE CASCADE, 6 | PRIMARY KEY ( 7 | id 8 | ), 9 | CONSTRAINT maimai2_user_general_data_uq UNIQUE ( 10 | property_key, 11 | user_id 12 | ) 13 | ON CONFLICT REPLACE 14 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V59__rename_maimai2_rate_table.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE maimai2_user_rate RENAME TO bak_maimai2_user_rate; -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V5__diva_profile_add_border_and_rival.sql.conf: -------------------------------------------------------------------------------- 1 | executeInTransaction=false -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V63__fix_maimai2_spp_table.sql: -------------------------------------------------------------------------------- 1 | -- I got zero bug report about this before so.. just assume that user never used this table and API. 2 | 3 | DROP TABLE `maimai2_user_course`; 4 | 5 | CREATE TABLE `maimai2_user_course` ( 6 | id INTEGER, 7 | course_id INTEGER, 8 | is_last_clear BOOLEAN, 9 | total_restlife INTEGER, 10 | total_achievement INTEGER, 11 | total_deluxscore INTEGER, 12 | play_count INTEGER, 13 | clear_date VARCHAR (255), 14 | last_play_date VARCHAR (255), 15 | best_achievement INTEGER, 16 | best_achievement_date VARCHAR (255), 17 | best_deluxscore INTEGER, 18 | best_deluxscore_date VARCHAR (255), 19 | user_id BIGINT REFERENCES maimai2_user_detail (id), 20 | PRIMARY KEY ( 21 | id 22 | ) 23 | ); 24 | 25 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V66__cleanup_tables.sql.conf: -------------------------------------------------------------------------------- 1 | executeInTransaction=false -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V73__add_maimai2_univ_table.conf: -------------------------------------------------------------------------------- 1 | executeInTransaction=false -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V7__add_diva_session_stage_result_index.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE diva_game_session; 2 | 3 | CREATE TABLE diva_game_session 4 | ( 5 | id INTEGER, 6 | accept_id INTEGER NOT NULL, 7 | last_pv_id INTEGER, 8 | last_update_time DATETIME, 9 | level_exp INTEGER, 10 | level_number INTEGER, 11 | old_level_exp INTEGER, 12 | old_level_number INTEGER, 13 | stage_index INTEGER, 14 | stage_result_index INTEGER, 15 | start_mode VARCHAR(255), 16 | start_time DATETIME, 17 | vp INTEGER, 18 | pd_id BIGINT UNIQUE 19 | REFERENCES diva_player_profile (id) ON DELETE CASCADE, 20 | PRIMARY KEY ( 21 | id 22 | ) 23 | ); -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V82__add_maimai2_d061_events.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO `maimai2_game_event` (`id`, `end_date`, `start_date`, `type`, `enable`) VALUES (220391, '2029-01-01 00:00:00.000000', '2019-01-01 00:00:00.000000',0, false); 2 | INSERT INTO `maimai2_game_event` (`id`, `end_date`, `start_date`, `type`, `enable`) VALUES (22030321, '2029-01-01 00:00:00.000000', '2019-01-01 00:00:00.000000',0, true); 3 | -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V83__add_maimai2_univp_table.sql: -------------------------------------------------------------------------------- 1 | -- maimai2_user_detail 2 | ALTER TABLE maimai2_user_detail ADD COLUMN last_pair_login_date VARCHAR(255); 3 | ALTER TABLE maimai2_user_detail ADD COLUMN last_trial_play_date VARCHAR(255); 4 | ALTER TABLE maimai2_user_detail ADD COLUMN ban_state INTEGER; 5 | 6 | UPDATE maimai2_user_detail SET ban_state=0; 7 | UPDATE maimai2_user_detail SET last_pair_login_date="2019-01-01 09:00:00.0"; 8 | UPDATE maimai2_user_detail SET last_trial_play_date="2019-01-01 09:00:00.0"; 9 | 10 | -- maimai2_user_playlog 11 | ALTER TABLE maimai2_user_playlog ADD COLUMN trial_play_achievement INTEGER; 12 | UPDATE maimai2_user_playlog SET trial_play_achievement=0; -------------------------------------------------------------------------------- /src/main/resources/db/migration/sqlite/V93__add_chusan_api_frame.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO chusan_frame (id, name) VALUES (1, 'ノーマル'); 2 | -------------------------------------------------------------------------------- /src/main/resources/server.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kanajin/Aqua-docker/70305f2759e818288b27090ccfd935e59e114a4a/src/main/resources/server.p12 -------------------------------------------------------------------------------- /src/test/java/icu/samnyan/aqua/AquaServerApplicationTests.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | 7 | @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 8 | @SpringBootTest 9 | class AquaServerApplicationTests { 10 | 11 | @Test 12 | void contextLoads() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/test/java/icu/samnyan/aqua/FlywayTestConfig.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua; 2 | 3 | import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | /** 8 | * @author sam_nya (privateamusement@protonmail.com) 9 | */ 10 | @Configuration 11 | public class FlywayTestConfig { 12 | 13 | @Bean 14 | public FlywayMigrationStrategy clean() { 15 | return flyway -> { 16 | flyway.clean(); 17 | flyway.migrate(); 18 | }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/icu/samnyan/aqua/util/CardHelper.java: -------------------------------------------------------------------------------- 1 | package icu.samnyan.aqua.util; 2 | 3 | import icu.samnyan.aqua.sega.general.model.Card; 4 | 5 | import java.time.LocalDateTime; 6 | 7 | /** 8 | * @author sam_nya (privateamusement@protonmail.com) 9 | */ 10 | public class CardHelper { 11 | 12 | public static Card getCard() { 13 | var now = LocalDateTime.now(); 14 | return new Card(1L, 114514L, "01145141919810000000", now, now); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/test/resources/application-testMysql.properties: -------------------------------------------------------------------------------- 1 | # For testing 2 | ## AimeDb server setting 3 | aimedb.server.enable=true 4 | aimedb.server.port=22345 5 | allnet.server.host=localhost 6 | allnet.server.port=80 7 | aimedb.server.address=127.0.0.1 8 | billing.server.enable=true 9 | billing.server.port=8443 10 | ## Http Server Port 11 | server.port=80 12 | spring.flyway.locations=classpath:db/migration/mysql 13 | spring.datasource.driver-class-name=org.mariadb.jdbc.Driver 14 | spring.datasource.username=aqua_test 15 | spring.datasource.password=aqua_test 16 | spring.datasource.url=jdbc:mariadb://localhost:3306/aqua_test?useSSL=false 17 | spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB10Dialect 18 | spring.jpa.hibernate.ddl-auto=validate 19 | -------------------------------------------------------------------------------- /src/test/resources/application-testSqlite.properties: -------------------------------------------------------------------------------- 1 | # For testing 2 | ## AimeDb server setting 3 | aimedb.server.enable=true 4 | aimedb.server.port=22345 5 | allnet.server.host=localhost 6 | allnet.server.port=80 7 | aimedb.server.address=127.0.0.1 8 | billing.server.enable=true 9 | billing.server.port=8443 10 | ## Http Server Port 11 | server.port=80 12 | spring.datasource.driver-class-name=org.sqlite.JDBC 13 | spring.datasource.url=jdbc:sqlite:data/test.sqlite 14 | spring.flyway.locations=classpath:db/migration/sqlite 15 | -------------------------------------------------------------------------------- /src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.profiles.active=testSqlite --------------------------------------------------------------------------------