[chusan] Added rudimentary favorites support to aqua-viewer

pull/1/head
Jordo 2022-12-31 11:37:13 +00:00 committed by Dom Eori
parent 9898a94d64
commit 1db201c467
1 changed files with 38 additions and 0 deletions

View File

@ -10,6 +10,7 @@ import icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external.ChuniDataExport;
import icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external.ChuniDataImport;
import icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external.ExternalUserData;
import icu.samnyan.aqua.api.util.ApiMapper;
import icu.samnyan.aqua.sega.chunithm.handler.impl.GetUserFavoriteMusicHandler;
import icu.samnyan.aqua.sega.chusan.model.gamedata.Level;
import icu.samnyan.aqua.sega.chusan.model.gamedata.Music;
import icu.samnyan.aqua.sega.chusan.model.userdata.*;
@ -308,6 +309,43 @@ public class ApiChuniV2PlayerDataController {
return userPlaylogService.getByUserIdAndMusicIdAndLevel(aimeId, id, level);
}
@GetMapping("song/{id}/isfavorite")
public boolean getSongFavorite(@RequestParam String aimeId, @PathVariable String id) {
Optional<UserGeneralData> favOptional;
favOptional = userGeneralDataService.getByUserIdAndKey(aimeId, "favorite_music");
if(favOptional.isPresent()) {
String val = favOptional.get().getPropertyValue();
if(StringUtils.isNotBlank(val) && val.contains(",")) {
String[] records = val.split(",");
for (String record : records) {
if (record.equals(id)) return true;
}
}
}
return false;
}
@PutMapping("song/{id}/favorite")
public void updateSongFavorite(@RequestParam String aimeId, @PathVariable String id) {
UserData profile = userDataService.getUserByExtId(aimeId).orElseThrow();
UserGeneralData userGeneralData = userGeneralDataService.getByUserAndKey(profile, "favorite_music")
.orElseGet(() -> new UserGeneralData(profile, "favorite_music"));
List<String> favoriteSongs = new LinkedList<String>(Arrays.asList(userGeneralData.getPropertyValue().split(",")));
if(!favoriteSongs.remove(id))
{
favoriteSongs.add(id);
}
StringBuilder sb = new StringBuilder();
favoriteSongs.forEach(favSong -> {
if(!favSong.isEmpty()) sb.append(favSong).append(",");
});
userGeneralData.setPropertyValue(sb.toString());
userGeneralDataService.save(userGeneralData);
}
@GetMapping("character")
public ReducedPageResponse<UserCharacter> getCharacter(@RequestParam String aimeId,
@RequestParam(required = false, defaultValue = "0") int page,