diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java index efe65bda..fa1edd9a 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserCourseHandler.java @@ -12,6 +12,7 @@ import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -36,20 +37,27 @@ public class GetUserCourseHandler implements BaseHandler { public String handle(Map request) throws JsonProcessingException { String userId = (String) request.get("userId"); - int nextIndex = Integer.parseInt((String) request.get("nextIndex")); - int maxCount = Integer.parseInt((String) request.get("maxCount")); - - int pageNum = nextIndex / maxCount; - - Page dbPage = userCourseService.getByUser(userId, pageNum, maxCount); - - long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); - Map resultMap = new LinkedHashMap<>(); resultMap.put("userId", userId); - resultMap.put("length", dbPage.getNumberOfElements()); - resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); - resultMap.put("userCourseList", dbPage.getContent()); + + if(request.containsKey("nextIndex")) { + int nextIndex = Integer.parseInt((String) request.get("nextIndex")); + int maxCount = Integer.parseInt((String) request.get("maxCount")); + + int pageNum = nextIndex / maxCount; + + Page dbPage = userCourseService.getByUser(userId, pageNum, maxCount); + + long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements(); + + resultMap.put("length", dbPage.getNumberOfElements()); + resultMap.put("nextIndex", dbPage.getNumberOfElements() < maxCount ? -1 : currentIndex); + resultMap.put("userCourseList", dbPage.getContent()); + } else { + List courseList = userCourseService.getAllByUser(userId); + resultMap.put("length", courseList.size()); + resultMap.put("userCourseList", courseList); + } String json = mapper.write(resultMap); logger.info("Response: " + json); diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java index cc1f9e56..b8c17d45 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserDataHandler.java @@ -8,6 +8,7 @@ import icu.samnyan.aqua.sega.util.jackson.StringMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.LinkedHashMap; @@ -26,10 +27,22 @@ public class GetUserDataHandler implements BaseHandler { private final UserDataService userDataService; + private final boolean overwriteVersion; + private final String romVersion; + private final String dataVersion; + @Autowired - public GetUserDataHandler(StringMapper mapper, UserDataService userDataService) { + public GetUserDataHandler(StringMapper mapper, + UserDataService userDataService, + @Value("${game.chunithm.overwrite-version}") boolean overwriteVersion, + @Value("${game.chunithm.rom-version}") String romVersion, + @Value("${game.chunithm.data-version}") String dataVersion + ) { this.mapper = mapper; this.userDataService = userDataService; + this.overwriteVersion = overwriteVersion; + this.romVersion = romVersion; + this.dataVersion = dataVersion; } @Override @@ -40,7 +53,13 @@ public class GetUserDataHandler implements BaseHandler { if (userDataOptional.isPresent()) { Map resultMap = new LinkedHashMap<>(); resultMap.put("userId", userId); - resultMap.put("userData", userDataOptional.get()); + UserData user = userDataOptional.get(); + + if (overwriteVersion) { + user.setLastRomVersion(romVersion); + user.setLastDataVersion(dataVersion); + } + resultMap.put("userData", user); String json = mapper.write(resultMap); logger.info("Response: " + json); return json; diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java index cb159d31..1def9cfe 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/handler/impl/GetUserPreviewHandler.java @@ -13,6 +13,7 @@ import icu.samnyan.aqua.sega.util.jackson.StringMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Map; @@ -36,18 +37,33 @@ public class GetUserPreviewHandler implements BaseHandler { private final UserCharacterService userCharacterService; private final UserGameOptionService userGameOptionService; + private final boolean overwriteVersion; + private final String romVersion; + private final String dataVersion; + @Autowired - public GetUserPreviewHandler(StringMapper mapper, UserDataService userDataService, UserCharacterService userCharacterService, UserGameOptionService userGameOptionService) { + public GetUserPreviewHandler(StringMapper mapper, + UserDataService userDataService, + UserCharacterService userCharacterService, + UserGameOptionService userGameOptionService, + @Value("${game.chunithm.overwrite-version}") boolean overwriteVersion, + @Value("${game.chunithm.rom-version}") String romVersion, + @Value("${game.chunithm.data-version}") String dataVersion + ) { this.mapper = mapper; this.userDataService = userDataService; this.userCharacterService = userCharacterService; this.userGameOptionService = userGameOptionService; + this.overwriteVersion = overwriteVersion; + this.romVersion = romVersion; + this.dataVersion = dataVersion; } @Override public String handle(Map request) throws JsonProcessingException { String userId = (String) request.get("userId"); + Optional userData = userDataService.getUserByExtId(userId); if (userData.isEmpty()) { @@ -67,8 +83,14 @@ public class GetUserPreviewHandler implements BaseHandler { resp.setExp(user.getExp()); resp.setPlayerRating(user.getPlayerRating()); resp.setLastGameId(user.getLastGameId()); + resp.setLastRomVersion(user.getLastRomVersion()); resp.setLastDataVersion(user.getLastDataVersion()); + + if (overwriteVersion) { + resp.setLastRomVersion(romVersion); + resp.setLastDataVersion(dataVersion); + } resp.setLastPlayDate(user.getLastPlayDate()); resp.setTrophyId(user.getTrophyId()); diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java index 615b7910..26def1aa 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/gamedata/GameEvent.java @@ -1,5 +1,6 @@ package icu.samnyan.aqua.sega.chunithm.model.gamedata; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -31,5 +32,6 @@ public class GameEvent implements Serializable { private LocalDateTime endDate; + @JsonIgnore private boolean enable; } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java index 6eed7cb8..b059eed5 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCourseService.java @@ -45,4 +45,8 @@ public class UserCourseService { Pageable page = PageRequest.of(pageNum, maxCount); return userCourseRepository.findByUser_Card_ExtId(Integer.parseInt(userId), page); } + + public List getAllByUser(String userId) { + return userCourseRepository.findByUser_Card_ExtId(Integer.parseInt(userId)); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 685f6179..b254910e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -28,4 +28,11 @@ spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLiteDialect #spring.datasource.password= #spring.datasource.url=jdbc:mariadb://localhost:3306/?useSSL=false #spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB10Dialect + +## Game setting +## CHUNITHM +game.chunithm.overwrite-version=false +game.chunithm.rom-version=1.30.00 +game.chunithm.data-version=1.30.00 + ## You can add any Spring Boot properties below \ No newline at end of file