From 244480c12c1a296cc03bfb8f8777c2435da1fba8 Mon Sep 17 00:00:00 2001 From: samnyan <205-neumphis@users.noreply.dev.s-ul.eu> Date: Mon, 30 Mar 2020 18:10:25 +0900 Subject: [PATCH] [ongeki] Move UpsertUserAll to a class --- .../handler/impl/UpsertUserAllHandler.java | 439 ++++++++---------- .../ongeki/model/request/UpsertUserAll.java | 113 +++++ 2 files changed, 306 insertions(+), 246 deletions(-) create mode 100644 src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java index 48349754..50c2eb2a 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/UpsertUserAllHandler.java @@ -1,12 +1,12 @@ package icu.samnyan.aqua.sega.ongeki.handler.impl; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; import icu.samnyan.aqua.sega.general.model.Card; +import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; import icu.samnyan.aqua.sega.general.service.CardService; import icu.samnyan.aqua.sega.ongeki.dao.userdata.*; import icu.samnyan.aqua.sega.ongeki.handler.BaseHandler; +import icu.samnyan.aqua.sega.ongeki.model.request.UpsertUserAll; import icu.samnyan.aqua.sega.ongeki.model.response.CodeResp; import icu.samnyan.aqua.sega.ongeki.model.userdata.*; import icu.samnyan.aqua.sega.util.jackson.BasicMapper; @@ -78,91 +78,81 @@ public class UpsertUserAllHandler implements BaseHandler { @Override public String handle(Map request) throws JsonProcessingException { Integer userId = (Integer) request.get("userId"); - Map upsertUserAll = (Map) request.get("upsertUserAll"); + UpsertUserAll upsertUserAll = mapper.convert(request.get("upsertUserAll"), UpsertUserAll.class); + // All the field should exist, no need to check now. // UserData UserData userData; - UserData newUserData; - if (!upsertUserAll.containsKey("userData")) { - return null; + UserData newUserData = upsertUserAll.getUserData().get(0); + + Optional userOptional = userDataRepository.findByCard_ExtId(userId); + + if (userOptional.isPresent()) { + userData = userOptional.get(); } else { - Map userDataMap = ((List>) upsertUserAll.get("userData")).get(0); - - Optional userOptional = userDataRepository.findByCard_ExtId(userId); - - if (userOptional.isPresent()) { - userData = userOptional.get(); - } else { - userData = new UserData(); - Card card = cardService.getCardByExtId(userId).orElseThrow(); - userData.setCard(card); - } - newUserData = mapper.convert(userDataMap, UserData.class); - - newUserData.setId(userData.getId()); - newUserData.setCard(userData.getCard()); - - userDataRepository.save(newUserData); + userData = new UserData(); + Card card = cardService.getCardByExtId(userId).orElseThrow(); + userData.setCard(card); } + newUserData.setId(userData.getId()); + newUserData.setCard(userData.getCard()); + + userDataRepository.save(newUserData); + + // UserOption - if (upsertUserAll.containsKey("userOption")) { - Map userOptionMap = ((List>) upsertUserAll.get("userOption")).get(0); + UserOption newUserOption = upsertUserAll.getUserOption().get(0); - Optional userOptionOptional = userOptionRepository.findByUser(newUserData); - UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData)); + Optional userOptionOptional = userOptionRepository.findByUser(newUserData); + UserOption userOption = userOptionOptional.orElseGet(() -> new UserOption(newUserData)); - UserOption newUserOption = mapper.convert(userOptionMap, UserOption.class); - newUserOption.setId(userOption.getId()); - newUserOption.setUser(userOption.getUser()); + newUserOption.setId(userOption.getId()); + newUserOption.setUser(userOption.getUser()); + + userOptionRepository.save(newUserOption); - userOptionRepository.save(newUserOption); - } // UserPlaylogList - if (upsertUserAll.containsKey("userPlaylogList")) { - List> userPlaylogList = ((List>) upsertUserAll.get("userPlaylogList")); - List newUserPlaylogList = new ArrayList<>(); + List userPlaylogList = upsertUserAll.getUserPlaylogList(); + List newUserPlaylogList = new ArrayList<>(); - for (Map userPlayLogMap : userPlaylogList) { - UserPlaylog newUserPlaylog = mapper.convert(userPlayLogMap, UserPlaylog.class); - newUserPlaylog.setUser(newUserData); - newUserPlaylogList.add(newUserPlaylog); - } - - userPlaylogRepository.saveAll(newUserPlaylogList); + for (UserPlaylog newUserPlaylog : userPlaylogList) { + newUserPlaylog.setUser(newUserData); + newUserPlaylogList.add(newUserPlaylog); } + userPlaylogRepository.saveAll(newUserPlaylogList); + + // UserSessionlogList doesn't need to save for a private server + // UserActivityList - if (upsertUserAll.containsKey("userActivityList")) { - List> userActivityList = ((List>) upsertUserAll.get("userActivityList")); - List newUserActivityList = new ArrayList<>(); + List userActivityList = upsertUserAll.getUserActivityList(); + List newUserActivityList = new ArrayList<>(); - for (Map userActivityMap : userActivityList) { - Integer kind = (Integer) userActivityMap.get("kind"); - Integer id = (Integer) userActivityMap.get("id"); + for (UserActivity newUserActivity : userActivityList) { + int kind = newUserActivity.getKind(); + int id = newUserActivity.getActivityId(); - if (kind != 0 && id != 0) { - Optional activityOptional = userActivityRepository.findByUserAndKindAndActivityId(newUserData, kind, id); - UserActivity userActivity = activityOptional.orElseGet(() -> new UserActivity(newUserData)); + if (kind != 0 && id != 0) { + Optional activityOptional = userActivityRepository.findByUserAndKindAndActivityId(newUserData, kind, id); + UserActivity userActivity = activityOptional.orElseGet(() -> new UserActivity(newUserData)); - UserActivity newUserActivity = mapper.convert(userActivityMap, UserActivity.class); - newUserActivity.setId(userActivity.getId()); - newUserActivity.setUser(newUserData); - newUserActivityList.add(newUserActivity); - } + newUserActivity.setId(userActivity.getId()); + newUserActivity.setUser(newUserData); + newUserActivityList.add(newUserActivity); } - newUserActivityList.sort((a, b) -> Integer.compare(b.getSortNumber(), a.getSortNumber())); - userActivityRepository.saveAll(newUserActivityList); } + newUserActivityList.sort((a, b) -> Integer.compare(b.getSortNumber(), a.getSortNumber())); + userActivityRepository.saveAll(newUserActivityList); + // UserRecentRatingList // This thing still need to save to solve the rating drop - if (upsertUserAll.containsKey("userRecentRatingList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRecentRatingList", "recent_rating_list"); - } + this.saveGeneralData(upsertUserAll.getUserRecentRatingList(), newUserData, "recent_rating_list"); + /* * The rating and battle point calculation is little bit complex. @@ -170,275 +160,236 @@ public class UpsertUserAllHandler implements BaseHandler { * into a csv format for convenience */ // UserBpBaseList (For calculating Battle point) - if (upsertUserAll.containsKey("userBpBaseList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userBpBaseList", "battle_point_base"); - } + this.saveGeneralData(upsertUserAll.getUserBpBaseList(), newUserData, "battle_point_base"); + // This is the best rating of all charts. Best 30 + 10 after that. // userRatingBaseBestList - if (upsertUserAll.containsKey("userRatingBaseBestList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRatingBaseBestList", "rating_base_best"); - } + this.saveGeneralData(upsertUserAll.getUserRatingBaseBestList(), newUserData, "rating_base_best"); + + // userRatingBaseNextList - if (upsertUserAll.containsKey("userRatingBaseNextList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRatingBaseNextList", "rating_base_next"); - } + this.saveGeneralData(upsertUserAll.getUserRatingBaseNextList(), newUserData, "rating_base_next"); // This is the best rating of new charts. Best 15 + 10 after that. // New chart means same version // userRatingBaseBestNewList - if (upsertUserAll.containsKey("userRatingBaseBestNewList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRatingBaseBestNewList", "rating_base_new_best"); - } + this.saveGeneralData(upsertUserAll.getUserRatingBaseBestNewList(), newUserData, "rating_base_new_best"); + // userRatingBaseNextNewList - if (upsertUserAll.containsKey("userRatingBaseNextNewList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRatingBaseNextNewList", "rating_base_new_next"); - } + this.saveGeneralData(upsertUserAll.getUserRatingBaseNextNewList(), newUserData, "rating_base_new_next"); // This is the recent best // userRatingBaseHotList - if (upsertUserAll.containsKey("userRatingBaseHotList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRatingBaseHotList", "rating_base_hot_best"); - } + this.saveGeneralData(upsertUserAll.getUserRatingBaseHotList(), newUserData, "rating_base_hot_best"); + // userRatingBaseHotNextList - if (upsertUserAll.containsKey("userRatingBaseHotNextList")) { - this.saveGeneralData(upsertUserAll, newUserData, "userRatingBaseHotNextList", "rating_base_hot_next"); - } + this.saveGeneralData(upsertUserAll.getUserRatingBaseHotNextList(), newUserData, "rating_base_hot_next"); + // UserMusicDetailList - if (upsertUserAll.containsKey("userMusicDetailList")) { - List> userMusicDetailList = ((List>) upsertUserAll.get("userMusicDetailList")); - List newUserMusicDetailList = new ArrayList<>(); + List userMusicDetailList = upsertUserAll.getUserMusicDetailList(); + List newUserMusicDetailList = new ArrayList<>(); - for (Map userMusicDetailMap : userMusicDetailList) { - Integer musicId = (Integer) userMusicDetailMap.get("musicId"); - Integer level = (Integer) userMusicDetailMap.get("level"); + for (UserMusicDetail newUserMusicDetail : userMusicDetailList) { + int musicId = newUserMusicDetail.getMusicId(); + int level = newUserMusicDetail.getLevel(); - Optional musicDetailOptional = userMusicDetailRepository.findByUserAndMusicIdAndLevel(newUserData, musicId, level); - UserMusicDetail userMusicDetail = musicDetailOptional.orElseGet(() -> new UserMusicDetail(newUserData)); + Optional musicDetailOptional = userMusicDetailRepository.findByUserAndMusicIdAndLevel(newUserData, musicId, level); + UserMusicDetail userMusicDetail = musicDetailOptional.orElseGet(() -> new UserMusicDetail(newUserData)); - UserMusicDetail newUserMusicDetail = mapper.convert(userMusicDetailMap, UserMusicDetail.class); - newUserMusicDetail.setId(userMusicDetail.getId()); - newUserMusicDetail.setUser(newUserData); - newUserMusicDetailList.add(newUserMusicDetail); - } - userMusicDetailRepository.saveAll(newUserMusicDetailList); + newUserMusicDetail.setId(userMusicDetail.getId()); + newUserMusicDetail.setUser(newUserData); + newUserMusicDetailList.add(newUserMusicDetail); } + userMusicDetailRepository.saveAll(newUserMusicDetailList); + // UserCharacterList - if (upsertUserAll.containsKey("userCharacterList")) { - List> userCharacterList = ((List>) upsertUserAll.get("userCharacterList")); - List newUserCharacterList = new ArrayList<>(); + List userCharacterList = upsertUserAll.getUserCharacterList(); + List newUserCharacterList = new ArrayList<>(); - for (Map userCharacterMap : userCharacterList) { - Integer characterId = (Integer) userCharacterMap.get("characterId"); + for (UserCharacter newUserCharacter : userCharacterList) { + int characterId = newUserCharacter.getCharacterId(); - Optional characterOptional = userCharacterRepository.findByUserAndCharacterId(newUserData, characterId); - UserCharacter userCharacter = characterOptional.orElseGet(() -> new UserCharacter(newUserData)); + Optional characterOptional = userCharacterRepository.findByUserAndCharacterId(newUserData, characterId); + UserCharacter userCharacter = characterOptional.orElseGet(() -> new UserCharacter(newUserData)); - UserCharacter newUserCharacter = mapper.convert(userCharacterMap, UserCharacter.class); - newUserCharacter.setId(userCharacter.getId()); - newUserCharacter.setUser(newUserData); - newUserCharacterList.add(newUserCharacter); - } - userCharacterRepository.saveAll(newUserCharacterList); + newUserCharacter.setId(userCharacter.getId()); + newUserCharacter.setUser(newUserData); + newUserCharacterList.add(newUserCharacter); } + userCharacterRepository.saveAll(newUserCharacterList); // UserCardList - if (upsertUserAll.containsKey("userCardList")) { - List> userCardList = ((List>) upsertUserAll.get("userCardList")); - List newUserCardList = new ArrayList<>(); + List userCardList = upsertUserAll.getUserCardList(); + List newUserCardList = new ArrayList<>(); - for (Map userCardMap : userCardList) { - Integer cardId = (Integer) userCardMap.get("cardId"); + for (UserCard newUserCard : userCardList) { + int cardId = newUserCard.getCardId(); - Optional cardOptional = userCardRepository.findByUserAndCardId(newUserData, cardId); - UserCard userCard = cardOptional.orElseGet(() -> new UserCard(newUserData)); + Optional cardOptional = userCardRepository.findByUserAndCardId(newUserData, cardId); + UserCard userCard = cardOptional.orElseGet(() -> new UserCard(newUserData)); - UserCard newUserCard = mapper.convert(userCardMap, UserCard.class); - newUserCard.setId(userCard.getId()); - newUserCard.setUser(newUserData); - newUserCardList.add(newUserCard); - } - userCardRepository.saveAll(newUserCardList); + newUserCard.setId(userCard.getId()); + newUserCard.setUser(newUserData); + newUserCardList.add(newUserCard); } + userCardRepository.saveAll(newUserCardList); + // UserDeckList - if (upsertUserAll.containsKey("userDeckList")) { - List> userDeckList = ((List>) upsertUserAll.get("userDeckList")); - List newUserDeckList = new ArrayList<>(); + List userDeckList = upsertUserAll.getUserDeckList(); + List newUserDeckList = new ArrayList<>(); - for (Map userDeckMap : userDeckList) { - Integer deckId = (Integer) userDeckMap.get("deckId"); + for (UserDeck newUserDeck : userDeckList) { + int deckId = newUserDeck.getDeckId(); - Optional deckOptional = userDeckRepository.findByUserAndDeckId(newUserData, deckId); - UserDeck userDeck = deckOptional.orElseGet(() -> new UserDeck(newUserData)); + Optional deckOptional = userDeckRepository.findByUserAndDeckId(newUserData, deckId); + UserDeck userDeck = deckOptional.orElseGet(() -> new UserDeck(newUserData)); - UserDeck newUserDeck = mapper.convert(userDeckMap, UserDeck.class); - newUserDeck.setId(userDeck.getId()); - newUserDeck.setUser(newUserData); - newUserDeckList.add(newUserDeck); - } - userDeckRepository.saveAll(newUserDeckList); + newUserDeck.setId(userDeck.getId()); + newUserDeck.setUser(newUserData); + newUserDeckList.add(newUserDeck); } + userDeckRepository.saveAll(newUserDeckList); + // userTrainingRoomList - if (upsertUserAll.containsKey("userTrainingRoomList")) { - List> userTrainingRoomList = ((List>) upsertUserAll.get("userTrainingRoomList")); - List newUserTrainingRoomList = new ArrayList<>(); + List userTrainingRoomList = upsertUserAll.getUserTrainingRoomList(); + List newUserTrainingRoomList = new ArrayList<>(); - for (Map userTrainingRoomMap : userTrainingRoomList) { - Integer roomId = (Integer) userTrainingRoomMap.get("roomId"); + for (UserTrainingRoom newUserTrainingRoom : userTrainingRoomList) { + int roomId = newUserTrainingRoom.getRoomId(); - Optional trainingRoomOptional = userTrainingRoomRepository.findByUserAndRoomId(newUserData, roomId); - UserTrainingRoom trainingRoom = trainingRoomOptional.orElseGet(() -> new UserTrainingRoom(newUserData)); + Optional trainingRoomOptional = userTrainingRoomRepository.findByUserAndRoomId(newUserData, roomId); + UserTrainingRoom trainingRoom = trainingRoomOptional.orElseGet(() -> new UserTrainingRoom(newUserData)); - UserTrainingRoom newUserTrainingRoom = mapper.convert(userTrainingRoomMap, UserTrainingRoom.class); - newUserTrainingRoom.setId(trainingRoom.getId()); - newUserTrainingRoom.setUser(newUserData); - newUserTrainingRoomList.add(newUserTrainingRoom); - } - userTrainingRoomRepository.saveAll(newUserTrainingRoomList); + newUserTrainingRoom.setId(trainingRoom.getId()); + newUserTrainingRoom.setUser(newUserData); + newUserTrainingRoomList.add(newUserTrainingRoom); } + userTrainingRoomRepository.saveAll(newUserTrainingRoomList); // UserStoryList - if (upsertUserAll.containsKey("userStoryList")) { - List> userStoryList = ((List>) upsertUserAll.get("userStoryList")); - List newUserStoryList = new ArrayList<>(); + List userStoryList = upsertUserAll.getUserStoryList(); + List newUserStoryList = new ArrayList<>(); - for (Map userStoryMap : userStoryList) { - Integer storyId = (Integer) userStoryMap.get("storyId"); + for (UserStory newUserStory : userStoryList) { + int storyId = newUserStory.getStoryId(); - Optional storyOptional = userStoryRepository.findByUserAndStoryId(newUserData, storyId); - UserStory userStory = storyOptional.orElseGet(() -> new UserStory(newUserData)); + Optional storyOptional = userStoryRepository.findByUserAndStoryId(newUserData, storyId); + UserStory userStory = storyOptional.orElseGet(() -> new UserStory(newUserData)); - UserStory newUserStory = mapper.convert(userStoryMap, UserStory.class); - newUserStory.setId(userStory.getId()); - newUserStory.setUser(newUserData); - newUserStoryList.add(newUserStory); - } - userStoryRepository.saveAll(newUserStoryList); + newUserStory.setId(userStory.getId()); + newUserStory.setUser(newUserData); + newUserStoryList.add(newUserStory); } + userStoryRepository.saveAll(newUserStoryList); // UserChapterList - if (upsertUserAll.containsKey("userChapterList")) { - List> userChapterList = ((List>) upsertUserAll.get("userChapterList")); - List newUserChapterList = new ArrayList<>(); + List userChapterList = upsertUserAll.getUserChapterList(); + List newUserChapterList = new ArrayList<>(); - for (Map userChapterMap : userChapterList) { - Integer chapterId = (Integer) userChapterMap.get("chapterId"); + for (UserChapter newUserChapter : userChapterList) { + int chapterId = newUserChapter.getChapterId(); - Optional chapterOptional = userChapterRepository.findByUserAndChapterId(newUserData, chapterId); - UserChapter userChapter = chapterOptional.orElseGet(() -> new UserChapter(newUserData)); + Optional chapterOptional = userChapterRepository.findByUserAndChapterId(newUserData, chapterId); + UserChapter userChapter = chapterOptional.orElseGet(() -> new UserChapter(newUserData)); - UserChapter newUserChapter = mapper.convert(userChapterMap, UserChapter.class); - newUserChapter.setId(userChapter.getId()); - newUserChapter.setUser(newUserData); - newUserChapterList.add(newUserChapter); - } - userChapterRepository.saveAll(newUserChapterList); + newUserChapter.setId(userChapter.getId()); + newUserChapter.setUser(newUserData); + newUserChapterList.add(newUserChapter); } + userChapterRepository.saveAll(newUserChapterList); // UserItemList - if (upsertUserAll.containsKey("userItemList")) { - List> userItemList = ((List>) upsertUserAll.get("userItemList")); - List newUserItemList = new ArrayList<>(); + List userItemList = upsertUserAll.getUserItemList(); + List newUserItemList = new ArrayList<>(); - for (Map userItemMap : userItemList) { - Integer itemKind = (Integer) userItemMap.get("itemKind"); - Integer itemId = (Integer) userItemMap.get("itemId"); + for (UserItem newUserItem : userItemList) { + int itemKind = newUserItem.getItemKind(); + int itemId = newUserItem.getItemId(); - Optional itemOptional = userItemRepository.findByUserAndItemKindAndItemId(newUserData, itemKind, itemId); - UserItem userItem = itemOptional.orElseGet(() -> new UserItem(newUserData)); + Optional itemOptional = userItemRepository.findByUserAndItemKindAndItemId(newUserData, itemKind, itemId); + UserItem userItem = itemOptional.orElseGet(() -> new UserItem(newUserData)); - UserItem newUserItem = mapper.convert(userItemMap, UserItem.class); - newUserItem.setId(userItem.getId()); - newUserItem.setUser(newUserData); - newUserItemList.add(newUserItem); - } - userItemRepository.saveAll(newUserItemList); + newUserItem.setId(userItem.getId()); + newUserItem.setUser(newUserData); + newUserItemList.add(newUserItem); } + userItemRepository.saveAll(newUserItemList); // UserMusicItemList - if (upsertUserAll.containsKey("userMusicItemList")) { - List> userMusicItemList = ((List>) upsertUserAll.get("userMusicItemList")); - List newUserMusicItemList = new ArrayList<>(); + List userMusicItemList = upsertUserAll.getUserMusicItemList(); + List newUserMusicItemList = new ArrayList<>(); - for (Map userMusicItemMap : userMusicItemList) { - Integer musicId = (Integer) userMusicItemMap.get("musicId"); + for (UserMusicItem newUserMusicItem : userMusicItemList) { + int musicId = newUserMusicItem.getMusicId(); - Optional musicItemOptional = userMusicItemRepository.findByUserAndMusicId(newUserData, musicId); - UserMusicItem userMusicItem = musicItemOptional.orElseGet(() -> new UserMusicItem(newUserData)); + Optional musicItemOptional = userMusicItemRepository.findByUserAndMusicId(newUserData, musicId); + UserMusicItem userMusicItem = musicItemOptional.orElseGet(() -> new UserMusicItem(newUserData)); - UserMusicItem newUserMusicItem = mapper.convert(userMusicItemMap, UserMusicItem.class); - newUserMusicItem.setId(userMusicItem.getId()); - newUserMusicItem.setUser(newUserData); - newUserMusicItemList.add(newUserMusicItem); - } - userMusicItemRepository.saveAll(newUserMusicItemList); + newUserMusicItem.setId(userMusicItem.getId()); + newUserMusicItem.setUser(newUserData); + newUserMusicItemList.add(newUserMusicItem); } + userMusicItemRepository.saveAll(newUserMusicItemList); // userLoginBonusList - if (upsertUserAll.containsKey("userLoginBonusList")) { - List> userLoginBonusList = ((List>) upsertUserAll.get("userLoginBonusList")); - List newUserLoginBonusList = new ArrayList<>(); + List userLoginBonusList = upsertUserAll.getUserLoginBonusList(); + List newUserLoginBonusList = new ArrayList<>(); - for (Map userLoginBonusMap : userLoginBonusList) { - Integer bonusId = (Integer) userLoginBonusMap.get("bonusId"); + for (UserLoginBonus newUserLoginBonus : userLoginBonusList) { + int bonusId = newUserLoginBonus.getBonusId(); - Optional loginBonusOptional = userLoginBonusRepository.findByUserAndBonusId(newUserData, bonusId); - UserLoginBonus userLoginBonus = loginBonusOptional.orElseGet(() -> new UserLoginBonus(newUserData)); + Optional loginBonusOptional = userLoginBonusRepository.findByUserAndBonusId(newUserData, bonusId); + UserLoginBonus userLoginBonus = loginBonusOptional.orElseGet(() -> new UserLoginBonus(newUserData)); - UserLoginBonus newUserLoginBonus = mapper.convert(userLoginBonusMap, UserLoginBonus.class); - newUserLoginBonus.setId(userLoginBonus.getId()); - newUserLoginBonus.setUser(newUserData); - newUserLoginBonusList.add(newUserLoginBonus); - } - userLoginBonusRepository.saveAll(newUserLoginBonusList); + newUserLoginBonus.setId(userLoginBonus.getId()); + newUserLoginBonus.setUser(newUserData); + newUserLoginBonusList.add(newUserLoginBonus); } + userLoginBonusRepository.saveAll(newUserLoginBonusList); + // UserEventPointList - if (upsertUserAll.containsKey("userEventPointList")) { - List> userEventPointList = ((List>) upsertUserAll.get("userEventPointList")); - List newUserEventPointList = new ArrayList<>(); + List userEventPointList = upsertUserAll.getUserEventPointList(); + List newUserEventPointList = new ArrayList<>(); - for (Map userEventPointMap : userEventPointList) { - Integer eventId = (Integer) userEventPointMap.get("eventId"); + for (UserEventPoint newUserEventPoint : userEventPointList) { + int eventId = newUserEventPoint.getEventId(); - Optional eventPointOptional = userEventPointRepository.findByUserAndEventId(newUserData, eventId); - UserEventPoint userEventPoint = eventPointOptional.orElseGet(() -> new UserEventPoint(newUserData)); + Optional eventPointOptional = userEventPointRepository.findByUserAndEventId(newUserData, eventId); + UserEventPoint userEventPoint = eventPointOptional.orElseGet(() -> new UserEventPoint(newUserData)); - UserEventPoint newUserEventPoint = mapper.convert(userEventPointMap, UserEventPoint.class); - newUserEventPoint.setId(userEventPoint.getId()); - newUserEventPoint.setUser(newUserData); - newUserEventPointList.add(newUserEventPoint); - } - userEventPointRepository.saveAll(newUserEventPointList); + newUserEventPoint.setId(userEventPoint.getId()); + newUserEventPoint.setUser(newUserData); + newUserEventPointList.add(newUserEventPoint); } + userEventPointRepository.saveAll(newUserEventPointList); + // UserMissionPointList - if (upsertUserAll.containsKey("userMissionPointList")) { - List> userMissionPointList = ((List>) upsertUserAll.get("userMissionPointList")); - List newUserMissionPointList = new ArrayList<>(); + List userMissionPointList = upsertUserAll.getUserMissionPointList(); + List newUserMissionPointList = new ArrayList<>(); - for (Map userMissionPointMap : userMissionPointList) { - Integer eventId = (Integer) userMissionPointMap.get("eventId"); + for (UserMissionPoint newUserMissionPoint : userMissionPointList) { + int eventId = newUserMissionPoint.getEventId(); - Optional userMissionPointOptional = userMissionPointRepository.findByUserAndEventId(newUserData, eventId); - UserMissionPoint userMissionPoint = userMissionPointOptional.orElseGet(() -> new UserMissionPoint(newUserData)); + Optional userMissionPointOptional = userMissionPointRepository.findByUserAndEventId(newUserData, eventId); + UserMissionPoint userMissionPoint = userMissionPointOptional.orElseGet(() -> new UserMissionPoint(newUserData)); - UserMissionPoint newUserEventPoint = mapper.convert(userMissionPointMap, UserMissionPoint.class); - newUserEventPoint.setId(userMissionPoint.getId()); - newUserEventPoint.setUser(newUserData); - newUserMissionPointList.add(newUserEventPoint); - } - userMissionPointRepository.saveAll(newUserMissionPointList); + newUserMissionPoint.setId(userMissionPoint.getId()); + newUserMissionPoint.setUser(newUserData); + newUserMissionPointList.add(newUserMissionPoint); } + userMissionPointRepository.saveAll(newUserMissionPointList); // UserRatinglogList (For the highest rating of each version) @@ -449,11 +400,7 @@ public class UpsertUserAllHandler implements BaseHandler { } - private void saveGeneralData(Map upsertUserAll, UserData newUserData, String jsonName, String key) { - List> recordList = ((List>) upsertUserAll.get(jsonName)); - - List itemList = mapper.convert(recordList, new TypeReference<>() { - }); + private void saveGeneralData(List itemList, UserData newUserData, String key) { StringBuilder sb = new StringBuilder(); // Convert to a string for (UserRecentRating item : @@ -461,7 +408,7 @@ public class UpsertUserAllHandler implements BaseHandler { sb.append(item.getMusicId()).append(":").append(item.getDifficultId()).append(":").append(item.getScore()); sb.append(","); } - if(sb.length() > 0) { + if (sb.length() > 0) { sb.deleteCharAt(sb.length() - 1); } Optional uOptional = userGeneralDataRepository.findByUserAndPropertyKey(newUserData, key); diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java new file mode 100644 index 00000000..e9ddcc08 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/request/UpsertUserAll.java @@ -0,0 +1,113 @@ +package icu.samnyan.aqua.sega.ongeki.model.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import icu.samnyan.aqua.sega.general.model.response.UserRecentRating; +import icu.samnyan.aqua.sega.ongeki.model.userdata.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpsertUserAll implements Serializable { + + private List userData; + + private List userOption; + + private List userPlaylogList; + + private List> userSessionlogList; + + private List userActivityList; + + private List userRecentRatingList; + + private List userBpBaseList; + + private List userRatingBaseBestNewList; + + private List userRatingBaseBestList; + + private List userRatingBaseHotList; + + private List userRatingBaseNextNewList; + + private List userRatingBaseNextList; + + private List userRatingBaseHotNextList; + + private List userMusicDetailList; + + private List userCharacterList; + + private List userCardList; + + private List userDeckList; + + private List userTrainingRoomList; + + private List userStoryList; + + private List userChapterList; + + private List userItemList; + + private List userMusicItemList; + + private List userLoginBonusList; + + private List userEventPointList; + + private List userMissionPointList; + + private List> userRatinglogList; + + @JsonProperty("isNewMusicDetailList") + private String isNewMusicDetailList; + + @JsonProperty("isNewCharacterList") + private String isNewCharacterList; + + @JsonProperty("isNewCardList") + private String isNewCardList; + + @JsonProperty("isNewDeckList") + private String isNewDeckList; + + @JsonProperty("isNewTrainingRoomList") + private String isNewTrainingRoomList; + + @JsonProperty("isNewStoryList") + private String isNewStoryList; + + @JsonProperty("isNewChapterList") + private String isNewChapterList; + + @JsonProperty("isNewItemList") + private String isNewItemList; + + @JsonProperty("isNewMusicItemList") + private String isNewMusicItemList; + + @JsonProperty("isNewLoginBonusList") + private String isNewLoginBonusList; + + @JsonProperty("isNewEventPointList") + private String isNewEventPointList; + + @JsonProperty("isNewMissionPointList") + private String isNewMissionPointList; + + @JsonProperty("isNewRatinglogList") + private String isNewRatinglogList; + +}