From 91c0c3de2f56de05f12fc0cea22e20e89ad195ff Mon Sep 17 00:00:00 2001 From: samnyan <205-neumphis@users.noreply.dev.s-ul.eu> Date: Mon, 30 Mar 2020 23:24:53 +0900 Subject: [PATCH] [api] Add rest of the player data to api --- .../amazon/ApiAmazonGameDataController.java | 29 +++++++ ...ava => ApiAmazonPlayerDataController.java} | 87 ++++++++++++++++--- .../dao/userdata/UserCharacterRepository.java | 7 +- .../dao/userdata/UserItemRepository.java | 3 + .../model/userdata/UserCharacter.java | 16 ++-- .../chunithm/model/userdata/UserItem.java | 4 +- .../service/UserCharacterService.java | 1 + .../chunithm/service/UserItemService.java | 4 + 8 files changed, 129 insertions(+), 22 deletions(-) create mode 100644 src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonGameDataController.java rename src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/{ApiAmazonController.java => ApiAmazonPlayerDataController.java} (79%) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonGameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonGameDataController.java new file mode 100644 index 00000000..1f2ae1f2 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonGameDataController.java @@ -0,0 +1,29 @@ +package icu.samnyan.aqua.api.controller.sega.game.chuni.amazon; + +import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; +import icu.samnyan.aqua.sega.chunithm.service.GameMusicService; +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/amazon/data") +public class ApiAmazonGameDataController { + + private final GameMusicService gameMusicService; + + public ApiAmazonGameDataController(GameMusicService gameMusicService) { + this.gameMusicService = gameMusicService; + } + + @GetMapping("music") + public List getMusic() { + return gameMusicService.getAll(); + } + +} diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonPlayerDataController.java similarity index 79% rename from src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonController.java rename to src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonPlayerDataController.java index 7eae5539..5a39d767 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/amazon/ApiAmazonPlayerDataController.java @@ -31,13 +31,14 @@ 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/amazon") -public class ApiAmazonController { +public class ApiAmazonPlayerDataController { - private static final Logger logger = LoggerFactory.getLogger(ApiAmazonController.class); + private static final Logger logger = LoggerFactory.getLogger(ApiAmazonPlayerDataController.class); private final ApiMapper mapper; @@ -61,7 +62,7 @@ public class ApiAmazonController { private final GameMusicService gameMusicService; @Autowired - public ApiAmazonController(ApiMapper mapper, CardService cardService, UserActivityService userActivityService, UserCharacterService userCharacterService, UserChargeService userChargeService, UserDataService userDataService, UserDataExService userDataExService, UserGameOptionExService userGameOptionExService, UserMapService userMapService, UserPlaylogService userPlaylogService, UserMusicDetailService userMusicDetailService, UserCourseService userCourseService, UserDuelService userDuelService, UserGameOptionService userGameOptionService, UserItemService userItemService, UserGeneralDataService userGeneralDataService, GameMusicService gameMusicService) { + public ApiAmazonPlayerDataController(ApiMapper mapper, CardService cardService, UserActivityService userActivityService, UserCharacterService userCharacterService, UserChargeService userChargeService, UserDataService userDataService, UserDataExService userDataExService, UserGameOptionExService userGameOptionExService, UserMapService userMapService, UserPlaylogService userPlaylogService, UserMusicDetailService userMusicDetailService, UserCourseService userCourseService, UserDuelService userDuelService, UserGameOptionService userGameOptionService, UserItemService userItemService, UserGeneralDataService userGeneralDataService, GameMusicService gameMusicService) { this.mapper = mapper; this.cardService = cardService; this.userActivityService = userActivityService; @@ -82,6 +83,7 @@ public class ApiAmazonController { } + // Keep it here for legacy @GetMapping("music") public List getMusicList() { return gameMusicService.getAll(); @@ -205,6 +207,78 @@ public class ApiAmazonController { 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(); @@ -313,13 +387,6 @@ public class ApiAmazonController { return ResponseEntity.ok(new MessageResponse("Import successfully, aimeId: " + card.getExtId())); } - @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."))); - } - private int calculateRating(int levelBase, int score) { if (score >= 1007500) return levelBase + 200; if (score >= 1005000) return levelBase + 150 + (score - 1005000) * 10 / 500; diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java index c957e52f..05bf5263 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserCharacterRepository.java @@ -16,9 +16,12 @@ import java.util.Optional; @Repository public interface UserCharacterRepository extends JpaRepository { - Optional findTopByUserAndCharacterIdOrderByIdDesc(UserData user, int characterId); - Page findByUser_Card_ExtId(int extId, Pageable pageable); List findByUser_Card_ExtId(int extId); + + Optional findTopByUserAndCharacterIdOrderByIdDesc(UserData user, int characterId); + + Optional findByUser_Card_ExtIdAndCharacterId(int extId, int characterId); + } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java index 211be2d2..77bac3f7 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserItemRepository.java @@ -3,6 +3,7 @@ package icu.samnyan.aqua.sega.chunithm.dao.userdata; import icu.samnyan.aqua.sega.chunithm.model.userdata.UserData; import icu.samnyan.aqua.sega.chunithm.model.userdata.UserItem; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -21,4 +22,6 @@ public interface UserItemRepository extends JpaRepository { Page findAllByUser_Card_ExtIdAndItemKind(int extId, int itemKind, Pageable pageable); List findAllByUser_Card_ExtId(int extId); + + Page findByUser_Card_ExtId(int extId, Pageable pageable); } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java index d4e5a5e6..584d4db0 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserCharacter.java @@ -36,23 +36,23 @@ public class UserCharacter implements Serializable { @Column(name = "character_id") private int characterId; - private int playCount; + private int playCount = 0; - private int level; + private int level = 1; - private int skillId; + private int skillId = 0; - private int friendshipExp; + private int friendshipExp = 0; @JsonProperty("isValid") - private boolean isValid; + private boolean isValid = true; @JsonProperty("isNewMark") - private boolean isNewMark; + private boolean isNewMark = true; - private int param1; + private int param1 = 0; - private int param2; + private int param2 = 0; public UserCharacter(UserData userData) { user = userData; diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java index 73a18b97..b21bd1b3 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/model/userdata/UserItem.java @@ -40,10 +40,10 @@ public class UserItem implements Serializable { @Column(name = "item_id") private int itemId; - private int stock; + private int stock = 1; @JsonProperty("isValid") - private boolean isValid; + private boolean isValid = true; public UserItem(UserData userData) { user = userData; diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java index c6a3dc41..93142b0c 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserCharacterService.java @@ -45,4 +45,5 @@ public class UserCharacterService { public Optional getByUserAndCharacterId(UserData user, int characterId) { return userCharacterRepository.findTopByUserAndCharacterIdOrderByIdDesc(user, characterId); } + } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java index d44f7ec7..586ae960 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserItemService.java @@ -44,4 +44,8 @@ public class UserItemService { Pageable page = PageRequest.of(pageNumber, maxCount); return userItemRepository.findAllByUser_Card_ExtIdAndItemKind(Integer.parseInt(userId), kind, page); } + + public Page getByUserId(String userId, int page, int size) { + return userItemRepository.findByUser_Card_ExtId(Integer.parseInt(userId), PageRequest.of(page, size)); + } }