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/ApiAmazonController.java index 8d72caa2..725928b8 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/ApiAmazonController.java @@ -2,16 +2,19 @@ package icu.samnyan.aqua.api.controller.sega.game.chuni.amazon; 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.amazon.ProfileResp; import icu.samnyan.aqua.api.model.resp.sega.chuni.amazon.RatingItem; import icu.samnyan.aqua.api.model.resp.sega.chuni.amazon.RecentResp; -import icu.samnyan.aqua.api.model.resp.sega.chuni.amazon.ScoreResp; 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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -49,6 +52,12 @@ public class ApiAmazonController { this.gameMusicService = gameMusicService; } + + @GetMapping("music") + public List getMusicList() { + return gameMusicService.getAll(); + } + /** * Get Basic info * @@ -95,9 +104,12 @@ public class ApiAmazonController { } @GetMapping("recent") - public List getRecentPlay(@RequestParam String aimeId) { - return mapper.convert(userPlaylogService.getRecentPlays(aimeId), new TypeReference<>() { - }); + 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") @@ -154,18 +166,16 @@ public class ApiAmazonController { .collect(Collectors.toList()); } - @GetMapping("score/list") - public List getScoreList(@RequestParam String aimeId) { - return mapper.convert(userMusicDetailService.getByUser(aimeId), new TypeReference<>() { - }); + @GetMapping("song/{id}") + public List getSongDetail(@RequestParam String aimeId, @PathVariable int id) { + return userMusicDetailService.getByUserAndMusicId(aimeId, id); } - @GetMapping("music") - public List getMusicList() { - return gameMusicService.getAll(); + @GetMapping("song/{id}/{level}") + public List getLevelPlaylog(@RequestParam String aimeId, @PathVariable int id, @PathVariable int level) { + return userPlaylogService.getByUserAndMusicIdAndLevel(aimeId, id, level); } - 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/UserMusicDetailRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java index 71a826cd..a9978ad5 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserMusicDetailRepository.java @@ -20,5 +20,7 @@ public interface UserMusicDetailRepository extends JpaRepository findByUser_Card_ExtId(int extId); + List findByUser_Card_ExtIdAndMusicId(int extId, int musicId); + Page findByUser_Card_ExtId(int extId, Pageable page); } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java index b0bd91d0..a5ecc5d8 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/dao/userdata/UserPlaylogRepository.java @@ -1,6 +1,8 @@ package icu.samnyan.aqua.sega.chunithm.dao.userdata; import icu.samnyan.aqua.sega.chunithm.model.userdata.UserPlaylog; +import icu.samnyan.aqua.sega.diva.model.userdata.PlayLog; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -14,5 +16,7 @@ import java.util.List; public interface UserPlaylogRepository extends JpaRepository { List findByUser_Card_ExtIdAndLevelNot(int extId, int levelNot, Pageable page); - List findByUser_Card_ExtId(int extId, Pageable page); + Page findByUser_Card_ExtId(int extId, Pageable page); + + List findByUser_Card_ExtIdAndMusicIdAndLevel(int extId, int musicId, int level); } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java index 8f950b41..3661eb11 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserMusicDetailService.java @@ -45,4 +45,8 @@ public class UserMusicDetailService { Pageable page = PageRequest.of(pageNum, maxCount); return userMusicDetailRepository.findByUser_Card_ExtId(Integer.parseInt(userId), page); } + + public List getByUserAndMusicId(String userId, int id) { + return userMusicDetailRepository.findByUser_Card_ExtIdAndMusicId(Integer.parseInt(userId), id); + } } diff --git a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java index 5fc579d0..5725cc52 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java +++ b/src/main/java/icu/samnyan/aqua/sega/chunithm/service/UserPlaylogService.java @@ -2,7 +2,9 @@ package icu.samnyan.aqua.sega.chunithm.service; import icu.samnyan.aqua.sega.chunithm.dao.userdata.UserPlaylogRepository; import icu.samnyan.aqua.sega.chunithm.model.userdata.UserPlaylog; +import icu.samnyan.aqua.sega.diva.model.userdata.PlayLog; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -36,8 +38,11 @@ public class UserPlaylogService { return userPlaylogRepository.findByUser_Card_ExtIdAndLevelNot(Integer.parseInt(userId), 4, page); } - public List getRecentPlays(String userId) { - Pageable page = PageRequest.of(0, 50, Sort.by(Sort.Direction.DESC, "userPlayDate")); + public Page getRecentPlays(String userId, Pageable page) { return userPlaylogRepository.findByUser_Card_ExtId(Integer.parseInt(userId), page); } + + public List getByUserAndMusicIdAndLevel(String userId, int id, int level) { + return userPlaylogRepository.findByUser_Card_ExtIdAndMusicIdAndLevel(Integer.parseInt(userId), id, level); + } } diff --git a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java index e8423050..f7353a87 100644 --- a/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java +++ b/src/main/java/icu/samnyan/aqua/sega/diva/model/common/attend/GameBalanceParameter.java @@ -57,6 +57,11 @@ public class GameBalanceParameter implements Internalizable { 1, 1, 1, + 1, + 1, + 1, + 1, + 1, 2, 3, 4, // unkn