[ongeki] complete choKaikaApi

master
shenjiayi 2020-09-09 00:34:47 +08:00
parent 51cfa629ae
commit d2bc566a16
1 changed files with 32 additions and 25 deletions

View File

@ -124,12 +124,13 @@ public class ApiOngekiPlayerDataController {
public ReducedPageResponse<UserCard> getCard(@RequestParam Integer aimeId, public ReducedPageResponse<UserCard> getCard(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) { @RequestParam(required = false, defaultValue = "10") int size) {
Page<UserCard> cards = userCardRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size, Sort.Direction.DESC, "id")); Page<UserCard> 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()); 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. * 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 * @param request Map of aimeId and cardId
* @return result UserCard or error message * @return result UserCard or error message
*/ */
@ -138,17 +139,17 @@ public class ApiOngekiPlayerDataController {
UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow(); UserData profile = userDataRepository.findByCard_ExtId((Integer) request.get("aimeId")).orElseThrow();
Integer cardId = (Integer) request.get("cardId"); Integer cardId = (Integer) request.get("cardId");
Optional<UserCard> userCardOptional = userCardRepository.findByUserAndCardId(profile, cardId); Optional<UserCard> userCardOptional = userCardRepository.findByUserAndCardId(profile, cardId);
if(userCardOptional.isPresent()) { if (userCardOptional.isPresent()) {
UserCard card = userCardOptional.get(); UserCard card = userCardOptional.get();
if(card.getDigitalStock() < 5) { if (card.getDigitalStock() < 5) {
card.setDigitalStock(card.getDigitalStock() + 1); card.setDigitalStock(card.getDigitalStock() + 1);
card.setMaxLevel(card.getMaxLevel() + 5); card.setMaxLevel(card.getMaxLevel() + 5);
return ResponseEntity.ok(userCardRepository.save(card)); return ResponseEntity.ok(userCardRepository.save(card));
} else { } else {
// If digital stock is larger than 5, check if this card is N card. // If digital stock is larger than 5, check if this card is N card.
Optional<GameCard> gameCard = gameCardRepository.findById((long) card.getCardId()); Optional<GameCard> gameCard = gameCardRepository.findById((long) card.getCardId());
if(gameCard.isPresent()) { if (gameCard.isPresent()) {
if(gameCard.get().getRarity().equals("N")) { if (gameCard.get().getRarity().equals("N")) {
card.setDigitalStock(card.getDigitalStock() + 1); card.setDigitalStock(card.getDigitalStock() + 1);
card.setMaxLevel(card.getMaxLevel() + 5); card.setMaxLevel(card.getMaxLevel() + 5);
return ResponseEntity.ok(userCardRepository.save(card)); return ResponseEntity.ok(userCardRepository.save(card));
@ -165,21 +166,21 @@ public class ApiOngekiPlayerDataController {
return ResponseEntity.ok( return ResponseEntity.ok(
userCardRepository.save( userCardRepository.save(
new UserCard( new UserCard(
profile, profile,
cardId, cardId,
card.getSkillId(), card.getSkillId(),
LocalDateTime.now().format(df)) LocalDateTime.now().format(df))
)); ));
} }
@PostMapping("card/{cardId}/kaika") @PostMapping("card/{cardId}/kaika")
public ResponseEntity<Object> kaikaCard(@RequestParam Integer aimeId, @PathVariable Integer cardId) { public ResponseEntity<Object> kaikaCard(@RequestParam Integer aimeId, @PathVariable Integer cardId) {
Optional<UserCard> userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId); Optional<UserCard> userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId);
if(userCardOptional.isEmpty()) { if (userCardOptional.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found.")); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found."));
} else { } else {
UserCard card = userCardOptional.get(); UserCard card = userCardOptional.get();
if(!card.getKaikaDate().equals("0000-00-00 00:00:00.0")) { 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.")); return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(new MessageResponse("No, you have done this before."));
} else { } else {
card.setKaikaDate(LocalDateTime.now().format(df)); card.setKaikaDate(LocalDateTime.now().format(df));
@ -193,22 +194,28 @@ public class ApiOngekiPlayerDataController {
@PostMapping("card/{cardId}/choKaika") @PostMapping("card/{cardId}/choKaika")
public ResponseEntity<Object> choKaikaCard(@RequestParam Integer aimeId, @PathVariable Integer cardId) { public ResponseEntity<Object> choKaikaCard(@RequestParam Integer aimeId, @PathVariable Integer cardId) {
Optional<UserCard> userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId); Optional<UserCard> userCardOptional = userCardRepository.findByUser_Card_ExtIdAndCardId(aimeId, cardId);
if(userCardOptional.isEmpty()) { if (userCardOptional.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found.")); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("Card not found."));
} else { } else {
UserCard card = userCardOptional.get(); UserCard card = userCardOptional.get();
Optional<GameCard> gameCard = gameCardRepository.findById((long) card.getCardId()); Optional<GameCard> gameCard = gameCardRepository.findById((long) card.getCardId());
if(gameCard.isPresent()) { if (gameCard.isPresent()) {
if(gameCard.get().getRarity().equals("N")) { if (gameCard.get().getRarity().equals("N")) {
card.setMaxLevel(100); card.setMaxLevel(100);
card.setLevel(100); card.setLevel(100);
card.setDigitalStock(11);
} else { } else {
card.setMaxLevel(70); card.setMaxLevel(70);
card.setLevel(70); card.setLevel(70);
card.setDigitalStock(5);
} }
} else { } else {
card.setMaxLevel(100); card.setMaxLevel(70);
card.setLevel(100); 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.setChoKaikaDate(LocalDateTime.now().format(df));
card.setPrintCount(card.getPrintCount() + 1); card.setPrintCount(card.getPrintCount() + 1);
@ -220,7 +227,7 @@ public class ApiOngekiPlayerDataController {
public ReducedPageResponse<UserCharacter> getCharacter(@RequestParam Integer aimeId, public ReducedPageResponse<UserCharacter> getCharacter(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) { @RequestParam(required = false, defaultValue = "10") int size) {
Page<UserCharacter> characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size)); Page<UserCharacter> characters = userCharacterRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size));
return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements()); return new ReducedPageResponse<>(characters.getContent(), characters.getPageable().getPageNumber(), characters.getTotalPages(), characters.getTotalElements());
} }
@ -243,7 +250,7 @@ public class ApiOngekiPlayerDataController {
Optional<UserActivity> userActivityOptional = userActivityRepository.findByUserAndKindAndActivityId(profile, kind, activityId); Optional<UserActivity> userActivityOptional = userActivityRepository.findByUserAndKindAndActivityId(profile, kind, activityId);
UserActivity userActivity; UserActivity userActivity;
if(userActivityOptional.isPresent()) { if (userActivityOptional.isPresent()) {
userActivity = userActivityOptional.get(); userActivity = userActivityOptional.get();
} else { } else {
userActivity = new UserActivity(profile); userActivity = new UserActivity(profile);
@ -262,7 +269,7 @@ public class ApiOngekiPlayerDataController {
public ReducedPageResponse<UserItem> getItem(@RequestParam Integer aimeId, public ReducedPageResponse<UserItem> getItem(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) { @RequestParam(required = false, defaultValue = "10") int size) {
Page<UserItem> items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page,size)); Page<UserItem> items = userItemRepository.findByUser_Card_ExtId(aimeId, PageRequest.of(page, size));
return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements()); return new ReducedPageResponse<>(items.getContent(), items.getPageable().getPageNumber(), items.getTotalPages(), items.getTotalElements());
} }
@ -272,14 +279,14 @@ public class ApiOngekiPlayerDataController {
Integer itemKind = (Integer) request.get("itemKind"); Integer itemKind = (Integer) request.get("itemKind");
Integer itemId = (Integer) request.get("itemId"); Integer itemId = (Integer) request.get("itemId");
int stock = 1; int stock = 1;
if(request.containsKey("stock")) { if (request.containsKey("stock")) {
stock = (Integer) request.get("stock"); stock = (Integer) request.get("stock");
} }
Optional<UserItem> userItemOptional = userItemRepository.findByUserAndItemKindAndItemId(profile, itemKind, itemId); Optional<UserItem> userItemOptional = userItemRepository.findByUserAndItemKindAndItemId(profile, itemKind, itemId);
UserItem userItem; UserItem userItem;
if(userItemOptional.isPresent()) { if (userItemOptional.isPresent()) {
userItem = userItemOptional.get(); userItem = userItemOptional.get();
} else { } else {
userItem = new UserItem(profile); userItem = new UserItem(profile);
@ -295,7 +302,7 @@ public class ApiOngekiPlayerDataController {
public ReducedPageResponse<UserPlaylog> getRecent(@RequestParam Integer aimeId, public ReducedPageResponse<UserPlaylog> getRecent(@RequestParam Integer aimeId,
@RequestParam(required = false, defaultValue = "0") int page, @RequestParam(required = false, defaultValue = "0") int page,
@RequestParam(required = false, defaultValue = "10") int size) { @RequestParam(required = false, defaultValue = "10") int size) {
Page<UserPlaylog> playlogs = userPlaylogRepository.findByUser_Card_ExtId(aimeId,PageRequest.of(page,size, Sort.Direction.DESC, "id")); Page<UserPlaylog> 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()); return new ReducedPageResponse<>(playlogs.getContent(), playlogs.getPageable().getPageNumber(), playlogs.getTotalPages(), playlogs.getTotalElements());
} }
@ -317,7 +324,7 @@ public class ApiOngekiPlayerDataController {
@GetMapping("general") @GetMapping("general")
public ResponseEntity<Object> getGeneralData(@RequestParam Integer aimeId, @RequestParam String key) { public ResponseEntity<Object> getGeneralData(@RequestParam Integer aimeId, @RequestParam String key) {
Optional<UserGeneralData> userGeneralDataOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(aimeId,key); Optional<UserGeneralData> userGeneralDataOptional = userGeneralDataRepository.findByUser_Card_ExtIdAndPropertyKey(aimeId, key);
return userGeneralDataOptional.<ResponseEntity<Object>>map(ResponseEntity::ok) return userGeneralDataOptional.<ResponseEntity<Object>>map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("User or value not found."))); .orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).body(new MessageResponse("User or value not found.")));
} }
@ -344,7 +351,7 @@ public class ApiOngekiPlayerDataController {
data.setUserPlaylogList(userPlaylogRepository.findByUser_Card_ExtId(aimeId)); data.setUserPlaylogList(userPlaylogRepository.findByUser_Card_ExtId(aimeId));
data.setUserStoryList(userStoryRepository.findByUser_Card_ExtId(aimeId)); data.setUserStoryList(userStoryRepository.findByUser_Card_ExtId(aimeId));
data.setUserTrainingRoomList(userTrainingRoomRepository.findByUser_Card_ExtId(aimeId)); data.setUserTrainingRoomList(userTrainingRoomRepository.findByUser_Card_ExtId(aimeId));
} catch (NoSuchElementException e){ } catch (NoSuchElementException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND) return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(new MessageResponse("User not found")); .body(new MessageResponse("User not found"));
} catch (Exception e) { } catch (Exception e) {
@ -359,7 +366,7 @@ public class ApiOngekiPlayerDataController {
@PostMapping("import") @PostMapping("import")
public ResponseEntity<Object> importAllUserData(@RequestBody OngekiDataImport data) { public ResponseEntity<Object> importAllUserData(@RequestBody OngekiDataImport data) {
if(!data.getGameId().equals("SDDT")) { if (!data.getGameId().equals("SDDT")) {
return ResponseEntity.unprocessableEntity().body(new MessageResponse("Wrong Game Profile, Expected 'SDDT', Get " + data.getGameId())); return ResponseEntity.unprocessableEntity().body(new MessageResponse("Wrong Game Profile, Expected 'SDDT', Get " + data.getGameId()));
} }