diff --git a/.gitignore b/.gitignore index 0e224c17..31e40848 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,4 @@ src/main/resources/meta/*/*.json *.salive test-diff htmlReport +docs/logs diff --git a/docs/dev/kt.md b/docs/dev/kt.md new file mode 100644 index 00000000..0ce99b24 --- /dev/null +++ b/docs/dev/kt.md @@ -0,0 +1,13 @@ +```regexp +(var \w+) = 0 +$1: Int = 0 + + \= false +: Bool = false + +(var [\w: =?"]+[^,])\n +$1,\n + +(var \w+) \= \"\" +$1: String = "" +``` \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/api/config/WebConfig.java b/src/main/java/icu/samnyan/aqua/api/config/WebConfig.java deleted file mode 100644 index 3f5cc7c3..00000000 --- a/src/main/java/icu/samnyan/aqua/api/config/WebConfig.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.api.config; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.resource.PathResourceResolver; - -import java.io.IOException; - -@Configuration -public class WebConfig implements WebMvcConfigurer { - - private final boolean AQUAVIEWER_ENABLED; - - public WebConfig(@Value("${aquaviewer.server.enable}") boolean AQUAVIEWER_ENABLED) { - this.AQUAVIEWER_ENABLED = AQUAVIEWER_ENABLED; - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - - if (AQUAVIEWER_ENABLED) { - // Static assets (images), this priority must be higher than routes - registry.addResourceHandler("/web/assets/**") - .addResourceLocations("file:web/assets/") - .setCachePeriod(10) - .resourceChain(true) - .addResolver(new PathResourceResolver()); - - // For angularjs html5 routes - registry.addResourceHandler("/web/**", "/web/", "/web") - .addResourceLocations("file:web/") - .setCachePeriod(10) - .resourceChain(true) - .addResolver(new PathResourceResolver() { - @Override - protected Resource getResource(String resourcePath, Resource location) throws IOException { - Resource requestedResource = location.createRelative(resourcePath); - return requestedResource.exists() && requestedResource.isReadable() ? requestedResource - : new FileSystemResource("web/index.html"); - } - }); - } - } - -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/api/controller/ApiControllerAdvice.java b/src/main/java/icu/samnyan/aqua/api/controller/ApiControllerAdvice.java deleted file mode 100644 index 8bfeb1d4..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/ApiControllerAdvice.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.api.controller; - -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import java.util.NoSuchElementException; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestControllerAdvice(basePackages = "icu.samnyan.aqua.api") -public class ApiControllerAdvice { - - @ExceptionHandler(NoSuchElementException.class) - public ResponseEntity noSuchElement() { - return ResponseEntity.notFound().build(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java b/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java deleted file mode 100644 index 15a3cbaa..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java +++ /dev/null @@ -1,38 +0,0 @@ -package icu.samnyan.aqua.api.controller.general; - -import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerScreenShotRepository; -import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.nio.file.Paths; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/static") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class StaticController { - private final PlayerScreenShotRepository playerScreenShotRepository; - - @GetMapping(value = "screenshot/{filename}", produces = MediaType.IMAGE_JPEG_VALUE) - public ResponseEntity getScreenshotFile(@PathVariable String filename) { - Optional ss = playerScreenShotRepository.findByFileName(filename); - if (ss.isPresent()) { - return ResponseEntity.ok(new FileSystemResource(Paths.get("data/" + ss.get().getFileName()))); - } else { - return ResponseEntity.notFound().build(); - } - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java deleted file mode 100644 index da1bd71d..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega; - -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.service.CardService; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; -import java.util.Optional; - -/** - * General Aime actions endpoint - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/sega/aime") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiAimeController { - - private final CardService cardService; - - @PostMapping("getByAccessCode") - public Optional getByAccessCode(@RequestBody Map request) { - return cardService.getCardByAccessCode(request.get("accessCode").replaceAll("-", "").replaceAll(" ", "")); - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java deleted file mode 100644 index 17a03a83..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.chuni.v1; - -import icu.samnyan.aqua.sega.chunithm.dao.gamedata.GameCharacterRepository; -import icu.samnyan.aqua.sega.chunithm.dao.gamedata.GameCharacterSkillRepository; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Character; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.CharacterSkill; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; -import icu.samnyan.aqua.sega.chunithm.service.GameMusicService; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/chuni/v1/data") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiChuniV1GameDataController { - - private final GameMusicService gameMusicService; - private final GameCharacterRepository gameCharacterRepository; - private final GameCharacterSkillRepository gameCharacterSkillRepository; - - @GetMapping("music") - public List getMusic() { - return gameMusicService.getAll(); - } - - @GetMapping("character") - public List getCharacter() { - return gameCharacterRepository.findAll(); - } - - @GetMapping("skill") - public List getSkill() { - return gameCharacterSkillRepository.findAll(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java deleted file mode 100644 index 78f3a953..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java +++ /dev/null @@ -1,421 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.chuni.v1; - -import com.fasterxml.jackson.core.type.TypeReference; -import icu.samnyan.aqua.api.model.MessageResponse; -import icu.samnyan.aqua.api.model.ReducedPageResponse; -import icu.samnyan.aqua.api.model.resp.sega.chuni.v1.ProfileResp; -import icu.samnyan.aqua.api.model.resp.sega.chuni.v1.RatingItem; -import icu.samnyan.aqua.api.model.resp.sega.chuni.v1.RecentResp; -import icu.samnyan.aqua.api.model.resp.sega.chuni.v1.external.ChuniDataExport; -import icu.samnyan.aqua.api.model.resp.sega.chuni.v1.external.ChuniDataImport; -import icu.samnyan.aqua.api.model.resp.sega.chuni.v1.external.ExternalUserData; -import icu.samnyan.aqua.api.util.ApiMapper; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Level; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; -import icu.samnyan.aqua.sega.chunithm.model.userdata.*; -import icu.samnyan.aqua.sega.chunithm.service.*; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.util.VersionInfo; -import icu.samnyan.aqua.sega.util.VersionUtil; -import lombok.AllArgsConstructor; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * For all aimeId parameter, should use String - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/chuni/v1") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiChuniV1PlayerDataController { - - private static final Logger logger = LoggerFactory.getLogger(ApiChuniV1PlayerDataController.class); - - private final ApiMapper mapper; - - private final CardService cardService; - - private final UserActivityService userActivityService; - private final UserCharacterService userCharacterService; - private final UserChargeService userChargeService; - private final UserCourseService userCourseService; - private final UserDataService userDataService; - private final UserDataExService userDataExService; - private final UserDuelService userDuelService; - private final UserGameOptionService userGameOptionService; - private final UserGameOptionExService userGameOptionExService; - private final UserItemService userItemService; - private final UserMapService userMapService; - private final UserMusicDetailService userMusicDetailService; - private final UserPlaylogService userPlaylogService; - private final UserGeneralDataService userGeneralDataService; - - private final GameMusicService gameMusicService; - - // Keep it here for legacy - @GetMapping("music") - public List getMusicList() { - return gameMusicService.getAll(); - } - - /** - * Get Basic info - * - * @return - */ - @GetMapping("profile") - public ProfileResp getProfile(@RequestParam String aimeId) { - ProfileResp resp = mapper.convert(userDataService.getUserByExtId(aimeId).orElseThrow(), new TypeReference<>() { - }); - UserCourse course = userCourseService.getByUserId(aimeId) - .stream() - .filter(UserCourse::isClear) - .max(Comparator.comparingInt(UserCourse::getClassId)) - .orElseGet(() -> new UserCourse(0)); - resp.setCourseClass(course.getClassId()); - return resp; - } - - @PutMapping("profile/userName") - public UserData updateName(@RequestBody Map request) { - UserData profile = userDataService.getUserByExtId((String) request.get("aimeId")).orElseThrow(); - profile.setUserName((String) request.get("userName")); - return userDataService.saveUserData(profile); - } - - @PutMapping("profile/plate") - public UserData updatePlate(@RequestBody Map request) { - UserData profile = userDataService.getUserByExtId((String) request.get("aimeId")).orElseThrow(); - profile.setNameplateId((Integer) request.get("nameplateId")); - profile.setFrameId((Integer) request.get("frameId")); - return userDataService.saveUserData(profile); - } - - @PutMapping("profile/privacy") - public ResponseEntity updatePrivacy(@RequestBody Map request) { - UserData profile = userDataService.getUserByExtId((String) request.get("aimeId")).orElseThrow(); - UserGameOption option = userGameOptionService.getByUser(profile).orElseThrow(); - int privacy = (Integer) request.get("privacy"); - if (privacy != 1 && privacy != 0) { - return ResponseEntity.badRequest().body(new MessageResponse("Wrong data")); - } - option.setPrivacy(privacy); - return ResponseEntity.ok(userDataService.saveUserData(profile)); - } - - @GetMapping("recent") - public ReducedPageResponse getRecentPlay(@RequestParam String aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page playLogs = userPlaylogService.getRecentPlays(aimeId, PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "userPlayDate"))); - return new ReducedPageResponse<>(mapper.convert(playLogs.getContent(), new TypeReference<>() { - }), playLogs.getPageable().getPageNumber(), playLogs.getTotalPages(), playLogs.getTotalElements()); - } - - @GetMapping("rating") - public List getRating(@RequestParam String aimeId) { - - Map musicMap = gameMusicService.getIdMap(); - List details = userMusicDetailService.getByUserId(aimeId); - - var user = userDataService.getUserByExtId(aimeId).orElseThrow(); - var version = VersionUtil.parseVersion(user.getLastRomVersion()); - - List result = new ArrayList<>(); - for (UserMusicDetail detail : details) { - Music music = musicMap.get(detail.getMusicId()); - if (music != null) { - Level level = music.getLevels().get(detail.getLevel()); - if (level != null) { - int levelBase = level.getLevel() * 100 + level.getLevelDecimal(); - int score = detail.getScoreMax(); - int rating = calculateRating(levelBase, score, version); - result.add(new RatingItem(music.getMusicId(), music.getName(), music.getArtistName(), level.getDiff(), score, levelBase, rating)); - } - } - } - - return result.stream() - .filter(detail -> detail.getLevel() != 4) - .sorted(Comparator.comparingInt(RatingItem::getRating).reversed()) - .limit(30) - .collect(Collectors.toList()); - } - - @GetMapping("rating/recent") - public List getRecentRating(@RequestParam String aimeId) { - Map musicMap = gameMusicService.getIdMap(); - Optional recentOptional = userGeneralDataService.getByUserIdAndKey(aimeId, "recent_rating_list"); - - - var user = userDataService.getUserByExtId(aimeId).orElseThrow(); - var version = VersionUtil.parseVersion(user.getLastRomVersion()); - - List result = new LinkedList<>(); - if (recentOptional.isPresent()) { - // Read from recent_rating_list - String val = recentOptional.get().getPropertyValue(); - if (StringUtils.isNotBlank(val) && val.contains(",")) { - String[] records = val.split(","); - for (String record : - records) { - String[] value = record.split(":"); - Music music = musicMap.get(Integer.parseInt(value[0])); - if (music != null) { - Level level = music.getLevels().get(Integer.parseInt(value[1])); - if (level != null) { - int levelBase = getLevelBase(level.getLevel(), level.getLevelDecimal()); - int score = Integer.parseInt(value[2]); - int rating = calculateRating(levelBase, score, version); - result.add(new RatingItem(music.getMusicId(), music.getName(), music.getArtistName(), level.getDiff(), score, levelBase, rating)); - } - } - } - } - } else { - // Use old method - List logList = userPlaylogService.getRecent30Plays(aimeId); - for (UserPlaylog log : logList) { - Music music = musicMap.get(log.getMusicId()); - if (music != null) { - Level level = music.getLevels().get(log.getLevel()); - if (level != null) { - int levelBase = getLevelBase(level.getLevel(), level.getLevelDecimal()); - int score = log.getScore(); - int rating = calculateRating(levelBase, score, version); - result.add(new RatingItem(music.getMusicId(), music.getName(), music.getArtistName(), level.getDiff(), score, levelBase, rating)); - } - } - } - } - - return result.stream() - .filter(detail -> detail.getLevel() != 4) - .sorted(Comparator.comparingInt(RatingItem::getRating).reversed()) - .limit(10) - .collect(Collectors.toList()); - } - - @GetMapping("song/{id}") - public List getSongDetail(@RequestParam String aimeId, @PathVariable int id) { - return userMusicDetailService.getByUserIdAndMusicId(aimeId, id); - } - - @GetMapping("song/{id}/{level}") - public List getLevelPlaylog(@RequestParam String aimeId, @PathVariable int id, @PathVariable int level) { - return userPlaylogService.getByUserIdAndMusicIdAndLevel(aimeId, id, level); - } - - @GetMapping("character") - public ReducedPageResponse getCharacter(@RequestParam String aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page characters = userCharacterService.getByUserId(aimeId, page, size); - return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements()); - } - - @PostMapping("character") - public ResponseEntity updateCharacter(@RequestBody Map request) { - UserData profile = userDataService.getUserByExtId((String) request.get("aimeId")).orElseThrow(); - Integer characterId = (Integer) request.get("characterId"); - Optional characterOptional = userCharacterService.getByUserAndCharacterId(profile, characterId); - UserCharacter character; - if(characterOptional.isPresent()) { - character = characterOptional.get(); - } else { - character = new UserCharacter(profile); - character.setCharacterId(characterId); - } - if(request.containsKey("level")) { - character.setLevel((Integer) request.get("level")); - } - - return ResponseEntity.ok(userCharacterService.save(character)); - } - - @GetMapping("course") - public List getCourse(@RequestParam String aimeId) { - return userCourseService.getByUserId(aimeId); - } - - @GetMapping("duel") - public List getDuel(@RequestParam String aimeId) { - return userDuelService.getByUserId(aimeId); - } - - @GetMapping("item") - public ReducedPageResponse getItem(@RequestParam String aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page items = userItemService.getByUserId(aimeId, page, size); - return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements()); - } - - @PostMapping("item") - public ResponseEntity updateItem(@RequestBody Map request) { - UserData profile = userDataService.getUserByExtId((String) request.get("aimeId")).orElseThrow(); - Integer itemId = (Integer) request.get("itemId"); - Integer itemKind = (Integer) request.get("itemKind"); - Optional itemOptional = userItemService.getByUserAndItemIdAndKind(profile, itemId,itemKind); - UserItem item; - if(itemOptional.isPresent()) { - item = itemOptional.get(); - } else { - item = new UserItem(profile); - item.setItemId(itemId); - item.setItemKind(itemKind); - } - if(request.containsKey("stock")) { - item.setStock((Integer) request.get("stock")); - } - return ResponseEntity.ok(userItemService.save(item)); - } - - @GetMapping("general") - public ResponseEntity getGeneralData(@RequestParam String aimeId, @RequestParam String key) { - Optional userGeneralDataOptional = userGeneralDataService.getByUserIdAndKey(aimeId,key); - return userGeneralDataOptional.>map(ResponseEntity::ok) - .orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("User or value not found."))); - } - - @GetMapping("export") - public ResponseEntity exportAllUserData(@RequestParam String aimeId) { - ChuniDataExport data = new ChuniDataExport(); - try { - data.setGameId("SDBT"); - data.setUserData(userDataService.getUserByExtId(aimeId).orElseThrow()); - data.setUserActivityList(userActivityService.getByUserId(aimeId)); - data.setUserCharacterList(userCharacterService.getByUserId(aimeId)); - data.setUserChargeList(userChargeService.getByUserId(aimeId)); - data.setUserCourseList(userCourseService.getByUserId(aimeId)); - data.setUserDataEx(userDataExService.getByExtId(aimeId).orElseThrow()); - data.setUserDuelList(userDuelService.getByUserId(aimeId)); - data.setUserGameOption(userGameOptionService.getByUserId(aimeId).orElseThrow()); - data.setUserGameOptionEx(userGameOptionExService.getByUserId(aimeId).orElseThrow()); - data.setUserItemList(userItemService.getByUserId(aimeId)); - data.setUserMapList(userMapService.getByUserId(aimeId)); - data.setUserMusicDetailList(userMusicDetailService.getByUserId(aimeId)); - data.setUserPlaylogList(userPlaylogService.getByUserId(aimeId)); - } catch (NoSuchElementException e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND) - .body(new MessageResponse("User not found")); - } catch (Exception e) { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(new MessageResponse("Error during data export. Reason: " + e.getMessage())); - } - // Set filename - HttpHeaders headers = new HttpHeaders(); - headers.set("content-disposition", "attachment; filename=chuni_" + aimeId + "_exported.json"); - return new ResponseEntity<>(data, headers, HttpStatus.OK); - } - - @PostMapping("import") - public ResponseEntity importAllUserData(@RequestBody ChuniDataImport data) { - if(!data.getGameId().equals("SDBT")) { - return ResponseEntity.unprocessableEntity().body(new MessageResponse("Wrong Game Profile, Expected 'SDBT', Get " + data.getGameId())); - } - - ExternalUserData exUser = data.getUserData(); - - Optional cardOptional = cardService.getCardByAccessCode(exUser.getAccessCode()); - Card card; - if (cardOptional.isPresent()) { - if (userDataService.getUserByCard(cardOptional.get()).isPresent()) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST) - .body(new MessageResponse("This card already has a chunithm profile.")); - } else { - card = cardOptional.get(); - } - } else { - card = cardService.registerByAccessCode(exUser.getAccessCode()); - } - - UserData userData = mapper.convert(exUser, new TypeReference<>() { - }); - userData.setCard(card); - userDataService.saveAndFlushUserData(userData); - - List userActivityList = data.getUserActivityList(); - userActivityList.forEach(x -> x.setUser(userData)); - userActivityService.saveAll(userActivityList); - - List userCharacterList = data.getUserCharacterList(); - userCharacterList.forEach(x -> x.setUser(userData)); - userCharacterService.saveAll(userCharacterList); - - List userChargeList = data.getUserChargeList(); - userCharacterList.forEach(x -> x.setUser(userData)); - userChargeService.saveAll(userChargeList); - - List userCourseList = data.getUserCourseList(); - userCourseList.forEach(x -> x.setUser(userData)); - userCourseService.saveAll(userCourseList); - - UserDataEx userDataEx = data.getUserDataEx(); - userDataEx.setUser(userData); - userDataExService.save(userDataEx); - - List userDuelList = data.getUserDuelList(); - userDuelList.forEach(x -> x.setUser(userData)); - userDuelService.saveAll(userDuelList); - - UserGameOption userGameOption = data.getUserGameOption(); - userGameOption.setUser(userData); - userGameOptionService.save(userGameOption); - - UserGameOptionEx userGameOptionEx = data.getUserGameOptionEx(); - userGameOptionEx.setUser(userData); - userGameOptionExService.save(userGameOptionEx); - - List userItemList = data.getUserItemList(); - userItemList.forEach(x -> x.setUser(userData)); - userItemService.saveAll(userItemList); - - List userMapList = data.getUserMapList(); - userMapList.forEach(x -> x.setUser(userData)); - userMapService.saveAll(userMapList); - - List userMusicDetailList = data.getUserMusicDetailList(); - userMusicDetailList.forEach(x -> x.setUser(userData)); - userMusicDetailService.saveAll(userMusicDetailList); - - List userPlaylogList = data.getUserPlaylogList(); - userPlaylogList.forEach(x -> x.setUser(userData)); - userPlaylogService.saveAll(userPlaylogList); - - return ResponseEntity.ok(new MessageResponse("Import successfully, aimeId: " + card.getExtId())); - } - - private int getLevelBase(int level, int levelDecimal) { - return level * 100 + levelDecimal; - } - - private int calculateRating(int levelBase, int score, VersionInfo version) { - if (score >= 1007500) return levelBase + 200; - if (score >= 1005000) return levelBase + 150 + (score - 1005000) * 10 / 500; - if (score >= 1000000) return levelBase + 100 + (score - 1000000) * 5 / 500; - if (score >= 975000) return levelBase + (score - 975000) * 2 / 500; - if (score >= 950000 && version.getMinorVersion() < 35) return levelBase - 150 + (score - 950000) * 3 / 500; - if (score >= 925000) return levelBase - 300 + (score - 925000) * 3 / 500; - if (score >= 900000) return levelBase - 500 + (score - 900000) * 4 / 500; - if (score >= 800000) - return ((levelBase - 500) / 2 + (score - 800000) * ((levelBase - 500) / 2) / (100000)); - return 0; - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java deleted file mode 100644 index fc7a0c3b..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.diva; - -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaCustomizeRepository; -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaModuleRepository; -import icu.samnyan.aqua.sega.diva.dao.gamedata.DivaPvRepository; -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaCustomize; -import icu.samnyan.aqua.sega.diva.model.gamedata.DivaModule; -import icu.samnyan.aqua.sega.diva.model.gamedata.Pv; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/diva/data") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiDivaGameDataController { - - private final DivaModuleRepository divaModuleRepository; - private final DivaCustomizeRepository divaCustomizeRepository; - private final DivaPvRepository divaPvRepository; - - @GetMapping(value = "musicList") - public List musicList() { - return divaPvRepository.findAll(); - } - - @GetMapping(value = "moduleList") - public List moduleList() { - return divaModuleRepository.findAll(); - } - - @GetMapping(value = "customizeList") - public List customizeList() { - return divaCustomizeRepository.findAll(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java deleted file mode 100644 index 11e0d9f4..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java +++ /dev/null @@ -1,276 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.diva; - -import icu.samnyan.aqua.api.model.MessageResponse; -import icu.samnyan.aqua.api.model.ReducedPageResponse; -import icu.samnyan.aqua.api.model.resp.sega.diva.PvRankRecord; -import icu.samnyan.aqua.sega.diva.dao.userdata.*; -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import icu.samnyan.aqua.sega.diva.model.userdata.*; -import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.*; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/diva") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiDivaPlayerDataController { - - private final PlayerProfileService playerProfileService; - - private final GameSessionRepository gameSessionRepository; - private final PlayLogRepository playLogRepository; - private final PlayerPvRecordRepository playerPvRecordRepository; - private final PlayerPvCustomizeRepository playerPvCustomizeRepository; - private final PlayerModuleRepository playerModuleRepository; - private final PlayerCustomizeRepository playerCustomizeRepository; - private final PlayerScreenShotRepository playerScreenShotRepository; - - @PostMapping("forceUnlock") - public ResponseEntity forceUnlock(@RequestParam long pdId) { - PlayerProfile profile = playerProfileService.findByPdId(pdId).orElseThrow(); - Optional session = gameSessionRepository.findByPdId(profile); - if(session.isPresent()) { - gameSessionRepository.delete(session.get()); - return ResponseEntity.ok(new MessageResponse("Session deleted.")); - } else { - return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new MessageResponse("Session doesn't exist.")); - } - } - - @GetMapping("playerInfo") - public Optional getPlayerInfo(@RequestParam long pdId) { - return playerProfileService.findByPdId(pdId); - } - - @GetMapping("playerInfo/rival") - public Map getRivalInfo(@RequestParam long pdId) { - var rId = playerProfileService.findByPdId(pdId).orElseThrow().getRivalPdId(); - Map result = new HashMap<>(); - if (rId == -1) { - result.put("rival", "Not Set"); - } else { - Optional profile = playerProfileService.findByPdId(rId); - if (profile.isPresent()) { - result.put("rival", profile.get().getPlayerName()); - } else { - result.put("rival", "Player Not Found"); - } - } - return result; - } - - @PutMapping("playerInfo/rival") - public PlayerProfile updateRivalWithId(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setRivalPdId((Integer) request.get("rivalId")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/rival/byRecord") - public PlayerProfile updateRivalWithRecord(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - PlayerPvRecord record = playerPvRecordRepository.findById(((Integer) request.get("recordId")).longValue()).orElseThrow(); - profile.setRivalPdId(record.getPdId().getPdId()); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/playerName") - public PlayerProfile updateName(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setPlayerName((String) request.get("playerName")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/title") - public PlayerProfile updateTitle(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setLevelTitle((String) request.get("title")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/plate") - public PlayerProfile updatePlate(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setPlateId((Integer) request.get("plateId")); - profile.setPlateEffectId((Integer) request.get("plateEffectId")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/commonModule") - public PlayerProfile updateModule(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setCommonModule((String) request.get("commonModule")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/commonCustomize") - public PlayerProfile updateCustomize(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setCommonCustomizeItems((String) request.get("commonCustomize")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/commonSkin") - public PlayerProfile updateSkin(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setCommonSkin((Integer) request.get("skinId")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/myList") - public PlayerProfile updateMyList(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - switch ((Integer) request.get("myListId")) { - case 0: - profile.setMyList0((String) request.get("myListData")); - break; - case 1: - profile.setMyList1((String) request.get("myListData")); - break; - case 2: - profile.setMyList2((String) request.get("myListData")); - break; - } - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/se") - public PlayerProfile updateSe(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setButtonSe((Integer) request.get("buttonSe")); - profile.setChainSlideSe((Integer) request.get("chainSlideSe")); - profile.setSlideSe((Integer) request.get("slideSe")); - profile.setSliderTouchSe((Integer) request.get("sliderTouchSe")); - return playerProfileService.save(profile); - } - - @PutMapping("playerInfo/display") - public PlayerProfile updateDisplay(@RequestBody Map request) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - profile.setShowInterimRanking((Boolean) request.get("showInterimRanking")); - profile.setShowClearStatus((Boolean) request.get("showClearStatus")); - profile.setShowGreatBorder((Boolean) request.get("showGreatBorder")); - profile.setShowExcellentBorder((Boolean) request.get("showExcellentBorder")); - profile.setShowRivalBorder((Boolean) request.get("showRivalBorder")); - profile.setShowRgoSetting((Boolean) request.get("showRgoSetting")); - return playerProfileService.save(profile); - } - - @GetMapping("playLog") - public ReducedPageResponse getPlayLogs(@RequestParam long pdId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page playLogs = playLogRepository.findByPdId_PdIdOrderByDateTimeDesc(pdId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(playLogs.getContent(), playLogs.getPageable().getPageNumber(), playLogs.getTotalPages(), playLogs.getTotalElements()); - } - - /** - * PvRecord - */ - - @GetMapping("pvRecord") - public ReducedPageResponse getPvRecords(@RequestParam long pdId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page pvRecords = playerPvRecordRepository.findByPdId_PdIdOrderByPvId(pdId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(pvRecords.getContent(), pvRecords.getPageable().getPageNumber(), pvRecords.getTotalPages(), pvRecords.getTotalElements()); - } - - @GetMapping("pvRecord/{pvId}") - public Map getPvRecord(@RequestParam long pdId, @PathVariable int pvId) { - Map resultMap = new HashMap<>(); - resultMap.put("records", playerPvRecordRepository.findByPdId_PdIdAndPvId(pdId, pvId)); - playerPvCustomizeRepository.findByPdId_PdIdAndPvId(pdId, pvId).ifPresent(x -> resultMap.put("customize", x)); - return resultMap; - } - - @PutMapping("pvRecord/{pvId}") - public PlayerPvCustomize updatePvCustomize(@RequestBody Map request, @PathVariable int pvId) { - PlayerProfile profile = playerProfileService.findByPdId((Integer) request.get("pdId")).orElseThrow(); - PlayerPvCustomize playerPvCustomize = playerPvCustomizeRepository.findByPdIdAndPvId(profile, pvId) - .orElseGet(() -> new PlayerPvCustomize(profile, pvId)); - playerPvCustomize.setModule((String) request.get("module")); - playerPvCustomize.setCustomize((String) request.get("customize")); - playerPvCustomize.setCustomizeFlag((String) request.get("customizeFlag")); - playerPvCustomize.setSkin((Integer) request.get("skin")); - playerPvCustomize.setButtonSe((Integer) request.get("buttonSe")); - playerPvCustomize.setSlideSe((Integer) request.get("slideSe")); - playerPvCustomize.setChainSlideSe((Integer) request.get("chainSlideSe")); - playerPvCustomize.setSliderTouchSe((Integer) request.get("sliderTouchSe")); - return playerPvCustomizeRepository.save(playerPvCustomize); - } - - @GetMapping("pvRecord/{pvId}/ranking/{difficulty}") - public ReducedPageResponse getPvRanking(@PathVariable int pvId, - @PathVariable String difficulty, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Difficulty diff = null; - Edition edition = Edition.ORIGINAL; - switch (difficulty) { - case "EASY": - diff = Difficulty.EASY; - break; - case "NORMAL": - diff = Difficulty.NORMAL; - break; - case "HARD": - diff = Difficulty.HARD; - break; - case "EXTREME": - diff = Difficulty.EXTREME; - break; - case "EXTRA_EXTREME": { - diff = Difficulty.EXTREME; - edition = Edition.EXTRA; - break; - } - } - if(diff != null) { - Page pvRecords = playerPvRecordRepository.findByPvIdAndEditionAndDifficultyOrderByMaxScoreDesc(pvId, edition,diff, PageRequest.of(page, size)); - - List rankList = new LinkedList<>(); - - pvRecords.forEach(x ->{ - rankList.add(new PvRankRecord(x.getId(),x.getPdId().getPlayerName(),x.getMaxScore(),x.getMaxAttain())); - }); - - return new ReducedPageResponse<>(rankList, pvRecords.getPageable().getPageNumber(), pvRecords.getTotalPages(), pvRecords.getTotalElements()); - } - return null; - } - - @GetMapping("module") - public ReducedPageResponse getModules(@RequestParam long pdId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page modules = playerModuleRepository.findByPdId_PdId(pdId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(modules.getContent(), modules.getPageable().getPageNumber(), modules.getTotalPages(), modules.getTotalElements()); - } - - @GetMapping("customize") - public ReducedPageResponse getCustomizes(@RequestParam long pdId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page customizes = playerCustomizeRepository.findByPdId_PdId(pdId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(customizes.getContent(), customizes.getPageable().getPageNumber(), customizes.getTotalPages(), customizes.getTotalElements()); - } - - @GetMapping("screenshot") - public List getScreenshotList(@RequestParam long pdId) { - return playerScreenShotRepository.findByPdId_PdId(pdId); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java deleted file mode 100644 index 34503765..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ /dev/null @@ -1,396 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.maimai2; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import icu.samnyan.aqua.api.model.MessageResponse; -import icu.samnyan.aqua.api.model.ReducedPageResponse; -import icu.samnyan.aqua.api.model.resp.sega.maimai2.PhotoResp; -import icu.samnyan.aqua.api.model.resp.sega.maimai2.ProfileResp; -import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.ExternalUserData; -import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.Maimai2DataExport; -import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.Maimai2DataImport; -import icu.samnyan.aqua.api.util.ApiMapper; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.maimai2.model.*; -import icu.samnyan.aqua.sega.maimai2.model.userdata.*; -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/maimai2") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiMaimai2PlayerDataController { - - private final ApiMapper mapper; - - private final CardService cardService; - - private final Mai2UserActRepo userActRepository; - private final Mai2UserCharacterRepo userCharacterRepository; - private final Mai2UserDataRepo userDataRepository; - private final Mai2UserItemRepo userItemRepository; - private final Mai2UserLoginBonusRepo userLoginBonusRepository; - private final Mai2UserMusicDetailRepo userMusicDetailRepository; - private final Mai2UserOptionRepo userOptionRepository; - private final Mai2UserPlaylogRepo userPlaylogRepository; - private final Mai2UserGeneralDataRepo userGeneralDataRepository; - private final Mai2MapEncountNpcRepo mapEncountNpcRepository; - private final Mai2UserChargeRepo userChargeRepository; - private final Mai2UserCourseRepo userCourseRepository; - private final Mai2UserExtendRepo userExtendRepository; - private final Mai2UserFavoriteRepo userFavoriteRepository; - private final Mai2UserFriendSeasonRankingRepo userFriendSeasonRankingRepository; - private final Mai2UserMapRepo userMapRepository; - private final Mai2UserUdemaeRepo userUdemaeRepository; - - @GetMapping("config/userPhoto/divMaxLength") - public long getConfigUserPhotoDivMaxLength(@Value("${game.maimai2.userPhoto.divMaxLength:32}") long divMaxLength) { - return divMaxLength; - } - - @GetMapping("userPhoto") - public PhotoResp getUserPhoto(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int imageIndex) { - List matchedFiles = new ArrayList<>(); - PhotoResp Photo = new PhotoResp(); - try (Stream paths = Files.walk(Paths.get("data"))) { - matchedFiles = paths - .filter(Files::isRegularFile) - .filter(path -> path.getFileName().toString().endsWith(".jpg")) - .filter(path -> { - String fileName = path.getFileName().toString(); - String[] parts = fileName.split("-"); - return parts.length > 0 && parts[0].equals(String.valueOf(aimeId)); - }) - .map(Path::getFileName) - .map(Path::toString) - .sorted(Comparator.reverseOrder()) - .toList(); - Photo.setTotalImage(matchedFiles.size()); - Photo.setImageIndex(imageIndex); - if(matchedFiles.size() > imageIndex) { - byte[] targetImageContent = Files.readAllBytes(Paths.get("data/" + matchedFiles.get(imageIndex))); - String divData = Base64.getEncoder().encodeToString(targetImageContent); - Photo.setDivData(divData); - Photo.setFileName(matchedFiles.get(imageIndex)); - } - } - catch (Exception e) { - } - return Photo; - } - - @GetMapping("profile") - public ProfileResp getProfile(@RequestParam long aimeId) { - return mapper.convert(userDataRepository.findByCardExtId(aimeId).orElseThrow(), new TypeReference<>() { - }); - } - - @PostMapping("profile/username") - public Mai2UserDetail updateName(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setUserName((String) request.get("userName")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/icon") - public Mai2UserDetail updateIcon(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setIconId((Integer) request.get("iconId")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/plate") - public Mai2UserDetail updatePlate(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setPlateId((Integer) request.get("plateId")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/frame") - public Mai2UserDetail updateFrame(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setFrameId((Integer) request.get("frameId")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/title") - public Mai2UserDetail updateTrophy(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setTitleId((Integer) request.get("titleId")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/partner") - public Mai2UserDetail updatePartner(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setPartnerId((Integer) request.get("partnerId")); - return userDataRepository.save(profile); - } - - @GetMapping("character") - public ReducedPageResponse getCharacter(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements()); - } - - @GetMapping("activity") - public List getActivities(@RequestParam long aimeId) { - return userActRepository.findByUser_Card_ExtId(aimeId); - } - - @GetMapping("item") - public ReducedPageResponse getItem(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size, - @RequestParam(required = false, defaultValue = "0") int ItemKind) { - Page items; - if(ItemKind == 0){ - items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size)); - } - else{ - items = userItemRepository.findByUser_Card_ExtIdAndItemKind(aimeId, ItemKind, PageRequest.of(page, size)); - } - return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements()); - } - - @PostMapping("item") - public ResponseEntity updateItem(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - Integer itemKind = (Integer) request.get("itemKind"); - Integer itemId = (Integer) request.get("itemId"); - int stock = 1; - if (request.containsKey("stock")) { - stock = (Integer) request.get("stock"); - } - - Optional userItemOptional = userItemRepository.findByUserAndItemKindAndItemId(profile, itemKind, itemId); - - Mai2UserItem userItem; - if (userItemOptional.isPresent()) { - userItem = userItemOptional.get(); - } else { - userItem = new Mai2UserItem(); - userItem.setUser(profile); - userItem.setItemId(itemId); - userItem.setItemKind(itemKind); - } - userItem.setStock(stock); - userItem.setValid(true); - return ResponseEntity.ok(userItemRepository.save(userItem)); - } - - @GetMapping("recent") - public ReducedPageResponse getRecent(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page playlogs = userPlaylogRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size, Sort.Direction.DESC, "id")); - return new ReducedPageResponse<>(playlogs.getContent(), playlogs.getPageable().getPageNumber(), playlogs.getTotalPages(), playlogs.getTotalElements()); - - } - - @GetMapping("song/{id}") - public List getSongDetail(@RequestParam long aimeId, @PathVariable int id) { - return userMusicDetailRepository.findByUser_Card_ExtIdAndMusicId(aimeId, id); - } - - @GetMapping("song/{id}/{level}") - public List getLevelPlaylog(@RequestParam long aimeId, @PathVariable int id, @PathVariable int level) { - return userPlaylogRepository.findByUser_Card_ExtIdAndMusicIdAndLevel(aimeId, id, level); - } - - @GetMapping("options") - public Mai2UserOption getOptions(@RequestParam long aimeId) { - return userOptionRepository.findSingleByUser_Card_ExtId(aimeId).orElseThrow(); - } - - @PostMapping("options") - public ResponseEntity updateOptions(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - ObjectMapper objectMapper = new ObjectMapper(); - Mai2UserOption userOption = objectMapper.convertValue(request.get("options"), Mai2UserOption.class); - userOption.setUser(profile); - userOptionRepository.deleteByUser(profile); - userOptionRepository.flush(); - return ResponseEntity.ok(userOptionRepository.save(userOption)); - } - - @GetMapping("general") - public ResponseEntity getGeneralData(@RequestParam long aimeId, @RequestParam String key) { - Optional userGeneralDataOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(aimeId, key); - return userGeneralDataOptional.>map(ResponseEntity::ok) - .orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("User or value not found."))); - } - - @PostMapping("general") - public ResponseEntity setGeneralData(@RequestBody Map request) { - Mai2UserDetail profile = userDataRepository.findByCardExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - String key = (String) request.get("key"); - String value = (String) request.get("value"); - - Optional userGeneralDataOptional = userGeneralDataRepository.findByUserAndPropertyKey(profile, key); - Mai2UserGeneralData userGeneralData; - if (userGeneralDataOptional.isPresent()) { - userGeneralData = userGeneralDataOptional.get(); - } - else { - userGeneralData = new Mai2UserGeneralData(); - userGeneralData.setUser(profile); - userGeneralData.setPropertyKey(key); - } - userGeneralData.setPropertyValue(value); - - return ResponseEntity.ok(userGeneralDataRepository.save(userGeneralData)); - } - - @GetMapping("export") - public ResponseEntity exportAllUserData(@RequestParam long aimeId) { - Maimai2DataExport data = new Maimai2DataExport(); - try { - data.setGameId("SDEZ"); - data.setUserData(userDataRepository.findByCardExtId(aimeId).orElseThrow()); - data.setUserExtend(userExtendRepository.findSingleByUser_Card_ExtId(aimeId).orElseThrow()); - data.setUserOption(userOptionRepository.findSingleByUser_Card_ExtId(aimeId).orElseThrow()); - data.setUserUdemae(userUdemaeRepository.findSingleByUser_Card_ExtId(aimeId).orElseThrow()); - data.setUserCharacterList(userCharacterRepository.findByUser_Card_ExtId(aimeId)); - data.setUserGeneralDataList(userGeneralDataRepository.findByUser_Card_ExtId(aimeId)); - data.setUserItemList(userItemRepository.findByUser_Card_ExtId(aimeId)); - data.setUserLoginBonusList(userLoginBonusRepository.findByUser_Card_ExtId(aimeId)); - data.setUserMusicDetailList(userMusicDetailRepository.findByUser_Card_ExtId(aimeId)); - data.setUserPlaylogList(userPlaylogRepository.findByUserCardExtId(aimeId)); - data.setMapEncountNpcList(mapEncountNpcRepository.findByUser_Card_ExtId(aimeId)); - data.setUserActList(userActRepository.findByUser_Card_ExtId(aimeId)); - data.setUserChargeList(userChargeRepository.findByUser_Card_ExtId(aimeId)); - data.setUserCourseList(userCourseRepository.findByUser_Card_ExtId(aimeId)); - data.setUserFavoriteList(userFavoriteRepository.findByUser_Card_ExtId(aimeId)); - data.setUserFriendSeasonRankingList(userFriendSeasonRankingRepository.findByUser_Card_ExtId(aimeId)); - data.setUserMapList(userMapRepository.findByUser_Card_ExtId(aimeId)); - } catch (NoSuchElementException e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND) - .body(new MessageResponse("User not found")); - } catch (Exception e) { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(new MessageResponse("Error during data export. Reason: " + e.getMessage())); - } - // Set filename - HttpHeaders headers = new HttpHeaders(); - headers.set("content-disposition", "attachment; filename=maimai2_" + aimeId + "_exported.json"); - return new ResponseEntity<>(data, headers, HttpStatus.OK); - } - - @PostMapping("import") - public ResponseEntity importAllUserData(@RequestBody Maimai2DataImport data) { - if (!data.getGameId().equals("SDEZ")) { - return ResponseEntity.unprocessableEntity().body(new MessageResponse("Wrong Game Profile, Expected 'SDEZ', Get " + data.getGameId())); - } - - ExternalUserData exUser = data.getUserData(); - - Optional cardOptional = cardService.getCardByAccessCode(exUser.getAccessCode()); - Card card; - if (cardOptional.isPresent()) { - card = cardOptional.get(); - Optional existUserData = Optional.ofNullable(userDataRepository.findByCard(cardOptional.get())); - if (existUserData.isPresent()) { -// return ResponseEntity.status(HttpStatus.BAD_REQUEST) -// .body(new MessageResponse("This card already has a maimai2 profile.")); - // delete all same card data - userFavoriteRepository.deleteByUser(existUserData.get()); - userFavoriteRepository.flush(); - userFriendSeasonRankingRepository.deleteByUser(existUserData.get()); - userFriendSeasonRankingRepository.flush(); - userMapRepository.deleteByUser(existUserData.get()); - userMapRepository.flush(); - userUdemaeRepository.deleteByUser(existUserData.get()); - userUdemaeRepository.flush(); - userGeneralDataRepository.deleteByUser(existUserData.get()); - userGeneralDataRepository.flush(); - userItemRepository.deleteByUser(existUserData.get()); - userItemRepository.flush(); - userLoginBonusRepository.deleteByUser(existUserData.get()); - userLoginBonusRepository.flush(); - userMusicDetailRepository.deleteByUser(existUserData.get()); - userMusicDetailRepository.flush(); - userOptionRepository.deleteByUser(existUserData.get()); - userOptionRepository.flush(); - userPlaylogRepository.deleteByUser(existUserData.get()); - userPlaylogRepository.flush(); - userCharacterRepository.deleteByUser(existUserData.get()); - userCharacterRepository.flush(); - mapEncountNpcRepository.deleteByUser(existUserData.get()); - mapEncountNpcRepository.flush(); - userActRepository.deleteByUser(existUserData.get()); - userActRepository.flush(); - userChargeRepository.deleteByUser(existUserData.get()); - userChargeRepository.flush(); - userCourseRepository.deleteByUser(existUserData.get()); - userCourseRepository.flush(); - userExtendRepository.deleteByUser(existUserData.get()); - userExtendRepository.flush(); - userOptionRepository.deleteByUser(existUserData.get()); - userOptionRepository.flush(); - - userDataRepository.deleteByCard(card); - userDataRepository.flush(); - } - } else { - card = cardService.registerByAccessCode(exUser.getAccessCode()); - } - - Mai2UserDetail userData = mapper.convert(exUser, new TypeReference<>() { - }); - userData.setCard(card); - userDataRepository.saveAndFlush(userData); - - userFavoriteRepository.saveAll(data.getUserFavoriteList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userFriendSeasonRankingRepository.saveAll(data.getUserFriendSeasonRankingList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userMapRepository.saveAll(data.getUserMapList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userGeneralDataRepository.saveAll(data.getUserGeneralDataList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userItemRepository.saveAll(data.getUserItemList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userLoginBonusRepository.saveAll(data.getUserLoginBonusList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userMusicDetailRepository.saveAll(data.getUserMusicDetailList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userPlaylogRepository.saveAll(data.getUserPlaylogList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userCharacterRepository.saveAll(data.getUserCharacterList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - mapEncountNpcRepository.saveAll(data.getMapEncountNpcList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userActRepository.saveAll(data.getUserActList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userChargeRepository.saveAll(data.getUserChargeList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - userCourseRepository.saveAll(data.getUserCourseList().stream().peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - Mai2UserExtend userExtend = data.getUserExtend(); - userExtend.setUser(userData); - userExtendRepository.save(userExtend); - - Mai2UserOption userOption = data.getUserOption(); - userOption.setUser(userData); - userOptionRepository.save(userOption); - - Mai2UserUdemae userUdemae = data.getUserUdemae(); - userUdemae.setUser(userData); - userUdemaeRepository.save(userUdemae); - - return ResponseEntity.ok(new MessageResponse("Import successfully, aimeId: " + card.getExtId())); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java deleted file mode 100644 index 8256e8f2..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java +++ /dev/null @@ -1,76 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.ongeki; - -import icu.samnyan.aqua.sega.ongeki.dao.gamedata.*; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.*; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/ongeki/data") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiOngekiGameDataController { - - private final GameCardRepository gameCardRepository; - private final GameCharaRepository gameCharaRepository; - private final GameEventRepository gameEventRepository; - private final GameMusicRepository gameMusicRepository; - private final GameSkillRepository gameSkillRepository; - - @GetMapping("cardList") - public List getCardList() { - return gameCardRepository.findAll(); - } - - @GetMapping("charaList") - public List getCharaList() { - return gameCharaRepository.findAll(); - } - - @GetMapping("eventList") - public List getEventList() { - return gameEventRepository.findAll(); - } - - @GetMapping("musicList") - public List getMusicList() { - return gameMusicRepository.findAll(); - } - - @GetMapping("skillList") - public List getSkillList() { - return gameSkillRepository.findAll(); - } - - @PostMapping("cardList") - public List getCardList(@RequestBody List req) { - return gameCardRepository.saveAll(req); - } - - @PostMapping("charaList") - public List getCharaList(@RequestBody List req) { - return gameCharaRepository.saveAll(req); - } - - @PostMapping("eventList") - public List getEventList(@RequestBody List req) { - return gameEventRepository.saveAll(req); - } - - @PostMapping("musicList") - public List getMusicList(@RequestBody List req) { - return gameMusicRepository.saveAll(req); - } - - @PostMapping("skillList") - public List getSkillList(@RequestBody List req) { - return gameSkillRepository.saveAll(req); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java deleted file mode 100644 index 958bd3a2..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java +++ /dev/null @@ -1,576 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.game.ongeki; - -import com.fasterxml.jackson.core.type.TypeReference; -import icu.samnyan.aqua.api.model.MessageResponse; -import icu.samnyan.aqua.api.model.ObjectMessageResponse; -import icu.samnyan.aqua.api.model.ReducedPageResponse; -import icu.samnyan.aqua.api.model.resp.sega.ongeki.ProfileResp; -import icu.samnyan.aqua.api.model.resp.sega.ongeki.external.ExternalUserData; -import icu.samnyan.aqua.api.model.resp.sega.ongeki.external.OngekiDataExport; -import icu.samnyan.aqua.api.model.resp.sega.ongeki.external.OngekiDataImport; -import icu.samnyan.aqua.api.util.ApiMapper; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GameCardRepository; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.*; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameCard; -import icu.samnyan.aqua.sega.ongeki.model.response.data.UserRivalData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.*; -import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/game/ongeki") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiOngekiPlayerDataController { - - private final ApiMapper mapper; - - private static DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0"); - - private final CardService cardService; - - private final UserActivityRepository userActivityRepository; - private final UserCardRepository userCardRepository; - private final UserChapterRepository userChapterRepository; - private final UserCharacterRepository userCharacterRepository; - private final UserDataRepository userDataRepository; - private final UserDeckRepository userDeckRepository; - private final UserEventPointRepository userEventPointRepository; - private final UserItemRepository userItemRepository; - private final UserLoginBonusRepository userLoginBonusRepository; - private final UserMissionPointRepository userMissionPointRepository; - private final UserMusicDetailRepository userMusicDetailRepository; - private final UserMusicItemRepository userMusicItemRepository; - private final UserOptionRepository userOptionRepository; - private final UserPlaylogRepository userPlaylogRepository; - private final UserStoryRepository userStoryRepository; - private final UserTrainingRoomRepository userTrainingRoomRepository; - private final UserGeneralDataRepository userGeneralDataRepository; - private final UserTradeItemRepository userTradeItemRepository; - private final UserEventMusicRepository userEventMusicRepository; - private final UserTechEventRepository userTechEventRepository; - private final UserKopRepository userKopRepository; - private final UserRivalDataRepository userRivalDataRepository; - - private final UserMemoryChapterRepository userMemoryChapterRepository; - - private final UserScenarioRepository userScenarioRepository; - - private final UserBossRepository userBossRepository; - - private final UserTechCountRepository userTechCountRepository; - - private final GameCardRepository gameCardRepository; - - @GetMapping("profile") - public ProfileResp getProfile(@RequestParam long aimeId) { - return mapper.convert(userDataRepository.findByCard_ExtId(aimeId).orElseThrow(), new TypeReference<>() { - }); - } - - @PostMapping("profile/userName") - public UserData updateName(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setUserName((String) request.get("userName")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/plate") - public UserData updatePlate(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setNameplateId((Integer) request.get("nameplateId")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/trophy") - public UserData updateTrophy(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setTrophyId((Integer) request.get("trophyId")); - return userDataRepository.save(profile); - } - - @PostMapping("profile/card") - public UserData updateCard(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - profile.setCardId((Integer) request.get("cardId")); - return userDataRepository.save(profile); - } - - @GetMapping("card") - public ReducedPageResponse getCard(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page cards = userCardRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size, Sort.Direction.DESC, "id")); - return new ReducedPageResponse<>(cards.getContent(), cards.getPageable().getPageNumber(), cards.getTotalPages(), cards.getTotalElements()); - } - - /** - * Force insert a card. This will use to create a new card or update a currently existed card star level. - * - * @param request Map of aimeId and cardId - * @return result UserCard or error message - */ - @PostMapping("card") - public ResponseEntity insertCard(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - Integer cardId = (Integer) request.get("cardId"); - Optional userCardOptional = userCardRepository.findByUserAndCardId(profile, cardId); - if (userCardOptional.isPresent()) { - UserCard card = userCardOptional.get(); - if (card.getDigitalStock() < 5) { - card.setDigitalStock(card.getDigitalStock() + 1); - card.setMaxLevel(card.getMaxLevel() + 5); - return ResponseEntity.ok(userCardRepository.save(card)); - } else { - // If digital stock is larger than 5, check if this card is N card. - Optional gameCard = gameCardRepository.findById((long) card.getCardId()); - if (gameCard.isPresent()) { - if (gameCard.get().getRarity().equals("N")) { - card.setDigitalStock(card.getDigitalStock() + 1); - card.setMaxLevel(card.getMaxLevel() + 5); - return ResponseEntity.ok(userCardRepository.save(card)); - } else { - return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(new MessageResponse("This card has reached max limit.")); - } - } else { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(new MessageResponse("Card info not found on server, not allow to edit with api, please make edit to database directly.")); - } - } - } - GameCard card = gameCardRepository.findById(cardId.longValue()).orElseThrow(); - return ResponseEntity.ok( - userCardRepository.save( - new UserCard( - profile, - cardId, - card.getSkillId(), - LocalDateTime.now().format(df)) - )); - } - - @PostMapping("card/{cardId}/kaika") - public ResponseEntity kaikaCard(@RequestParam long aimeId, @PathVariable Integer cardId) { - Optional userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId); - if (userCardOptional.isEmpty()) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found.")); - } else { - UserCard card = userCardOptional.get(); - if (!card.getKaikaDate().equals("0000-00-00 00:00:00.0")) { - return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(new MessageResponse("No, you have done this before.")); - } else { - card.setKaikaDate(LocalDateTime.now().format(df)); - card.setMaxLevel(card.getMaxLevel() + 40); - card.setPrintCount(card.getPrintCount() + 1); - return ResponseEntity.ok(userCardRepository.save(card)); - } - } - } - - @PostMapping("card/{cardId}/choKaika") - public ResponseEntity choKaikaCard(@RequestParam long aimeId, @PathVariable Integer cardId) { - Optional userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId); - if (userCardOptional.isEmpty()) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found.")); - } else { - UserCard card = userCardOptional.get(); - Optional gameCard = gameCardRepository.findById((long) card.getCardId()); - if (gameCard.isPresent()) { - if (gameCard.get().getRarity().equals("N")) { - card.setMaxLevel(100); - card.setLevel(100); - card.setDigitalStock(11); - } else { - card.setMaxLevel(70); - card.setLevel(70); - card.setDigitalStock(5); - } - } else { - card.setMaxLevel(70); - card.setLevel(70); - card.setDigitalStock(5); - } - if (card.getKaikaDate().equals("0000-00-00 00:00:00.0")) { - card.setKaikaDate(LocalDateTime.now().format(df)); - } - card.setChoKaikaDate(LocalDateTime.now().format(df)); - card.setPrintCount(card.getPrintCount() + 1); - return ResponseEntity.ok(userCardRepository.save(card)); - } - } - - @GetMapping("character") - public ReducedPageResponse getCharacter(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements()); - } - - @GetMapping("activity") - public List getActivities(@RequestParam long aimeId) { - return userActivityRepository.findByUser_Card_ExtId(aimeId); - } - - @PostMapping("activity") - public ResponseEntity updateActivities(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - Integer activityId = (Integer) request.get("id"); - Integer kind = (Integer) request.get("kind"); - Integer sortNumber = (Integer) request.get("sortNumber"); - Integer param1 = (Integer) request.get("param1"); - Integer param2 = (Integer) request.get("param2"); - Integer param3 = (Integer) request.get("param3"); - Integer param4 = (Integer) request.get("param4"); - - Optional userActivityOptional = userActivityRepository.findByUserAndKindAndActivityId(profile, kind, activityId); - - UserActivity userActivity; - if (userActivityOptional.isPresent()) { - userActivity = userActivityOptional.get(); - } else { - userActivity = new UserActivity(profile); - userActivity.setActivityId(activityId); - userActivity.setKind(kind); - userActivity.setSortNumber(sortNumber); - } - userActivity.setParam1(param1); - userActivity.setParam2(param2); - userActivity.setParam3(param3); - userActivity.setParam4(param4); - return ResponseEntity.ok(userActivityRepository.save(userActivity)); - } - - @GetMapping("item") - public ReducedPageResponse getItem(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size)); - return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements()); - } - - @PostMapping("item") - public ResponseEntity updateItem(@RequestBody Map request) { - UserData profile = userDataRepository.findByCard_ExtId(((Number) request.get("aimeId")).longValue()).orElseThrow(); - Integer itemKind = (Integer) request.get("itemKind"); - Integer itemId = (Integer) request.get("itemId"); - int stock = 1; - if (request.containsKey("stock")) { - stock = (Integer) request.get("stock"); - } - - Optional userItemOptional = userItemRepository.findByUserAndItemKindAndItemId(profile, itemKind, itemId); - - UserItem userItem; - if (userItemOptional.isPresent()) { - userItem = userItemOptional.get(); - } else { - userItem = new UserItem(profile); - userItem.setItemId(itemId); - userItem.setItemKind(itemKind); - } - userItem.setStock(stock); - userItem.setValid(true); - return ResponseEntity.ok(userItemRepository.save(userItem)); - } - - @GetMapping("recent") - public ReducedPageResponse getRecent(@RequestParam long aimeId, - @RequestParam(required = false, defaultValue = "0") int page, - @RequestParam(required = false, defaultValue = "10") int size) { - Page playlogs = userPlaylogRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size, Sort.Direction.DESC, "id")); - return new ReducedPageResponse<>(playlogs.getContent(), playlogs.getPageable().getPageNumber(), playlogs.getTotalPages(), playlogs.getTotalElements()); - - } - - @GetMapping("song/{id}") - public List getSongDetail(@RequestParam long aimeId, @PathVariable int id) { - return userMusicDetailRepository.findByUser_Card_ExtIdAndMusicId(aimeId, id); - } - - @GetMapping("song/{id}/{level}") - public List getLevelPlaylog(@RequestParam long aimeId, @PathVariable int id, @PathVariable int level) { - return userPlaylogRepository.findByUser_Card_ExtIdAndMusicIdAndLevel(aimeId, id, level); - } - - @GetMapping("rival") - public List getRival(@RequestParam long aimeId) { - var rivalUserIds = userRivalDataRepository.findByUser_Card_ExtId(aimeId) - .stream() - .map(x -> x.getRivalUserExtId()) - .collect(Collectors.toList()); - - var rivalDataList = userDataRepository.findByCard_ExtIdIn(rivalUserIds) - .stream() - .map(x -> new UserRivalData(x.getCard().getExtId(), x.getUserName())) - .collect(Collectors.toList()); - - return rivalDataList; - } - - @DeleteMapping("rival") - public MessageResponse deleteRival(@RequestParam long aimeId, @RequestParam long rivalAimeId) { - userRivalDataRepository.removeByUser_Card_ExtIdAndRivalUserExtId(aimeId, rivalAimeId); - return new MessageResponse(); - } - - @PostMapping("rival") - public ObjectMessageResponse addRival(@RequestParam long aimeId, @RequestParam long rivalAimeId, @Value("${game.ongeki.rival.rivals-max-count:10}") long addMaxCount) { - //check limit - if (addMaxCount >= 0 && userRivalDataRepository.findByUser_Card_ExtId(aimeId).size() >= addMaxCount) { - return new ObjectMessageResponse<>(String.format("Size of rival list is limited in %d", addMaxCount)); - } - - var userOpt = userDataRepository.findByCard_ExtId(aimeId); - if (userOpt.isEmpty()) - return new ObjectMessageResponse<>("Current user isn't ongeki player."); - var user = userOpt.get(); - var rivalUserOpt = userDataRepository.findByCard_ExtId(rivalAimeId); - if (rivalUserOpt.isEmpty()) - return new ObjectMessageResponse<>("Rival user isn't ongeki player."); - var rivalUser = rivalUserOpt.get(); - - if(user == rivalUser) - return new ObjectMessageResponse<>("Can't add yourself as an rival."); - - var rival = new UserRival(); - rival.setUser(user); - rival.setRivalUserExtId(rivalUser.getCard().getExtId()); - - userRivalDataRepository.save(rival); - return new ObjectMessageResponse<>(new UserRivalData(rivalUser.getCard().getExtId(), rivalUser.getUserName())); - } - - @GetMapping("options") - public UserOption getOptions(@RequestParam long aimeId) { - return userOptionRepository.findByUser_Card_ExtId(aimeId).orElseThrow(); - } - - @GetMapping("general") - public ResponseEntity getGeneralData(@RequestParam long aimeId, @RequestParam String key) { - Optional userGeneralDataOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(aimeId, key); - return userGeneralDataOptional.>map(ResponseEntity::ok) - .orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("User or value not found."))); - } - - @GetMapping("export") - public ResponseEntity exportAllUserData(@RequestParam long aimeId) { - OngekiDataExport data = new OngekiDataExport(); - try { - data.setGameId("SDDT"); - data.setUserData(userDataRepository.findByCard_ExtId(aimeId).orElseThrow()); - data.setUserActivityList(userActivityRepository.findByUser_Card_ExtId(aimeId)); - data.setUserCardList(userCardRepository.findByUser_Card_ExtId(aimeId)); - data.setUserChapterList(userChapterRepository.findByUser_Card_ExtId(aimeId)); - data.setUserCharacterList(userCharacterRepository.findByUser_Card_ExtId(aimeId)); - data.setUserDeckList(userDeckRepository.findByUser_Card_ExtId(aimeId)); - data.setUserEventPointList(userEventPointRepository.findByUser_Card_ExtId(aimeId)); - data.setUserGeneralDataList(userGeneralDataRepository.findByUser_Card_ExtId(aimeId)); - data.setUserItemList(userItemRepository.findByUser_Card_ExtId(aimeId)); - data.setUserLoginBonusList(userLoginBonusRepository.findByUser_Card_ExtId(aimeId)); - data.setUserMissionPointList(userMissionPointRepository.findByUser_Card_ExtId(aimeId)); - data.setUserMusicDetailList(userMusicDetailRepository.findByUser_Card_ExtId(aimeId)); - data.setUserMusicItemList(userMusicItemRepository.findByUser_Card_ExtId(aimeId)); - data.setUserOption(userOptionRepository.findByUser_Card_ExtId(aimeId).orElseThrow()); - data.setUserPlaylogList(userPlaylogRepository.findByUser_Card_ExtId(aimeId)); - data.setUserStoryList(userStoryRepository.findByUser_Card_ExtId(aimeId)); - data.setUserTrainingRoomList(userTrainingRoomRepository.findByUser_Card_ExtId(aimeId)); - data.setUserTradeItemList(userTradeItemRepository.findByUser_Card_ExtId(aimeId)); - data.setUserEventMusicList(userEventMusicRepository.findByUser_Card_ExtId(aimeId)); - data.setUserTechEventList(userTechEventRepository.findByUser_Card_ExtId(aimeId)); - data.setUserKopList(userKopRepository.findByUser_Card_ExtId(aimeId)); - data.setUserMemoryChapterList(userMemoryChapterRepository.findByUser_Card_ExtId(aimeId)); - data.setUserScenarioList(userScenarioRepository.findByUser_Card_ExtId(aimeId)); - data.setUserBossList(userBossRepository.findByUser_Card_ExtId(aimeId)); - data.setUserTechCountList(userTechCountRepository.findByUser_Card_ExtId(aimeId)); - data.setUserRivalList(userRivalDataRepository.findByUser_Card_ExtId(aimeId)); - } catch (NoSuchElementException e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND) - .body(new MessageResponse("User not found")); - } catch (Exception e) { - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(new MessageResponse("Error during data export. Reason: " + e.getMessage())); - } - // Set filename - HttpHeaders headers = new HttpHeaders(); - headers.set("content-disposition", "attachment; filename=ongeki_" + aimeId + "_exported.json"); - return new ResponseEntity<>(data, headers, HttpStatus.OK); - } - - @PostMapping("import") - public ResponseEntity importAllUserData(@RequestBody OngekiDataImport data) { - if (!data.getGameId().equals("SDDT")) { - return ResponseEntity.unprocessableEntity().body(new MessageResponse("Wrong Game Profile, Expected 'SDDT', Get " + data.getGameId())); - } - - ExternalUserData exUser = data.getUserData(); - - Optional cardOptional = cardService.getCardByAccessCode(exUser.getAccessCode()); - Card card; - if (cardOptional.isPresent()) { - card = cardOptional.get(); - Optional existUserData = Optional.ofNullable(userDataRepository.findByCard(cardOptional.get())); - if (existUserData.isPresent()) { -// return ResponseEntity.status(HttpStatus.BAD_REQUEST) -// .body(new MessageResponse("This card already has a ongeki profile.")); - // delete all same card data - userActivityRepository.deleteByUser(existUserData.get()); - userActivityRepository.flush(); - userCardRepository.deleteByUser(existUserData.get()); - userCardRepository.flush(); - userChapterRepository.deleteByUser(existUserData.get()); - userChapterRepository.flush(); - userCharacterRepository.deleteByUser(existUserData.get()); - userCharacterRepository.flush(); - userDeckRepository.deleteByUser(existUserData.get()); - userDeckRepository.flush(); - userEventPointRepository.deleteByUser(existUserData.get()); - userEventPointRepository.flush(); - userGeneralDataRepository.deleteByUser(existUserData.get()); - userGeneralDataRepository.flush(); - userItemRepository.deleteByUser(existUserData.get()); - userItemRepository.flush(); - userLoginBonusRepository.deleteByUser(existUserData.get()); - userLoginBonusRepository.flush(); - userMissionPointRepository.deleteByUser(existUserData.get()); - userMissionPointRepository.flush(); - userMusicDetailRepository.deleteByUser(existUserData.get()); - userMusicDetailRepository.flush(); - userMusicItemRepository.deleteByUser(existUserData.get()); - userMusicItemRepository.flush(); - userOptionRepository.deleteByUser(existUserData.get()); - userOptionRepository.flush(); - userPlaylogRepository.deleteByUser(existUserData.get()); - userPlaylogRepository.flush(); - userStoryRepository.deleteByUser(existUserData.get()); - userStoryRepository.flush(); - userTrainingRoomRepository.deleteByUser(existUserData.get()); - userTrainingRoomRepository.flush(); - userTradeItemRepository.deleteByUser(existUserData.get()); - userTradeItemRepository.flush(); - userEventMusicRepository.deleteByUser(existUserData.get()); - userEventMusicRepository.flush(); - userTechEventRepository.deleteByUser(existUserData.get()); - userTechEventRepository.flush(); - userKopRepository.deleteByUser(existUserData.get()); - userKopRepository.flush(); - userMemoryChapterRepository.deleteByUser(existUserData.get()); - userMemoryChapterRepository.flush(); - userScenarioRepository.deleteByUser(existUserData.get()); - userScenarioRepository.flush(); - userBossRepository.deleteByUser(existUserData.get()); - userBossRepository.flush(); - userTechCountRepository.deleteByUser(existUserData.get()); - userTechCountRepository.flush(); - userRivalDataRepository.deleteByUser(existUserData.get()); - userRivalDataRepository.flush(); - - userDataRepository.deleteByCard(card); - userDataRepository.flush(); - } - } else { - card = cardService.registerByAccessCode(exUser.getAccessCode()); - } - - UserData userData = mapper.convert(exUser, new TypeReference<>() { - }); - userData.setCard(card); - userDataRepository.saveAndFlush(userData); - - userActivityRepository.saveAll(data.getUserActivityList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userCardRepository.saveAll(data.getUserCardList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userChapterRepository.saveAll(data.getUserChapterList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userCharacterRepository.saveAll(data.getUserCharacterList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userDeckRepository.saveAll(data.getUserDeckList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userEventPointRepository.saveAll(data.getUserEventPointList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userGeneralDataRepository.saveAll(data.getUserGeneralDataList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userItemRepository.saveAll(data.getUserItemList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userLoginBonusRepository.saveAll(data.getUserLoginBonusList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userMissionPointRepository.saveAll(data.getUserMissionPointList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userMusicDetailRepository.saveAll(data.getUserMusicDetailList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userMusicItemRepository.saveAll(data.getUserMusicItemList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - UserOption userOption = data.getUserOption(); - userOption.setUser(userData); - userOptionRepository.save(userOption); - userPlaylogRepository.saveAll(data.getUserPlaylogList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userStoryRepository.saveAll(data.getUserStoryList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userTrainingRoomRepository.saveAll(data.getUserTrainingRoomList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userTradeItemRepository.saveAll(data.getUserTradeItemList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userEventMusicRepository.saveAll(data.getUserEventMusicList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userTechEventRepository.saveAll(data.getUserTechEventList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userKopRepository.saveAll(data.getUserKopList().stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userMemoryChapterRepository.saveAll(Optional.ofNullable(data.getUserMemoryChapterList()).orElse(Collections.emptyList()).stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userScenarioRepository.saveAll(Optional.ofNullable(data.getUserScenarioList()).orElse(Collections.emptyList()).stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userBossRepository.saveAll(Optional.ofNullable(data.getUserBossList()).orElse(Collections.emptyList()).stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userTechCountRepository.saveAll(Optional.ofNullable(data.getUserTechCountList()).orElse(Collections.emptyList()).stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - userRivalDataRepository.saveAll(Optional.ofNullable(data.getUserRivalList()).orElse(Collections.emptyList()).stream() - .peek(x -> x.setUser(userData)).collect(Collectors.toList())); - - return ResponseEntity.ok(new MessageResponse("Import successfully, aimeId: " + card.getExtId())); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java deleted file mode 100644 index 00ead66a..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java +++ /dev/null @@ -1,83 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.manage; - -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Level; -import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; -import icu.samnyan.aqua.sega.chunithm.model.userdata.UserMusicDetail; -import icu.samnyan.aqua.sega.chunithm.service.GameMusicService; -import icu.samnyan.aqua.sega.chunithm.service.UserDataService; -import icu.samnyan.aqua.sega.chunithm.service.UserMusicDetailService; -import lombok.AllArgsConstructor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/manage/chuni/v1") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiChuniV1ManageController { - - private static final Logger logger = LoggerFactory.getLogger(ApiChuniV1ManageController.class); - - private final UserDataService userDataService; - - private final UserMusicDetailService userMusicDetailService; - - private final GameMusicService gameMusicService; - - /** - * A request to fill fake score to all chart. only use for testing - * @param aimeId The internal id of a card - * @return Run result status - */ -// @PostMapping("fill") - public ResponseEntity fillMockData(@RequestParam String aimeId) { - UserData profile = userDataService.getUserByExtId(aimeId).orElseThrow(); - List musicList = gameMusicService.getAll(); - List detailList = new ArrayList<>(); - musicList.forEach(x -> { - Collection levels = x.getLevels().values(); - levels.forEach(l -> { - Optional userMusicDetailOptional = userMusicDetailService.getByUserAndMusicIdAndLevel(profile, x.getMusicId(), l.getDiff()); - if (userMusicDetailOptional.isEmpty()) { - UserMusicDetail temp = new UserMusicDetail( - x.getMusicId(), - l.getDiff(), - 1, - 980000, - 0, - 0, - 0, - 5, - 0, - false, - false, - false, - 0, - 0, - 8, - false - ); - temp.setUser(profile); - detailList.add(temp); - } - }); - }); - userMusicDetailService.saveAll(detailList); - return ResponseEntity.ok("OK"); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java deleted file mode 100644 index f9dac249..00000000 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java +++ /dev/null @@ -1,139 +0,0 @@ -package icu.samnyan.aqua.api.controller.sega.manage; - -import icu.samnyan.aqua.api.model.MessageResponse; -import icu.samnyan.aqua.api.model.req.sega.diva.ModuleEntry; -import icu.samnyan.aqua.api.model.req.sega.diva.PvListEntry; -import icu.samnyan.aqua.api.model.req.sega.diva.PvListRequest; -import icu.samnyan.aqua.sega.diva.dao.gamedata.*; -import icu.samnyan.aqua.sega.diva.model.common.Difficulty; -import icu.samnyan.aqua.sega.diva.model.common.Edition; -import icu.samnyan.aqua.sega.diva.model.gamedata.*; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import lombok.AllArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.web.bind.annotation.*; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("api/manage/diva/") -@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") -@AllArgsConstructor -public class ApiDivaManageController { - - private final PvEntryRepository pvEntryRepository; - private final DivaModuleRepository moduleRepository; - private final DivaCustomizeRepository customizeRepository; - private final FestaRepository festaRepository; - private final ContestRepository contestRepository; - private final PropertyEntryRepository propertyEntryRepository; - - @PostMapping("pvList") - public List updatePvList(@RequestBody PvListRequest request) { - request.getEasy().forEach(x -> savePv(x, Difficulty.EASY)); - request.getNormal().forEach(x -> savePv(x, Difficulty.NORMAL)); - request.getHard().forEach(x -> savePv(x, Difficulty.HARD)); - request.getExtreme().forEach(x -> savePv(x, Difficulty.EXTREME)); - return pvEntryRepository.findAll(); - } - - @PostMapping("module") - public List updateModuleList(@RequestBody List request) { - List moduleList = new ArrayList<>(); - request.forEach(x -> moduleList.add(new DivaModule(x.getID(), x.getName(), x.getPrice(), x.getReleaseDate(), x.getEndDate(), x.getSortOrder()))); - return moduleRepository.saveAll(moduleList); - } - - @PostMapping("item") - public List updateItemList(@RequestBody List request) { - List itemList = new ArrayList<>(); - request.forEach(x -> itemList.add(new DivaCustomize(x.getID(), x.getName(), x.getPrice(), x.getReleaseDate(), x.getEndDate(), x.getSortOrder()))); - return customizeRepository.saveAll(itemList); - } - - private void savePv(PvListEntry x, Difficulty difficulty) { - pvEntryRepository.save(new PvEntry(x.getPVID(), - difficulty, - x.getVersion(), - Edition.fromValue(x.getEdition()), - x.getAdvDemo().getStart(), - x.getAdvDemo().getEnd(), - x.getPlayable().getStart(), - x.getPlayable().getEnd() - )); - } - - @GetMapping("festa") - public List getFesta() { - return festaRepository.findAll(); - } - - @PutMapping("festa") - public Festa updateFesta(@RequestBody Festa festa) { - return festaRepository.save(festa); - } - - @DeleteMapping("festa/{id}") - public MessageResponse getFesta(@PathVariable int id) { - festaRepository.deleteById(id); - return new MessageResponse("Deleted " + id); - } - - @GetMapping("contest") - public List getContest() { - return contestRepository.findAll(); - } - - @PutMapping("contest") - public Contest updateContest(@RequestBody Contest contest) { - return contestRepository.save(contest); - } - - @DeleteMapping("contest/{id}") - public MessageResponse deleteContest(@PathVariable int id) { - contestRepository.deleteById(id); - return new MessageResponse("Deleted " + id); - } - - @GetMapping("news") - public Optional getNews() { - return propertyEntryRepository.findByPropertyKey("diva_news"); - } - - @PutMapping("news") - public PropertyEntry updateNews(@RequestBody PropertyEntry property) { - PropertyEntry entry = propertyEntryRepository.findByPropertyKey("diva_news") - .orElseGet(() -> new PropertyEntry("diva_news")); - entry.setPropertyValue(property.getPropertyValue()); - return propertyEntryRepository.save(entry); - } - - @GetMapping("warning") - public Optional getWarning() { - return propertyEntryRepository.findByPropertyKey("diva_warning"); - } - - @PutMapping("warning") - public PropertyEntry updateWarning(@RequestBody PropertyEntry property) { - PropertyEntry entry = propertyEntryRepository.findByPropertyKey("diva_warning") - .orElseGet(() -> new PropertyEntry("diva_warning")); - entry.setPropertyValue(property.getPropertyValue()); - return propertyEntryRepository.save(entry); - } - - @GetMapping("module") - public List getModule() { - return moduleRepository.findAll(); - } - - @GetMapping("customize") - public List getCustomize() { - return customizeRepository.findAll(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/MessageResponse.java b/src/main/java/icu/samnyan/aqua/api/model/MessageResponse.java deleted file mode 100644 index a19a9348..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/MessageResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.api.model; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public class MessageResponse { - private String message = "ok"; - - public MessageResponse(String message) { - this.message = message; - } - - public MessageResponse() { - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/ObjectMessageResponse.java b/src/main/java/icu/samnyan/aqua/api/model/ObjectMessageResponse.java deleted file mode 100644 index b669131d..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/ObjectMessageResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package icu.samnyan.aqua.api.model; - -public class ObjectMessageResponse extends MessageResponse { - private T data; - - public ObjectMessageResponse(String message) { - super(message); - } - - public ObjectMessageResponse(T data) { - super(); - setData(data); - } - - public ObjectMessageResponse(T data, String message) { - super(message); - setData(data); - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/ReducedPageResponse.java b/src/main/java/icu/samnyan/aqua/api/model/ReducedPageResponse.java deleted file mode 100644 index 3eed2fc0..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/ReducedPageResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.api.model; - -import lombok.Getter; -import lombok.Setter; - -import java.util.Collection; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Getter -@Setter -public class ReducedPageResponse { - private Collection content; - private Integer page; - private Integer totalPages; - private Long totalElements; - - public ReducedPageResponse(Collection content, Integer page, Integer totalPages, Long totalElements) { - this.content = content; - this.page = page; - this.totalPages = totalPages; - this.totalElements = totalElements; - } -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/DatePair.java b/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/DatePair.java deleted file mode 100644 index 3e0fa29b..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/DatePair.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.api.model.req.sega.diva; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class DatePair { - @JsonProperty("Start") - private LocalDateTime Start; - @JsonProperty("End") - private LocalDateTime End; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/ModuleEntry.java b/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/ModuleEntry.java deleted file mode 100644 index 5b9295ed..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/ModuleEntry.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.api.model.req.sega.diva; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ModuleEntry { - @JsonProperty("ID") - private int ID; - @JsonProperty("Name") - private String Name; - @JsonProperty("Price") - private int Price; - @JsonProperty("ReleaseDate") - private LocalDateTime ReleaseDate; - @JsonProperty("EndDate") - private LocalDateTime EndDate; - @JsonProperty("SortOrder") - private int SortOrder; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListEntry.java b/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListEntry.java deleted file mode 100644 index 8cb7acaa..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListEntry.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.api.model.req.sega.diva; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PvListEntry { - @JsonProperty("PVID") - private int PVID; - @JsonProperty("Version") - private int Version; - @JsonProperty("Edition") - private int Edition; - @JsonProperty("AdvDemo") - private DatePair AdvDemo; - @JsonProperty("Playable") - private DatePair Playable; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListRequest.java b/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListRequest.java deleted file mode 100644 index e89eef73..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/req/sega/diva/PvListRequest.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.api.model.req.sega.diva; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PvListRequest { - @JsonProperty("CreationDate") - private LocalDateTime CreationDate; - @JsonProperty("Easy") - private List Easy; - @JsonProperty("Normal") - private List Normal; - @JsonProperty("Hard") - private List Hard; - @JsonProperty("Extreme") - private List Extreme; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/ProfileResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/ProfileResp.java deleted file mode 100644 index fdc98db1..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/ProfileResp.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ProfileResp { - - private String userName; - - private int level; - - private String exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int playerRating; - - private int highestRating; - - private int nameplateId; - - private int frameId; - - private int characterId; - - private int trophyId; - - private int totalMapNum; - - private long totalHiScore; - - private long totalBasicHighScore; - - private long totalAdvancedHighScore; - - private long totalExpertHighScore; - - private long totalMasterHighScore; - - private int friendCount; - - private LocalDateTime firstPlayDate; - - private LocalDateTime lastPlayDate; - - private int courseClass; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RatingItem.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RatingItem.java deleted file mode 100644 index 38b9860e..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RatingItem.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RatingItem { - - private int musicId; - - private String musicName; - - private String artistName; - - private int level; - - private int score; - - private int ratingBase; - - private int rating; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RecentResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RecentResp.java deleted file mode 100644 index c2479ea4..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/RecentResp.java +++ /dev/null @@ -1,87 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RecentResp { - - private LocalDateTime playDate; - - private LocalDateTime userPlayDate; - - private int musicId; - - private int level; - - private int customId; - - private int playedCustom1; - - private int playedCustom2; - - private int playedCustom3; - - private int track; - - private int score; - - private int rank; - - private int maxCombo; - - private int maxChain; - - private int rateTap; - - private int rateHold; - - private int rateSlide; - - private int rateAir; - - private int rateFlick; - - private int judgeGuilty; - - private int judgeAttack; - - private int judgeJustice; - - private int judgeCritical; - - private int playerRating; - - @JsonProperty("isNewRecord") - private boolean isNewRecord; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - private int fullChainKind; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - private int characterId; - - private int skillId; - - private int playKind; - - @JsonProperty("isClear") - private boolean isClear; - - private int skillLevel; - - private int skillEffect; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/ScoreResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/ScoreResp.java deleted file mode 100644 index 42865443..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/ScoreResp.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ScoreResp { - - private int musicId; - - private int level; - - private int playCount; - - private int scoreMax; - - private int resRequestCount; - - private int resAcceptCount; - - private int resSuccessCount; - - private int missCount; - - private int maxComboCount; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - @JsonProperty("isSuccess") - private boolean isSuccess; - - private int fullChain; - - private int maxChain; - - private int scoreRank; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ChuniDataExport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ChuniDataExport.java deleted file mode 100644 index 97c92304..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ChuniDataExport.java +++ /dev/null @@ -1,32 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1.external; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * This class is use for exporting CHUNITHM profile - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ChuniDataExport { - private String gameId = "SDBT"; - private UserData userData; - private List userActivityList; - private List userCharacterList; - private List userChargeList; - private List userCourseList; - private UserDataEx userDataEx; - private List userDuelList; - private UserGameOption userGameOption; - private UserGameOptionEx userGameOptionEx; - private List userItemList; - private List userMapList; - private List userMusicDetailList; - private List userPlaylogList; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ChuniDataImport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ChuniDataImport.java deleted file mode 100644 index 227b2c19..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ChuniDataImport.java +++ /dev/null @@ -1,32 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1.external; - -import icu.samnyan.aqua.sega.chunithm.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * This class is use for importing CHUNITHM profile - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ChuniDataImport { - private String gameId; - private ExternalUserData userData; - private List userActivityList; - private List userCharacterList; - private List userChargeList; - private List userCourseList; - private UserDataEx userDataEx; - private List userDuelList; - private UserGameOption userGameOption; - private UserGameOptionEx userGameOptionEx; - private List userItemList; - private List userMapList; - private List userMusicDetailList; - private List userPlaylogList; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ExternalUserData.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ExternalUserData.java deleted file mode 100644 index ee3f8645..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v1/external/ExternalUserData.java +++ /dev/null @@ -1,119 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v1.external; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * This class is use for exported UserData class. Using access code as identifier - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ExternalUserData { - - // Access Code of the card - private String accessCode; - - private String userName; - - private LocalDateTime lastLoginDate; - - private boolean isWebJoin; - - private String webLimitDate; - - private int level; - - private int reincarnationNum; - - private String exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int multiPlayCount; - - private int multiWinCount; - - private int requestResCount; - - private int acceptResCount; - - private int successResCount; - - private int playerRating; - - private int highestRating; - - private int nameplateId; - - private int frameId; - - private int characterId; - - private int trophyId; - - private int playedTutorialBit; - - private int firstTutorialCancelNum; - - private int masterTutorialCancelNum; - - private int totalRepertoireCount; - - private int totalMapNum; - - private long totalHiScore; - - private long totalBasicHighScore; - - private long totalAdvancedHighScore; - - private long totalExpertHighScore; - - private long totalMasterHighScore; - - private LocalDateTime eventWatchedDate; - - private int friendCount; - - @JsonProperty("isMaimai") - private boolean isMaimai; - - private String firstGameId; - - private String firstRomVersion; - - private String firstDataVersion; - - private LocalDateTime firstPlayDate; - - private String lastGameId; - - private String lastRomVersion; - - private String lastDataVersion; - - private LocalDateTime lastPlayDate; - - private int lastPlaceId; - - private String lastPlaceName; - - private String lastRegionId; - - private String lastRegionName; - - private String lastAllNetId; - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RatingItem.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RatingItem.java deleted file mode 100644 index 55b25917..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RatingItem.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v2; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RatingItem { - - private int musicId; - - private String musicName; - - private String artistName; - - private int level; - - private int score; - - private int ratingBase; - - private int rating; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RecentResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RecentResp.java deleted file mode 100644 index 58213aae..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/RecentResp.java +++ /dev/null @@ -1,89 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v2; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RecentResp { - - private LocalDateTime playDate; - - private LocalDateTime userPlayDate; - - private int musicId; - - private int level; - - private int customId; - - private int playedCustom1; - - private int playedCustom2; - - private int playedCustom3; - - private int track; - - private int score; - - private int rank; - - private int maxCombo; - - private int maxChain; - - private int rateTap; - - private int rateHold; - - private int rateSlide; - - private int rateAir; - - private int rateFlick; - - private int judgeGuilty; - - private int judgeAttack; - - private int judgeJustice; - - private int judgeCritical; - - private int judgeHeaven; - - private int playerRating; - - @JsonProperty("isNewRecord") - private boolean isNewRecord; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - private int fullChainKind; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - private int characterId; - - private int skillId; - - private int playKind; - - @JsonProperty("isClear") - private boolean isClear; - - private int skillLevel; - - private int skillEffect; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/ScoreResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/ScoreResp.java deleted file mode 100644 index 1156f004..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/ScoreResp.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v2; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ScoreResp { - - private int musicId; - - private int level; - - private int playCount; - - private int scoreMax; - - private int resRequestCount; - - private int resAcceptCount; - - private int resSuccessCount; - - private int missCount; - - private int maxComboCount; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - @JsonProperty("isAllJustice") - private boolean isAllJustice; - - @JsonProperty("isSuccess") - private boolean isSuccess; - - private int fullChain; - - private int maxChain; - - private int scoreRank; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/Chu3DataExport.kt b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/Chu3DataExport.kt deleted file mode 100644 index cdde0ac4..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/Chu3DataExport.kt +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external - -import icu.samnyan.aqua.net.games.IExportClass -import icu.samnyan.aqua.sega.chusan.model.userdata.* - -data class Chu3DataExport( - override var gameId: String = "SDHD", - override var userData: Chu3UserData, - var userGameOption: UserGameOption, - var userActivityList: List, - var userCharacterList: List, - var userChargeList: List, - var userCourseList: List, - var userDuelList: List, - var userItemList: List, - var userMapList: List, - var userMusicDetailList: List, - var userPlaylogList: List, -): IExportClass { - constructor() : this("SDHD", - Chu3UserData(), UserGameOption(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList()) -} - diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/ChuniDataImport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/ChuniDataImport.java deleted file mode 100644 index 83e7b21f..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/ChuniDataImport.java +++ /dev/null @@ -1,30 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external; - -import icu.samnyan.aqua.sega.chusan.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * This class is use for importing chusan profile - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ChuniDataImport { - private String gameId; - private ExternalUserData userData; - private List userActivityList; - private List userCharacterList; - private List userChargeList; - private List userCourseList; - private List userDuelList; - private UserGameOption userGameOption; - private List userItemList; - private List userMapList; - private List userMusicDetailList; - private List userPlaylogList; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/ExternalUserData.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/ExternalUserData.java deleted file mode 100644 index 1c74eea3..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/chuni/v2/external/ExternalUserData.java +++ /dev/null @@ -1,119 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; - -/** - * This class is use for exported UserData class. Using access code as identifier - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ExternalUserData { - - // Access Code of the card - private String accessCode; - - private String userName; - - private LocalDateTime lastLoginDate; - - private boolean isWebJoin; - - private String webLimitDate; - - private int level; - - private int reincarnationNum; - - private String exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int multiPlayCount; - - private int multiWinCount; - - private int requestResCount; - - private int acceptResCount; - - private int successResCount; - - private int playerRating; - - private int highestRating; - - private int nameplateId; - - private int frameId; - - private int characterId; - - private int trophyId; - - private int playedTutorialBit; - - private int firstTutorialCancelNum; - - private int masterTutorialCancelNum; - - private int totalRepertoireCount; - - private int totalMapNum; - - private long totalHiScore; - - private long totalBasicHighScore; - - private long totalAdvancedHighScore; - - private long totalExpertHighScore; - - private long totalMasterHighScore; - - private LocalDateTime eventWatchedDate; - - private int friendCount; - - @JsonProperty("isMaimai") - private boolean isMaimai; - - private String firstGameId; - - private String firstRomVersion; - - private String firstDataVersion; - - private LocalDateTime firstPlayDate; - - private String lastGameId; - - private String lastRomVersion; - - private String lastDataVersion; - - private LocalDateTime lastPlayDate; - - private int lastPlaceId; - - private String lastPlaceName; - - private String lastRegionId; - - private String lastRegionName; - - private String lastAllNetId; - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PlayerInfo.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PlayerInfo.java deleted file mode 100644 index 420a6050..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PlayerInfo.java +++ /dev/null @@ -1,13 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.diva; - -import lombok.Data; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -public class PlayerInfo { - private long pdId; - private String playerName; - private int vocaloidPoints; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PvRankRecord.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PvRankRecord.java deleted file mode 100644 index 3a59d8d4..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/diva/PvRankRecord.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.diva; - -import lombok.AllArgsConstructor; -import lombok.Data; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -public class PvRankRecord { - private long id; - private String playerName; - private int score; - private int attain; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java deleted file mode 100644 index a57b97f7..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/PhotoResp.java +++ /dev/null @@ -1,15 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.maimai2; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PhotoResp { - private int imageIndex; - private int totalImage; - private String fileName; - private String divData; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/ProfileResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/ProfileResp.java deleted file mode 100644 index d4386c9a..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/ProfileResp.java +++ /dev/null @@ -1,62 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.maimai2; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ProfileResp { - - private String userName; - private int iconId; - private int plateId; - private int titleId; - private int partnerId; - private int frameId; - private int selectMapId; - private int totalAwake; - private int gradeRating; - private int musicRating; - private int playerRating; - private int highestRating; - private int gradeRank; - private int classRank; - private int courseRank; - private List charaSlot; - private List charaLockSlot; - private int playCount; - private String eventWatchedDate; - private String lastRomVersion; - private String lastDataVersion; - private String lastPlayDate; - private int playVsCount; - private int playSyncCount; - private int winCount; - private int helpCount; - private int comboCount; - private long totalDeluxscore; - private long totalBasicDeluxscore; - private long totalAdvancedDeluxscore; - private long totalExpertDeluxscore; - private long totalMasterDeluxscore; - private long totalReMasterDeluxscore; - private int totalSync; - private int totalBasicSync; - private int totalAdvancedSync; - private int totalExpertSync; - private int totalMasterSync; - private int totalReMasterSync; - private long totalAchievement; - private long totalBasicAchievement; - private long totalAdvancedAchievement; - private long totalExpertAchievement; - private long totalMasterAchievement; - private long totalReMasterAchievement; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/ExternalUserData.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/ExternalUserData.java deleted file mode 100644 index 291b74d3..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/ExternalUserData.java +++ /dev/null @@ -1,96 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.maimai2.external; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ExternalUserData implements Serializable { - - private String accessCode; - private String userName; - private int isNetMember; - private int iconId; - private int plateId; - private int titleId; - private int partnerId; - private int frameId; - private int selectMapId; - private int totalAwake; - private int gradeRating; - private int musicRating; - private int playerRating; - private int highestRating; - private int gradeRank; - private int classRank; - private int courseRank; - private List charaSlot; - private List charaLockSlot; - private long contentBit; - private int playCount; - private String eventWatchedDate; - private String lastGameId; - private String lastRomVersion; - private String lastDataVersion; - private String lastLoginDate; - private String lastPlayDate; - private int lastPlayCredit; - private int lastPlayMode; - private int lastPlaceId; - private String lastPlaceName; - private int lastAllNetId; - private int lastRegionId; - private String lastRegionName; - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; - private String lastCountryCode; - private int lastSelectEMoney; - private int lastSelectTicket; - private int lastSelectCourse; - private int lastCountCourse; - private String firstGameId; - private String firstRomVersion; - private String firstDataVersion; - private String firstPlayDate; - private String compatibleCmVersion; - private String dailyBonusDate; - private String dailyCourseBonusDate; - private String lastPairLoginDate; - private String lastTrialPlayDate; - private int playVsCount; - private int playSyncCount; - private int winCount; - private int helpCount; - private int comboCount; - private long totalDeluxscore; - private long totalBasicDeluxscore; - private long totalAdvancedDeluxscore; - private long totalExpertDeluxscore; - private long totalMasterDeluxscore; - private long totalReMasterDeluxscore; - private int totalSync; - private int totalBasicSync; - private int totalAdvancedSync; - private int totalExpertSync; - private int totalMasterSync; - private int totalReMasterSync; - private long totalAchievement; - private long totalBasicAchievement; - private long totalAdvancedAchievement; - private long totalExpertAchievement; - private long totalMasterAchievement; - private long totalReMasterAchievement; - private long playerOldRating; - private long playerNewRating; - private int banState; - private long dateTime; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/Maimai2DataExport.kt b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/Maimai2DataExport.kt deleted file mode 100644 index 4fac9419..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/Maimai2DataExport.kt +++ /dev/null @@ -1,30 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.maimai2.external - -import icu.samnyan.aqua.net.games.IExportClass -import icu.samnyan.aqua.sega.maimai2.model.userdata.* - -data class Maimai2DataExport( - override var userData: Mai2UserDetail, - var userExtend: Mai2UserExtend, - var userOption: Mai2UserOption, - var userUdemae: Mai2UserUdemae, - var mapEncountNpcList: List, - var userActList: List, - var userCharacterList: List, - var userChargeList: List, - var userCourseList: List, - var userFavoriteList: List, - var userFriendSeasonRankingList: List, - var userGeneralDataList: List, - var userItemList: List, - var userLoginBonusList: List, - var userMapList: List, - var userMusicDetailList: List, - var userPlaylogList: List, - override var gameId: String = "SDEZ", -): IExportClass { - constructor() : this(Mai2UserDetail(), Mai2UserExtend(), Mai2UserOption(), Mai2UserUdemae(), - mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), - mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), - mutableListOf()) -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/Maimai2DataImport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/Maimai2DataImport.java deleted file mode 100644 index 271c5b5d..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/maimai2/external/Maimai2DataImport.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.maimai2.external; - -import icu.samnyan.aqua.sega.maimai2.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Maimai2DataImport { - private String gameId; - private ExternalUserData userData; - private Mai2UserExtend userExtend; - private Mai2UserOption userOption; - private List mapEncountNpcList; - private List userActList; - private List userCharacterList; - private List userChargeList; - private List userCourseList; - private List userFavoriteList; - private List userFriendSeasonRankingList; - private List userGeneralDataList; - private List userGhostList; - private List userItemList; - private List userLoginBonusList; - private List userMapList; - private List userMusicDetailList; - private List userPlaylogList; - private List userRateList; - private Mai2UserUdemae userUdemae; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/ProfileResp.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/ProfileResp.java deleted file mode 100644 index 61a7a705..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/ProfileResp.java +++ /dev/null @@ -1,69 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.ongeki; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ProfileResp { - - private String userName; - - private int level; - - private long exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int jewelCount; - - private int totalJewelCount; - - private int playerRating; - - private int highestRating; - - private int battlePoint; - - private int nameplateId; - - private int trophyId; - - private int cardId; - - private int characterId; - - private long sumTechHighScore; - - private long sumTechBasicHighScore; - - private long sumTechAdvancedHighScore; - - private long sumTechExpertHighScore; - - private long sumTechMasterHighScore; - - private long sumTechLunaticHighScore; - - private long sumBattleHighScore; - - private long sumBattleBasicHighScore; - - private long sumBattleAdvancedHighScore; - - private long sumBattleExpertHighScore; - - private long sumBattleMasterHighScore; - - private long sumBattleLunaticHighScore; - -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/ExternalUserData.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/ExternalUserData.java deleted file mode 100644 index 1212e44e..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/ExternalUserData.java +++ /dev/null @@ -1,137 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.ongeki.external; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ExternalUserData implements Serializable { - - private String accessCode; - - private String userName; - - private int level; - - private int reincarnationNum; - - private long exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int jewelCount; - - private int totalJewelCount; - - private int medalCount; - - private int playerRating; - - private int highestRating; - - private int battlePoint; - - private int bestBattlePoint; - - private int overDamageBattlePoint; - - private int nameplateId; - - private int trophyId; - - private int cardId; - - private int characterId; - - private int tabSetting; - - private int tabSortSetting; - - private int cardCategorySetting; - - private int cardSortSetting; - - private int rivalScoreCategorySetting; - - private int playedTutorialBit; - - private int firstTutorialCancelNum; - - private long sumTechHighScore; - - private long sumTechBasicHighScore; - - private long sumTechAdvancedHighScore; - - private long sumTechExpertHighScore; - - private long sumTechMasterHighScore; - - private long sumTechLunaticHighScore; - - private long sumBattleHighScore; - - private long sumBattleBasicHighScore; - - private long sumBattleAdvancedHighScore; - - private long sumBattleExpertHighScore; - - private long sumBattleMasterHighScore; - - private long sumBattleLunaticHighScore; - - private String eventWatchedDate; - - private String cmEventWatchedDate; - - private String firstGameId; - - private String firstRomVersion; - - private String firstDataVersion; - - private String firstPlayDate; - - private String lastGameId; - - private String lastRomVersion; - - private String lastDataVersion; - - private String compatibleCmVersion; - - private String lastPlayDate; - - private int lastPlaceId; - - private String lastPlaceName; - - private int lastRegionId; - - private String lastRegionName; - - private int lastAllNetId; - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; - - private int lastUsedDeckId; - - private int lastPlayMusicLevel; - - private int lastEmoneyBrand; - -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java deleted file mode 100644 index c37d90d7..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.ongeki.external; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class OngekiDataExport { - private String gameId = "SDDT"; - private UserData userData; - private List userActivityList; - private List userCardList; - private List userChapterList; - private List userCharacterList; - private List userDeckList; - private List userEventPointList; - private List userGeneralDataList; - private List userItemList; - private List userLoginBonusList; - private List userMissionPointList; - private List userMusicDetailList; - private List userMusicItemList; - private UserOption userOption; - private List userPlaylogList; - private List userStoryList; - private List userTrainingRoomList; - private List userTradeItemList; - private List userEventMusicList; - private List userTechEventList; - private List userKopList; - private List userMemoryChapterList; - private List userScenarioList; - private List userBossList; - private List userTechCountList; - private List userRivalList; -} diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java deleted file mode 100644 index 1b2b241d..00000000 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.api.model.resp.sega.ongeki.external; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class OngekiDataImport { - private String gameId; - private ExternalUserData userData; - private List userActivityList; - private List userCardList; - private List userChapterList; - private List userCharacterList; - private List userDeckList; - private List userEventPointList; - private List userGeneralDataList; - private List userItemList; - private List userLoginBonusList; - private List userMissionPointList; - private List userMusicDetailList; - private List userMusicItemList; - private UserOption userOption; - private List userPlaylogList; - private List userStoryList; - private List userTrainingRoomList; - private List userTradeItemList; - private List userEventMusicList; - private List userTechEventList; - private List userKopList; - private List userMemoryChapterList; - private List userScenarioList; - private List userBossList; - private List userTechCountList; - private List userRivalList; -} diff --git a/src/main/java/icu/samnyan/aqua/api/util/ApiMapper.java b/src/main/java/icu/samnyan/aqua/api/util/ApiMapper.java deleted file mode 100644 index 2a9588d4..00000000 --- a/src/main/java/icu/samnyan/aqua/api/util/ApiMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package icu.samnyan.aqua.api.util; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import org.springframework.stereotype.Component; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component -public class ApiMapper { - - private final ObjectMapper mapper; - - public ApiMapper() { - mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - SimpleModule module = new SimpleModule(); - mapper.registerModule(new JavaTimeModule()); - mapper.registerModule(module); - } - - public String write(Object o) throws JsonProcessingException { - return mapper.writeValueAsString(o); - - } - - public T convert(Object object, TypeReference toClass) { - return mapper.convertValue(object, toClass); - } -} diff --git a/src/main/java/icu/samnyan/aqua/net/CardController.kt b/src/main/java/icu/samnyan/aqua/net/CardController.kt index d9dc22a7..e2a760ab 100644 --- a/src/main/java/icu/samnyan/aqua/net/CardController.kt +++ b/src/main/java/icu/samnyan/aqua/net/CardController.kt @@ -12,6 +12,7 @@ import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.general.model.Card import icu.samnyan.aqua.sega.general.service.CardService import icu.samnyan.aqua.sega.maimai2.model.Mai2UserDataRepo +import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo import icu.samnyan.aqua.sega.wacca.model.db.WcUserRepo import jakarta.persistence.EntityManager import org.springframework.scheduling.annotation.Scheduled @@ -176,7 +177,7 @@ class CardGameService( val maimai2: Mai2UserDataRepo, val chusan: Chu3UserDataRepo, val wacca: WcUserRepo, - val ongeki: icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository, + val ongeki: OgkUserDataRepo, val diva: icu.samnyan.aqua.sega.diva.dao.userdata.PlayerProfileRepository, val safety: AquaNetSafetyService, val cardRepo: CardRepository, diff --git a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chu3Import.kt b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chu3Import.kt index 107f78ce..be9a45eb 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/chu3/Chu3Import.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/chu3/Chu3Import.kt @@ -3,7 +3,7 @@ package icu.samnyan.aqua.net.games.chu3 import ext.API import ext.returns import ext.vars -import icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external.Chu3DataExport +import icu.samnyan.aqua.net.games.IExportClass import icu.samnyan.aqua.net.games.ImportClass import icu.samnyan.aqua.net.games.ImportController import icu.samnyan.aqua.sega.chusan.model.Chu3Repos @@ -48,4 +48,23 @@ class Chu3Import( ) { override fun createEmpty() = Chu3DataExport() override val userDataRepo = repos.userData -} \ No newline at end of file +} + + +data class Chu3DataExport( + override var gameId: String = "SDHD", + override var userData: Chu3UserData, + var userGameOption: UserGameOption, + var userActivityList: List, + var userCharacterList: List, + var userChargeList: List, + var userCourseList: List, + var userDuelList: List, + var userItemList: List, + var userMapList: List, + var userMusicDetailList: List, + var userPlaylogList: List, +): IExportClass { + constructor() : this("SDHD", + Chu3UserData(), UserGameOption(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList()) +} diff --git a/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt b/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt index 284fb273..ee5dc278 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/mai2/Mai2Import.kt @@ -3,7 +3,7 @@ package icu.samnyan.aqua.net.games.mai2 import ext.API import ext.returns import ext.vars -import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.Maimai2DataExport +import icu.samnyan.aqua.net.games.IExportClass import icu.samnyan.aqua.net.games.ImportClass import icu.samnyan.aqua.net.games.ImportController import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos @@ -49,3 +49,29 @@ class Mai2Import( override fun createEmpty() = Maimai2DataExport() override val userDataRepo = repos.userData } + +data class Maimai2DataExport( + override var userData: Mai2UserDetail, + var userExtend: Mai2UserExtend, + var userOption: Mai2UserOption, + var userUdemae: Mai2UserUdemae, + var mapEncountNpcList: List, + var userActList: List, + var userCharacterList: List, + var userChargeList: List, + var userCourseList: List, + var userFavoriteList: List, + var userFriendSeasonRankingList: List, + var userGeneralDataList: List, + var userItemList: List, + var userLoginBonusList: List, + var userMapList: List, + var userMusicDetailList: List, + var userPlaylogList: List, + override var gameId: String = "SDEZ", +): IExportClass { + constructor() : this(Mai2UserDetail(), Mai2UserExtend(), Mai2UserOption(), Mai2UserUdemae(), + mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), + mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), + mutableListOf()) +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt b/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt index c1f3db9e..8e22cb2f 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/ongeki/Ongeki.kt @@ -4,21 +4,21 @@ import ext.API import icu.samnyan.aqua.net.db.AquaUserServices import icu.samnyan.aqua.net.games.* import icu.samnyan.aqua.net.utils.* -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserGeneralDataRepository -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMusicDetailRepository -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserPlaylogRepository -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData +import icu.samnyan.aqua.sega.ongeki.OgkUserDataRepo +import icu.samnyan.aqua.sega.ongeki.OgkUserGeneralDataRepo +import icu.samnyan.aqua.sega.ongeki.OgkUserMusicDetailRepo +import icu.samnyan.aqua.sega.ongeki.OgkUserPlaylogRepo +import icu.samnyan.aqua.sega.ongeki.model.UserData import org.springframework.web.bind.annotation.RestController @RestController @API("api/v2/game/ongeki") class Ongeki( override val us: AquaUserServices, - override val playlogRepo: UserPlaylogRepository, - override val userDataRepo: UserDataRepository, - override val userMusicRepo: UserMusicDetailRepository, - val userGeneralDataRepository: UserGeneralDataRepository + override val playlogRepo: OgkUserPlaylogRepo, + override val userDataRepo: OgkUserDataRepo, + override val userMusicRepo: OgkUserMusicDetailRepo, + val userGeneralDataRepository: OgkUserGeneralDataRepo ): GameApiController("ongeki", UserData::class) { override suspend fun trend(username: String) = us.cardByName(username) { card -> findTrend(playlogRepo.findByUser_Card_ExtId(card.extId) @@ -27,7 +27,10 @@ class Ongeki( override val shownRanks = ongekiScores.filter { it.first >= 950000 } override val settableFields: Map Unit> by lazy { mapOf( - "userName" to usernameCheck(SEGA_USERNAME_CAHRS) + "userName" to usernameCheck(SEGA_USERNAME_CAHRS), + + "lastRomVersion" to { u, v -> u.lastRomVersion = v }, + "lastDataVersion" to { u, v -> u.lastDataVersion = v }, ) } override suspend fun userSummary(username: String, token: String?) = us.cardByName(username) { card -> diff --git a/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt b/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt index 84c3b5b2..3ee3611d 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/wacca/Wacca.kt @@ -20,6 +20,8 @@ class Wacca( ): GameApiController("wacca", WaccaUser::class) { override val settableFields: Map Unit> by lazy { mapOf( "userName" to usernameCheck(WACCA_USERNAME_CHARS), + + "lastRomVersion" to { u, v -> u.lastRomVersion = v }, ) } override suspend fun trend(@RP username: String) = us.cardByName(username) { card -> diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt index b3753a28..bc881253 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt @@ -9,8 +9,8 @@ import icu.samnyan.aqua.sega.maimai2.model.request.Mai2UserAll import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserFavorite import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserItem import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserMusicDetail -import icu.samnyan.aqua.sega.ongeki.model.request.UpsertUserAll -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserItem +import icu.samnyan.aqua.sega.ongeki.model.OngekiUpsertUserAll +import icu.samnyan.aqua.sega.ongeki.model.UserItem import icu.samnyan.aqua.sega.util.jackson.BasicMapper import icu.samnyan.aqua.sega.util.jackson.IMapper import icu.samnyan.aqua.sega.util.jackson.StringMapper @@ -134,7 +134,7 @@ class OngekiDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker( override fun pull(): String { val (userId, paged) = prePull() - return UpsertUserAll().apply { + return OngekiUpsertUserAll().apply { userData = ls("GetUserDataApi".get("userData", userId)) userOption = ls("GetUserOptionApi".get("userOption", userId)) userMusicItemList = "GetUserMusicItemApi".get("userMusicItemList", paged) diff --git a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt index 25400285..00a88c86 100644 --- a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt +++ b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNet.kt @@ -182,7 +182,7 @@ class AllNet( "SDHD" -> "chu3/$ver/" "SDGS" -> "chu3/$ver/" // International (c3exp) "SBZV" -> "diva/" - "SDDT" -> "ongeki/" + "SDDT" -> "ongeki/$ver/" "SDEY" -> "mai/" "SDGA" -> "mai2/" // International (Exp) "SDGB" -> "mai2/" // International (China) - TODO: Test it diff --git a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNetSecure.kt b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNetSecure.kt index 535a8975..21f420f1 100644 --- a/src/main/java/icu/samnyan/aqua/sega/allnet/AllNetSecure.kt +++ b/src/main/java/icu/samnyan/aqua/sega/allnet/AllNetSecure.kt @@ -37,6 +37,7 @@ class TokenChecker( private val currentSession = ThreadLocal() fun getCurrentSession() = currentSession.get() + fun tokenShort() = getCurrentSession()?.token?.substring(0, 6) ?: "NO-TOKEN" } /** diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt index 4e592135..b2421788 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/ChusanController.kt @@ -59,19 +59,19 @@ class ChusanController( } if (api.startsWith("CM") && api !in handlers) api = api.removePrefix("CM") - val token = TokenChecker.getCurrentSession()?.token?.substring(0, 6) ?: "NO-TOKEN" - log.info("Chu3 < $api : ${data.toJson()} : [$token]") + val token = TokenChecker.tokenShort() + log.info("$token : $api < ${data.toJson()}") val noop = """{"returnCode":"1","apiName":"$api"}""" if (api !in noopEndpoint && !handlers.containsKey(api)) { - log.warn("Chu3 > $api not found") + log.warn("$token : $api > not found") return noop } // Only record the counter metrics if the API is known. Metrics.counter("aquadx_chusan_api_call", "api" to api).increment() if (api in noopEndpoint) { - log.info("Chu3 > $api no-op") + log.info("$token : $api > no-op") return noop } @@ -79,14 +79,11 @@ class ChusanController( Metrics.timer("aquadx_chusan_api_latency", "api" to api).recordCallable { serialize(api, handlers[api]!!(ctx) ?: noop).also { if (api !in setOf("GetUserItemApi", "GetGameEventApi")) - log.info("Chu3 > $api : $it") + log.info("$token : $api > ${it.truncate(500)}") } } } catch (e: Exception) { - Metrics.counter( - "aquadx_chusan_api_error", - "api" to api, "error" to e.simpleDescribe() - ).increment() + Metrics.counter("aquadx_chusan_api_error", "api" to api, "error" to e.simpleDescribe()).increment() throw e } } diff --git a/src/main/java/icu/samnyan/aqua/sega/general/BaseHandler.kt b/src/main/java/icu/samnyan/aqua/sega/general/BaseHandler.kt index 0a11905a..8459652b 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/BaseHandler.kt +++ b/src/main/java/icu/samnyan/aqua/sega/general/BaseHandler.kt @@ -25,6 +25,7 @@ typealias SpecialHandler = RequestContext.() -> Any? fun BaseHandler.toSpecial() = { ctx: RequestContext -> handle(ctx.data) } typealias PagedHandler = RequestContext.() -> List +typealias PagedExtraHandler = RequestContext.() -> Pair, JDict> typealias AddFn = RequestContext.() -> PagedProcessor typealias PagePost = (MutJDict) -> Unit data class PagedProcessor(val add: JDict?, val fn: PagedHandler, var post: PagePost? = null) @@ -75,4 +76,21 @@ abstract class MeowApi(val serialize: (String, Any) -> String) { val minTime = millis() - (1000 * 60) pageCache.entries.removeIf { it.value.l < minTime } } + + // Used because maimai and ongeki does not actually require paging implementation + fun String.unpaged(key: String? = null, fn: PagedHandler) { + val k = key ?: (this.replace("Get", "").firstCharLower() + "List") + this { + val l = fn(this) + mapOf("userId" to uid, "nextIndex" to 0, "length" to l.size, k to l) + } + } + + fun String.unpagedExtra(key: String? = null, fn: PagedExtraHandler) { + val k = key ?: (this.replace("Get", "").firstCharLower() + "List") + this { + val (l, e) = fn(this) + mapOf("userId" to uid, "nextIndex" to 0, "length" to l.size, k to l) + e + } + } } diff --git a/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java b/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java index 38350081..4d9fbeaa 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java +++ b/src/main/java/icu/samnyan/aqua/sega/general/model/response/UserRecentRating.java @@ -15,4 +15,9 @@ public class UserRecentRating { private int difficultId; private String romVersionCode; private int score; + + @Override + public String toString() { + return musicId + ":" + difficultId + ":" + score; + } } diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt index 8eaa8b24..c594e19f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2Apis.kt @@ -3,21 +3,12 @@ package icu.samnyan.aqua.sega.maimai2 import ext.* -import icu.samnyan.aqua.sega.general.PagedHandler import icu.samnyan.aqua.sega.maimai2.model.UserRivalMusic import icu.samnyan.aqua.sega.maimai2.model.UserRivalMusicDetail import icu.samnyan.aqua.sega.maimai2.model.userdata.Mai2UserKaleidx import java.time.LocalDate fun Maimai2ServletController.initApis() { - // Used because maimai does not actually require paging implementation - fun String.unpaged(key: String? = null, fn: PagedHandler) { - val k = key ?: (this.replace("Get", "").firstCharLower() + "List") - this { - fn(this).let { mapOf("userId" to uid, "nextIndex" to 0, "length" to it.size, k to it) } - } - } - "GetUserExtend" { mapOf( "userId" to uid, "userExtend" to (db.userExtend.findSingleByUser_Card_ExtId(uid)() ?: (404 - "User not found")) diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt index 5ec2afc0..8e159271 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt @@ -4,13 +4,13 @@ import ext.* import icu.samnyan.aqua.net.games.mai2.Maimai2 import icu.samnyan.aqua.net.utils.ApiException import icu.samnyan.aqua.net.utils.simpleDescribe +import icu.samnyan.aqua.sega.allnet.TokenChecker import icu.samnyan.aqua.sega.general.* import icu.samnyan.aqua.sega.maimai2.handler.* import icu.samnyan.aqua.sega.maimai2.model.Mai2Repos import icu.samnyan.aqua.spring.Metrics import io.ktor.client.request.* import jakarta.servlet.http.HttpServletRequest -import org.slf4j.LoggerFactory import org.springframework.web.bind.annotation.* import java.time.format.DateTimeFormatter import kotlin.reflect.full.declaredMemberProperties @@ -38,7 +38,7 @@ class Maimai2ServletController( ): MeowApi(serialize = { _, resp -> if (resp is String) resp else resp.toJson() }) { companion object { - private val logger = LoggerFactory.getLogger(Maimai2ServletController::class.java) + private val log = logger() private val empty = listOf() private val GAME_SETTING_DATE_FMT = DateTimeFormatter.ofPattern("2010-01-01 HH:mm:00.0") private val GAME_SETTING_TIME_FMT = DateTimeFormatter.ofPattern("HH:mm:00") @@ -67,10 +67,12 @@ class Maimai2ServletController( @API("/{api}") fun handle(@PathVariable api: String, @RequestBody data: Map, req: HttpServletRequest): Any { - logger.info("Mai2 < $api : ${data.toJson()}") // TODO: Optimize logging + val token = TokenChecker.tokenShort() + log.info("$token : $api < ${data.toJson()}") + val noop = """{"returnCode":1,"apiName":"com.sega.maimai2servlet.api.$api"}""" if (api !in noopEndpoint && !handlers.containsKey(api)) { - logger.warn("Mai2 > $api not found") + log.warn("$token : $api > not found") return noop } @@ -78,7 +80,7 @@ class Maimai2ServletController( Metrics.counter("aquadx_maimai2_api_call", "api" to api).increment() if (api in noopEndpoint) { - logger.info("Mai2 > $api no-op") + log.info("$token : $api > no-op") return noop } @@ -86,7 +88,7 @@ class Maimai2ServletController( Metrics.timer("aquadx_maimai2_api_latency", "api" to api).recordCallable { val ctx = RequestContext(req, data.mut) serialize(api, handlers[api]!!(ctx) ?: noop).also { - logger.info("Mai2 > $api : ${it.truncate(1000)}") + log.info("$token : $api > ${it.truncate(500)}") } } } catch (e: Exception) { diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiApis.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiApis.kt new file mode 100644 index 00000000..41bf4a8d --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiApis.kt @@ -0,0 +1,72 @@ +package icu.samnyan.aqua.sega.ongeki + +import ext.empty +import ext.int +import ext.parsing +import ext.plus + +fun OngekiController.ongekiInit() { + fun List.staticLst(key: String) = mapOf("length" to size, key to this) + + initUser() + initUpsertAll() + + // Has type, but type is always 1 + "GetGameEvent".static { + gdb.event.findAll().map { + mapOf("id" to it.id, "type" to 1, "startDate" to "2005-01-01 00:00:00.0", "endDate" to "2099-01-01 05:00:00.0") + }.staticLst("gameEventList") + mapOf("type" to 1) + } + + "GetGamePoint".static { gdb.point.findAll().staticLst("gamePointList") } + "GetGamePresent".static { gdb.present.findAll().staticLst("gamePresentList") } + "GetGameReward".static { gdb.reward.findAll().staticLst("gameRewardList") } + + // Dummy endpoints + "GetGameTechMusic".static { empty.staticLst("gameTechMusicList") } + "GetGameMessage" { mapOf("type" to data["type"], "length" to 0, "gameMessageList" to empty) } + "GetGameMusicReleaseState".static { mapOf("techScore" to 0, "cardNum" to 0) } + + "GetGameIdlist" { + // type 1: Music NG List, 2: Music Recommend List + val type = parsing { data["type"]!!.int } + empty.staticLst("gameIdlistList") + mapOf("type" to type) + } + + "GetGameRanking" { + // type 1: Music current ranking, 2: Music past ranking + val type = parsing { data["type"]!!.int } + empty.staticLst("gameRankingList") + mapOf("type" to type) + } + + "GetGameSetting" { + val ver = (data["version"] ?: "1.50.00") + mapOf( + "isAou" to false, + "isDumpUpload" to false, + "gameSetting" to mapOf( + "dataVersion" to ver, + "onlineDataVersion" to ver, + "isMaintenance" to false, + "requestInterval" to 10, + "rebootStartTime" to "2020-01-01 23:59:00.0", + "rebootEndTime" to "2020-01-01 23:59:00.0", + "isBackgroundDistribute" to false, + "maxCountCharacter" to 50, + "maxCountCard" to 300, + "maxCountItem" to 300, + "maxCountMusic" to 50, + "maxCountMusicItem" to 300, + "maxCountRivalMusic" to 300 + ) + ) + } + + "GetClientBookkeeping" { + empty.staticLst("clientBookkeepingList") + mapOf("placeId" to data["placeId"]) + } + + "GetClientTestmode" { + empty.staticLst("clientTestmodeList") + mapOf("placeId" to data["placeId"]) + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt new file mode 100644 index 00000000..bc6629a4 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiController.kt @@ -0,0 +1,69 @@ +package icu.samnyan.aqua.sega.ongeki + +import ext.* +import icu.samnyan.aqua.net.db.AquaUserServices +import icu.samnyan.aqua.net.utils.simpleDescribe +import icu.samnyan.aqua.sega.allnet.TokenChecker +import icu.samnyan.aqua.sega.general.GameMusicPopularity +import icu.samnyan.aqua.sega.general.MeowApi +import icu.samnyan.aqua.sega.general.RequestContext +import icu.samnyan.aqua.sega.util.jackson.BasicMapper +import icu.samnyan.aqua.spring.Metrics +import jakarta.servlet.http.HttpServletRequest +import org.springframework.web.bind.annotation.RestController +import kotlin.collections.set + +@Suppress("unused") +@RestController +@API("/g/ongeki/{version}", "/g/ongeki") +class OngekiController( + val mapper: BasicMapper, + val db: OngekiUserRepos, + val gdb: OngekiGameRepos, + val us: AquaUserServices, + val pop: GameMusicPopularity, +): MeowApi({ _, resp -> if (resp is String) resp else mapper.write(resp) }) { + + val log = logger() + + val noopEndpoint = setOf("ExtendLockTimeApi", "GameLoginApi", "GameLogoutApi", "RegisterPromotionCardApi", + "UpsertClientBookkeepingApi", "UpsertClientDevelopApi", "UpsertClientErrorApi", "UpsertClientSettingApi", + "UpsertClientTestmodeApi", "UpsertUserGplogApi", "Ping") + + init { ongekiInit() } + val handlers = initH + + @API("/{api}") + fun handle(@PV api: Str, @RB data: MutableMap, @PV version: Str?, req: HttpServletRequest): Any { + val ctx = RequestContext(req, data) + version?.let { data["version"] = it } + + val token = TokenChecker.tokenShort() + log.info("$token : $api < ${data.toJson()}") + + val noop = """{"returnCode":1,"apiName":"${api.substringBefore("Api").firstCharLower()}"}""" + if (api !in noopEndpoint && !handlers.containsKey(api)) { + log.warn("$token : $api > not found") + return noop + } + + // Only record the counter metrics if the API is known. + Metrics.counter("aquadx_ongeki_api_call", "api" to api).increment() + if (api in noopEndpoint) { + log.info("$token : $api > no-op") + return noop + } + + return try { + Metrics.timer("aquadx_ongeki_api_latency", "api" to api).recordCallable { + serialize(api, handlers[api]!!(ctx) ?: noop).also { + if (api !in setOf("GetUserItemApi", "GetGameEventApi")) + log.info("$token : $api > ${it.truncate(500)}") + } + } + } catch (e: Exception) { + Metrics.counter("aquadx_ongeki_api_error", "api" to api, "error" to e.simpleDescribe()).increment() + throw e + } + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt new file mode 100644 index 00000000..28a41842 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiRepos.kt @@ -0,0 +1,212 @@ +@file:Suppress("FunctionName") +package icu.samnyan.aqua.sega.ongeki + +import icu.samnyan.aqua.net.games.GenericPlaylogRepo +import icu.samnyan.aqua.net.games.GenericUserDataRepo +import icu.samnyan.aqua.net.games.GenericUserMusicRepo +import icu.samnyan.aqua.net.games.IUserRepo +import icu.samnyan.aqua.sega.ongeki.model.* +import icu.samnyan.aqua.sega.ongeki.model.UserEventMap +import icu.samnyan.aqua.sega.ongeki.model.UserSkin +import org.springframework.data.domain.Page +import org.springframework.data.domain.Pageable +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.NoRepositoryBean +import org.springframework.stereotype.Component +import java.util.* + + +@NoRepositoryBean +interface OngekiUserLinked : IUserRepo { + fun findByUser_Card_ExtId(extId: Long): List + fun findSingleByUser_Card_ExtId(extId: Long): Optional + fun findByUser_Card_ExtId(extId: Long, pageable: Pageable): Page +} + +interface OgkUserDataRepo : GenericUserDataRepo { + fun findByCard_ExtIdIn(userIds: Collection): List +} + +interface OgkUserActivityRepo : OngekiUserLinked { + fun findByUserAndKindAndActivityId(userData: UserData, kind: Int, activityId: Int): Optional + fun findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId: Long, kind: Int): List +} + +interface OgkUserBossRepo : OngekiUserLinked { + fun findByUserAndMusicId(user: UserData, musicId: Int): Optional +} + +interface OgkUserCardRepo : OngekiUserLinked { + fun findByUserAndCardId(userData: UserData, cardId: Int): Optional +} + +interface OgkUserChapterRepo : OngekiUserLinked { + fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional +} + +interface OgkUserCharacterRepo : OngekiUserLinked { + fun findByUserAndCharacterId(userData: UserData, characterId: Int): Optional +} + +interface OgkUserDeckRepo : OngekiUserLinked { + fun findByUserAndDeckId(userData: UserData, deckId: Int): Optional +} + +interface OgkUserEventMusicRepo : OngekiUserLinked { + fun findByUserAndEventIdAndTypeAndMusicId( + userData: UserData, + eventId: Int, + type: Int, + musicId: Int + ): Optional +} + +interface OgkUserEventPointRepo : OngekiUserLinked { + fun findByUserAndEventId(userData: UserData, eventId: Int): Optional + + //@Query(value = "SELECT rank from (SELECT user_id , DENSE_RANK() OVER (ORDER BY point DESC) as rank from ongeki_user_event_point where event_id = :eventId) where user_id == :userId limit 1", nativeQuery = true) + @Query("SELECT COUNT(u)+1 FROM OngekiUserEventPoint u WHERE u.eventId = :eventId AND u.point > (SELECT u2.point FROM OngekiUserEventPoint u2 WHERE u2.user.id = :userId AND u2.eventId = :eventId)") + fun calculateRankByUserAndEventId(userId: Long, eventId: Int): Int +} + +interface OgkUserGeneralDataRepo : OngekiUserLinked { + fun findByUserAndPropertyKey(user: UserData, key: String): Optional + + fun findByUser_Card_ExtIdAndPropertyKey(userId: Long, key: String): Optional +} + +interface OgkUserItemRepo : OngekiUserLinked { + fun findByUserAndItemKindAndItemId(userData: UserData, itemKind: Int, itemId: Int): Optional + + fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int, page: Pageable): Page + fun findByUser_Card_ExtIdAndItemKind(userId: Long, kind: Int): List +} + +interface OgkUserKopRepo : OngekiUserLinked { + fun findByUserAndKopIdAndAreaId(userData: UserData, kopId: Int, areaId: Int): Optional +} + +interface OgkUserLoginBonusRepo : OngekiUserLinked { + fun findByUserAndBonusId(userData: UserData, bonusId: Int): Optional +} + +interface OgkUserMemoryChapterRepo : OngekiUserLinked { + fun findByUserAndChapterId(userData: UserData, chapterId: Int): Optional +} + +interface OgkUserMissionPointRepo : OngekiUserLinked { + fun findByUserAndEventId(userData: UserData, eventId: Int): Optional +} + +interface OgkUserMusicDetailRepo : OngekiUserLinked, GenericUserMusicRepo { + fun findByUserAndMusicIdAndLevel(userData: UserData, musicId: Int, level: Int): Optional +} + +interface OgkUserMusicItemRepo : OngekiUserLinked { + fun findByUserAndMusicId(userData: UserData, musicId: Int): Optional +} + +interface OgkUserOptionRepo : OngekiUserLinked + +interface OgkUserPlaylogRepo : OngekiUserLinked, GenericPlaylogRepo + +interface OgkUserRivalDataRepo : OngekiUserLinked + +interface OgkUserScenarioRepo : OngekiUserLinked { + fun findByUserAndScenarioId(user: UserData, scenarioId: Int): Optional +} + +interface OgkUserStoryRepo : OngekiUserLinked { + fun findByUserAndStoryId(userData: UserData, storyId: Int): Optional +} + +interface OgkUserTechCountRepo : OngekiUserLinked { + fun findByUserAndLevelId(user: UserData, levelId: Int): Optional +} + +interface OgkUserTechEventRepo : OngekiUserLinked { + fun findByUserAndEventId(userData: UserData, eventId: Int): Optional +} + +interface OgkUserTradeItemRepo : OngekiUserLinked { + fun findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual( + userId: Long, + startChapterId: Int, + endChapterId: Int + ): List + + fun findByUserAndChapterIdAndTradeItemId( + userData: UserData, + chapterId: Int, + tradeItemId: Int + ): Optional +} + +interface OgkUserTrainingRoomRepo : OngekiUserLinked { + fun findByUserAndRoomId(user: UserData, roomId: Int): Optional +} + +// Re:Fresh +interface OgkUserEventMapRepo : OngekiUserLinked +interface OgkUserSkinRepo : OngekiUserLinked + +interface OgkGameCardRepo : JpaRepository +interface OgkGameCharaRepo : JpaRepository +interface OgkGameEventRepo : JpaRepository +interface OgkGameMusicRepo : JpaRepository +interface OgkGamePointRepo : JpaRepository +interface OgkGamePresentRepo : JpaRepository +interface OgkGameRewardRepo : JpaRepository +interface OgkGameSkillRepo : JpaRepository + +@Component +class OngekiUserRepos( + val data: OgkUserDataRepo, + val activity: OgkUserActivityRepo, + val boss: OgkUserBossRepo, + val card: OgkUserCardRepo, + val chapter: OgkUserChapterRepo, + val character: OgkUserCharacterRepo, + val deck: OgkUserDeckRepo, + val eventMusic: OgkUserEventMusicRepo, + val eventPoint: OgkUserEventPointRepo, + val generalData: OgkUserGeneralDataRepo, + val item: OgkUserItemRepo, + val kop: OgkUserKopRepo, + val loginBonus: OgkUserLoginBonusRepo, + val memoryChapter: OgkUserMemoryChapterRepo, + val missionPoint: OgkUserMissionPointRepo, + val musicDetail: OgkUserMusicDetailRepo, + val musicItem: OgkUserMusicItemRepo, + val option: OgkUserOptionRepo, + val playlog: OgkUserPlaylogRepo, + val rivalData: OgkUserRivalDataRepo, + val scenario: OgkUserScenarioRepo, + val story: OgkUserStoryRepo, + val techCount: OgkUserTechCountRepo, + val techEvent: OgkUserTechEventRepo, + val tradeItem: OgkUserTradeItemRepo, + val trainingRoom: OgkUserTrainingRoomRepo, + val eventMap: OgkUserEventMapRepo, + val skin: OgkUserSkinRepo, +) + +@Component +class OngekiGameRepos( + val card: OgkGameCardRepo, + val chara: OgkGameCharaRepo, + val event: OgkGameEventRepo, + val music: OgkGameMusicRepo, + val point: OgkGamePointRepo, + val present: OgkGamePresentRepo, + val reward: OgkGameRewardRepo, + val skill: OgkGameSkillRepo, +) + +@Component +class OngekiRepos( + val u: OngekiUserRepos, + val g: OngekiGameRepos, +) + diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt new file mode 100644 index 00000000..ed38ad93 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUpsertAllApi.kt @@ -0,0 +1,191 @@ +package icu.samnyan.aqua.sega.ongeki + +import ext.invoke +import ext.mapApply +import ext.minus +import icu.samnyan.aqua.sega.ongeki.model.OngekiUpsertUserAll +import icu.samnyan.aqua.sega.ongeki.model.UserData +import icu.samnyan.aqua.sega.ongeki.model.UserGeneralData + + +fun OngekiController.initUpsertAll() { + fun saveGeneralData(items: List, u: UserData, key: String) { + db.generalData.save(UserGeneralData().apply { + id = db.generalData.findByUserAndPropertyKey(u, key)()?.id ?: 0 + user = u + propertyKey = key + propertyValue = items.joinToString(",") + }) + } + + "UpsertUserAll" api@ { + val all: OngekiUpsertUserAll = mapper.convert(data["upsertUserAll"]!!) + + // User data + val oldUser = db.data.findByCard_ExtId(uid)() + val u: UserData = all.userData?.get(0)?.apply { + id = oldUser?.id ?: 0 + card = oldUser?.card ?: us.cardRepo.findByExtId(uid)() ?: (404 - "Card not found") + + // Set eventWatchedDate with lastPlayDate, because client doesn't update it + eventWatchedDate = oldUser?.lastPlayDate ?: "" + cmEventWatchedDate = oldUser?.lastPlayDate ?: "" + db.data.save(this) + } ?: oldUser ?: return@api null + + all.run { + // Set users + listOfNotNull( + userOption, userPlaylogList, userActivityList, userMusicDetailList, userCharacterList, userCardList, + userDeckList, userTrainingRoomList, userStoryList, userChapterList, userMemoryChapterList, userItemList, + userMusicItemList, userLoginBonusList, userEventPointList, userMissionPointList, userBossList, + userTechCountList, userScenarioList, userTradeItemList, userEventMusicList, userTechEventList, userKopList, + userEventMap?.let { listOf(it) } + ).flatten().forEach { it.user = u } + + // UserOption + userOption?.get(0)?.let { + db.option.save(it.apply { + id = db.option.findSingleByUser(u)()?.id ?: 0 }) } + + // UserEventMap + userEventMap?.let { + db.eventMap.save(it.apply { + id = db.eventMap.findSingleByUser(u)()?.id ?: 0 }) } + + // UserPlaylogList + userPlaylogList?.let { db.playlog.saveAll(it) } + + // UserSessionlogList, UserJewelboostlogLost doesn't need to be saved for a private server + + // Ratings + mapOf( + "recent_rating_list" to userRecentRatingList, // This thing still need to save to solve the rating drop + "battle_point_base" to userBpBaseList, // For calculating Battle point + "rating_base_best" to userRatingBaseBestList, // This is the best rating of all charts. Best 30 + 10 after that. + "rating_base_next" to userRatingBaseNextList, + "rating_base_new_best" to userRatingBaseBestNewList, // This is the best rating of new charts. Best 15 + 10 after that. + "rating_base_new_next" to userRatingBaseNextNewList, + "rating_base_hot_best" to userRatingBaseHotList, // This is the recent best + "rating_base_hot_next" to userRatingBaseHotNextList, + + // Re:Fresh + "new_rating_base_best" to userNewRatingBaseBestList, + "new_rating_base_next_best" to userNewRatingBaseNextBestList, + "new_rating_base_new_best" to userNewRatingBaseBestNewList, + "new_rating_base_new_next_best" to userNewRatingBaseNextBestNewList, + "new_rating_base_pscore" to userNewRatingBasePScoreList, + "new_rating_base_next_pscore" to userNewRatingBaseNextPScoreList + ).forEach { (k, v) -> v?.let { saveGeneralData(it, u, k) } } + + // UserActivityList + userActivityList?.let { list -> + db.activity.saveAll(list.distinctBy { it.activityId to it.kind }.mapApply { + id = db.activity.findByUserAndKindAndActivityId(u, kind, activityId)()?.id ?: 0 }) } + + // UserMusicDetailList + userMusicDetailList?.let { list -> + db.musicDetail.saveAll(list.distinctBy { it.musicId to it.level }.mapApply { + id = db.musicDetail.findByUserAndMusicIdAndLevel(u, musicId, level)()?.id ?: 0 }) } + + // UserCharacterList + userCharacterList?.let { list -> + db.character.saveAll(list.distinctBy { it.characterId }.mapApply { + id = db.character.findByUserAndCharacterId(u, characterId)()?.id ?: 0 }) } + + // UserCardList + userCardList?.let { list -> + db.card.saveAll(list.distinctBy { it.cardId }.mapApply { + id = db.card.findByUserAndCardId(u, cardId)()?.id ?: 0 }) } + + // UserDeckList + userDeckList?.let { list -> + db.deck.saveAll(list.distinctBy { it.deckId }.mapApply { + id = db.deck.findByUserAndDeckId(u, deckId)()?.id ?: 0 }) } + + // UserTrainingRoomList + userTrainingRoomList?.let { list -> + db.trainingRoom.saveAll(list.distinctBy { it.roomId }.mapApply { + id = db.trainingRoom.findByUserAndRoomId(u, roomId)()?.id ?: 0 }) } + + // UserStoryList + userStoryList?.let { list -> + db.story.saveAll(list.distinctBy { it.storyId }.mapApply { + id = db.story.findByUserAndStoryId(u, storyId)()?.id ?: 0 }) } + + // UserChapterList + userChapterList?.let { list -> + db.chapter.saveAll(list.distinctBy { it.chapterId }.mapApply { + id = db.chapter.findByUserAndChapterId(u, chapterId)()?.id ?: 0 }) } + + // UserMemoryChapterList + userMemoryChapterList?.let { list -> + db.memoryChapter.saveAll(list.distinctBy { it.chapterId }.mapApply { + id = db.memoryChapter.findByUserAndChapterId(u, chapterId)()?.id ?: 0 }) } + + // UserItemList + userItemList?.let { list -> + db.item.saveAll(list.distinctBy { it.itemKind to it.itemId }.mapApply { + id = db.item.findByUserAndItemKindAndItemId(u, itemKind, itemId)()?.id ?: 0 }) } + + // UserMusicItemList + userMusicItemList?.let { list -> + db.musicItem.saveAll(list.distinctBy { it.musicId }.mapApply { + id = db.musicItem.findByUserAndMusicId(u, musicId)()?.id ?: 0 }) } + + // UserLoginBonusList + userLoginBonusList?.let { list -> + db.loginBonus.saveAll(list.distinctBy { it.bonusId }.mapApply { + id = db.loginBonus.findByUserAndBonusId(u, bonusId)()?.id ?: 0 }) } + + // UserEventPointList + userEventPointList?.let { list -> + db.eventPoint.saveAll(list.distinctBy { it.eventId }.mapApply { + id = db.eventPoint.findByUserAndEventId(u, eventId)()?.id ?: 0 }) } + + // UserMissionPointList + userMissionPointList?.let { list -> + db.missionPoint.saveAll(list.distinctBy { it.eventId }.mapApply { + id = db.missionPoint.findByUserAndEventId(u, eventId)()?.id ?: 0 }) } + + // UserRatinglogList (For the highest rating of each version) + + // UserBossList + userBossList?.let { list -> + db.boss.saveAll(list.distinctBy { it.musicId }.mapApply { + id = db.boss.findByUserAndMusicId(u, musicId)()?.id ?: 0 }) } + + // UserTechCountList + userTechCountList?.let { list -> + db.techCount.saveAll(list.distinctBy { it.levelId }.mapApply { + id = db.techCount.findByUserAndLevelId(u, levelId)()?.id ?: 0 }) } + + // UserScenarioList + userScenarioList?.let { list -> + db.scenario.saveAll(list.distinctBy { it.scenarioId }.mapApply { + id = db.scenario.findByUserAndScenarioId(u, scenarioId)()?.id ?: 0 }) } + + // UserTradeItemList + userTradeItemList?.let { list -> + db.tradeItem.saveAll(list.distinctBy { it.chapterId to it.tradeItemId }.mapApply { + id = db.tradeItem.findByUserAndChapterIdAndTradeItemId(u, chapterId, tradeItemId)()?.id ?: 0 }) } + + // UserEventMusicList + userEventMusicList?.let { list -> + db.eventMusic.saveAll(list.distinctBy { it.eventId to it.type to it.musicId }.mapApply { + id = db.eventMusic.findByUserAndEventIdAndTypeAndMusicId(u, eventId, type, musicId)()?.id ?: 0 }) } + + // UserTechEventList + userTechEventList?.let { list -> + db.techEvent.saveAll(list.distinctBy { it.eventId }.mapApply { + id = db.techEvent.findByUserAndEventId(u, eventId)()?.id ?: 0 }) } + + // UserKopList + userKopList?.let { list -> + db.kop.saveAll(list.distinctBy { it.kopId to it.areaId }.mapApply { + id = db.kop.findByUserAndKopIdAndAreaId(u, kopId, areaId)()?.id ?: 0 }) } + } + + null + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt new file mode 100644 index 00000000..d7292d35 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/OngekiUserApis.kt @@ -0,0 +1,167 @@ +@file:Suppress("UNCHECKED_CAST") + +package icu.samnyan.aqua.sega.ongeki + +import ext.* +import icu.samnyan.aqua.sega.general.model.response.UserRecentRating +import icu.samnyan.aqua.sega.ongeki.model.OgkItemType +import icu.samnyan.aqua.sega.ongeki.model.UserItem +import org.springframework.data.domain.PageRequest +import org.springframework.data.domain.Sort +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter + + +fun OngekiController.initUser() { + "GetUserData" { mapOf("userId" to uid, "userData" to db.data.findByCard_ExtId(uid)()) } + + "GetUserOption" { mapOf("userId" to uid, "userOption" to db.option.findSingleByUser_Card_ExtId(uid)()) } + "GetUserEventMap" { mapOf("userId" to uid, "userEventMap" to db.eventMap.findSingleByUser_Card_ExtId(uid)()) } + + "GetUserTechEvent".unpaged { db.techEvent.findByUser_Card_ExtId(uid) } + "GetUserBoss".unpaged { db.boss.findByUser_Card_ExtId(uid) } + "GetUserCard".unpaged { db.card.findByUser_Card_ExtId(uid) } + "GetUserChapter".unpaged { db.chapter.findByUser_Card_ExtId(uid) } + "GetUserMemoryChapter".unpaged { db.memoryChapter.findByUser_Card_ExtId(uid) } + "GetUserCharacter".unpaged { db.character.findByUser_Card_ExtId(uid) } + "GetUserDeckByKey".unpaged("userDeckList") { db.deck.findByUser_Card_ExtId(uid) } + "GetUserEventMusic".unpaged { db.eventMusic.findByUser_Card_ExtId(uid) } + "GetUserEventPoint".unpaged { db.eventPoint.findByUser_Card_ExtId(uid) } + "GetUserKop".unpaged { db.kop.findByUser_Card_ExtId(uid) } + "GetUserLoginBonus".unpaged { db.loginBonus.findByUser_Card_ExtId(uid) } + "GetUserMissionPoint".unpaged { db.missionPoint.findByUser_Card_ExtId(uid) } + "GetUserMusicItem".unpaged { db.musicItem.findByUser_Card_ExtId(uid) } + "GetUserRival".unpaged { db.rivalData.findByUser_Card_ExtId(uid) } + "GetUserScenario".unpaged { db.scenario.findByUser_Card_ExtId(uid) } + "GetUserSkin".unpaged { db.skin.findByUser_Card_ExtId(uid) } + "GetUserStory".unpaged { db.story.findByUser_Card_ExtId(uid) } + "GetUserTechCount".unpaged { db.techCount.findByUser_Card_ExtId(uid) } + "GetUserTrainingRoomByKey".unpaged("userTrainingRoomList") { db.trainingRoom.findByUser_Card_ExtId(uid) } + + "GetUserBpBase".unpaged { empty } + "GetUserRatinglog".unpaged { empty } + "GetUserRegion".unpaged { empty } + + "GetUserTradeItem".unpaged { + val start = parsing { data["startChapterId"]!!.int } + val end = parsing { data["endChapterId"]!!.int } + + db.tradeItem.findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual(uid, start, end) + } + + val dtPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0") + + "GetUserTechEventRanking".unpaged { + val time = LocalDateTime.now().format(dtPattern) + + db.techEvent.findByUser_Card_ExtId(uid).map { mapOf( + "eventId" to it.eventId, + "date" to time, + "rank" to 1, + "totalTechScore" to it.totalTechScore, + "totalPlatinumScore" to it.totalPlatinumScore + ) } + } + + "GetUserEventRanking".unpaged { + val time = LocalDateTime.now().format(dtPattern) + + db.eventPoint.findByUser_Card_ExtId(uid).map { mapOf( + "eventId" to it.eventId, + "type" to 1, // Latest ranking + "date" to time, + "rank" to db.eventPoint.calculateRankByUserAndEventId(uid, it.eventId), + "point" to it.point + ) } + } + + "GetUserActivity".unpagedExtra { + val kind = parsing { data["kind"]!!.int } + db.activity.findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(uid, kind) + .take(if (kind == 1) 15 else 10) to mapOf("kind" to kind) + } + + "GetUserItem" { + val kind = (parsing { data["nextIndex"]!!.long } / 10000000000L).toInt() + var dat = db.item.findByUser_Card_ExtIdAndItemKind(uid, kind) + + // Check if user have infinite kaika + if (kind == OgkItemType.KaikaItem.ordinal) { + val u = db.data.findByCard_ExtId(uid)() + u?.card?.aquaUser?.gameOptions?.let { + if (it.ongekiInfiniteKaika) { + dat = listOf(UserItem().apply { + user = u + itemKind = OgkItemType.KaikaItem.ordinal + itemId = 1 + stock = 999 + }) + } + } + } + + mapOf("userId" to uid, "length" to dat.size, "nextIndex" to -1, "itemKind" to kind, "userItemList" to dat) + } + + "GetUserMusic" { + val dat = db.musicDetail.findByUser_Card_ExtId(uid).groupBy { it.musicId } + .mapValues { mapOf("length" to it.value.size, "userMusicDetailList" to it.value) } + .values.toList() + mapOf("userId" to uid, "length" to dat.size, "nextIndex" to -1, "userMusicList" to dat) + } + + "GetUserPreview" api@ { + val u = db.data.findByCard_ExtId(uid)() ?: return@api mapOf("userId" to uid, "lastPlayDate" to null) + val o = db.option.findSingleByUser(u)() + + mapOf( + "userId" to uid, "isLogin" to false, + + "userName" to u.userName, "reincarnationNum" to u.reincarnationNum, + "level" to u.level, "exp" to u.exp, "playerRating" to u.playerRating, "newPlayerRating" to u.newPlayerRating, + "lastGameId" to u.lastGameId, "lastRomVersion" to u.lastRomVersion, "lastDataVersion" to u.lastDataVersion, + "lastPlayDate" to u.lastPlayDate, "lastLoginDate" to u.lastPlayDate, + "nameplateId" to u.nameplateId, "trophyId" to u.trophyId, "cardId" to u.cardId, + + "dispPlayerLv" to (o?.dispPlayerLv ?: 1), + "dispRating" to (o?.dispRating ?: 1), + "dispBP" to (o?.dispBP ?: 1), + "headphone" to (o?.headphone ?: 0), + + "lastEmoneyBrand" to 4, + "lastEmoneyCredit" to 10000, + + "banStatus" to 0, + "isWarningConfirmed" to false, + ) + } + + "GetUserRecentRating".unpaged { + db.generalData.findByUser_Card_ExtIdAndPropertyKey(uid, "recent_rating_list")()?.let { recent -> + recent.propertyValue.split(',').dropLastWhile { it.isEmpty() }.map { + val (m, d, s) = it.split(':').map { it.int } + UserRecentRating(m, d, "1000000", s) + } + } ?: run { + db.playlog.findByUser_Card_ExtId(uid, PageRequest.of(0, 30, Sort.by(Sort.Direction.DESC, "id"))).content + .map { UserRecentRating(it.musicId, it.level, "1000000", it.techScore) } + } + } + + "GetUserRivalData" { + val idList = (data["userRivalList"] as Collection) + .map { it["rivalUserId"]!!.long } + + db.data.findByCard_ExtIdIn(idList) + .map { mapOf("rivalUserId" to it.card!!.extId, "rivalUserName" to it.userName) } + } + + "GetUserRivalMusic".unpagedExtra { + val rivalUserId = (data["rivalUserId"] as Number).toLong() + + val l = db.musicDetail.findByUser_Card_ExtId(rivalUserId).groupBy { it.musicId } + .map { mapOf("userRivalMusicDetailList" to it.value, "length" to it.value.size) } + + l to mapOf("rivalUserId" to rivalUserId) + } +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java deleted file mode 100644 index 2cc79878..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiController.java +++ /dev/null @@ -1,366 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.controller; - - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.handler.impl.*; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestController -@RequestMapping("/g/ongeki") -@AllArgsConstructor -public class OngekiController { - - private final GetGameEventHandler getGameEventHandler; - private final GetGameIdlistHandler getGameIdlistHandler; - private final GetGameMessageHandler getGameMessageHandler; - private final GetGamePointHandler getGamePointHandler; - private final GetGamePresentHandler getGamePresentHandler; - private final GetGameTechMusicHandler getGameTechMusicHandler; - private final GetGameRankingHandler getGameRankingHandler; - private final GetGameRewardHandler getGameRewardHandler; - private final GetGameSettingHandler getGameSettingHandler; - private final GetUserActivityHandler getUserActivityHandler; - private final GetUserBossHandler getUserBossHandler; - private final GetUserBpBaseHandler getUserBpBaseHandler; - private final GetUserCardHandler getUserCardHandler; - private final GetUserChapterHandler getUserChapterHandler; - private final GetUserMemoryChapterHandler getUserMemoryChapterHandler; - private final GetUserCharacterHandler getUserCharacterHandler; - private final GetUserDataHandler getUserDataHandler; - private final GetUserDeckByKeyHandler getUserDeckByKeyHandler; - private final GetUserEventMapHandler getUserEventMapHandler; - private final GetUserEventPointHandler getUserEventPointHandler; - private final GetUserEventRankingHandler getUserEventRankingHandler; - private final GetUserEventMusicHandler getUserEventMusicHandler; - private final GetUserItemHandler getUserItemHandler; - private final GetUserLoginBonusHandler getUserLoginBonusHandler; - private final GetUserMissionPointHandler getUserMissionPointHandler; - private final GetUserMusicHandler getUserMusicHandler; - private final GetUserMusicItemHandler getUserMusicItemHandler; - private final GetUserOptionHandler getUserOptionHandler; - private final GetUserPreviewHandler getUserPreviewHandler; - private final GetUserRatinglogListHandler getUserRatinglogListHandler; - private final GetUserRecentRatingHandler getUserRecentRatingHandler; - private final GetUserRegionHandler getUserRegionHandler; - private final GetUserRivalHandler getUserRivalHandler; - private final GetUserRivalMusicHandler getUserRivalMusicHandler; - private final GetUserRivalDataHandler getUserRivalDataHandler; - private final GetUserScenarioHandler getUserScenarioHandler; - private final GetUserSkinHandler getUserSkinHandler; - private final GetUserStoryHandler getUserStoryHandler; - private final GetUserTechCountHandler getUserTechCountHandler; - private final GetUserTechEventHandler getUserTechEventHandler; - private final GetUserTechEventRankingHandler getUserTechEventRankingHandler; - private final GetUserTradeItemHandler getUserTradeItemHandler; - private final GetUserTrainingRoomByKeyHandler getUserTrainingRoomByKeyHandler; - private final GetUserKopHandler getUserKopHandler; - private final UpsertUserAllHandler upsertUserAllHandler; - private final GetClientBookkeepingHandler getClientBookkeepingHandler; - private final GetClientTestmodeHandler getClientTestmodeHandler; - private final GetGameMusicReleaseStateHandler getGameMusicReleaseStateHandler; - - @PostMapping("ExtendLockTimeApi") - public String extendLockTime(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"extendLockTime\"}"; - } - - @PostMapping("GameLoginApi") - public String gameLogin(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"gameLogin\"}"; - } - - @PostMapping("GameLogoutApi") - public String gameLogout(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\": \"gameLogout\"}"; - } - - @PostMapping("GetGameEventApi") - public String getGameEvent(@ModelAttribute Map request) throws JsonProcessingException { - return getGameEventHandler.handle(request); - } - - @PostMapping("GetGameIdlistApi") - public String getGameIdList(@ModelAttribute Map request) throws JsonProcessingException { - return getGameIdlistHandler.handle(request); - } - - @PostMapping("GetGameMessageApi") - public String getGameMessage(@ModelAttribute Map request) throws JsonProcessingException { - return getGameMessageHandler.handle(request); - } - - @PostMapping("GetGamePointApi") - public String getGamePoint(@ModelAttribute Map request) throws JsonProcessingException { - return getGamePointHandler.handle(request); - } - - @PostMapping("GetGamePresentApi") - public String getGamePresent(@ModelAttribute Map request) throws JsonProcessingException { - return getGamePresentHandler.handle(request); - } - - @PostMapping("GetGameTechMusicApi") - public String getGameTechMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getGameTechMusicHandler.handle(request); - } - - @PostMapping("GetGameMusicReleaseStateApi") - public String GetGameMusicReleaseState(@ModelAttribute Map request) throws JsonProcessingException { - return getGameMusicReleaseStateHandler.handle(request); - } - - @PostMapping("GetUserTechEventApi") - public String getUserTechEvent(@ModelAttribute Map request) throws JsonProcessingException { - return getUserTechEventHandler.handle(request); - } - - @PostMapping("GetUserTechEventRankingApi") - public String getUserTechEventRanking(@ModelAttribute Map request) throws JsonProcessingException { - return getUserTechEventRankingHandler.handle(request); - } - - @PostMapping("GetGameRankingApi") - public String getGameRanking(@ModelAttribute Map request) throws JsonProcessingException { - return getGameRankingHandler.handle(request); - } - - @PostMapping("GetGameRewardApi") - public String getGameReward(@ModelAttribute Map request) throws JsonProcessingException { - return getGameRewardHandler.handle(request); - } - - @PostMapping("GetGameSettingApi") - public String getGameSetting(@ModelAttribute Map request) throws JsonProcessingException { - return getGameSettingHandler.handle(request); - } - - @PostMapping("GetUserActivityApi") - public String getUserActivity(@ModelAttribute Map request) throws JsonProcessingException { - return getUserActivityHandler.handle(request); - } - - @PostMapping("GetUserBossApi") - public String getUserBoss(@ModelAttribute Map request) throws JsonProcessingException { - return getUserBossHandler.handle(request); - } - - @PostMapping("GetUserBpBaseApi") - public String getUserBpBase(@ModelAttribute Map request) throws JsonProcessingException { - return getUserBpBaseHandler.handle(request); - } - - @PostMapping("GetUserCardApi") - public String getUserCard(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCardHandler.handle(request); - } - - @PostMapping("GetUserChapterApi") - public String getUserChapter(@ModelAttribute Map request) throws JsonProcessingException { - return getUserChapterHandler.handle(request); - } - - @PostMapping("GetUserMemoryChapterApi") - public String getUserMemoryChapter(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMemoryChapterHandler.handle(request); - } - - @PostMapping("GetUserCharacterApi") - public String getUserCharacter(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCharacterHandler.handle(request); - } - - @PostMapping("GetUserDataApi") - public String getUserData(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDataHandler.handle(request); - } - - @PostMapping("GetUserDeckByKeyApi") - public String getUserDeckByKey(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDeckByKeyHandler.handle(request); - } - - @PostMapping("GetUserEventMapApi") - public String getUserEventMap(@ModelAttribute Map request) throws JsonProcessingException { - return getUserEventMapHandler.handle(request); - } - - @PostMapping("GetUserEventPointApi") - public String getUserEventPoint(@ModelAttribute Map request) throws JsonProcessingException { - return getUserEventPointHandler.handle(request); - } - - @PostMapping("GetUserEventMusicApi") - public String getUserEventMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserEventMusicHandler.handle(request); - } - - @PostMapping("GetUserTradeItemApi") - public String getUserTradeItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserTradeItemHandler.handle(request); - } - - @PostMapping("GetUserEventRankingApi") - public String getUserEventRanking(@ModelAttribute Map request) throws JsonProcessingException { - return getUserEventRankingHandler.handle(request); - } - - @PostMapping("GetUserItemApi") - public String getUserItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserItemHandler.handle(request); - } - - @PostMapping("GetUserLoginBonusApi") - public String getUserLoginBonus(@ModelAttribute Map request) throws JsonProcessingException { - return getUserLoginBonusHandler.handle(request); - } - - @PostMapping("GetUserMissionPointApi") - public String getUserMissionPoint(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMissionPointHandler.handle(request); - } - - @PostMapping("GetUserMusicApi") - public String getUserMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMusicHandler.handle(request); - } - - @PostMapping("GetUserMusicItemApi") - public String getUserMusicItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMusicItemHandler.handle(request); - } - - @PostMapping("GetUserOptionApi") - public String getUserOption(@ModelAttribute Map request) throws JsonProcessingException { - return getUserOptionHandler.handle(request); - } - - @PostMapping("GetUserPreviewApi") - public String getUserPreview(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPreviewHandler.handle(request); - } - - @PostMapping("GetUserRatinglogApi") - public String getUserRatinglog(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRatinglogListHandler.handle(request); - } - - @PostMapping("GetUserRecentRatingApi") - public String getUserRecentRating(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRecentRatingHandler.handle(request); - } - - @PostMapping("GetUserRegionApi") - public String getUserRegion(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRegionHandler.handle(request); - } - - @PostMapping("GetUserRivalApi") - public String getUserRival(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRivalHandler.handle(request); - } - - @PostMapping("GetUserRivalDataApi") - public String getUserRivalData(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRivalDataHandler.handle(request); - } - - @PostMapping("GetUserRivalMusicApi") - public String getUserRivalMusic(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRivalMusicHandler.handle(request); - } - - @PostMapping("GetUserScenarioApi") - public String getUserScenario(@ModelAttribute Map request) throws JsonProcessingException { - return getUserScenarioHandler.handle(request); - } - - @PostMapping("GetUserSkinApi") - public String getUserSkin(@ModelAttribute Map request) throws JsonProcessingException { - return getUserSkinHandler.handle(request); - } - - @PostMapping("GetUserStoryApi") - public String getUserStory(@ModelAttribute Map request) throws JsonProcessingException { - return getUserStoryHandler.handle(request); - } - - @PostMapping("GetUserTechCountApi") - public String getUserTechCount(@ModelAttribute Map request) throws JsonProcessingException { - return getUserTechCountHandler.handle(request); - } - - @PostMapping("GetUserTrainingRoomByKeyApi") - public String getUserTrainingRoomByKey(@ModelAttribute Map request) throws JsonProcessingException { - return getUserTrainingRoomByKeyHandler.handle(request); - } - - @PostMapping("GetUserKopApi") - public String getUserKop(@ModelAttribute Map request) throws JsonProcessingException { - return getUserKopHandler.handle(request); - } - - @PostMapping("GetClientBookkeepingApi") - public String getClientBookkeeping(@ModelAttribute Map request) throws JsonProcessingException { - return getClientBookkeepingHandler.handle(request); - } - - @PostMapping("GetClientTestmodeApi") - public String getClientTestmode(@ModelAttribute Map request) throws JsonProcessingException { - return getClientTestmodeHandler.handle(request); - } - - @PostMapping("RegisterPromotionCardApi") - public String registerPromotionCard(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"registerPromotionCard\"}"; - } - - @PostMapping("UpsertClientBookkeepingApi") - public String upsertClientBookkeeping(@ModelAttribute Map request) { - return "{\"returnCode\":1},\"apiName\":\"upsertClientBookkeeping\""; - } - - @PostMapping("UpsertClientDevelopApi") - public String upsertClientDevelop(@ModelAttribute Map request) { - return "{\"returnCode\":1},\"apiName\":\"upsertClientDevelop\""; - } - - @PostMapping("UpsertClientErrorApi") - public String upsertClientError(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"upsertClientError\"}"; - } - - @PostMapping("UpsertClientSettingApi") - public String upsertClientSetting(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"upsertClientSetting\"}"; - } - - @PostMapping("UpsertClientTestmodeApi") - public String upsertClientTestmode(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"upsertClientTestmode\"}"; - } - - @PostMapping("UpsertUserGplogApi") - public String upsertUserGplog(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"upsertUserGplog\"}"; - } - - @PostMapping("UpsertUserAllApi") - public String upsertUserAll(@ModelAttribute Map request) throws JsonProcessingException { - return upsertUserAllHandler.handle(request); - } - - @PostMapping("Ping") - String ping(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiControllerAdvice.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiControllerAdvice.java deleted file mode 100644 index f1b6e603..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/controller/OngekiControllerAdvice.java +++ /dev/null @@ -1,39 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.controller; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import jakarta.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestControllerAdvice(basePackages = "icu.samnyan.aqua.sega.ongeki") -public class OngekiControllerAdvice { - - private static final Logger logger = LoggerFactory.getLogger(OngekiControllerAdvice.class); - - - /** - * Get the map object from json string - * - * @param request HttpServletRequest - */ - @ModelAttribute - public Map preHandle(HttpServletRequest request) throws IOException { - byte[] src = request.getInputStream().readAllBytes(); - String outputString = new String(src, StandardCharsets.UTF_8).trim(); - logger.info("Request " + request.getRequestURI() + ": " + outputString); - ObjectMapper mapper = new ObjectMapper(); - - return mapper.readValue(outputString, new TypeReference<>() { - }); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCardRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCardRepository.java deleted file mode 100644 index ac8ed4f2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCardRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameCard; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGameCardRepository") -public interface GameCardRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCharaRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCharaRepository.java deleted file mode 100644 index 8cd8f2b2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameCharaRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameChara; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGameCharaRepository") -public interface GameCharaRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameEventRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameEventRepository.java deleted file mode 100644 index 52428ac6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameEventRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameEvent; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGameEventRepository") -public interface GameEventRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameMusicRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameMusicRepository.java deleted file mode 100644 index 7c7f236e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameMusicRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameMusic; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGameMusicRepository") -public interface GameMusicRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePointRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePointRepository.java deleted file mode 100644 index 07374990..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePointRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePoint; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGamePointRepository") -public interface GamePointRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePresentRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePresentRepository.java deleted file mode 100644 index 6f41f8fe..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GamePresentRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePresent; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGamePresentRepository") -public interface GamePresentRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameRewardRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameRewardRepository.java deleted file mode 100644 index dc899c30..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameRewardRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameReward; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGameRewardRepository") -public interface GameRewardRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameSkillRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameSkillRepository.java deleted file mode 100644 index 0b4be660..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/gamedata/GameSkillRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameSkill; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiGameSkillRepository") -public interface GameSkillRepository extends JpaRepository { -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java deleted file mode 100644 index 54a175c6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserActivityRepository.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserActivityRepository") -public interface UserActivityRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndKindAndActivityId(UserData userData, int kind, int activityId); - - List findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(long userId, int kind); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java deleted file mode 100644 index 075e55e3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserBoss; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserBossRepository") -public interface UserBossRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndMusicId(UserData user, int musicId); - - @Transactional - void deleteByUser(UserData user); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java deleted file mode 100644 index 00f84862..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCardRepository.java +++ /dev/null @@ -1,30 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserCard; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserCardRepository") -public interface UserCardRepository extends JpaRepository { - - Optional findByUserAndCardId(UserData userData, int cardId); - - Optional findByUser_Card_ExtIdAndCardId(long userId, int cardId); - - List findByUser_Card_ExtId(long userId); - - Page findByUser_Card_ExtId(long userId, Pageable page); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java deleted file mode 100644 index d402892f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserChapterRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserChapter; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserChapterRepository") -public interface UserChapterRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndChapterId(UserData userData, int chapterId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java deleted file mode 100644 index cff20bf1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserCharacterRepository.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserCharacterRepository") -public interface UserCharacterRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Page findByUser_Card_ExtId(long userId, Pageable page); - - Optional findByUserAndCharacterId(UserData userData, int characterId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.kt deleted file mode 100644 index bea50ec3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDataRepository.kt +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata - -import icu.samnyan.aqua.net.games.GenericUserDataRepo -import icu.samnyan.aqua.sega.general.model.Card -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData -import org.springframework.stereotype.Repository -import org.springframework.transaction.annotation.Transactional - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserDataRepository") -interface UserDataRepository : GenericUserDataRepo { - fun findByCard_ExtIdIn(userIds: Collection): List - - @Transactional - fun deleteByCard(card: Card) -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java deleted file mode 100644 index fb2f685c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserDeckRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserDeck; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserDeckRepository") -public interface UserDeckRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndDeckId(UserData userData, int deckId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventMapRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventMapRepository.java deleted file mode 100644 index e3a1e979..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventMapRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventMap; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserEventMapRepository") -public interface UserEventMapRepository extends JpaRepository { - - Optional findByUser(UserData userData); - - Optional findByUser_Card_ExtId(long userId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventMusicRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventMusicRepository.java deleted file mode 100644 index 7d2a8f14..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventMusicRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventMusic; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserEventMusicRepository") -public interface UserEventMusicRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndEventIdAndTypeAndMusicId(UserData userData, int eventId, int type, int musicId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java deleted file mode 100644 index 8ff702fe..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserEventPointRepository.java +++ /dev/null @@ -1,29 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventPoint; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserEventPointRepository") -public interface UserEventPointRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndEventId(UserData userData, int eventId); - - @Transactional - void deleteByUser(UserData user); - - //@Query(value = "SELECT rank from (SELECT user_id , DENSE_RANK() OVER (ORDER BY point DESC) as rank from ongeki_user_event_point where event_id = :eventId) where user_id == :userId limit 1", nativeQuery = true) - @Query("SELECT COUNT(u)+1 FROM OngekiUserEventPoint u WHERE u.eventId = :eventId AND u.point > (SELECT u2.point FROM OngekiUserEventPoint u2 WHERE u2.user.id = :userId AND u2.eventId = :eventId)") - int calculateRankByUserAndEventId(long userId, int eventId); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java deleted file mode 100644 index fde67e7a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserGeneralDataRepository.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserGeneralData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserGeneralDataRepository") -public interface UserGeneralDataRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndPropertyKey(UserData user, String key); - - Optional findByUser_Card_ExtIdAndPropertyKey(long userId, String key); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java deleted file mode 100644 index 7edf34eb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserItemRepository.java +++ /dev/null @@ -1,30 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserItem; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserItemRepository") -public interface UserItemRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Page findByUser_Card_ExtId(long userId, Pageable page); - - Optional findByUserAndItemKindAndItemId(UserData userData, int itemKind, int itemId); - - Page findByUser_Card_ExtIdAndItemKind(long userId, int kind, Pageable page); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserKopRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserKopRepository.java deleted file mode 100644 index 812b1e22..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserKopRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserKop; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserKopRepository") -public interface UserKopRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndKopIdAndAreaId(UserData userData, int kopId, int areaId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java deleted file mode 100644 index c5da0dd5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserLoginBonusRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserLoginBonus; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public interface UserLoginBonusRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndBonusId(UserData userData, int bonusId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMemoryChapterRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMemoryChapterRepository.java deleted file mode 100644 index a8624c45..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMemoryChapterRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMemoryChapter; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserMemoryChapterRepository") -public interface UserMemoryChapterRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndChapterId(UserData userData, int chapterId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java deleted file mode 100644 index 29fdb73f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMissionPointRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMissionPoint; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserMissionPointRepository") -public interface UserMissionPointRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndEventId(UserData userData, int eventId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java deleted file mode 100644 index 3216606b..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicDetailRepository.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.net.games.GenericUserMusicRepo; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicDetail; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserMusicDetailRepository") -public interface UserMusicDetailRepository extends JpaRepository, GenericUserMusicRepo { - - List findByUser_Card_ExtId(long userId); - - Page findByUser_Card_ExtId(long userId, Pageable page); - - List findByUser_Card_ExtIdAndMusicId(long userId, int id); - - Optional findByUserAndMusicIdAndLevel(UserData userData, int musicId, int level); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java deleted file mode 100644 index e199d921..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserMusicItemRepository.java +++ /dev/null @@ -1,28 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicItem; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserMusicItemRepository") -public interface UserMusicItemRepository extends JpaRepository { - - List findByUser_Card_ExtId(long aimeId); - - Page findByUser_Card_ExtId(long userId, Pageable page); - - Optional findByUserAndMusicId(UserData userData, int musicId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java deleted file mode 100644 index 370e2c9c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserOptionRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserOption; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserOptionRepository") -public interface UserOptionRepository extends JpaRepository { - - Optional findByUser(UserData userData); - - Optional findByUser_Card_ExtId(long userId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.kt deleted file mode 100644 index f3579a99..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserPlaylogRepository.kt +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata - -import icu.samnyan.aqua.net.games.GenericPlaylogRepo -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserPlaylog -import org.springframework.data.domain.Page -import org.springframework.data.domain.Pageable -import org.springframework.stereotype.Repository -import org.springframework.transaction.annotation.Transactional - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserPlaylogRepository") -interface UserPlaylogRepository : GenericPlaylogRepo { - fun findByUser_Card_ExtId(userId: Long): List - - fun findByUser_Card_ExtId(userId: Long, page: Pageable): Page - - fun findByUser_Card_ExtIdAndMusicIdAndLevel(userId: Long, musicId: Int, level: Int): List - - @Transactional - fun deleteByUser(user: UserData) -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserRivalDataRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserRivalDataRepository.java deleted file mode 100644 index 91b4e0e8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserRivalDataRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserRival; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * @author dp (privateamusement@protonmail.com) - */ -@Repository("OngekiUserRivalDataRepository") -public interface UserRivalDataRepository extends JpaRepository { - List findByUser_Card_ExtId(long userId); - - @Transactional - void removeByUser_Card_ExtIdAndRivalUserExtId(long userId,long rivalUserId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java deleted file mode 100644 index c9f3afc0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserScenario; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserScenarioRepository") -public interface UserScenarioRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndScenarioId(UserData user, int scenarioId); - - @Transactional - void deleteByUser(UserData user); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java deleted file mode 100644 index fd1e1c73..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserSkin; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserSkinRepository") -public interface UserSkinRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java deleted file mode 100644 index 9d57b5f6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserStoryRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserStory; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserStoryRepository") -public interface UserStoryRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndStoryId(UserData userData, int storyId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java deleted file mode 100644 index 7a620fac..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechCount; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserTechCountRepository") -public interface UserTechCountRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndLevelId(UserData user, int levelId); - - @Transactional - void deleteByUser(UserData user); - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechEventRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechEventRepository.java deleted file mode 100644 index e23bf221..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechEventRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechEvent; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserTechEventRepository") -public interface UserTechEventRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - Optional findByUserAndEventId(UserData userData, int eventId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTradeItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTradeItemRepository.java deleted file mode 100644 index 9d0c28e8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTradeItemRepository.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTradeItem; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserTradeItemRepository") -public interface UserTradeItemRepository extends JpaRepository { - - List findByUser_Card_ExtId(long userId); - - List findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual(long userId, int startChapterId, int endChapterId); - - Optional findByUserAndChapterIdAndTradeItemId(UserData userData, int chapterId, int tradeItemId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java deleted file mode 100644 index e4e9ce46..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTrainingRoomRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.dao.userdata; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTrainingRoom; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Repository("OngekiUserTrainingRoomRepository") -public interface UserTrainingRoomRepository extends JpaRepository { - - Optional findByUserAndRoomId(UserData user, int roomId); - - List findByUser_Card_ExtId(long userId); - - @Transactional - void deleteByUser(UserData user); -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetClientBookkeepingHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetClientBookkeepingHandler.java deleted file mode 100644 index 798ee191..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetClientBookkeepingHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserKopRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetClientBookkeepingHandler") -public class GetClientBookkeepingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetClientBookkeepingHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetClientBookkeepingHandler(BasicMapper mapper, UserKopRepository userKopRepository) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long placeId = ((Number) request.get("placeId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("placeId", placeId); - resultMap.put("length", 0); - resultMap.put("clientBookkeepingList", List.of()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetClientTestmodeHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetClientTestmodeHandler.java deleted file mode 100644 index b4d8b7eb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetClientTestmodeHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserKopRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetClientTestmodeHandler") -public class GetClientTestmodeHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetClientTestmodeHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetClientTestmodeHandler(BasicMapper mapper, UserKopRepository userKopRepository) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long placeId = ((Number) request.get("placeId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("placeId", placeId); - resultMap.put("length", 0); - resultMap.put("clientTestmodeList", List.of()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameEventHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameEventHandler.java deleted file mode 100644 index f79d4877..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameEventHandler.java +++ /dev/null @@ -1,59 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GameEventRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameEvent; -import icu.samnyan.aqua.sega.ongeki.model.response.data.GameEventItem; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameEventHandler") -public class GetGameEventHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameEventHandler.class); - - private final BasicMapper mapper; - - private final GameEventRepository gameEventRepository; - - @Autowired - public GetGameEventHandler(BasicMapper mapper, GameEventRepository gameEventRepository) { - this.mapper = mapper; - this.gameEventRepository = gameEventRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - Integer type = (Integer) request.get("type"); - - List eventIdList = gameEventRepository.findAll(); - List eventList = new ArrayList<>(); - eventIdList.forEach(x -> eventList.add(new GameEventItem( - x.getId(), - type, - "2005-01-01 00:00:00.0", - "2099-01-01 05:00:00.0" - ))); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", eventList.size()); - resultMap.put("gameEventList", eventList); - - String json = mapper.write(resultMap); - logger.info("Response: {} events", eventList.size()); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameIdlistHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameIdlistHandler.java deleted file mode 100644 index d109dace..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameIdlistHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.GameIdListItem; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameIdlistHandler") -public class GetGameIdlistHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameIdlistHandler.class); - - private final BasicMapper mapper; - - private final PropertyEntryRepository propertyEntryRepository; - - @Autowired - public GetGameIdlistHandler(BasicMapper mapper, PropertyEntryRepository propertyEntryRepository) { - this.mapper = mapper; - this.propertyEntryRepository = propertyEntryRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - Integer type = (Integer) request.get("type"); - - Optional propertyEntryOptional; - if(type == 1) { - propertyEntryOptional = propertyEntryRepository.findByPropertyKey("ongeki_music_ng_list"); - } else if(type == 2) { - propertyEntryOptional = propertyEntryRepository.findByPropertyKey("ongeki_music_recommend_list"); - } else { - propertyEntryOptional = Optional.empty(); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - - if (propertyEntryOptional.isPresent()) { - String value = propertyEntryOptional.get().getPropertyValue(); - - if(StringUtils.isNotBlank(value) && value.contains(",")) { - String[] ids = value.split(","); - List idList = new LinkedList<>(); - - for (String id : ids) { - try { - idList.add(new GameIdListItem(Integer.parseInt(id), type)); - } catch (NumberFormatException ignored) { - } - } - resultMap.put("length", idList.size()); - resultMap.put("gameIdlistList", idList); - - } else { - resultMap.put("length", 0); - resultMap.put("gameIdlistList", new List[]{}); - } - } else { - resultMap.put("length", 0); - resultMap.put("gameIdlistList", new List[]{}); - } - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameMessageHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameMessageHandler.java deleted file mode 100644 index 0b561ecd..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameMessageHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameMessageHHandler") -public class GetGameMessageHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameMessageHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetGameMessageHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - Integer type = (Integer) request.get("type"); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - resultMap.put("length", 0); - resultMap.put("gameMessageList", new List[]{}); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameMusicReleaseStateHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameMusicReleaseStateHandler.java deleted file mode 100644 index 9ff2da1d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameMusicReleaseStateHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserKopRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameMusicReleaseStateHandler") -public class GetGameMusicReleaseStateHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameMusicReleaseStateHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetGameMusicReleaseStateHandler(BasicMapper mapper, UserKopRepository userKopRepository) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - - // TODO: Find out what this does - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("techScore", 0); - resultMap.put("cardNum", 0); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGamePointHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGamePointHandler.java deleted file mode 100644 index 448dfa89..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGamePointHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GamePointRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePoint; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGamePointHandler") -public class GetGamePointHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGamePointHandler.class); - - private final BasicMapper mapper; - - private final GamePointRepository gamePointRepository; - - @Autowired - public GetGamePointHandler(BasicMapper mapper, GamePointRepository gamePointRepository) { - this.mapper = mapper; - this.gamePointRepository = gamePointRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - // This value is always false - Boolean isAllGP = (Boolean) request.get("isAllGP"); - - Map resultMap = new LinkedHashMap<>(); - - List gpList = gamePointRepository.findAll(); - - resultMap.put("length", gpList.size()); - resultMap.put("gamePointList", gpList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGamePresentHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGamePresentHandler.java deleted file mode 100644 index b31a079d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGamePresentHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GamePresentRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GamePresent; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGamePresentHandler") -public class GetGamePresentHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGamePresentHandler.class); - - private final BasicMapper mapper; - - private final GamePresentRepository gamePresentRepository; - - @Autowired - public GetGamePresentHandler(BasicMapper mapper, GamePresentRepository gamePresentRepository) { - this.mapper = mapper; - this.gamePresentRepository = gamePresentRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - Boolean isAllPresent = (Boolean) request.get("isAllPresent"); - - List presentList = gamePresentRepository.findAll(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("length", presentList.size()); - resultMap.put("gamePresentList", presentList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameRankingHandler.java deleted file mode 100644 index f30c1e84..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameRankingHandler.java +++ /dev/null @@ -1,84 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.GameRankingItem; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; - -/** - * Get game music hot ranking list. - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameRankingHandler") -public class GetGameRankingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameRankingHandler.class); - - private final BasicMapper mapper; - - private final PropertyEntryRepository propertyEntryRepository; - - @Autowired - public GetGameRankingHandler(BasicMapper mapper, PropertyEntryRepository propertyEntryRepository) { - this.mapper = mapper; - this.propertyEntryRepository = propertyEntryRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - // 1 is current, 2 is old - // See ADT_Ranking.cs - Integer type = (Integer) request.get("type"); - Optional propertyEntryOptional; - if(type == 1) { - propertyEntryOptional = propertyEntryRepository.findByPropertyKey("ongeki_music_ranking_current"); - } else if(type == 2) { - propertyEntryOptional = propertyEntryRepository.findByPropertyKey("ongeki_music_ranking_old"); - } else { - propertyEntryOptional = Optional.empty(); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("type", type); - - if (propertyEntryOptional.isPresent()) { - String value = propertyEntryOptional.get().getPropertyValue(); - - if(StringUtils.isNotBlank(value) && value.contains(",")) { - String[] ids = value.split(","); - List list = new LinkedList<>(); - - for (String id : ids) { - try { - list.add(new GameRankingItem(Integer.parseInt(id), 0, "")); - } catch (NumberFormatException ignored) { - } - // in ADT_Ranking.cs, the game read this array and expected it has 10 value here. - while (list.size() < 10) { - list.add(new GameRankingItem(0, 0, "")); - } - } - - resultMap.put("gameRankingList", list); - - } else { - resultMap.put("gameRankingList", new List[]{}); - } - } else { - resultMap.put("gameRankingList", new List[]{}); - } - - String json = mapper.write(resultMap); - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameRewardHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameRewardHandler.java deleted file mode 100644 index 1f0c62b7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameRewardHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.gamedata.GameRewardRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.GameReward; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameRewardHandler") -public class GetGameRewardHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameRewardHandler.class); - - private final BasicMapper mapper; - - private final GameRewardRepository gameRewardRepository; - - @Autowired - public GetGameRewardHandler(BasicMapper mapper, GameRewardRepository gameRewardRepository) { - this.mapper = mapper; - this.gameRewardRepository = gameRewardRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - Boolean isAllGP = (Boolean) request.get("isAllReward"); - - List rewardList = gameRewardRepository.findAll(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("length", rewardList.size()); - resultMap.put("gameRewardList", rewardList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameSettingHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameSettingHandler.java deleted file mode 100644 index 6e2a8e22..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameSettingHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; -import icu.samnyan.aqua.sega.general.model.PropertyEntry; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.GetGameSettingResp; -import icu.samnyan.aqua.sega.ongeki.model.response.data.GameSetting; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameSettingHandler") -public class GetGameSettingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameSettingHandler.class); - - private final BasicMapper mapper; - - private final PropertyEntryRepository propertyEntryRepository; - - private final String GAME_VERSION; - - @Autowired - public GetGameSettingHandler(BasicMapper mapper, PropertyEntryRepository propertyEntryRepository, @Value("${game.ongeki.version:1.05.00}") String GAME_VERSION) { - this.mapper = mapper; - this.propertyEntryRepository = propertyEntryRepository; - this.GAME_VERSION = GAME_VERSION; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - - PropertyEntry start = propertyEntryRepository.findByPropertyKey("reboot_start_time") - .orElseGet(() -> new PropertyEntry("reboot_start_time", "2020-01-01 23:59:00.0")); - PropertyEntry end = propertyEntryRepository.findByPropertyKey("reboot_end_time") - .orElseGet(() -> new PropertyEntry("reboot_end_time", "2020-01-01 23:59:00.0")); - - GameSetting gameSetting = new GameSetting( - GAME_VERSION, - GAME_VERSION, - false, - 10, - start.getPropertyValue(), - end.getPropertyValue(), - false, - 50, - 300, - 300, - 50, - 300, - 300); - - GetGameSettingResp resp = new GetGameSettingResp( - gameSetting, - false, - false - ); - - String json = mapper.write(resp); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameTechMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameTechMusicHandler.java deleted file mode 100644 index dad89e8c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetGameTechMusicHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetGameTechMusicHandler") -public class GetGameTechMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetGameTechMusicHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetGameTechMusicHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - List techMusicList = new ArrayList<>(); - - // This endpoint seems related to "techchallengeevent" in game data, TBD - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("length", 0); - resultMap.put("gameTechMusicList", techMusicList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserActivityHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserActivityHandler.java deleted file mode 100644 index f88da819..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserActivityHandler.java +++ /dev/null @@ -1,64 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserActivityRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserActivity; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserActivityHandler") -public class GetUserActivityHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserActivityHandler.class); - - private final BasicMapper mapper; - - private final UserActivityRepository userActivityRepository; - - @Autowired - public GetUserActivityHandler(BasicMapper mapper, UserActivityRepository userActivityRepository) { - this.mapper = mapper; - this.userActivityRepository = userActivityRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - Integer kind = (Integer) request.get("kind"); - - List activityList = userActivityRepository.findByUser_Card_ExtIdAndKindOrderBySortNumberDesc(userId,kind); - - // Game crash workaround. Ported from minime @ Felix, commit 7efa1d7fd8d6b31cfba5f1755bf7bf3b9bc7aeb0 - if (kind == 1) { - // PlayActivity: 15 - activityList = new ArrayList<>(activityList.subList(0, activityList.size() < 15 ? activityList.size() : 15)); - } else if (kind == 2) { - // Music: 10 - activityList = new ArrayList<>(activityList.subList(0, activityList.size() < 10 ? activityList.size() : 10)); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", activityList.size()); - resultMap.put("kind", kind); - resultMap.put("userActivityList", activityList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserBossHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserBossHandler.java deleted file mode 100644 index 7dbee91c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserBossHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserBossRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserBoss; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserBossHandler") -public class GetUserBossHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserBossHandler.class); - - private final BasicMapper mapper; - - private final UserBossRepository userBossRepository; - - @Autowired - public GetUserBossHandler(BasicMapper mapper, UserBossRepository userBossRepository) { - this.mapper = mapper; - this.userBossRepository = userBossRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userBossList = userBossRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userBossList.size()); - resultMap.put("userBossList", userBossList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserBpBaseHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserBpBaseHandler.java deleted file mode 100644 index 9706b104..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserBpBaseHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * The game doesn't use this request. It will calculate from the music detail request. - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserBpBaseHandler") -public class GetUserBpBaseHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserBpBaseHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetUserBpBaseHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userBpBaseList", new List[]{}); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserCardHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserCardHandler.java deleted file mode 100644 index f270b753..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserCardHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserCardRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserCard; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserCardHandler") -public class GetUserCardHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserCardHandler.class); - - private final BasicMapper mapper; - - private final UserCardRepository userCardRepository; - - @Autowired - public GetUserCardHandler(BasicMapper mapper, UserCardRepository userCardRepository) { - this.mapper = mapper; - this.userCardRepository = userCardRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - Integer maxCount = (Integer) request.get("maxCount"); - Integer nextIndex = (Integer) request.get("nextIndex"); - - int pageNum = nextIndex / maxCount; - - Page dbPage = userCardRepository.findByUser_Card_ExtId(userId, PageRequest.of(pageNum, maxCount)); - - long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", dbPage.getNumberOfElements()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("userCardList", dbPage.getContent()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserChapterHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserChapterHandler.java deleted file mode 100644 index 0c6729f1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserChapterHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserChapterRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserChapter; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserChapterHandler") -public class GetUserChapterHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserChapterHandler.class); - - private final BasicMapper mapper; - - private final UserChapterRepository userChapterRepository; - - @Autowired - public GetUserChapterHandler(BasicMapper mapper, UserChapterRepository userChapterRepository) { - this.mapper = mapper; - this.userChapterRepository = userChapterRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List chapterList = userChapterRepository.findByUser_Card_ExtId(userId); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", chapterList.size()); - resultMap.put("userChapterList", chapterList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserCharacterHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserCharacterHandler.java deleted file mode 100644 index 926645a0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserCharacterHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserCharacterRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserCharacter; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserCharacterHandler") -public class GetUserCharacterHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserCharacterHandler.class); - - private final BasicMapper mapper; - - private final UserCharacterRepository userCharacterRepository; - - @Autowired - public GetUserCharacterHandler(BasicMapper mapper, UserCharacterRepository userCharacterRepository) { - this.mapper = mapper; - this.userCharacterRepository = userCharacterRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - Integer maxCount = (Integer) request.get("maxCount"); - Integer nextIndex = (Integer) request.get("nextIndex"); - - int pageNum = nextIndex / maxCount; - - Page dbPage = userCharacterRepository.findByUser_Card_ExtId(userId, PageRequest.of(pageNum, maxCount)); - - long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", dbPage.getNumberOfElements()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("userCharacterList", dbPage.getContent()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserDataHandler.java deleted file mode 100644 index 759e9449..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserDataHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserDataHandler") -public class GetUserDataHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserDataHandler.class); - - private final BasicMapper mapper; - - private final UserDataRepository userDataRepository; - - @Autowired - public GetUserDataHandler(BasicMapper mapper, UserDataRepository userDataRepository) { - this.mapper = mapper; - this.userDataRepository = userDataRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Optional userDataOptional = userDataRepository.findByCard_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - if(userDataOptional.isPresent()) { - resultMap.put("userData", userDataOptional.get()); - } else { - resultMap.put("userData",null); - } - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserDeckByKeyHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserDeckByKeyHandler.java deleted file mode 100644 index ce70c182..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserDeckByKeyHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDeckRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserDeck; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserDeckByKeyHandler") -public class GetUserDeckByKeyHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserDeckByKeyHandler.class); - - private final BasicMapper mapper; - - private final UserDeckRepository userDeckRepository; - - @Autowired - public GetUserDeckByKeyHandler(BasicMapper mapper, UserDeckRepository userDeckRepository) { - this.mapper = mapper; - this.userDeckRepository = userDeckRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List deckList = userDeckRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", deckList.size()); - resultMap.put("userDeckList", deckList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventMapHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventMapHandler.java deleted file mode 100644 index a447ecd8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventMapHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserEventMapRepository; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserEventMapHandler") -public class GetUserEventMapHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserEventMapHandler.class); - - private final BasicMapper mapper; - - private final UserEventMapRepository userEventMapRepository; - - @Autowired - public GetUserEventMapHandler(BasicMapper mapper, UserEventMapRepository userEventMapRepository) { - this.mapper = mapper; - this.userEventMapRepository = userEventMapRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - var eventMapOptional = userEventMapRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - if(eventMapOptional.isPresent()) { - resultMap.put("userEventMap", eventMapOptional.get()); - } else { - resultMap.put("userEventMap", null); - } - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventMusicHandler.java deleted file mode 100644 index 075ca4eb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventMusicHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserEventMusicRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventMusic; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserEventMusicHandler") -public class GetUserEventMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserEventMusicHandler.class); - - private final BasicMapper mapper; - - private final UserEventMusicRepository userEventMusicRepository; - - @Autowired - public GetUserEventMusicHandler(BasicMapper mapper, UserEventMusicRepository userEventMusicRepository) { - this.mapper = mapper; - this.userEventMusicRepository = userEventMusicRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - List eventMusicList = userEventMusicRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", eventMusicList.size()); - resultMap.put("userEventMusicList", eventMusicList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventPointHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventPointHandler.java deleted file mode 100644 index f1b4c2fb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventPointHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserEventPointRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventPoint; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserEventPointHandler") -public class GetUserEventPointHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserEventPointHandler.class); - - private final BasicMapper mapper; - - private final UserEventPointRepository userEventPointRepository; - - @Autowired - public GetUserEventPointHandler(BasicMapper mapper, UserEventPointRepository userEventPointRepository) { - this.mapper = mapper; - this.userEventPointRepository = userEventPointRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List eventPointList = userEventPointRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", eventPointList.size()); - resultMap.put("userEventPointList", eventPointList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventRankingHandler.java deleted file mode 100644 index 48089233..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserEventRankingHandler.java +++ /dev/null @@ -1,65 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserEventPointRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.UserEventRankingItem; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserEventPoint; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserEventRankingHandler") -public class GetUserEventRankingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserEventRankingHandler.class); - - private final BasicMapper mapper; - - private final UserEventPointRepository userEventPointRepository; - - @Autowired - public GetUserEventRankingHandler(BasicMapper mapper, UserEventPointRepository userEventPointRepository) { - this.mapper = mapper; - this.userEventPointRepository = userEventPointRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0")); - - List eventPointList = userEventPointRepository.findByUser_Card_ExtId(userId); - List rankingItemList = new LinkedList<>(); - eventPointList.forEach(x -> rankingItemList.add(new UserEventRankingItem( - x.getEventId(), - 1, // Type 1 is latest ranking - time, - userEventPointRepository.calculateRankByUserAndEventId(x.getUser().getId(), x.getEventId()), - x.getPoint() - ))); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", rankingItemList.size()); - resultMap.put("userEventRankingList", rankingItemList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserItemHandler.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserItemHandler.kt deleted file mode 100644 index 14b67ee8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserItemHandler.kt +++ /dev/null @@ -1,57 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl - -import ext.* -import icu.samnyan.aqua.sega.general.BaseHandler -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserItemRepository -import icu.samnyan.aqua.sega.ongeki.model.common.ItemType -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserItem -import icu.samnyan.aqua.sega.util.jackson.BasicMapper -import org.springframework.data.domain.PageRequest -import org.springframework.stereotype.Component - -@Component("OngekiGetUserItemHandler") -class GetUserItemHandler( - val mapper: BasicMapper, - val userDataRepo: UserDataRepository, - val userItemRepo: UserItemRepository -) : BaseHandler { - val log = logger() - - override fun handle(request: Map): String { - val uid = parsing { request["userId"]!!.long } - val nextIndexVal = parsing { request["nextIndex"]!!.long } - val maxCount = parsing { request["maxCount"]!!.int } - - val mul = 10000000000L - val kind = (nextIndexVal / mul).toInt() - val pg = (nextIndexVal % mul).toInt() / maxCount - - var dat = userItemRepo.findByUser_Card_ExtIdAndItemKind(uid, kind, PageRequest.of(pg, maxCount)).content - - // Check if user have infinite kaika - if (kind == ItemType.KaikaItem.ordinal) { - val u = userDataRepo.findByCard_ExtId(uid)() - u?.card?.aquaUser?.gameOptions?.let { - if (it.ongekiInfiniteKaika) { - dat = listOf(UserItem().apply { - user = u - itemKind = ItemType.KaikaItem.ordinal - itemId = 1 - stock = 999 - }) - } - } - } - - val resultMap = mapOf( - "userId" to uid, - "length" to dat.size, - "nextIndex" to if (dat.size < maxCount) -1 else kind * mul + maxCount * pg + dat.size, - "itemKind" to kind, - "userItemList" to dat - ) - - return mapper.write(resultMap).also { log.info("Response: $it") } - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserKopHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserKopHandler.java deleted file mode 100644 index d65c87ec..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserKopHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserKopRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserKop; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserKopHandler") -public class GetUserKopHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserKopHandler.class); - - private final BasicMapper mapper; - - private final UserKopRepository userKopRepository; - - @Autowired - public GetUserKopHandler(BasicMapper mapper, UserKopRepository userKopRepository) { - this.mapper = mapper; - this.userKopRepository = userKopRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - List kopList = userKopRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", kopList.size()); - resultMap.put("userKopList", kopList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserLoginBonusHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserLoginBonusHandler.java deleted file mode 100644 index 011b26df..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserLoginBonusHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserLoginBonusRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserLoginBonus; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserLoginBonusHandler") -public class GetUserLoginBonusHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserLoginBonusHandler.class); - - private final BasicMapper mapper; - - private final UserLoginBonusRepository userLoginBonusRepository; - - @Autowired - public GetUserLoginBonusHandler(BasicMapper mapper, UserLoginBonusRepository userLoginBonusRepository) { - this.mapper = mapper; - this.userLoginBonusRepository = userLoginBonusRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List loginBonusList = userLoginBonusRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", loginBonusList.size()); - resultMap.put("userLoginBonusList", loginBonusList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMemoryChapterHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMemoryChapterHandler.java deleted file mode 100644 index 6f7ddfed..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMemoryChapterHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMemoryChapterRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMemoryChapter; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserMemoryChapterHandler") -public class GetUserMemoryChapterHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserMemoryChapterHandler.class); - - private final BasicMapper mapper; - - private final UserMemoryChapterRepository userMemoryChapterRepository; - - @Autowired - public GetUserMemoryChapterHandler(BasicMapper mapper, UserMemoryChapterRepository userMemoryChapterRepository) { - this.mapper = mapper; - this.userMemoryChapterRepository = userMemoryChapterRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List MemoryChapterList = userMemoryChapterRepository.findByUser_Card_ExtId(userId); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", MemoryChapterList.size()); - resultMap.put("userMemoryChapterList", MemoryChapterList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMissionPointHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMissionPointHandler.java deleted file mode 100644 index 6a08c105..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMissionPointHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMissionPointRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMissionPoint; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserMissionPointHandler") -public class GetUserMissionPointHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserMissionPointHandler.class); - - private final BasicMapper mapper; - - private final UserMissionPointRepository userMissionPointRepository; - - @Autowired - public GetUserMissionPointHandler(BasicMapper mapper, UserMissionPointRepository userMissionPointRepository) { - this.mapper = mapper; - this.userMissionPointRepository = userMissionPointRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List missionPointList = userMissionPointRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", missionPointList.size()); - resultMap.put("userMissionPointList", missionPointList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMusicHandler.java deleted file mode 100644 index 5fd0fd46..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMusicHandler.java +++ /dev/null @@ -1,90 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMusicDetailRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.UserMusicListItem; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicDetail; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import icu.samnyan.aqua.spring.data.OffsetPageRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserMusicHandler") -public class GetUserMusicHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserMusicHandler.class); - - private final BasicMapper mapper; - - private final UserMusicDetailRepository userMusicDetailRepository; - - @Autowired - public GetUserMusicHandler(BasicMapper mapper, UserMusicDetailRepository userMusicDetailRepository) { - this.mapper = mapper; - this.userMusicDetailRepository = userMusicDetailRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - Integer maxCount = (Integer) request.get("maxCount"); - Integer currentIndex = (Integer) request.get("nextIndex"); - if(currentIndex < 0) { - currentIndex = 0; - } - - Page dbPage = userMusicDetailRepository - .findByUser_Card_ExtId(userId, OffsetPageRequest.of(currentIndex, maxCount, Sort.by("musicId"))); - - Map userMusicMap = new LinkedHashMap<>(); - dbPage.getContent().forEach(userMusicDetail -> { - UserMusicListItem list; - if (userMusicMap.containsKey(userMusicDetail.getMusicId())) { - list = userMusicMap.get(userMusicDetail.getMusicId()); - } else { - list = new UserMusicListItem(0, new ArrayList<>()); - userMusicMap.put(userMusicDetail.getMusicId(), list); - } - list.getUserMusicDetailList().add(userMusicDetail); - list.setLength(list.getUserMusicDetailList().size()); - }); - - // Someone report that ongeki also has the score missing problem - int lastListSize = 0; - if(dbPage.getNumberOfElements() >= maxCount) { - // Get last key - int lastMusicId = userMusicMap.keySet().stream().reduce((a, b) -> b).orElseThrow(); - List lastList = userMusicMap.get(lastMusicId).getUserMusicDetailList(); - lastListSize = lastList.size(); - // Remove last one from map - userMusicMap.remove(lastMusicId); - } - - long nextIndex = currentIndex + dbPage.getNumberOfElements() - lastListSize; - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userMusicMap.size()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : nextIndex); - resultMap.put("userMusicList", userMusicMap.values()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMusicItemHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMusicItemHandler.java deleted file mode 100644 index 8e5f5434..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserMusicItemHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMusicItemRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicItem; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserMusicItemHandler") -public class GetUserMusicItemHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserMusicItemHandler.class); - - private final BasicMapper mapper; - - private final UserMusicItemRepository userMusicItemRepository; - - @Autowired - public GetUserMusicItemHandler(BasicMapper mapper, UserMusicItemRepository userMusicItemRepository) { - this.mapper = mapper; - this.userMusicItemRepository = userMusicItemRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - Integer maxCount = (Integer) request.get("maxCount"); - Integer nextIndex = (Integer) request.get("nextIndex"); - - int pageNum = nextIndex / maxCount; - - Page dbPage = userMusicItemRepository.findByUser_Card_ExtId(userId, PageRequest.of(pageNum, maxCount)); - - long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", dbPage.getNumberOfElements()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("userMusicItemList", dbPage.getContent()); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java deleted file mode 100644 index d646a5ff..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserOptionHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserOptionRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserOption; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserOptionHandler") -public class GetUserOptionHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserOptionHandler.class); - - private final BasicMapper mapper; - - private final UserOptionRepository userOptionRepository; - - @Autowired - public GetUserOptionHandler(BasicMapper mapper, UserOptionRepository userOptionRepository) { - this.mapper = mapper; - this.userOptionRepository = userOptionRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Optional userOptionOptional = userOptionRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - if(userOptionOptional.isPresent()) { - resultMap.put("userOption", userOptionOptional.get()); - } else { - resultMap.put("userOption", null); - } - - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java deleted file mode 100644 index 650db882..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserPreviewHandler.java +++ /dev/null @@ -1,102 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserOptionRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.GetUserPreviewResp; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.Optional; - -/** - * The handler for loading basic profile information. - *

- * return null if no profile exist - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserPreviewHandler") -public class GetUserPreviewHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserPreviewHandler.class); - - private final BasicMapper mapper; - - private final UserDataRepository userDataRepository; - - private final UserOptionRepository userOptionRepository; - - @Autowired - public GetUserPreviewHandler(BasicMapper mapper, - UserDataRepository userDataRepository, UserOptionRepository userOptionRepository) { - this.mapper = mapper; - this.userDataRepository = userDataRepository; - this.userOptionRepository = userOptionRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Optional userData = userDataRepository.findByCard_ExtId(userId); - - GetUserPreviewResp resp = new GetUserPreviewResp(); - resp.setUserId(userId); - if (userData.isEmpty()) { - // From BaseDialogController.cs - // if (string.IsNullOrEmpty(instance.userPreview.lastPlayDate)) - // so send a null value will trigger new user register - resp.setLastPlayDate(null); - - } else { - UserData user = userData.get(); - - resp.setLogin(false); - - resp.setLastLoginDate(user.getLastPlayDate()); - resp.setUserName(user.getUserName()); - resp.setReincarnationNum(user.getReincarnationNum()); - resp.setLevel(user.getLevel()); - resp.setExp(user.getExp()); - resp.setPlayerRating(user.getPlayerRating()); - resp.setNewPlayerRating(user.getNewPlayerRating()); - - resp.setLastGameId(user.getLastGameId()); - - resp.setLastRomVersion(user.getLastRomVersion()); - resp.setLastDataVersion(user.getLastDataVersion()); - - resp.setLastPlayDate(user.getLastPlayDate()); - resp.setNameplateId(user.getNameplateId()); - resp.setTrophyId(user.getTrophyId()); - resp.setCardId(user.getCardId()); - - resp.setDispPlayerLv(1); - resp.setDispRating(1); - resp.setDispBP(1); - resp.setHeadphone(0); - userOptionRepository.findByUser(user).ifPresent(x -> { - resp.setDispPlayerLv(x.getDispPlayerLv()); - resp.setDispRating(x.getDispRating()); - resp.setDispBP(x.getDispBP()); - resp.setHeadphone(x.getHeadphone()); - }); - - // test for now - resp.setLastEmoneyBrand(4); - resp.setLastEmoneyCredit(10000); - } - - String json = mapper.write(resp); - logger.info("Response: " + json); - return json; - - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRatinglogListHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRatinglogListHandler.java deleted file mode 100644 index 691a8ef6..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRatinglogListHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserRatinglogHandler") -public class GetUserRatinglogListHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRatinglogListHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetUserRatinglogListHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userRatinglogList", new List[]{}); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRecentRatingHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRecentRatingHandler.java deleted file mode 100644 index 9ca1413a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRecentRatingHandler.java +++ /dev/null @@ -1,84 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserGeneralDataRepository; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserPlaylogRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserGeneralData; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserPlaylog; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserRecentRatingHandler") -public class GetUserRecentRatingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRecentRatingHandler.class); - - private final BasicMapper mapper; - - private final UserPlaylogRepository userPlaylogRepository; - private final UserGeneralDataRepository userGeneralDataRepository; - - @Autowired - public GetUserRecentRatingHandler(BasicMapper mapper, UserPlaylogRepository userPlaylogRepository, UserGeneralDataRepository userGeneralDataRepository) { - this.mapper = mapper; - this.userPlaylogRepository = userPlaylogRepository; - this.userGeneralDataRepository = userGeneralDataRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Optional recentOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(userId, "recent_rating_list"); - - List ratingList; - if(recentOptional.isPresent()) { - ratingList = new LinkedList<>(); - String val = recentOptional.get().getPropertyValue(); - if(StringUtils.isNotBlank(val) && val.contains(",")) { - String[] records = val.split(","); - for (String record : - records) { - String[] value = record.split(":"); - ratingList.add(new UserRecentRating( - Integer.parseInt(value[0]), - Integer.parseInt(value[1]), - "1000000", - Integer.parseInt(value[2]) - )); - } - } - } else { - Pageable page = PageRequest.of(0, 30, Sort.by(Sort.Direction.DESC, "id")); - List playlogList = userPlaylogRepository.findByUser_Card_ExtId(userId, page).getContent(); - ratingList = playlogList.stream().map(log -> new UserRecentRating(log.getMusicId(), log.getLevel(), "1000000", log.getTechScore())) - .collect(Collectors.toList()); - } - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", ratingList.size()); - resultMap.put("userRecentRatingList", ratingList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRegionHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRegionHandler.java deleted file mode 100644 index 16ad0fc5..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRegionHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * The game doesn't send this to save - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserRegionHandler") -public class GetUserRegionHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserRegionHandler.class); - - private final BasicMapper mapper; - - @Autowired - public GetUserRegionHandler(BasicMapper mapper) { - this.mapper = mapper; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", 0); - resultMap.put("userRegionList", new List[]{}); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalDataHandler.java deleted file mode 100644 index 9fdd7f9e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalDataHandler.java +++ /dev/null @@ -1,63 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDataRepository; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserRivalDataRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.UserRivalData; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author GEEKiDoS (geek_ds@foxmail.com) - */ -@Component("OngekiGetUserRivalDataHandler") -public class GetUserRivalDataHandler implements BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(GetUserRivalDataHandler.class); - - private final BasicMapper mapper; - private final UserRivalDataRepository userRivalDataRepository; - private final UserDataRepository userDataRepository; - - @Autowired - public GetUserRivalDataHandler(BasicMapper mapper, UserRivalDataRepository userRivalDataRepository, UserDataRepository userDataRepository) { - this.mapper = mapper; - this.userRivalDataRepository = userRivalDataRepository; - this.userDataRepository = userDataRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - var userRivalId = ((Number) request.get("userId")).longValue(); - var userRivalList = ((Collection>) request.get("userRivalList")) - .stream() - .map(x->((Number)x.get("rivalUserId")).longValue()) - .collect(Collectors.toList()); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userRivalId); - - var userInfos = userDataRepository - .findByCard_ExtIdIn(userRivalList) - .stream() - .map(x -> new UserRivalData(x.getCard().getExtId(), x.getUserName())) - .toArray(); - - resultMap.put("length", userInfos.length); - resultMap.put("userRivalDataList", userInfos); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalHandler.java deleted file mode 100644 index 5c310858..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserRivalDataRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author GEEKiDoS (geek_ds@foxmail.com) - */ -@Component("OngekiGetUserRivalHandler") -public class GetUserRivalHandler implements BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(GetUserRivalHandler.class); - - private final BasicMapper mapper; - private final UserRivalDataRepository userRivalDataRepository; - - @Autowired - public GetUserRivalHandler(BasicMapper mapper, UserRivalDataRepository userRivalDataRepository) { - this.mapper = mapper; - this.userRivalDataRepository = userRivalDataRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - var userRivalId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userRivalId); - - var result = userRivalDataRepository.findByUser_Card_ExtId(userRivalId);//.stream().map(x->x.getUser().getCard().getExtId()).toArray(); - resultMap.put("length", result.size()); - resultMap.put("userRivalList", result); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalMusicHandler.java deleted file mode 100644 index 59fa525a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserRivalMusicHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserMusicDetailRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.UserRivalMusic; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import icu.samnyan.aqua.spring.data.OffsetPageRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author GEEKiDoS (geek_ds@foxmail.com) - */ -@Component("OngekiGetUserRivalMusicHandler") -public class GetUserRivalMusicHandler implements BaseHandler { - private static final Logger logger = LoggerFactory.getLogger(GetUserRivalMusicHandler.class); - - private final BasicMapper mapper; - private final UserMusicDetailRepository userMusicDetailRepository; - - @Autowired - public GetUserRivalMusicHandler(BasicMapper mapper, UserMusicDetailRepository userMusicDetailRepository) { - this.mapper = mapper; - this.userMusicDetailRepository = userMusicDetailRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - var userId = ((Number) request.get("userId")).longValue(); - var rivalUserId = ((Number) request.get("rivalUserId")).longValue(); - var nextIndex = ((Number) request.get("nextIndex")).intValue(); - var maxCount = ((Number) request.get("maxCount")).intValue(); - - //fix maxCount and sort by musicId so that we could fetch entity music with full fumen diffs. - var fixedMaxCount = maxCount + (maxCount % 5 == 0 ? 0 : 5); - var sorter = Sort.by(Sort.Direction.ASC, "musicId"); - - var groupedMusicDetailsItor = userMusicDetailRepository - .findByUser_Card_ExtId(rivalUserId, OffsetPageRequest.of(nextIndex, fixedMaxCount, sorter)) - .stream() - .collect(Collectors.groupingBy(x -> x.getMusicId())) - .values() - .stream() - .map(x -> new UserRivalMusic(x,x.size())) - .iterator(); - - var filterMusicDetails = new ArrayList(); - - var actualReadCount = 0; - while(groupedMusicDetailsItor.hasNext()){ - var musicDetail = groupedMusicDetailsItor.next(); - if (musicDetail.getLength() + actualReadCount > maxCount) - break; - filterMusicDetails.add(musicDetail); - actualReadCount += musicDetail.getLength(); - } - - var respNextIndex = nextIndex + actualReadCount; - if (filterMusicDetails.size() <= 0) - respNextIndex = 0; //nofity client that All music details had been sent (for this rival). - else - filterMusicDetails.sort(Comparator.comparingInt(a -> a.getUserRivalMusicDetailList().get(0).getMusicId())); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("rivalUserId", rivalUserId); - resultMap.put("length", filterMusicDetails.size()); - resultMap.put("nextIndex", respNextIndex); - resultMap.put("userRivalMusicList", filterMusicDetails); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserScenarioHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserScenarioHandler.java deleted file mode 100644 index a8aa1e2e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserScenarioHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserScenarioRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserScenario; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserScenarioHandler") -public class GetUserScenarioHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserScenarioHandler.class); - - private final BasicMapper mapper; - - private final UserScenarioRepository userScenarioRepository; - - @Autowired - public GetUserScenarioHandler(BasicMapper mapper, UserScenarioRepository userScenarioRepository) { - this.mapper = mapper; - this.userScenarioRepository = userScenarioRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userScenarioList = userScenarioRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userScenarioList.size()); - resultMap.put("userScenarioList", userScenarioList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java deleted file mode 100644 index 7963c908..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserSkinRepository; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserSkin; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserSkinHandler") -public class GetUserSkinHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserSkinHandler.class); - - private final BasicMapper mapper; - - private final UserSkinRepository userSkinRepository; - - @Autowired - public GetUserSkinHandler(BasicMapper mapper, UserSkinRepository userSkinRepository) { - this.mapper = mapper; - this.userSkinRepository = userSkinRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - List userSkinList = userSkinRepository.findByUser_Card_ExtId(userId); - resultMap.put("length", userSkinList.size()); - resultMap.put("userSkinList", userSkinList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java deleted file mode 100644 index f5d473ff..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserStoryHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserStoryRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserStory; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserStoryHandler") -public class GetUserStoryHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserStoryHandler.class); - - private final BasicMapper mapper; - - private final UserStoryRepository userStoryRepository; - - @Autowired - public GetUserStoryHandler(BasicMapper mapper, UserStoryRepository userStoryRepository) { - this.mapper = mapper; - this.userStoryRepository = userStoryRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userStoryList = userStoryRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userStoryList.size()); - resultMap.put("userStoryList", userStoryList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechCountHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechCountHandler.java deleted file mode 100644 index 305f7acb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechCountHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTechCountRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechCount; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetTechCountHandler") -public class GetUserTechCountHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserTechCountHandler.class); - - private final BasicMapper mapper; - - private final UserTechCountRepository userTechCountRepository; - - @Autowired - public GetUserTechCountHandler(BasicMapper mapper, UserTechCountRepository userTechCountRepository) { - this.mapper = mapper; - this.userTechCountRepository = userTechCountRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List userTechCountList = userTechCountRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", userTechCountList.size()); - resultMap.put("userTechCountList", userTechCountList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechEventHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechEventHandler.java deleted file mode 100644 index 274bf162..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechEventHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTechEventRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechEvent; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserTechEventHandler") -public class GetUserTechEventHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserTechEventHandler.class); - - private final BasicMapper mapper; - - private final UserTechEventRepository userTechEventRepository; - - @Autowired - public GetUserTechEventHandler(BasicMapper mapper, UserTechEventRepository userTechEventRepository) { - this.mapper = mapper; - this.userTechEventRepository = userTechEventRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - List techEventList = userTechEventRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", techEventList.size()); - resultMap.put("userTechEventList", techEventList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechEventRankingHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechEventRankingHandler.java deleted file mode 100644 index 45ff4364..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTechEventRankingHandler.java +++ /dev/null @@ -1,66 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTechEventRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.response.data.UserTechEventRankingItem; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechEvent; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserTechEventRankingHandler") -public class GetUserTechEventRankingHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserTechEventRankingHandler.class); - - private final BasicMapper mapper; - - private final UserTechEventRepository userTechEventRepository; - - @Autowired - public GetUserTechEventRankingHandler(BasicMapper mapper, UserTechEventRepository userTechEventRepository) { - this.mapper = mapper; - this.userTechEventRepository = userTechEventRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0")); - - List techEventList = userTechEventRepository.findByUser_Card_ExtId(userId); - List techEventRankingList = new ArrayList<>(); - techEventList.forEach(x -> techEventRankingList.add(new UserTechEventRankingItem( - x.getEventId(), - time, - 1, - x.getTotalTechScore(), - x.getTotalPlatinumScore() - ))); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", techEventRankingList.size()); - resultMap.put("userTechEventRankingList", techEventRankingList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTradeItemHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTradeItemHandler.java deleted file mode 100644 index a607fa45..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTradeItemHandler.java +++ /dev/null @@ -1,54 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTradeItemRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTradeItem; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserTradeItemHandler") -public class GetUserTradeItemHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserTradeItemHandler.class); - - private final BasicMapper mapper; - - private final UserTradeItemRepository userTradeItemRepository; - - @Autowired - public GetUserTradeItemHandler(BasicMapper mapper, UserTradeItemRepository userTradeItemRepository) { - this.mapper = mapper; - this.userTradeItemRepository = userTradeItemRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - int startChapterId = ((Number) request.get("startChapterId")).intValue(); - int endChapterId = ((Number) request.get("endChapterId")).intValue(); - - List tradeItemList = userTradeItemRepository.findByUser_Card_ExtIdAndChapterIdGreaterThanEqualAndChapterIdLessThanEqual(userId, startChapterId, endChapterId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", tradeItemList.size()); - resultMap.put("userTradeItemList", tradeItemList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTrainingRoomByKeyHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTrainingRoomByKeyHandler.java deleted file mode 100644 index 6d2f5a66..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserTrainingRoomByKeyHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserTrainingRoomRepository; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTrainingRoom; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiGetUserTrainingRoomByKeyHandler") -public class GetUserTrainingRoomByKeyHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(GetUserTrainingRoomByKeyHandler.class); - - private final BasicMapper mapper; - - private final UserTrainingRoomRepository userTrainingRoomRepository; - - @Autowired - public GetUserTrainingRoomByKeyHandler(BasicMapper mapper, UserTrainingRoomRepository userTrainingRoomRepository) { - this.mapper = mapper; - this.userTrainingRoomRepository = userTrainingRoomRepository; - } - - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - - List trainingRoomList = userTrainingRoomRepository.findByUser_Card_ExtId(userId); - - Map resultMap = new LinkedHashMap<>(); - resultMap.put("userId", userId); - resultMap.put("length", trainingRoomList.size()); - resultMap.put("userTrainingRoomList", trainingRoomList); - - String json = mapper.write(resultMap); - - logger.info("Response: " + json); - return json; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java deleted file mode 100644 index 513427d9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java +++ /dev/null @@ -1,634 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.handler.impl; - -import com.fasterxml.jackson.core.JsonProcessingException; -import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; -import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.*; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.OngekiFumenScore; -import icu.samnyan.aqua.sega.ongeki.model.request.UpsertUserAll; -import icu.samnyan.aqua.sega.ongeki.model.response.CodeResp; -import icu.samnyan.aqua.sega.ongeki.model.userdata.*; -import icu.samnyan.aqua.sega.util.jackson.BasicMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -/** - * The handler for saving all data of a ONGEKI profile - * - * @author samnyan (privateamusement@protonmail.com) - */ -@Component("OngekiUserAllHandler") -public class UpsertUserAllHandler implements BaseHandler { - - private static final Logger logger = LoggerFactory.getLogger(UpsertUserAllHandler.class); - - private final BasicMapper mapper; - - private final CardService cardService; - - private final UserDataRepository userDataRepository; - private final UserOptionRepository userOptionRepository; - private final UserPlaylogRepository userPlaylogRepository; - private final UserActivityRepository userActivityRepository; - private final UserMusicDetailRepository userMusicDetailRepository; - private final UserCharacterRepository userCharacterRepository; - private final UserCardRepository userCardRepository; - private final UserDeckRepository userDeckRepository; - private final UserStoryRepository userStoryRepository; - private final UserChapterRepository userChapterRepository; - private final UserMemoryChapterRepository userMemoryChapterRepository; - private final UserItemRepository userItemRepository; - private final UserMusicItemRepository userMusicItemRepository; - private final UserLoginBonusRepository userLoginBonusRepository; - private final UserEventPointRepository userEventPointRepository; - private final UserMissionPointRepository userMissionPointRepository; - private final UserTrainingRoomRepository userTrainingRoomRepository; - private final UserGeneralDataRepository userGeneralDataRepository; - private final UserBossRepository userBossRepository; - private final UserScenarioRepository userScenarioRepository; - private final UserTechCountRepository userTechCountRepository; - private final UserTradeItemRepository userTradeItemRepository; - private final UserEventMusicRepository userEventMusicRepository; - private final UserTechEventRepository userTechEventRepository; - private final UserKopRepository userKopRepository; - private final UserEventMapRepository userEventMapRepository; - - @Autowired - public UpsertUserAllHandler(BasicMapper mapper, - CardService cardService, UserDataRepository userDataRepository, UserOptionRepository userOptionRepository, UserPlaylogRepository userPlaylogRepository, UserActivityRepository userActivityRepository, UserMusicDetailRepository userMusicDetailRepository, UserCharacterRepository userCharacterRepository, UserCardRepository userCardRepository, UserDeckRepository userDeckRepository, UserStoryRepository userStoryRepository, UserChapterRepository userChapterRepository, UserItemRepository userItemRepository, UserMusicItemRepository userMusicItemRepository, UserLoginBonusRepository userLoginBonusRepository, UserEventPointRepository userEventPointRepository, UserMissionPointRepository userMissionPointRepository, UserTrainingRoomRepository userTrainingRoomRepository, UserGeneralDataRepository userGeneralDataRepository, UserBossRepository userBossRepository, UserScenarioRepository userScenarioRepository, UserTechCountRepository userTechCountRepository, UserTradeItemRepository userTradeItemRepository, UserEventMusicRepository userEventMusicRepository, UserTechEventRepository userTechEventRepository, UserKopRepository userKopRepository, UserMemoryChapterRepository userMemoryChapterRepository, UserEventMapRepository userEventMapRepository) { - this.mapper = mapper; - this.cardService = cardService; - this.userDataRepository = userDataRepository; - this.userOptionRepository = userOptionRepository; - this.userPlaylogRepository = userPlaylogRepository; - this.userActivityRepository = userActivityRepository; - this.userMusicDetailRepository = userMusicDetailRepository; - this.userCharacterRepository = userCharacterRepository; - this.userCardRepository = userCardRepository; - this.userDeckRepository = userDeckRepository; - this.userStoryRepository = userStoryRepository; - this.userChapterRepository = userChapterRepository; - this.userMemoryChapterRepository = userMemoryChapterRepository; - this.userItemRepository = userItemRepository; - this.userMusicItemRepository = userMusicItemRepository; - this.userLoginBonusRepository = userLoginBonusRepository; - this.userEventPointRepository = userEventPointRepository; - this.userMissionPointRepository = userMissionPointRepository; - this.userTrainingRoomRepository = userTrainingRoomRepository; - this.userGeneralDataRepository = userGeneralDataRepository; - this.userBossRepository = userBossRepository; - this.userScenarioRepository = userScenarioRepository; - this.userTechCountRepository = userTechCountRepository; - this.userTradeItemRepository = userTradeItemRepository; - this.userEventMusicRepository = userEventMusicRepository; - this.userTechEventRepository = userTechEventRepository; - this.userKopRepository = userKopRepository; - this.userEventMapRepository = userEventMapRepository; - } - - @Override - public String handle(Map request) throws JsonProcessingException { - long userId = ((Number) request.get("userId")).longValue(); - UpsertUserAll upsertUserAll = mapper.convert(request.get("upsertUserAll"), UpsertUserAll.class); - - // All the field should exist, no need to check now. - // UserData - UserData newUserData; - { - UserData userData; - - Optional userOptional = userDataRepository.findByCard_ExtId(userId); - - // UserData might be empty on later runs - if (userOptional.isEmpty() && upsertUserAll.getUserData().isEmpty()) { - return null; - } - - if (userOptional.isPresent()) { - userData = userOptional.get(); - } else { - userData = new UserData(); - Card card = cardService.getCardByExtId(userId).orElseThrow(); - userData.setCard(card); - } - - // If new data exists, use new data. Otherwise, use old data - newUserData = !upsertUserAll.getUserData().isEmpty() ? upsertUserAll.getUserData().getFirst() : userData; - - newUserData.setId(userData.getId()); - newUserData.setCard(userData.getCard()); - - // Set eventWatchedDate with lastPlayDate, because client doesn't update it - newUserData.setEventWatchedDate(userData.getLastPlayDate()); - newUserData.setCmEventWatchedDate(userData.getLastPlayDate()); - - userDataRepository.save(newUserData); - } - - - // UserOption - UserOption newUserOption = upsertUserAll.getUserOption().getFirst(); - - Optional userOptionOptional = userOptionRepository.findByUser(newUserData); - UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData)); - - newUserOption.setId(userOption.getId()); - newUserOption.setUser(userOption.getUser()); - - userOptionRepository.save(newUserOption); - - - // UserPlaylogList - List userPlaylogList = upsertUserAll.getUserPlaylogList(); - List newUserPlaylogList = new ArrayList<>(); - - for (UserPlaylog newUserPlaylog : userPlaylogList) { - newUserPlaylog.setUser(newUserData); - newUserPlaylogList.add(newUserPlaylog); - } - - userPlaylogRepository.saveAll(newUserPlaylogList); - - - // UserSessionlogList, UserJewelboostlogLost doesn't need to be saved for a private server - - - // UserActivityList - List userActivityList = upsertUserAll.getUserActivityList(); - List newUserActivityList = new ArrayList<>(); - - for (UserActivity newUserActivity : userActivityList) { - int kind = newUserActivity.getKind(); - int id = newUserActivity.getActivityId(); - - if (kind != 0 && id != 0) { - Optional activityOptional = userActivityRepository.findByUserAndKindAndActivityId(newUserData, kind, id); - UserActivity userActivity = activityOptional.orElseGet(() -> new UserActivity(newUserData)); - - newUserActivity.setId(userActivity.getId()); - newUserActivity.setUser(newUserData); - newUserActivityList.add(newUserActivity); - } - } - newUserActivityList.sort((a, b) -> Integer.compare(b.getSortNumber(), a.getSortNumber())); - userActivityRepository.saveAll(newUserActivityList); - - - // UserRecentRatingList - // This thing still need to save to solve the rating drop - this.saveRecentRatingData(upsertUserAll.getUserRecentRatingList(), newUserData, "recent_rating_list"); - - - /* - * The rating and battle point calculation is little bit complex. - * So I just create a UserGeneralData class to store this value - * into a csv format for convenience - */ - // UserBpBaseList (For calculating Battle point) - this.saveRecentRatingData(upsertUserAll.getUserBpBaseList(), newUserData, "battle_point_base"); - - - // This is the best rating of all charts. Best 30 + 10 after that. - // userRatingBaseBestList - this.saveRecentRatingData(upsertUserAll.getUserRatingBaseBestList(), newUserData, "rating_base_best"); - - - // userRatingBaseNextList - this.saveRecentRatingData(upsertUserAll.getUserRatingBaseNextList(), newUserData, "rating_base_next"); - - - // This is the best rating of new charts. Best 15 + 10 after that. - // New chart means same version - // userRatingBaseBestNewList - this.saveRecentRatingData(upsertUserAll.getUserRatingBaseBestNewList(), newUserData, "rating_base_new_best"); - - // userRatingBaseNextNewList - this.saveRecentRatingData(upsertUserAll.getUserRatingBaseNextNewList(), newUserData, "rating_base_new_next"); - - // This is the recent best - // userRatingBaseHotList - this.saveRecentRatingData(upsertUserAll.getUserRatingBaseHotList(), newUserData, "rating_base_hot_best"); - - // userRatingBaseHotNextList - this.saveRecentRatingData(upsertUserAll.getUserRatingBaseHotNextList(), newUserData, "rating_base_hot_next"); - - this.saveFumenScoreData(upsertUserAll.getUserNewRatingBaseBestList(), newUserData, "new_rating_base_best"); - - this.saveFumenScoreData(upsertUserAll.getUserNewRatingBaseNextBestList(), newUserData, "new_rating_base_next_best"); - - this.saveFumenScoreData(upsertUserAll.getUserNewRatingBaseBestNewList(), newUserData, "new_rating_base_new_best"); - - this.saveFumenScoreData(upsertUserAll.getUserNewRatingBaseNextBestNewList(), newUserData, "new_rating_base_new_next_best"); - - this.saveFumenScoreData(upsertUserAll.getUserNewRatingBasePScoreList(), newUserData, "new_rating_base_pscore"); - - this.saveFumenScoreData(upsertUserAll.getUserNewRatingBaseNextPScoreList(), newUserData, "new_rating_base_next_pscore"); - - // UserMusicDetailList - List userMusicDetailList = upsertUserAll.getUserMusicDetailList(); - List newUserMusicDetailList = new ArrayList<>(); - - for (UserMusicDetail newUserMusicDetail : userMusicDetailList) { - int musicId = newUserMusicDetail.getMusicId(); - int level = newUserMusicDetail.getLevel(); - - Optional musicDetailOptional = userMusicDetailRepository.findByUserAndMusicIdAndLevel(newUserData, musicId, level); - UserMusicDetail userMusicDetail = musicDetailOptional.orElseGet(() -> new UserMusicDetail(newUserData)); - - newUserMusicDetail.setId(userMusicDetail.getId()); - newUserMusicDetail.setUser(newUserData); - newUserMusicDetailList.add(newUserMusicDetail); - } - userMusicDetailRepository.saveAll(newUserMusicDetailList); - - - // UserCharacterList - List userCharacterList = upsertUserAll.getUserCharacterList(); - List newUserCharacterList = new ArrayList<>(); - - for (UserCharacter newUserCharacter : userCharacterList) { - int characterId = newUserCharacter.getCharacterId(); - - Optional characterOptional = userCharacterRepository.findByUserAndCharacterId(newUserData, characterId); - UserCharacter userCharacter = characterOptional.orElseGet(() -> new UserCharacter(newUserData)); - - newUserCharacter.setId(userCharacter.getId()); - newUserCharacter.setUser(newUserData); - newUserCharacterList.add(newUserCharacter); - } - userCharacterRepository.saveAll(newUserCharacterList); - - // UserCardList - List userCardList = upsertUserAll.getUserCardList(); - List newUserCardList = new ArrayList<>(); - - for (UserCard newUserCard : userCardList) { - int cardId = newUserCard.getCardId(); - - Optional cardOptional = userCardRepository.findByUserAndCardId(newUserData, cardId); - UserCard userCard = cardOptional.orElseGet(() -> new UserCard(newUserData)); - - newUserCard.setId(userCard.getId()); - newUserCard.setUser(newUserData); - newUserCardList.add(newUserCard); - } - userCardRepository.saveAll(newUserCardList); - - - // UserDeckList - List userDeckList = upsertUserAll.getUserDeckList(); - List newUserDeckList = new ArrayList<>(); - - for (UserDeck newUserDeck : userDeckList) { - int deckId = newUserDeck.getDeckId(); - - Optional deckOptional = userDeckRepository.findByUserAndDeckId(newUserData, deckId); - UserDeck userDeck = deckOptional.orElseGet(() -> new UserDeck(newUserData)); - - newUserDeck.setId(userDeck.getId()); - newUserDeck.setUser(newUserData); - newUserDeckList.add(newUserDeck); - } - userDeckRepository.saveAll(newUserDeckList); - - - // userTrainingRoomList - List userTrainingRoomList = upsertUserAll.getUserTrainingRoomList(); - List newUserTrainingRoomList = new ArrayList<>(); - - for (UserTrainingRoom newUserTrainingRoom : userTrainingRoomList) { - int roomId = newUserTrainingRoom.getRoomId(); - - Optional trainingRoomOptional = userTrainingRoomRepository.findByUserAndRoomId(newUserData, roomId); - UserTrainingRoom trainingRoom = trainingRoomOptional.orElseGet(() -> new UserTrainingRoom(newUserData)); - - newUserTrainingRoom.setId(trainingRoom.getId()); - newUserTrainingRoom.setUser(newUserData); - newUserTrainingRoomList.add(newUserTrainingRoom); - } - userTrainingRoomRepository.saveAll(newUserTrainingRoomList); - - - // UserStoryList - List userStoryList = upsertUserAll.getUserStoryList(); - List newUserStoryList = new ArrayList<>(); - - for (UserStory newUserStory : userStoryList) { - int storyId = newUserStory.getStoryId(); - - Optional storyOptional = userStoryRepository.findByUserAndStoryId(newUserData, storyId); - UserStory userStory = storyOptional.orElseGet(() -> new UserStory(newUserData)); - - newUserStory.setId(userStory.getId()); - newUserStory.setUser(newUserData); - newUserStoryList.add(newUserStory); - } - userStoryRepository.saveAll(newUserStoryList); - - - // UserChapterList - List userChapterList = upsertUserAll.getUserChapterList(); - List newUserChapterList = new ArrayList<>(); - - for (UserChapter newUserChapter : userChapterList) { - int chapterId = newUserChapter.getChapterId(); - - Optional chapterOptional = userChapterRepository.findByUserAndChapterId(newUserData, chapterId); - UserChapter userChapter = chapterOptional.orElseGet(() -> new UserChapter(newUserData)); - - newUserChapter.setId(userChapter.getId()); - newUserChapter.setUser(newUserData); - newUserChapterList.add(newUserChapter); - } - userChapterRepository.saveAll(newUserChapterList); - - - // UserMemoryChapterList - List userMemoryChapterList = upsertUserAll.getUserMemoryChapterList(); - - if (userMemoryChapterList != null) { - List newUserMemoryChapterList = new ArrayList<>(); - - for (UserMemoryChapter newUserMemoryChapter : userMemoryChapterList) { - int chapterId = newUserMemoryChapter.getChapterId(); - - Optional chapterOptional = userMemoryChapterRepository.findByUserAndChapterId(newUserData, chapterId); - UserMemoryChapter userChapter = chapterOptional.orElseGet(() -> new UserMemoryChapter(newUserData)); - - newUserMemoryChapter.setId(userChapter.getId()); - newUserMemoryChapter.setUser(newUserData); - newUserMemoryChapterList.add(newUserMemoryChapter); - } - userMemoryChapterRepository.saveAll(newUserMemoryChapterList); - } - - // UserItemList - List userItemList = upsertUserAll.getUserItemList(); - List newUserItemList = new ArrayList<>(); - - for (UserItem newUserItem : userItemList) { - int itemKind = newUserItem.getItemKind(); - int itemId = newUserItem.getItemId(); - - Optional itemOptional = userItemRepository.findByUserAndItemKindAndItemId(newUserData, itemKind, itemId); - UserItem userItem = itemOptional.orElseGet(() -> new UserItem(newUserData)); - - newUserItem.setId(userItem.getId()); - newUserItem.setUser(newUserData); - newUserItemList.add(newUserItem); - } - userItemRepository.saveAll(newUserItemList); - - // UserMusicItemList - List userMusicItemList = upsertUserAll.getUserMusicItemList(); - List newUserMusicItemList = new ArrayList<>(); - - for (UserMusicItem newUserMusicItem : userMusicItemList) { - int musicId = newUserMusicItem.getMusicId(); - - Optional musicItemOptional = userMusicItemRepository.findByUserAndMusicId(newUserData, musicId); - UserMusicItem userMusicItem = musicItemOptional.orElseGet(() -> new UserMusicItem(newUserData)); - - newUserMusicItem.setId(userMusicItem.getId()); - newUserMusicItem.setUser(newUserData); - newUserMusicItemList.add(newUserMusicItem); - } - userMusicItemRepository.saveAll(newUserMusicItemList); - - - // userLoginBonusList - List userLoginBonusList = upsertUserAll.getUserLoginBonusList(); - List newUserLoginBonusList = new ArrayList<>(); - - for (UserLoginBonus newUserLoginBonus : userLoginBonusList) { - int bonusId = newUserLoginBonus.getBonusId(); - - Optional loginBonusOptional = userLoginBonusRepository.findByUserAndBonusId(newUserData, bonusId); - UserLoginBonus userLoginBonus = loginBonusOptional.orElseGet(() -> new UserLoginBonus(newUserData)); - - newUserLoginBonus.setId(userLoginBonus.getId()); - newUserLoginBonus.setUser(newUserData); - newUserLoginBonusList.add(newUserLoginBonus); - } - userLoginBonusRepository.saveAll(newUserLoginBonusList); - - - // UserEventPointList - List userEventPointList = upsertUserAll.getUserEventPointList(); - List newUserEventPointList = new ArrayList<>(); - - for (UserEventPoint newUserEventPoint : userEventPointList) { - int eventId = newUserEventPoint.getEventId(); - - Optional eventPointOptional = userEventPointRepository.findByUserAndEventId(newUserData, eventId); - UserEventPoint userEventPoint = eventPointOptional.orElseGet(() -> new UserEventPoint(newUserData)); - - newUserEventPoint.setId(userEventPoint.getId()); - newUserEventPoint.setUser(newUserData); - newUserEventPointList.add(newUserEventPoint); - } - userEventPointRepository.saveAll(newUserEventPointList); - - - // UserMissionPointList - List userMissionPointList = upsertUserAll.getUserMissionPointList(); - List newUserMissionPointList = new ArrayList<>(); - - for (UserMissionPoint newUserMissionPoint : userMissionPointList) { - int eventId = newUserMissionPoint.getEventId(); - - Optional userMissionPointOptional = userMissionPointRepository.findByUserAndEventId(newUserData, eventId); - UserMissionPoint userMissionPoint = userMissionPointOptional.orElseGet(() -> new UserMissionPoint(newUserData)); - - newUserMissionPoint.setId(userMissionPoint.getId()); - newUserMissionPoint.setUser(newUserData); - newUserMissionPointList.add(newUserMissionPoint); - } - userMissionPointRepository.saveAll(newUserMissionPointList); - - // UserRatinglogList (For the highest rating of each version) - - // UserBossList - List userBossList = upsertUserAll.getUserBossList(); - if (userBossList != null) { - List newUserBossList = new ArrayList<>(); - for (UserBoss newUserBoss : userBossList) { - int musicId = newUserBoss.getMusicId(); - - Optional userBossOptional = userBossRepository.findByUserAndMusicId(newUserData, musicId); - UserBoss userBoss = userBossOptional.orElseGet(() -> new UserBoss(newUserData)); - - newUserBoss.setId(userBoss.getId()); - newUserBoss.setUser(userBoss.getUser()); - newUserBossList.add(newUserBoss); - } - userBossRepository.saveAll(newUserBossList); - } - - // UserTechCountList - List userTechCountList = upsertUserAll.getUserTechCountList(); - if (userTechCountList != null) { - List newUserTechCountList = new ArrayList<>(); - for (UserTechCount newUserTechCount : userTechCountList) { - int levelId = newUserTechCount.getLevelId(); - - Optional userTechCountOptional = userTechCountRepository.findByUserAndLevelId(newUserData, levelId); - UserTechCount userTechCount = userTechCountOptional.orElseGet(() -> new UserTechCount(newUserData)); - - newUserTechCount.setId(userTechCount.getId()); - newUserTechCount.setUser(userTechCount.getUser()); - newUserTechCountList.add(newUserTechCount); - } - userTechCountRepository.saveAll(newUserTechCountList); - } - - // UserScenarioList - List userScenarioList = upsertUserAll.getUserScenarioList(); - if (userScenarioList != null) { - List newUserScenarioList = new ArrayList<>(); - for (UserScenario newUserScenario : userScenarioList) { - int scenarioId = newUserScenario.getScenarioId(); - - Optional userScenarioOptional = userScenarioRepository.findByUserAndScenarioId(newUserData, scenarioId); - UserScenario userScenario = userScenarioOptional.orElseGet(() -> new UserScenario(newUserData)); - - newUserScenario.setId(userScenario.getId()); - newUserScenario.setUser(userScenario.getUser()); - newUserScenarioList.add(newUserScenario); - } - userScenarioRepository.saveAll(newUserScenarioList); - } - - // UserTradeItemList - List userTradeItemList = upsertUserAll.getUserTradeItemList(); - List newUserTradeItemList = new ArrayList<>(); - - for (UserTradeItem newUserTradeItem : userTradeItemList) { - int chapterId = newUserTradeItem.getChapterId(); - int tradeItemId = newUserTradeItem.getTradeItemId(); - - Optional tradeItemOptional = userTradeItemRepository.findByUserAndChapterIdAndTradeItemId(newUserData, chapterId, tradeItemId); - UserTradeItem userTradeItem = tradeItemOptional.orElseGet(() -> new UserTradeItem(newUserData)); - - newUserTradeItem.setId(userTradeItem.getId()); - newUserTradeItem.setUser(newUserData); - newUserTradeItemList.add(newUserTradeItem); - } - userTradeItemRepository.saveAll(newUserTradeItemList); - - // UserEventMusicList - List userEventMusicList = upsertUserAll.getUserEventMusicList(); - List newUserEventMusicList = new ArrayList<>(); - - for (UserEventMusic newUserEventMusic : userEventMusicList) { - int eventId = newUserEventMusic.getEventId(); - int type = newUserEventMusic.getType(); - int musicId = newUserEventMusic.getMusicId(); - - Optional eventMusicOptional = userEventMusicRepository.findByUserAndEventIdAndTypeAndMusicId(newUserData, eventId, type, musicId); - UserEventMusic userEventMusic = eventMusicOptional.orElseGet(() -> new UserEventMusic(newUserData)); - - newUserEventMusic.setId(userEventMusic.getId()); - newUserEventMusic.setUser(newUserData); - newUserEventMusicList.add(newUserEventMusic); - } - userEventMusicRepository.saveAll(newUserEventMusicList); - - // UserTechEventList - List userTechEventList = upsertUserAll.getUserTechEventList(); - List newUserTechEventList = new ArrayList<>(); - - for (UserTechEvent newUserTechEvent : userTechEventList) { - int eventId = newUserTechEvent.getEventId(); - - Optional techEventOptional = userTechEventRepository.findByUserAndEventId(newUserData, eventId); - UserTechEvent userTechEvent = techEventOptional.orElseGet(() -> new UserTechEvent(newUserData)); - - newUserTechEvent.setId(userTechEvent.getId()); - newUserTechEvent.setUser(newUserData); - newUserTechEventList.add(newUserTechEvent); - } - userTechEventRepository.saveAll(newUserTechEventList); - - // UserKopList - List userKopList = upsertUserAll.getUserKopList(); - List newUserKopList = new ArrayList<>(); - - for (UserKop newUserKop : userKopList) { - int kopId = newUserKop.getKopId(); - int areaId = newUserKop.getAreaId(); - - Optional kopOptional = userKopRepository.findByUserAndKopIdAndAreaId(newUserData, kopId, areaId); - UserKop userKop = kopOptional.orElseGet(() -> new UserKop(newUserData)); - - newUserKop.setId(userKop.getId()); - newUserKop.setUser(newUserData); - newUserKopList.add(newUserKop); - } - userKopRepository.saveAll(newUserKopList); - - // UserEventMap - UserEventMap newUserEventMap = upsertUserAll.getUserEventMap(); - if (newUserEventMap != null) { - Optional userEventOptional = userEventMapRepository.findByUser(newUserData); - UserEventMap userEventMap = userEventOptional.orElseGet(() -> new UserEventMap(newUserData)); - - newUserEventMap.setId(userEventMap.getId()); - newUserEventMap.setUser(newUserData); - userEventMapRepository.save(newUserEventMap); - } - - String json = mapper.write(new CodeResp(1, "upsertUserAll")); - logger.info("Response: " + json); - return json; - - } - - private void saveRecentRatingData(List itemList, UserData newUserData, String key) { - StringBuilder sb = new StringBuilder(); - // Convert to a string - for (UserRecentRating item : - itemList) { - sb.append(item.getMusicId()).append(":").append(item.getDifficultId()).append(":").append(item.getScore()); - sb.append(","); - } - if (!sb.isEmpty()) { - sb.deleteCharAt(sb.length() - 1); - } - saveGeneralData(newUserData, key, sb.toString()); - } - - private void saveFumenScoreData(List itemList, UserData newUserData, String key) { - StringBuilder sb = new StringBuilder(); - for (OngekiFumenScore item : itemList) { - sb.append(item.getMusicId()).append(":") - .append(item.getDifficultId()).append(":") - .append(item.getScore()).append(":") - .append(item.getPlatinumScoreStar()).append(":") - .append(item.getPlatinumScoreMax()); - sb.append(","); - } - - if (!sb.isEmpty()) { - sb.deleteCharAt(sb.length() - 1); - } - saveGeneralData(newUserData, key, sb.toString()); - } - - private void saveGeneralData(UserData newUserData, String key, String data) { - Optional uOptional = userGeneralDataRepository.findByUserAndPropertyKey(newUserData, key); - UserGeneralData userGeneralData = uOptional.orElseGet(() -> new UserGeneralData(newUserData, key)); - userGeneralData.setPropertyValue(data); - userGeneralDataRepository.save(userGeneralData); - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiEnums.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiEnums.kt new file mode 100644 index 00000000..60643a4a --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiEnums.kt @@ -0,0 +1,50 @@ +package icu.samnyan.aqua.sega.ongeki.model + +import com.fasterxml.jackson.annotation.JsonValue + +enum class OgkGpProductID(@get:JsonValue val value: Int) { + A_Credit1(0), + A_Credit2(1), + A_Credit3(2), + B_Credit1(3), + B_Credit2(4), + B_Credit3(5), + End(6) +} + +enum class OgkIdListType { + Invalid, + NgMusic, + Recommend; + + @JsonValue + fun toValue() = ordinal +} + +enum class OgkItemType { + None, + Card, + NamePlate, + Trophy, + LimitBreakItem, + AlmightyJewel, + Money, + Music, + ProfileVoice, + Present, + ChapterJewel, + GachaTicket, + KaikaItem, + ExpUpItem, + IntimateUpItem, + BookItem, + SystemVoice, + Costume, + Medal, + Attachment, + UnlockItem, + Max; + + @JsonValue + fun toValue() = ordinal +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiGameEntities.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiGameEntities.kt new file mode 100644 index 00000000..b4ec50fe --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiGameEntities.kt @@ -0,0 +1,114 @@ +package icu.samnyan.aqua.sega.ongeki.model + +import com.fasterxml.jackson.annotation.JsonIgnore +import jakarta.persistence.* + +@Entity(name = "OngekiGameCard") +@Table(name = "ongeki_game_card") +class GameCard { + @Id + var id: Long = 0 + var name: String = "" + var nickName: String = "" + var attribute: String = "" + var charaId = 0 + var school: String = "" + var gakunen: String = "" + var rarity: String = "" + // csv + var levelParam: String = "" + var skillId = 0 + var choKaikaSkillId = 0 + var cardNumber: String = "" + var version: String = "" +} + + +@Entity(name = "OngekiGameChara") +@Table(name = "ongeki_game_chara") +class GameChara { + @Id + var id: Long = 0 + var name: String = "" + var cv: String = "" + var modelId = 0 +} + + +@Entity(name = "OngekiGameEvent") +@Table(name = "ongeki_game_event") +class GameEvent { + @Id + var id: Long = 0 +} + + +@Entity(name = "OngekiGameMusic") +@Table(name = "ongeki_game_music") +class GameMusic { + @Id + var id: Long = 0 + var name: String = "" + var sortName: String = "" + var artistName: String = "" + var genre: String = "" + var bossCardId = 0 + var bossLevel = 0 + var level0: String = "" + var level1: String = "" + var level2: String = "" + var level3: String = "" + var level4: String = "" +} + + +@Entity(name = "OngekiGamePoint") +@Table(name = "ongeki_game_point", uniqueConstraints = [UniqueConstraint(columnNames = ["type"])]) +class GamePoint { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @JsonIgnore + var id: Long = 0 + @Enumerated(EnumType.ORDINAL) + var type: OgkGpProductID = OgkGpProductID.A_Credit1 + var cost: Int = 0 + val startDate = "2000-01-01 05:00:00.0" + val endDate = "2099-01-01 05:00:00.0" +} + + +@Entity(name = "OngekiGamePresent") +@Table(name = "ongeki_game_present") +class GamePresent { + @Id + var id: Long = 0 + var presentName: String = "" + var rewardId: Int = 0 // count + var stock: Int = 0 // acquisitionCondition + var message: String = "" + val startDate = "2000-01-01 05:00:00.0" + val endDate = "2099-01-01 05:00:00.0" +} + + +@Entity(name = "OngekiGameReward") +@Table(name = "ongeki_game_reward") +class GameReward { + @Id + var id: Long = 0 + + @Enumerated(EnumType.ORDINAL) + var itemKind: OgkItemType = OgkItemType.None + var itemId = 0 +} + + +@Entity(name = "OngekiGameSkill") +@Table(name = "ongeki_game_skill") +class GameSkill { + @Id + var id: Long = 0 + var name: String = "" + var category: String = "" + var info: String = "" +} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt new file mode 100644 index 00000000..e5b58f0b --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUpsertUserAll.kt @@ -0,0 +1,84 @@ +package icu.samnyan.aqua.sega.ongeki.model +import icu.samnyan.aqua.sega.general.model.response.UserRecentRating + +class OngekiUpsertUserAll { + var userData: List? = null + var userOption: List? = null + var userPlaylogList: List? = null + var userJewelboostlogList: List>? = null + var userSessionlogList: List>? = null + var userActivityList: List? = null + + var userRecentRatingList: List? = null + var userBpBaseList: List? = null + var userRatingBaseBestNewList: List? = null + var userRatingBaseBestList: List? = null + var userRatingBaseHotList: List? = null + var userRatingBaseNextNewList: List? = null + var userRatingBaseNextList: List? = null + var userRatingBaseHotNextList: List? = null + + var userMusicDetailList: List? = null + var userCharacterList: List? = null + var userCardList: List? = null + var userDeckList: List? = null + var userTrainingRoomList: List? = null + var userStoryList: List? = null + var userChapterList: List? = null + var userMemoryChapterList: List? = null + var userItemList: List? = null + var userMusicItemList: List? = null + var userLoginBonusList: List? = null + var userEventPointList: List? = null + var userMissionPointList: List? = null + var userRatinglogList: List>? = null + var userBossList: List? = null + var userTechCountList: List? = null + var userScenarioList: List? = null + var userTradeItemList: List? = null + var userEventMusicList: List? = null + var userTechEventList: List? = null + var userKopList: List? = null + var clientSystemInfo: Map? = null + var isNewMusicDetailList: String? = null + var isNewCharacterList: String? = null + var isNewCardList: String? = null + var isNewDeckList: String? = null + var isNewTrainingRoomList: String? = null + var isNewStoryList: String? = null + var isNewChapterList: String? = null + var isNewMemoryChapterList: String? = null + var isNewItemList: String? = null + var isNewMusicItemList: String? = null + var isNewLoginBonusList: String? = null + var isNewEventPointList: String? = null + var isNewMissionPointList: String? = null + var isNewRatinglogList: String? = null + var isNewBossList: String? = null + var isNewTechCountList: String? = null + var isNewScenarioList: String? = null + var isNewTradeItemList: String? = null + var isNewEventMusicList: String? = null + var isNewTechEventList: String? = null + var isNewKopList: String? = null + + // Re:Fresh + var userNewRatingBasePScoreList: List? = null + var userNewRatingBaseBestList: List? = null + var userNewRatingBaseBestNewList: List? = null + var userNewRatingBaseNextPScoreList: List? = null + var userNewRatingBaseNextBestList: List? = null + var userNewRatingBaseNextBestNewList: List? = null + var userEventMap: UserEventMap? = null +} + +class OngekiFumenScore( + var musicId: Int = 0, + var difficultId: Int = 0, + var romVersionCode: String? = null, + var score: Int = 0, + var platinumScoreMax: Int = 0, + var platinumScoreStar: Int = 0, +) { + override fun toString() = "${musicId}:${difficultId}:${score}:${platinumScoreStar}:${platinumScoreMax}" +} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt new file mode 100644 index 00000000..59fadaef --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/OngekiUserEntities.kt @@ -0,0 +1,514 @@ +package icu.samnyan.aqua.sega.ongeki.model + +import com.fasterxml.jackson.annotation.JsonIgnore +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.databind.annotation.JsonSerialize +import icu.samnyan.aqua.net.games.* +import icu.samnyan.aqua.sega.general.model.Card +import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer +import jakarta.persistence.* + +@MappedSuperclass +class OngekiUserEntity : BaseEntity(), IUserEntity { + @JsonIgnore + @ManyToOne + @JoinColumn(name = "user_id") + override var user: UserData = UserData() +} + +@Entity(name = "OngekiUserData") +@Table(name = "ongeki_user_data") +class UserData : IUserData { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @JsonIgnore + override var id: Long = 0 + @JsonSerialize(using = AccessCodeSerializer::class) + @JsonProperty(value = "accessCode", access = JsonProperty.Access.READ_ONLY) + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "aime_card_id", unique = true) + override var card: Card? = null + // Access code in card + override var userName: String = "" + + var level = 0 + var reincarnationNum = 0 + var exp: Long = 0 + var point: Long = 0 + var totalPoint: Long = 0 + var playCount = 0 + var jewelCount = 0 + var totalJewelCount = 0 + var medalCount = 0 + override var playerRating: Int = 0 + override var highestRating: Int = 0 + var battlePoint = 0 + var bestBattlePoint = 0 + var overDamageBattlePoint = 0 + var isDialogWatchedSuggestMemory = false + var nameplateId = 0 + var trophyId = 0 + var cardId = 0 + var characterId = 0 + var characterVoiceNo = 0 + var tabSetting = 0 + var tabSortSetting = 0 + var cardCategorySetting = 0 + var cardSortSetting = 0 + var rivalScoreCategorySetting = 0 + var playedTutorialBit = 0 + var firstTutorialCancelNum = 0 + var sumTechHighScore: Long = 0 + var sumTechBasicHighScore: Long = 0 + var sumTechAdvancedHighScore: Long = 0 + var sumTechExpertHighScore: Long = 0 + var sumTechMasterHighScore: Long = 0 + var sumTechLunaticHighScore: Long = 0 + var sumBattleHighScore: Long = 0 + var sumBattleBasicHighScore: Long = 0 + var sumBattleAdvancedHighScore: Long = 0 + var sumBattleExpertHighScore: Long = 0 + var sumBattleMasterHighScore: Long = 0 + var sumBattleLunaticHighScore: Long = 0 + var eventWatchedDate: String = "" + var cmEventWatchedDate: String = "" + var firstGameId: String = "" + var firstRomVersion: String = "" + var firstDataVersion: String = "" + override var firstPlayDate: String = "" + var lastGameId: String = "" + override var lastRomVersion: String = "" + var lastDataVersion: String = "" + var compatibleCmVersion: String = "" + override var lastPlayDate: String = "" + var lastPlaceId = 0 + var lastPlaceName: String = "" + var lastRegionId = 0 + var lastRegionName: String = "" + var lastAllNetId = 0 + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + override var lastClientId: String = "" + var lastUsedDeckId = 0 + var lastPlayMusicLevel = 0 + var lastEmoneyBrand = 0 + + // Re:Fresh + var shizukuCount = 0 + var newPlayerRating = 0 + var newHighestRating = 0 + var sumPlatinumScoreStar = 0 + var sumBasicPlatinumScoreStar = 0 + var sumAdvancedPlatinumScoreStar = 0 + var sumExpertPlatinumScoreStar = 0 + var sumMasterPlatinumScoreStar = 0 + var sumLunaticPlatinumScoreStar = 0 + + override val totalScore get() = sumTechHighScore +} + +@Entity(name = "OngekiUserActivity") +@Table( + name = "ongeki_user_activity", + uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "kind", "activity_id"])] +) +class UserActivity : OngekiUserEntity() { + var kind = 0 + @JsonProperty("id") + @Column(name = "activity_id") + var activityId = 0 + var sortNumber = 0 + var param1 = 0 + var param2 = 0 + var param3 = 0 + var param4 = 0 +} + +@Entity(name = "OngekiUserBoss") +@Table(name = "ongeki_user_boss") +class UserBoss : OngekiUserEntity() { + var musicId = 0 + var damage = 0 + var isClear = false + var eventId = 0 +} + +@Entity(name = "OngekiUserCard") +@Table(name = "ongeki_user_card") +class UserCard: OngekiUserEntity() { + var cardId = -1 + + var digitalStock = 1 + var analogStock = 0 + var level = 0 + var maxLevel = 10 + var exp = 0 + var printCount = 0 + var useCount = 0 + var isNew = true + var kaikaDate = "0000-00-00 00:00:00.0" + + var choKaikaDate = "0000-00-00 00:00:00.0" + + var skillId = 0 + var isAcquired = true + var created = "0000-00-00 00:00:00.0" +} + +@Entity(name = "OngekiUserChapter") +@Table(name = "ongeki_user_chapter") +class UserChapter : OngekiUserEntity() { + var chapterId = 0 + var jewelCount = 0 + var lastPlayMusicCategory = 0 + var lastPlayMusicId = 0 + var lastPlayMusicLevel = 0 + var isStoryWatched = false + var isClear = false + var skipTiming1 = 0 + var skipTiming2 = 0 +} + +@Entity(name = "OngekiUserCharacter") +@Table(name = "ongeki_user_character") +class UserCharacter : OngekiUserEntity() { + var characterId = 0 + var costumeId = 0 + var attachmentId = 0 + var playCount = 0 + var intimateLevel = 0 + var intimateCount = 0 + var intimateCountRewarded = 0 + var intimateCountDate: String = "" + var isNew = false +} + +@Entity(name = "OngekiUserDeck") +@Table(name = "ongeki_user_deck") +class UserDeck : OngekiUserEntity() { + var deckId = 0 + var cardId1 = 0 + var cardId2 = 0 + var cardId3 = 0 +} + +@Entity(name = "OngekiUserEventMusic") +@Table(name = "ongeki_user_event_music") +class UserEventMusic : OngekiUserEntity() { + var eventId = 0 + var type = 0 + var musicId = 0 + var level = 0 + var techScoreMax = 0 + var platinumScoreMax = 0 + var techRecordDate: String = "" + var isTechNewRecord: Boolean = false +} + +@Entity(name = "OngekiUserEventPoint") +@Table(name = "ongeki_user_event_point") + +class UserEventPoint : OngekiUserEntity() { + var eventId = 0 + var point: Long = 0 + var isRankingRewarded = false +} + +@Entity(name = "OngekiUserGeneralData") +@Table(name = "ongeki_user_general_data") +class UserGeneralData : OngekiUserEntity() { + var propertyKey = "" + @Column(columnDefinition = "TEXT") + var propertyValue = "" +} + +@Entity(name = "OngekiUserItem") +@Table(name = "ongeki_user_item") +class UserItem : OngekiUserEntity() { + var itemKind = 0 + var itemId = 0 + var stock = 0 + var isValid = false +} + +@Entity(name = "OngekiUserKop") +@Table(name = "ongeki_user_kop") +class UserKop : OngekiUserEntity() { + var authKey: String = "" + var kopId = 0 + var areaId = 0 + var totalTechScore = 0 + var totalPlatinumScore = 0 + var techRecordDate: String = "" + var isTotalTechNewRecord = false +} + +@Entity(name = "OngekiUserLoginBonus") +@Table(name = "ongeki_user_login_bonus") +class UserLoginBonus : OngekiUserEntity() { + var bonusId = 0 + var bonusCount = 0 + var lastUpdateDate: String = "" +} + +@Entity(name = "OngekiUserMemoryChapter") +@Table(name = "ongeki_user_memory_chapter") +class UserMemoryChapter : OngekiUserEntity() { + var chapterId = 0 + var jewelCount = 0 + var lastPlayMusicCategory = 0 + var lastPlayMusicId = 0 + var lastPlayMusicLevel = 0 + var isDialogWatched = false + var isStoryWatched = false + var isBossWatched = false + var isClear = false + var gaugeId = 0 + var gaugeNum = 0 + + // Re:Fresh + var isEndingWatched = false +} + +@Entity(name = "OngekiUserMissionPoint") +@Table(name = "ongeki_user_mission_point") +class UserMissionPoint : OngekiUserEntity() { + var eventId = 0 + var point: Long = 0 +} + +@Entity(name = "OngekiUserMusicDetail") +@Table(name = "ongeki_user_music_detail") +class UserMusicDetail : OngekiUserEntity(), IGenericUserMusic { + override var musicId: Int = 0 + var level = 0 + var playCount = 0 + var techScoreMax = 0 + var techScoreRank = 0 + var battleScoreMax = 0 + var battleScoreRank = 0 + var platinumScoreMax = 0 + var maxComboCount = 0 + var maxOverKill = 0 + var maxTeamOverKill = 0 + var isFullBell = false + var isFullCombo = false + var isAllBreake = false + var isLock = false + var clearStatus = 0 + var isStoryWatched = false + + // Re:Fresh + var platinumScoreStar = 0 +} + +@Entity(name = "OngekiUserMusicItem") +@Table(name = "ongeki_user_music_item") +class UserMusicItem : OngekiUserEntity() { + var musicId = 0 + var status = 0 +} + +@Entity(name = "OngekiUserOption") +@Table(name = "ongeki_user_option") +class UserOption : OngekiUserEntity() { + var optionSet = 0 + var speed = 0 + var mirror = 0 + var judgeTiming = 0 + var judgeAdjustment = 0 + var abort = 0 + var stealthField = 0 + var tapSound = 0 + var volGuide = 0 + var volAll = 0 + var volTap = 0 + var volCrTap = 0 + var volHold = 0 + var volSide = 0 + var volFlick = 0 + var volBell = 0 + var volEnemy = 0 + var volSkill = 0 + var volDamage = 0 + var colorField = 0 + var colorLaneBright = 0 + var colorWallBright = 0 + var colorLane = 0 + var colorSide = 0 + var effectDamage = 0 + var effectPos = 0 + var judgeDisp = 0 + var judgePos = 0 + var judgeBreak = 0 + var judgeHit = 0 + var platinumBreakDisp = 0 + var judgeCriticalBreak = 0 + var matching = 0 + var dispPlayerLv = 0 + var dispRating = 0 + var dispBP = 0 + var headphone = 0 + + // Re:Fresh + var effectAttack = 0 +} + + +@Entity(name = "OngekiUserPlaylog") +@Table(name = "ongeki_user_playlog") +class UserPlaylog : OngekiUserEntity(), IGenericGamePlaylog { + @JsonIgnore + @ManyToOne + @JoinColumn(name = "user_id") + override var user: UserData = UserData() + var sortNumber = 0 + var placeId = 0 + var placeName: String = "" + var playDate: String = "" + override var userPlayDate: String = "" + override var musicId: Int = 0 + override var level: Int = 0 + var playKind = 0 + var eventId = 0 + var eventName: String = "" + var eventPoint = 0 + var playedUserId1 = 0 + var playedUserId2 = 0 + var playedUserId3 = 0 + var playedUserName1: String = "" + var playedUserName2: String = "" + var playedUserName3: String = "" + var playedMusicLevel1 = 0 + var playedMusicLevel2 = 0 + var playedMusicLevel3 = 0 + var cardId1 = 0 + var cardId2 = 0 + var cardId3 = 0 + var cardLevel1 = 0 + var cardLevel2 = 0 + var cardLevel3 = 0 + var cardAttack1 = 0 + var cardAttack2 = 0 + var cardAttack3 = 0 + var bossCharaId = 0 + var bossLevel = 0 + var bossAttribute = 0 + var clearStatus = 0 + var techScore = 0 + var techScoreRank = 0 + var battleScore = 0 + var battleScoreRank = 0 + var platinumScore = 0 + override var maxCombo: Int = 0 + var judgeMiss = 0 + var judgeHit = 0 + var judgeBreak = 0 + var judgeCriticalBreak = 0 + var rateTap = 0 + var rateHold = 0 + var rateFlick = 0 + var rateSideTap = 0 + var rateSideHold = 0 + var bellCount = 0 + var totalBellCount = 0 + var damageCount = 0 + var overDamage = 0 + var isTechNewRecord = false + var isBattleNewRecord = false + var isOverDamageNewRecord = false + override var isFullCombo: Boolean = false + var isFullBell = false + var isAllBreak: Boolean = false + var playerRating: Int = 0 + + var battlePoint = 0 + + override val isAllPerfect get() = isAllBreak + override val beforeRating get() = playerRating + override val afterRating get() = playerRating + override val achievement get() = techScore +} + +@Entity(name = "OngekiUserRival") +@Table(name = "ongeki_user_rival") +class UserRival : OngekiUserEntity() { + @JoinColumn(name = "rival_user_ext_id") + @JsonProperty("rivalUserId") + var rivalUserExtId: Long = 0 +} + +@Entity(name = "OngekiUserScenario") +@Table(name = "ongeki_user_scenario") +class UserScenario : OngekiUserEntity() { + var scenarioId = 0 + var playCount = 0 +} + +@Entity(name = "OngekiUserStory") +@Table(name = "ongeki_user_story") +class UserStory : OngekiUserEntity() { + var storyId = 0 + var lastChapterId = 0 + var jewelCount = 0 + var lastPlayMusicId = 0 + var lastPlayMusicCategory = 0 + var lastPlayMusicLevel = 0 +} + +@Entity(name = "OngekiUserTechCount") +@Table(name = "ongeki_user_tech_count") +class UserTechCount : OngekiUserEntity() { + var levelId = 0 + var allBreakCount = 0 + var allBreakPlusCount = 0 +} + +@Entity(name = "OngekiUserTechEvent") +@Table(name = "ongeki_user_tech_event") +class UserTechEvent : OngekiUserEntity() { + var eventId = 0 + var totalTechScore = 0 + var totalPlatinumScore = 0 + var techRecordDate: String = "" + var isRankingRewarded = false + var isTotalTechNewRecord = false +} + +@Entity(name = "OngekiUserTradeItem") +@Table(name = "ongeki_user_trade_item") +class UserTradeItem : OngekiUserEntity() { + var chapterId = 0 + var tradeItemId = 0 + var tradeCount = 0 +} + +@Entity(name = "OngekiTrainingRoom") +@Table(name = "ongeki_user_training_room") +class UserTrainingRoom : OngekiUserEntity() { + var authKey: String = "" + var roomId: Int = 0 + var cardId: Int = 0 + var valueDate: String = "" +} + +// Re:Fresh +@Entity(name = "OngekiUserEventMap") +@Table(name = "ongeki_user_event_map") +class UserEventMap : OngekiUserEntity() { + var eventId = 0 + var mapId = 0 + var mapData: String? = null + var totalPoint = 0 + var totalUsePoint = 0 +} + +@Entity(name = "OngekiUserSkin") +@Table(name = "ongeki_user_skin") +class UserSkin : OngekiUserEntity() { + // TODO: should be updated on net when changing skin + var isValid = false + var deckId = 0 + var cardId1 = 0 + var cardId2 = 0 + var cardId3 = 0 +} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/GpProductID.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/GpProductID.java deleted file mode 100644 index fe00e53c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/GpProductID.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum GpProductID { - A_Credit1(0), - A_Credit2(1), - A_Credit3(2), - B_Credit1(3), - B_Credit2(4), - B_Credit3(5), - End(6); - - private int value; - - GpProductID(int i) { this.value = i; } - - @JsonValue - public int getValue() { - return this.value; - } - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/IdListType.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/IdListType.java deleted file mode 100644 index c7986c55..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/IdListType.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum IdListType { - Invalid, - NgMusic, - Recommend; - - @JsonValue - public int toValue() { - return ordinal(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/ItemType.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/ItemType.java deleted file mode 100644 index d4363a94..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/common/ItemType.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.common; - -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -public enum ItemType { - None, - Card, - NamePlate, - Trophy, - LimitBreakItem, - AlmightyJewel, - Money, - Music, - ProfileVoice, - Present, - ChapterJewel, - GachaTicket, - KaikaItem, - ExpUpItem, - IntimateUpItem, - BookItem, - SystemVoice, - Costume, - Medal, - Attachment, - UnlockItem, - Max; - - @JsonValue - public int toValue() { - return ordinal(); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameCard.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameCard.java deleted file mode 100644 index d52e37cf..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameCard.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGameCard") -@Table(name = "ongeki_game_card") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameCard implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; - - private String name; - - private String nickName; - - private String attribute; - - private int charaId; - - private String school; - - private String gakunen; - - private String rarity; - - // csv - private String levelParam; - - private int skillId; - - private int choKaikaSkillId; - - private String cardNumber; - - private String version; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameChara.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameChara.java deleted file mode 100644 index 84e47db2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameChara.java +++ /dev/null @@ -1,33 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGameChara") -@Table(name = "ongeki_game_chara") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameChara implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; - - private String name; - - private String cv; - - private int modelId; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameEvent.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameEvent.java deleted file mode 100644 index 7330dc38..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGameEvent") -@Table(name = "ongeki_game_event") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameEvent implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameMusic.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameMusic.java deleted file mode 100644 index 22a9d1f4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameMusic.java +++ /dev/null @@ -1,49 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGameMusic") -@Table(name = "ongeki_game_music") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameMusic implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; - - private String name; - - private String sortName; - - private String artistName; - - private String genre; - - private int bossCardId; - - private int bossLevel; - - private String level0; - - private String level1; - - private String level2; - - private String level3; - - private String level4; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GamePoint.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GamePoint.java deleted file mode 100644 index 29e2f281..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GamePoint.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import icu.samnyan.aqua.sega.ongeki.model.common.GpProductID; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGamePoint") -@Table(name = "ongeki_game_point", uniqueConstraints = {@UniqueConstraint(columnNames = {"type"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GamePoint implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @Enumerated(EnumType.ORDINAL) - private GpProductID type; - - private int cost; - - private String startDate = "2000-01-01 05:00:00.0"; - - private String endDate = "2099-01-01 05:00:00.0"; - - public GamePoint(GpProductID type, int cost) { - this.type = type; - this.cost = cost; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GamePresent.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GamePresent.java deleted file mode 100644 index 48e68f0a..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GamePresent.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGamePresent") -@Table(name = "ongeki_game_present") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GamePresent implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @Column(name = "id") - private long presentId; - - private String presentName; - - private int rewardId; - - // count - private int stock; - - // acquisitionCondition - private String message; - - private String startDate = "2000-01-01 05:00:00.0"; - - private String endDate = "2099-01-01 05:00:00.0"; - - public GamePresent(int presentId, String presentName, int rewardId, int stock, String message) { - this.presentId = presentId; - this.presentName = presentName; - this.rewardId = rewardId; - this.stock = stock; - this.message = message; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameReward.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameReward.java deleted file mode 100644 index 2ee9dcff..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameReward.java +++ /dev/null @@ -1,37 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import icu.samnyan.aqua.sega.ongeki.model.common.ItemType; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGameReward") -@Table(name = "ongeki_game_reward") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameReward implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @Column(name = "id") - private long rewardId; - - @Enumerated(EnumType.ORDINAL) - private ItemType itemKind; - - private int itemId; - - public GameReward(int rewardId, ItemType itemKind, int itemId) { - this.rewardId = rewardId; - this.itemKind = itemKind; - this.itemId = itemId; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameSkill.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameSkill.java deleted file mode 100644 index 4191d498..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/GameSkill.java +++ /dev/null @@ -1,33 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Table; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiGameSkill") -@Table(name = "ongeki_game_skill") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class GameSkill implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - private long id; - - private String name; - - private String category; - - private String info; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/OngekiFumenScore.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/OngekiFumenScore.java deleted file mode 100644 index ceedea12..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/gamedata/OngekiFumenScore.java +++ /dev/null @@ -1,17 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.gamedata; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class OngekiFumenScore { - private int musicId; - private int difficultId; - private String romVersionCode; - private int score; - public int platinumScoreMax; - public int platinumScoreStar; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java deleted file mode 100644 index e24b437e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java +++ /dev/null @@ -1,172 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.request; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; -import icu.samnyan.aqua.sega.ongeki.model.gamedata.OngekiFumenScore; -import icu.samnyan.aqua.sega.ongeki.model.userdata.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UpsertUserAll implements Serializable { - - private List userData; - - private List userOption; - - private List userPlaylogList; - - private List> userJewelboostlogList; - - private List> userSessionlogList; - - private List userActivityList; - - private List userRecentRatingList; - - private List userBpBaseList; - - private List userRatingBaseBestNewList; - - private List userRatingBaseBestList; - - private List userRatingBaseHotList; - - private List userRatingBaseNextNewList; - - private List userRatingBaseNextList; - - private List userRatingBaseHotNextList; - - private List userNewRatingBasePScoreList; - - private List userNewRatingBaseBestList; - - private List userNewRatingBaseBestNewList; - - private List userNewRatingBaseNextPScoreList; - - private List userNewRatingBaseNextBestList; - - private List userNewRatingBaseNextBestNewList; - - private List userMusicDetailList; - - private List userCharacterList; - - private List userCardList; - - private List userDeckList; - - private List userTrainingRoomList; - - private List userStoryList; - - private List userChapterList; - - private List userMemoryChapterList; - - private List userItemList; - - private List userMusicItemList; - - private List userLoginBonusList; - - private List userEventPointList; - - private List userMissionPointList; - - private List> userRatinglogList; - - private List userBossList; - - private List userTechCountList; - - private List userScenarioList; - - private List userTradeItemList; - - private List userEventMusicList; - - private List userTechEventList; - - private List userKopList; - - public UserEventMap userEventMap; - - private Map clientSystemInfo; - - @JsonProperty("isNewMusicDetailList") - private String isNewMusicDetailList; - - @JsonProperty("isNewCharacterList") - private String isNewCharacterList; - - @JsonProperty("isNewCardList") - private String isNewCardList; - - @JsonProperty("isNewDeckList") - private String isNewDeckList; - - @JsonProperty("isNewTrainingRoomList") - private String isNewTrainingRoomList; - - @JsonProperty("isNewStoryList") - private String isNewStoryList; - - @JsonProperty("isNewChapterList") - private String isNewChapterList; - - @JsonProperty("isNewMemoryChapterList") - private String isNewMemoryChapterList; - - @JsonProperty("isNewItemList") - private String isNewItemList; - - @JsonProperty("isNewMusicItemList") - private String isNewMusicItemList; - - @JsonProperty("isNewLoginBonusList") - private String isNewLoginBonusList; - - @JsonProperty("isNewEventPointList") - private String isNewEventPointList; - - @JsonProperty("isNewMissionPointList") - private String isNewMissionPointList; - - @JsonProperty("isNewRatinglogList") - private String isNewRatinglogList; - - @JsonProperty("isNewBossList") - private String isNewBossList; - - @JsonProperty("isNewTechCountList") - private String isNewTechCountList; - - @JsonProperty("isNewScenarioList") - private String isNewScenarioList; - - @JsonProperty("isNewTradeItemList") - private String isNewTradeItemList; - - @JsonProperty("isNewEventMusicList") - private String isNewEventMusicList; - - @JsonProperty("isNewTechEventList") - private String isNewTechEventList; - - @JsonProperty("isNewKopList") - private String isNewKopList; - -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/CodeResp.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/CodeResp.java deleted file mode 100644 index 50a60cd8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/CodeResp.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class CodeResp { - private int returnCode; - private String apiName; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetGameSettingResp.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetGameSettingResp.java deleted file mode 100644 index 650e7d00..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetGameSettingResp.java +++ /dev/null @@ -1,21 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.sega.ongeki.model.response.data.GameSetting; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetGameSettingResp { - private GameSetting gameSetting; - @JsonProperty("isDumpUpload") - private boolean isDumpUpload; - @JsonProperty("isAou") - private boolean isAou; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetUserPreviewResp.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetUserPreviewResp.java deleted file mode 100644 index 7fe63eb8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/GetUserPreviewResp.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GetUserPreviewResp { - - private long userId = 0; - @JsonProperty("isLogin") - private boolean isLogin = false; - private String lastLoginDate = null; - private String userName = ""; - private int reincarnationNum = 0; - private int level = 0; - private long exp = 0; - private long playerRating = 0; - private long newPlayerRating = 0; - private String lastGameId = ""; - private String lastRomVersion = ""; - private String lastDataVersion = ""; - private String lastPlayDate = null; - private int nameplateId = 0; - private int trophyId = 0; - private int cardId = 0; - private int dispPlayerLv = 0; - private int dispRating = 0; - private int dispBP = 0; - private int headphone = 0; - private int banStatus = 0; - @JsonProperty("isWarningConfirmed") - private boolean isWarningConfirmed = false; - private int lastEmoneyBrand = 0; - private int lastEmoneyCredit = 0; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameEventItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameEventItem.java deleted file mode 100644 index c8c6aba2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameEventItem.java +++ /dev/null @@ -1,18 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameEventItem { - private long id; - private int type; - private String startDate; - private String endDate; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameIdListItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameIdListItem.java deleted file mode 100644 index 3eed677e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameIdListItem.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameIdListItem { - private int id; - private int type; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameRankingItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameRankingItem.java deleted file mode 100644 index 59e2e4e8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameRankingItem.java +++ /dev/null @@ -1,20 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * Fro getGameRanking request - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameRankingItem { - private long id; - // this 2 field never use in game code, - // maybe for the future update like in game player ranking - private long point; - private String userName; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameSetting.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameSetting.java deleted file mode 100644 index d6ef6d52..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/GameSetting.java +++ /dev/null @@ -1,31 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class GameSetting { - private String dataVersion; - private String onlineDataVersion; - @JsonProperty("isMaintenance") - private boolean isMaintenance; - private int requestInterval; - private String rebootStartTime; - private String rebootEndTime; - @JsonProperty("isBackgroundDistribute") - private boolean isBackgroundDistribute; - private int maxCountCharacter; - private int maxCountCard; - private int maxCountItem; - private int maxCountMusic; - private int maxCountMusicItem; - private int maxCountRivalMusic; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserEventRankingItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserEventRankingItem.java deleted file mode 100644 index 46b7f3f7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserEventRankingItem.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserEventRankingItem { - private int eventId; - private int type; - private String date; - private int rank; - private long point; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserMusicListItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserMusicListItem.java deleted file mode 100644 index 4c4b80a1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserMusicListItem.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicDetail; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserMusicListItem { - private int length; - private List userMusicDetailList; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserRivalData.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserRivalData.java deleted file mode 100644 index 6e1ae559..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserRivalData.java +++ /dev/null @@ -1,16 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserRivalData { - private long rivalUserId; - private String rivalUserName; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserRivalMusic.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserRivalMusic.java deleted file mode 100644 index 3dd0e4ca..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserRivalMusic.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserMusicDetail; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserRivalMusic { - private List userRivalMusicDetailList; - private int length; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserTechEventRankingItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserTechEventRankingItem.java deleted file mode 100644 index f56539ed..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/response/data/UserTechEventRankingItem.java +++ /dev/null @@ -1,19 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.response.data; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class UserTechEventRankingItem { - private int eventId; - private String date; - private int rank; - private int totalTechScore; - private int totalPlatinumScore; -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserActivity.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserActivity.java deleted file mode 100644 index 16fbe054..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserActivity.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserActivity") -@Table(name = "ongeki_user_activity", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "kind", "activity_id"})}) -@Data -@NoArgsConstructor -@AllArgsConstructor -@JsonPropertyOrder({"kind", "id", "sortNumber", "param1", "param2", "param3", "param4"}) -public class UserActivity implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int kind; - - @JsonProperty("id") - @Column(name = "activity_id") - private int activityId; - - private int sortNumber; - - private int param1; - - private int param2; - - private int param3; - - private int param4; - - public UserActivity(UserData userData) { - user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserBoss.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserBoss.java deleted file mode 100644 index 3cd61e09..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserBoss.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserBoss") -@Table(name = "ongeki_user_boss") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserBoss implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int musicId; - - private int damage; - - @JsonProperty("isClear") - private boolean isClear; - - private int eventId; - - public UserBoss(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserCard.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserCard.java deleted file mode 100644 index 917bbb38..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserCard.java +++ /dev/null @@ -1,74 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserCard") -@Table(name = "ongeki_user_card") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserCard implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int cardId = -1; - - private int digitalStock = 1; - - private int analogStock = 0; - - private int level = 0; - - private int maxLevel = 10; - - private int exp = 0; - - private int printCount = 0; - - private int useCount = 0; - - @JsonProperty("isNew") - private boolean isNew = true; - - private String kaikaDate = "0000-00-00 00:00:00.0"; - - private String choKaikaDate = "0000-00-00 00:00:00.0"; - - private int skillId; - - @JsonProperty("isAcquired") - private boolean isAcquired = true; - - private String created = "0000-00-00 00:00:00.0"; - - public UserCard(UserData userData) { - this.user = userData; - } - - public UserCard(UserData userData, int cardId, int skillId, String created) { - this.user = userData; - this.cardId = cardId; - this.skillId = skillId; - this.created = created; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserChapter.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserChapter.java deleted file mode 100644 index c7b1e562..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserChapter.java +++ /dev/null @@ -1,57 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserChapter") -@Table(name = "ongeki_user_chapter") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserChapter implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int chapterId; - - private int jewelCount; - - private int lastPlayMusicCategory; - - private int lastPlayMusicId; - - private int lastPlayMusicLevel; - - @JsonProperty("isStoryWatched") - private boolean isStoryWatched; - - @JsonProperty("isClear") - private boolean isClear; - - private int skipTiming1; - - private int skipTiming2; - - public UserChapter(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserCharacter.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserCharacter.java deleted file mode 100644 index 27f2a4d1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserCharacter.java +++ /dev/null @@ -1,56 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserCharacter") -@Table(name = "ongeki_user_character") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserCharacter implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int characterId; - - private int costumeId; - - private int attachmentId; - - private int playCount; - - private int intimateLevel; - - private int intimateCount; - - private int intimateCountRewarded; - - private String intimateCountDate; - - @JsonProperty("isNew") - private boolean isNew; - - public UserCharacter(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserData.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserData.java deleted file mode 100644 index 7dbff99f..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserData.java +++ /dev/null @@ -1,183 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import icu.samnyan.aqua.net.games.IUserData; -import icu.samnyan.aqua.sega.general.model.Card; -import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserData") -@Table(name = "ongeki_user_data") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserData implements Serializable, IUserData { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonSerialize(using = AccessCodeSerializer.class) - @JsonProperty(value = "accessCode", access = JsonProperty.Access.READ_ONLY) - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "aime_card_id", unique = true) - private Card card; - - private String userName; - - private int level; - - private int reincarnationNum; - - private long exp; - - private long point; - - private long totalPoint; - - private int playCount; - - private int jewelCount; - - private int totalJewelCount; - - private int medalCount; - - private int shizukuCount; - - private int playerRating; - - private int highestRating; - - private int newPlayerRating; - - private int newHighestRating; - - private int battlePoint; - - private int bestBattlePoint; - - private int overDamageBattlePoint; - - @JsonProperty("isDialogWatchedSuggestMemory") - private boolean isDialogWatchedSuggestMemory; - - private int nameplateId; - - private int trophyId; - - private int cardId; - - private int characterId; - - private int characterVoiceNo; - - private int tabSetting; - - private int tabSortSetting; - - private int cardCategorySetting; - - private int cardSortSetting; - - private int rivalScoreCategorySetting; - - private int playedTutorialBit; - - private int firstTutorialCancelNum; - - private long sumTechHighScore; - - private long sumTechBasicHighScore; - - private long sumTechAdvancedHighScore; - - private long sumTechExpertHighScore; - - private long sumTechMasterHighScore; - - private long sumTechLunaticHighScore; - - private long sumBattleHighScore; - - private long sumBattleBasicHighScore; - - private long sumBattleAdvancedHighScore; - - private long sumBattleExpertHighScore; - - private long sumBattleMasterHighScore; - - private long sumBattleLunaticHighScore; - - private int sumPlatinumScoreStar; - - private int sumBasicPlatinumScoreStar; - - private int sumAdvancedPlatinumScoreStar; - - private int sumExpertPlatinumScoreStar; - - private int sumMasterPlatinumScoreStar; - - private int sumLunaticPlatinumScoreStar; - - private String eventWatchedDate; - - private String cmEventWatchedDate; - - private String firstGameId; - - private String firstRomVersion; - - private String firstDataVersion; - - private String firstPlayDate; - - private String lastGameId; - - private String lastRomVersion; - - private String lastDataVersion; - - private String compatibleCmVersion; - - private String lastPlayDate; - - private int lastPlaceId; - - private String lastPlaceName; - - private int lastRegionId; - - private String lastRegionName; - - private int lastAllNetId; - - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String lastClientId; - - private int lastUsedDeckId; - - private int lastPlayMusicLevel; - - private int lastEmoneyBrand; - - @Override - public long getTotalScore() { - return sumTechHighScore; - } -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserDeck.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserDeck.java deleted file mode 100644 index 67ba2afc..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserDeck.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserDeck") -@Table(name = "ongeki_user_deck") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserDeck implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int deckId; - - private int cardId1; - - private int cardId2; - - private int cardId3; - - public UserDeck(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventMap.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventMap.java deleted file mode 100644 index 0a841a9d..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventMap.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserEventMap") -@Table(name = "ongeki_user_event_map") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserEventMap implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int eventId; - - private int mapId; - - private String mapData; - - private int totalPoint; - - private int totalUsePoint; - - public UserEventMap(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventMusic.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventMusic.java deleted file mode 100644 index 2c1251db..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventMusic.java +++ /dev/null @@ -1,55 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserEventMusic") -@Table(name = "ongeki_user_event_music") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserEventMusic implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int eventId; - - private int type; - - private int musicId; - - private int level; - - private int techScoreMax; - - private int platinumScoreMax; - - public String techRecordDate; - - @JsonProperty("isTechNewRecord") - public boolean isTechNewRecord; - - public UserEventMusic(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventPoint.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventPoint.java deleted file mode 100644 index d8d7fe4c..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserEventPoint.java +++ /dev/null @@ -1,45 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * For chapter event. - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserEventPoint") -@Table(name = "ongeki_user_event_point") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserEventPoint implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int eventId; - - private long point; - - @JsonProperty("isRankingRewarded") - private boolean isRankingRewarded; - - public UserEventPoint(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserGeneralData.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserGeneralData.java deleted file mode 100644 index 8dbf73eb..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserGeneralData.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * This is for storing some data only use in aqua - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserGeneralData") -@Table(name = "ongeki_user_general_data") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserGeneralData implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private String propertyKey; - - @Column(columnDefinition = "TEXT") - private String propertyValue; - - public UserGeneralData(UserData userData, String key) { - this.user = userData; - this.propertyKey = key; - this.propertyValue = ""; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserItem.java deleted file mode 100644 index 1162bbe7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserItem.java +++ /dev/null @@ -1,46 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserItem") -@Table(name = "ongeki_user_item") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserItem implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int itemKind; - - private int itemId; - - private int stock; - - @JsonProperty("isValid") - private boolean isValid; - - public UserItem(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserKop.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserKop.java deleted file mode 100644 index e3f603c9..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserKop.java +++ /dev/null @@ -1,53 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserKop") -@Table(name = "ongeki_user_kop") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserKop implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private String authKey; - - private int kopId; - - private int areaId; - - private int totalTechScore; - - private int totalPlatinumScore; - - private String techRecordDate; - - @JsonProperty("isTotalTechNewRecord") - private boolean isTotalTechNewRecord; - - public UserKop(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserLoginBonus.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserLoginBonus.java deleted file mode 100644 index b2033b7e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserLoginBonus.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserLoginBonus") -@Table(name = "ongeki_user_login_bonus") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserLoginBonus implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int bonusId; - - private int bonusCount; - - private String lastUpdateDate; - - public UserLoginBonus(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMemoryChapter.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMemoryChapter.java deleted file mode 100644 index 2ed5a1d2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMemoryChapter.java +++ /dev/null @@ -1,66 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserMemoryChapter") -@Table(name = "ongeki_user_memory_chapter") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserMemoryChapter implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int chapterId; - - private int jewelCount; - - private int lastPlayMusicCategory; - - private int lastPlayMusicId; - - private int lastPlayMusicLevel; - - @JsonProperty("isDialogWatched") - private boolean isDialogWatched; - - @JsonProperty("isStoryWatched") - private boolean isStoryWatched; - - @JsonProperty("isBossWatched") - private boolean isBossWatched; - - @JsonProperty("isEndingWatched") - private boolean isEndingWatched; - - @JsonProperty("isClear") - private boolean isClear; - - private int gaugeId; - - private int gaugeNum; - - public UserMemoryChapter(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMissionPoint.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMissionPoint.java deleted file mode 100644 index fe6d134e..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMissionPoint.java +++ /dev/null @@ -1,41 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * For mission event - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserMissionPoint") -@Table(name = "ongeki_user_mission_point") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserMissionPoint implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int eventId; - - private long point; - - public UserMissionPoint(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMusicDetail.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMusicDetail.java deleted file mode 100644 index 4496bee2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMusicDetail.java +++ /dev/null @@ -1,78 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.net.games.IGenericUserMusic; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserMusicDetail") -@Table(name = "ongeki_user_music_detail") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserMusicDetail implements Serializable, IGenericUserMusic { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int musicId; - - private int level; - - private int playCount; - - private int techScoreMax; - - private int techScoreRank; - - private int battleScoreMax; - - private int battleScoreRank; - - private int platinumScoreMax; - - private int platinumScoreStar; - - private int maxComboCount; - - private int maxOverKill; - - private int maxTeamOverKill; - - @JsonProperty("isFullBell") - private boolean isFullBell; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - @JsonProperty("isAllBreake") - private boolean isAllBreake; - - @JsonProperty("isLock") - private boolean isLock; - - private int clearStatus; - - private boolean isStoryWatched; - - public UserMusicDetail(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMusicItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMusicItem.java deleted file mode 100644 index f58fe6c1..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserMusicItem.java +++ /dev/null @@ -1,40 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserMusicItem") -@Table(name = "ongeki_user_music_item") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserMusicItem implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int musicId; - - private int status; - - public UserMusicItem(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserOption.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserOption.java deleted file mode 100644 index 94739ba4..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserOption.java +++ /dev/null @@ -1,112 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserOption") -@Table(name = "ongeki_user_option") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserOption implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int optionSet; - - private int speed; - - private int mirror; - - private int judgeTiming; - - private int judgeAdjustment; - - private int abort; - - private int stealthField; - - private int tapSound; - - private int volGuide; - - private int volAll; - - private int volTap; - - private int volCrTap; - - private int volHold; - - private int volSide; - - private int volFlick; - - private int volBell; - - private int volEnemy; - - private int volSkill; - - private int volDamage; - - private int colorField; - - private int colorLaneBright; - - private int colorWallBright; - - private int colorLane; - - private int colorSide; - - private int effectDamage; - - private int effectPos; - - private int effectAttack; - - private int judgeDisp; - - private int judgePos; - - private int judgeBreak; - - private int judgeHit; - - private int platinumBreakDisp; - - private int judgeCriticalBreak; - - private int matching; - - private int dispPlayerLv; - - private int dispRating; - - private int dispBP; - - private int headphone; - - public UserOption(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java deleted file mode 100644 index a16ac519..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java +++ /dev/null @@ -1,180 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import icu.samnyan.aqua.net.games.IGenericGamePlaylog; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserPlaylog") -@Table(name = "ongeki_user_playlog") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserPlaylog implements Serializable, IGenericGamePlaylog { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int sortNumber; - - private int placeId; - - private String placeName; - - private String playDate; - - private String userPlayDate; - - private int musicId; - - private int level; - - private int playKind; - - private int eventId; - - private String eventName; - - private int eventPoint; - - private int playedUserId1; - - private int playedUserId2; - - private int playedUserId3; - - private String playedUserName1; - - private String playedUserName2; - - private String playedUserName3; - - private int playedMusicLevel1; - - private int playedMusicLevel2; - - private int playedMusicLevel3; - - private int cardId1; - - private int cardId2; - - private int cardId3; - - private int cardLevel1; - - private int cardLevel2; - - private int cardLevel3; - - private int cardAttack1; - - private int cardAttack2; - - private int cardAttack3; - - private int bossCharaId; - - private int bossLevel; - - private int bossAttribute; - - private int clearStatus; - - private int techScore; - - private int techScoreRank; - - private int battleScore; - - private int battleScoreRank; - - private int platinumScore; - - private int maxCombo; - - private int judgeMiss; - - private int judgeHit; - - private int judgeBreak; - - private int judgeCriticalBreak; - - private int rateTap; - - private int rateHold; - - private int rateFlick; - - private int rateSideTap; - - private int rateSideHold; - - private int bellCount; - - private int totalBellCount; - - private int damageCount; - - private int overDamage; - - @JsonProperty("isTechNewRecord") - private boolean isTechNewRecord; - - @JsonProperty("isBattleNewRecord") - private boolean isBattleNewRecord; - - @JsonProperty("isOverDamageNewRecord") - private boolean isOverDamageNewRecord; - - @JsonProperty("isFullCombo") - private boolean isFullCombo; - - @JsonProperty("isFullBell") - private boolean isFullBell; - - @JsonProperty("isAllBreak") - private boolean isAllBreak; - - private int playerRating; - - private int battlePoint; - - @Override - public int getAchievement() { - return techScore; - } - - @Override - public int getAfterRating() { - return playerRating; - } - - @Override - public int getBeforeRating() { - return playerRating; // TODO: Get before rating - } - - @Override - public boolean isAllPerfect() { - return isAllBreak; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserRival.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserRival.java deleted file mode 100644 index ff469bf0..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserRival.java +++ /dev/null @@ -1,36 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserRival") -@Table(name = "ongeki_user_rival") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserRival implements Serializable { - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @ManyToOne - @JsonIgnore - @JoinColumn(name = "user_id") - private UserData user; - - @JoinColumn(name = "rival_user_ext_id") - @JsonProperty("rivalUserId") - private long rivalUserExtId; -} \ No newline at end of file diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserScenario.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserScenario.java deleted file mode 100644 index adbdb0c8..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserScenario.java +++ /dev/null @@ -1,40 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserScenario") -@Table(name = "ongeki_user_scenario") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserScenario implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int scenarioId; - - private int playCount; - - public UserScenario(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java deleted file mode 100644 index d0c35d51..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java +++ /dev/null @@ -1,47 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserSkin") -@Table(name = "ongeki_user_skin") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserSkin implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - //TODO: should be updated on net when changing skin - private boolean isValid; - - private int deckId; - - private int cardId1; - - private int cardId2; - - private int cardId3; - - public UserSkin(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java deleted file mode 100644 index eb15d966..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserStory.java +++ /dev/null @@ -1,48 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserStory") -@Table(name = "ongeki_user_story") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserStory implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int storyId; - - private int lastChapterId; - - private int jewelCount; - - private int lastPlayMusicId; - - private int lastPlayMusicCategory; - - private int lastPlayMusicLevel; - - public UserStory(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTechCount.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTechCount.java deleted file mode 100644 index 4ce44fd7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTechCount.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserTechCount") -@Table(name = "ongeki_user_tech_count") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserTechCount implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int levelId; - - private int allBreakCount; - - private int allBreakPlusCount; - - public UserTechCount(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTechEvent.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTechEvent.java deleted file mode 100644 index ecee06b3..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTechEvent.java +++ /dev/null @@ -1,52 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserTechEvent") -@Table(name = "ongeki_user_tech_event") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserTechEvent implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int eventId; - - private int totalTechScore; - - private int totalPlatinumScore; - - private String techRecordDate; - - @JsonProperty("isRankingRewarded") - private boolean isRankingRewarded; - - @JsonProperty("isTotalTechNewRecord") - private boolean isTotalTechNewRecord; - - public UserTechEvent(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTradeItem.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTradeItem.java deleted file mode 100644 index 391123b7..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTradeItem.java +++ /dev/null @@ -1,42 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiUserTradeItem") -@Table(name = "ongeki_user_trade_item") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserTradeItem implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - private int chapterId; - - private int tradeItemId; - - private int tradeCount; - - public UserTradeItem(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTrainingRoom.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTrainingRoom.java deleted file mode 100644 index 09a0af95..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserTrainingRoom.java +++ /dev/null @@ -1,44 +0,0 @@ -package icu.samnyan.aqua.sega.ongeki.model.userdata; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import jakarta.persistence.*; -import java.io.Serializable; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@Entity(name = "OngekiTrainingRoom") -@Table(name = "ongeki_user_training_room") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class UserTrainingRoom implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @JsonIgnore - private long id; - - @JsonIgnore - @ManyToOne - @JoinColumn(name = "user_id") - private UserData user; - - public String authKey; - - public int roomId; - - public int cardId; - - public String valueDate; - - public UserTrainingRoom(UserData userData) { - this.user = userData; - } -} diff --git a/src/main/resources/db/V1000_39__net_country_override.sql b/src/main/resources/db/40/V1000_39__net_country_override.sql similarity index 100% rename from src/main/resources/db/V1000_39__net_country_override.sql rename to src/main/resources/db/40/V1000_39__net_country_override.sql diff --git a/src/main/resources/db/40/V1000_42__ongeki_refresh.sql b/src/main/resources/db/80/V1000_42__ongeki_refresh.sql similarity index 100% rename from src/main/resources/db/40/V1000_42__ongeki_refresh.sql rename to src/main/resources/db/80/V1000_42__ongeki_refresh.sql diff --git a/src/main/resources/db/80/V1000_43__ongeki_unique.sql b/src/main/resources/db/80/V1000_43__ongeki_unique.sql new file mode 100644 index 00000000..9b7bb66b --- /dev/null +++ b/src/main/resources/db/80/V1000_43__ongeki_unique.sql @@ -0,0 +1,145 @@ +# Delete duplicate rows + +-- UserMusicDetailList +DELETE FROM ongeki_user_music_detail +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_music_detail + GROUP BY user_id, music_id, level +); + +-- UserCharacterList +DELETE FROM ongeki_user_character +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_character + GROUP BY user_id, character_id +); + +-- UserCardList +DELETE FROM ongeki_user_card +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_card + GROUP BY user_id, card_id +); + +-- UserDeckList +DELETE FROM ongeki_user_deck +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_deck + GROUP BY user_id, deck_id +); + +-- UserTrainingRoomList +DELETE FROM ongeki_user_training_room +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_training_room + GROUP BY user_id, room_id +); + +-- UserChapterList +DELETE FROM ongeki_user_chapter +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_chapter + GROUP BY user_id, chapter_id +); + +-- UserMemoryChapterList +DELETE FROM ongeki_user_memory_chapter +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_memory_chapter + GROUP BY user_id, chapter_id +); + +-- UserItemList +DELETE FROM ongeki_user_item +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_item + GROUP BY user_id, item_kind, item_id +); + +-- UserMusicItemList +DELETE FROM ongeki_user_music_item +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_music_item + GROUP BY user_id, music_id +); + +-- UserLoginBonusList +DELETE FROM ongeki_user_login_bonus +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_login_bonus + GROUP BY user_id, bonus_id +); + +-- UserEventPointList +DELETE FROM ongeki_user_event_point +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_event_point + GROUP BY user_id, event_id +); + +-- UserMissionPointList +DELETE FROM ongeki_user_mission_point +WHERE id NOT IN ( + SELECT MAX(id) + FROM ongeki_user_mission_point + GROUP BY user_id, event_id +); + +-- UserMusicDetailList +ALTER TABLE ongeki_user_music_detail + ADD UNIQUE KEY uniq_user_music_level (user_id, music_id, level); + +-- UserCharacterList +ALTER TABLE ongeki_user_character + ADD UNIQUE KEY uniq_user_character (user_id, character_id); + +-- UserCardList +ALTER TABLE ongeki_user_card + ADD UNIQUE KEY uniq_user_card (user_id, card_id); + +-- UserDeckList +ALTER TABLE ongeki_user_deck + ADD UNIQUE KEY uniq_user_deck (user_id, deck_id); + +-- UserTrainingRoomList +ALTER TABLE ongeki_user_training_room + ADD UNIQUE KEY uniq_user_room (user_id, room_id); + +-- UserChapterList +ALTER TABLE ongeki_user_chapter + ADD UNIQUE KEY uniq_user_chapter (user_id, chapter_id); + +-- UserMemoryChapterList +ALTER TABLE ongeki_user_memory_chapter + ADD UNIQUE KEY uniq_user_mem_chapter (user_id, chapter_id); + +-- UserItemList +ALTER TABLE ongeki_user_item + ADD UNIQUE KEY uniq_user_item (user_id, item_kind, item_id); + +-- UserMusicItemList +ALTER TABLE ongeki_user_music_item + ADD UNIQUE KEY uniq_user_music_item (user_id, music_id); + +-- UserLoginBonusList +ALTER TABLE ongeki_user_login_bonus + ADD UNIQUE KEY uniq_user_login_bonus (user_id, bonus_id); + +-- UserEventPointList +ALTER TABLE ongeki_user_event_point + ADD UNIQUE KEY uniq_user_event_point (user_id, event_id); + +-- UserMissionPointList +ALTER TABLE ongeki_user_mission_point + ADD UNIQUE KEY uniq_user_mission_point (user_id, event_id); diff --git a/src/main/resources/db/40/V1000_44__ongeki_refresh_a016.sql b/src/main/resources/db/80/V1000_44__ongeki_refresh_a016.sql similarity index 100% rename from src/main/resources/db/40/V1000_44__ongeki_refresh_a016.sql rename to src/main/resources/db/80/V1000_44__ongeki_refresh_a016.sql diff --git a/src/main/resources/db/README.md b/src/main/resources/db/README.md new file mode 100644 index 00000000..75ba4cfb --- /dev/null +++ b/src/main/resources/db/README.md @@ -0,0 +1,12 @@ +About placing SQL files: + +File should be named `V1000_{version}__{description}.sql` where: +- `{version}` is the sequential ID, please pick the next available number +- `{description}` is a short description of the change + +The folders are grouped by 40 changes each, please put the files in the correct folder according to the version number: +- `db/40` : 1-40 +- `db/80` : 41-80 +- etc. + +(this is to avoid having to scroll through a huge list of files when looking for a specific change)