[chuni] Game version overwrite for old version

pull/1/head
samnyan 2020-02-19 19:30:28 +08:00
parent 58e3de5ab9
commit a275dcf991
6 changed files with 77 additions and 15 deletions

View File

@ -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<String, Object> 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<UserCourse> dbPage = userCourseService.getByUser(userId, pageNum, maxCount);
long currentIndex = maxCount * pageNum + dbPage.getNumberOfElements();
Map<String, Object> 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<UserCourse> 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<UserCourse> courseList = userCourseService.getAllByUser(userId);
resultMap.put("length", courseList.size());
resultMap.put("userCourseList", courseList);
}
String json = mapper.write(resultMap);
logger.info("Response: " + json);

View File

@ -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<String, Object> 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;

View File

@ -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<String, Object> request) throws JsonProcessingException {
String userId = (String) request.get("userId");
Optional<UserData> 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());

View File

@ -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;
}

View File

@ -45,4 +45,8 @@ public class UserCourseService {
Pageable page = PageRequest.of(pageNum, maxCount);
return userCourseRepository.findByUser_Card_ExtId(Integer.parseInt(userId), page);
}
public List<UserCourse> getAllByUser(String userId) {
return userCourseRepository.findByUser_Card_ExtId(Integer.parseInt(userId));
}
}

View File

@ -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