From a950819e9be4d9bc815d462a2a6cbe6da12a1a45 Mon Sep 17 00:00:00 2001 From: rin sama <1181127934@qq.com> Date: Sun, 30 Oct 2022 13:29:29 +0000 Subject: [PATCH] [API] Add support for import and export ongeki bright memory specific user data --- .../ongeki/ApiOngekiPlayerDataController.java | 43 ++++++++++++++++--- .../ongeki/external/OngekiDataExport.java | 4 ++ .../ongeki/external/OngekiDataImport.java | 4 ++ .../dao/userdata/UserBossRepository.java | 4 ++ .../dao/userdata/UserScenarioRepository.java | 4 ++ .../dao/userdata/UserTechCountRepository.java | 4 ++ 6 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java index 4e4903fa..d43a708b 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java @@ -24,10 +24,7 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -65,9 +62,17 @@ public class ApiOngekiPlayerDataController { private final UserTechEventRepository userTechEventRepository; private final UserKopRepository userKopRepository; + private final UserMemoryChapterRepository userMemoryChapterRepository; + + private final UserScenarioRepository userScenarioRepository; + + private final UserBossRepository userBossRepository; + + private final UserTechCountRepository userTechCountRepository; + private final GameCardRepository gameCardRepository; - public ApiOngekiPlayerDataController(ApiMapper mapper, CardService cardService, UserActivityRepository userActivityRepository, UserCardRepository userCardRepository, UserChapterRepository userChapterRepository, UserCharacterRepository userCharacterRepository, UserDataRepository userDataRepository, UserDeckRepository userDeckRepository, UserEventPointRepository userEventPointRepository, UserItemRepository userItemRepository, UserLoginBonusRepository userLoginBonusRepository, UserMissionPointRepository userMissionPointRepository, UserMusicDetailRepository userMusicDetailRepository, UserMusicItemRepository userMusicItemRepository, UserOptionRepository userOptionRepository, UserPlaylogRepository userPlaylogRepository, UserStoryRepository userStoryRepository, UserTrainingRoomRepository userTrainingRoomRepository, UserGeneralDataRepository userGeneralDataRepository, GameCardRepository gameCardRepository, UserTradeItemRepository userTradeItemRepository, UserEventMusicRepository userEventMusicRepository, UserTechEventRepository userTechEventRepository, UserKopRepository userKopRepository) { + public ApiOngekiPlayerDataController(ApiMapper mapper, CardService cardService, UserActivityRepository userActivityRepository, UserCardRepository userCardRepository, UserChapterRepository userChapterRepository, UserCharacterRepository userCharacterRepository, UserDataRepository userDataRepository, UserDeckRepository userDeckRepository, UserEventPointRepository userEventPointRepository, UserItemRepository userItemRepository, UserLoginBonusRepository userLoginBonusRepository, UserMissionPointRepository userMissionPointRepository, UserMusicDetailRepository userMusicDetailRepository, UserMusicItemRepository userMusicItemRepository, UserOptionRepository userOptionRepository, UserPlaylogRepository userPlaylogRepository, UserStoryRepository userStoryRepository, UserTrainingRoomRepository userTrainingRoomRepository, UserGeneralDataRepository userGeneralDataRepository, GameCardRepository gameCardRepository, UserTradeItemRepository userTradeItemRepository, UserEventMusicRepository userEventMusicRepository, UserTechEventRepository userTechEventRepository, UserKopRepository userKopRepository, UserMemoryChapterRepository userMemoryChapterRepository, UserScenarioRepository userScenarioRepository, UserBossRepository userBossRepository, UserTechCountRepository userTechCountRepository) { this.mapper = mapper; this.cardService = cardService; this.userActivityRepository = userActivityRepository; @@ -92,6 +97,10 @@ public class ApiOngekiPlayerDataController { this.userEventMusicRepository = userEventMusicRepository; this.userTechEventRepository = userTechEventRepository; this.userKopRepository = userKopRepository; + this.userMemoryChapterRepository = userMemoryChapterRepository; + this.userScenarioRepository = userScenarioRepository; + this.userBossRepository = userBossRepository; + this.userTechCountRepository = userTechCountRepository; } @GetMapping("profile") @@ -363,6 +372,10 @@ public class ApiOngekiPlayerDataController { data.setUserEventMusicList(userEventMusicRepository.findByUser_Card_ExtId(aimeId)); data.setUserTechEventList(userTechEventRepository.findByUser_Card_ExtId(aimeId)); data.setUserKopList(userKopRepository.findByUser_Card_ExtId(aimeId)); + data.setUserMemoryChapterList(userMemoryChapterRepository.findByUser_Card_ExtId(aimeId)); + data.setUserScenarioList(userScenarioRepository.findByUser_Card_ExtId(aimeId)); + data.setUserBossList(userBossRepository.findByUser_Card_ExtId(aimeId)); + data.setUserTechCountList(userTechCountRepository.findByUser_Card_ExtId(aimeId)); } catch (NoSuchElementException e) { return ResponseEntity.status(HttpStatus.NOT_FOUND) .body(new MessageResponse("User not found")); @@ -433,6 +446,14 @@ public class ApiOngekiPlayerDataController { userTechEventRepository.flush(); userKopRepository.deleteByUser(existUserData.get()); userKopRepository.flush(); + userMemoryChapterRepository.deleteByUser(existUserData.get()); + userMemoryChapterRepository.flush(); + userScenarioRepository.deleteByUser(existUserData.get()); + userScenarioRepository.flush(); + userBossRepository.deleteByUser(existUserData.get()); + userBossRepository.flush(); + userTechCountRepository.deleteByUser(existUserData.get()); + userTechCountRepository.flush(); userDataRepository.deleteByCard(card); userDataRepository.flush(); @@ -506,6 +527,18 @@ public class ApiOngekiPlayerDataController { userKopRepository.saveAll(data.getUserKopList().stream() .peek(x -> x.setUser(userData)).collect(Collectors.toList())); + userMemoryChapterRepository.saveAll(Optional.ofNullable(data.getUserMemoryChapterList()).orElse(Collections.emptyList()).stream() + .peek(x -> x.setUser(userData)).collect(Collectors.toList())); + + userScenarioRepository.saveAll(Optional.ofNullable(data.getUserScenarioList()).orElse(Collections.emptyList()).stream() + .peek(x -> x.setUser(userData)).collect(Collectors.toList())); + + userBossRepository.saveAll(Optional.ofNullable(data.getUserBossList()).orElse(Collections.emptyList()).stream() + .peek(x -> x.setUser(userData)).collect(Collectors.toList())); + + userTechCountRepository.saveAll(Optional.ofNullable(data.getUserTechCountList()).orElse(Collections.emptyList()).stream() + .peek(x -> x.setUser(userData)).collect(Collectors.toList())); + return ResponseEntity.ok(new MessageResponse("Import successfully, aimeId: " + card.getExtId())); } diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java index 70367119..1436bda6 100644 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java +++ b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataExport.java @@ -36,4 +36,8 @@ public class OngekiDataExport { private List userEventMusicList; private List userTechEventList; private List userKopList; + private List userMemoryChapterList; + private List userScenarioList; + private List userBossList; + private List userTechCountList; } diff --git a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java index 421a18bb..f1dcef5d 100644 --- a/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java +++ b/src/main/java/icu/samnyan/aqua/api/model/resp/sega/ongeki/external/OngekiDataImport.java @@ -36,4 +36,8 @@ public class OngekiDataImport { private List userEventMusicList; private List userTechEventList; private List userKopList; + private List userMemoryChapterList; + private List userScenarioList; + private List userBossList; + private List userTechCountList; } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java index cbc0c998..075e55e3 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserBossRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserBoss; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,7 @@ public interface UserBossRepository extends JpaRepository { Optional findByUserAndMusicId(UserData user, int musicId); + @Transactional + void deleteByUser(UserData user); + } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java index a7a1fa56..c9f3afc0 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserScenarioRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserScenario; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,7 @@ public interface UserScenarioRepository extends JpaRepository findByUserAndScenarioId(UserData user, int scenarioId); + @Transactional + void deleteByUser(UserData user); + } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java index 9072673a..7a620fac 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserTechCountRepository.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; import icu.samnyan.aqua.sega.ongeki.model.userdata.UserTechCount; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -18,4 +19,7 @@ public interface UserTechCountRepository extends JpaRepository findByUserAndLevelId(UserData user, int levelId); + @Transactional + void deleteByUser(UserData user); + }