From cdb716d508f33039514e23b9ea7ee93b637edbb7 Mon Sep 17 00:00:00 2001 From: PenguinCaptain Date: Thu, 27 Mar 2025 07:31:56 +0800 Subject: [PATCH] [+] Re:Fresh: Extract user skin --- .../dao/userdata/UserSkinRepository.java | 21 +++++++++ .../handler/impl/GetUserSkinHandler.java | 26 +++------- .../sega/ongeki/model/userdata/UserSkin.java | 47 +++++++++++++++++++ .../db/40/V1000_42__ongeki_refresh.sql | 17 ++++++- 4 files changed, 90 insertions(+), 21 deletions(-) create mode 100644 src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java create mode 100644 src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java new file mode 100644 index 00000000..fd1e1c73 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/dao/userdata/UserSkinRepository.java @@ -0,0 +1,21 @@ +package icu.samnyan.aqua.sega.ongeki.dao.userdata; + +import icu.samnyan.aqua.sega.ongeki.model.userdata.UserData; +import icu.samnyan.aqua.sega.ongeki.model.userdata.UserSkin; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Repository("OngekiUserSkinRepository") +public interface UserSkinRepository extends JpaRepository { + + List findByUser_Card_ExtId(long userId); + + @Transactional + void deleteByUser(UserData user); +} diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java index 9037a24d..7963c908 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/handler/impl/GetUserSkinHandler.java @@ -2,8 +2,8 @@ package icu.samnyan.aqua.sega.ongeki.handler.impl; import com.fasterxml.jackson.core.JsonProcessingException; import icu.samnyan.aqua.sega.general.BaseHandler; -import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserDeckRepository; -import icu.samnyan.aqua.sega.ongeki.model.userdata.UserDeck; +import icu.samnyan.aqua.sega.ongeki.dao.userdata.UserSkinRepository; +import icu.samnyan.aqua.sega.ongeki.model.userdata.UserSkin; import icu.samnyan.aqua.sega.util.jackson.BasicMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,7 +13,6 @@ import org.springframework.stereotype.Component; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @author samnyan (privateamusement@protonmail.com) @@ -25,12 +24,12 @@ public class GetUserSkinHandler implements BaseHandler { private final BasicMapper mapper; - private final UserDeckRepository userDeckRepository; + private final UserSkinRepository userSkinRepository; @Autowired - public GetUserSkinHandler(BasicMapper mapper, UserDeckRepository userDeckRepository) { + public GetUserSkinHandler(BasicMapper mapper, UserSkinRepository userSkinRepository) { this.mapper = mapper; - this.userDeckRepository = userDeckRepository; + this.userSkinRepository = userSkinRepository; } @@ -40,20 +39,7 @@ public class GetUserSkinHandler implements BaseHandler { Map resultMap = new LinkedHashMap<>(); resultMap.put("userId", userId); - // Get the list of user decks - List deckList = userDeckRepository.findByUser_Card_ExtId(userId); - - // Convert each UserDeck to UserSkin - List> userSkinList = deckList.stream().map(deck -> { - Map skinMap = new LinkedHashMap<>(); - skinMap.put("deckId", deck.getDeckId()); - skinMap.put("isValid", false); - skinMap.put("cardId1", deck.getCardId1()); - skinMap.put("cardId2", deck.getCardId2()); - skinMap.put("cardId3", deck.getCardId3()); - return skinMap; - }).collect(Collectors.toList()); - + List userSkinList = userSkinRepository.findByUser_Card_ExtId(userId); resultMap.put("length", userSkinList.size()); resultMap.put("userSkinList", userSkinList); diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java new file mode 100644 index 00000000..d0c35d51 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserSkin.java @@ -0,0 +1,47 @@ +package icu.samnyan.aqua.sega.ongeki.model.userdata; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Entity(name = "OngekiUserSkin") +@Table(name = "ongeki_user_skin") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserSkin implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @JsonIgnore + private long id; + + @JsonIgnore + @ManyToOne + @JoinColumn(name = "user_id") + private UserData user; + + //TODO: should be updated on net when changing skin + private boolean isValid; + + private int deckId; + + private int cardId1; + + private int cardId2; + + private int cardId3; + + public UserSkin(UserData userData) { + this.user = userData; + } +} diff --git a/src/main/resources/db/40/V1000_42__ongeki_refresh.sql b/src/main/resources/db/40/V1000_42__ongeki_refresh.sql index fdeeab29..8ccdc606 100644 --- a/src/main/resources/db/40/V1000_42__ongeki_refresh.sql +++ b/src/main/resources/db/40/V1000_42__ongeki_refresh.sql @@ -31,4 +31,19 @@ CREATE TABLE ongeki_user_event_map ); ALTER TABLE ongeki_user_event_map - ADD CONSTRAINT FKU_ONGEKI_USER_EVENT_MAP FOREIGN KEY (user_id) REFERENCES ongeki_user_data (id); \ No newline at end of file + ADD CONSTRAINT FKU_ONGEKI_USER_EVENT_MAP FOREIGN KEY (user_id) REFERENCES ongeki_user_data (id); + +-- ongeki_user_skin +CREATE TABLE ongeki_user_skin +( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + user_id BIGINT NULL, + is_valid BIT NOT NULL, + deck_id INT NOT NULL, + card_id1 INT NOT NULL, + card_id2 INT NOT NULL, + card_id3 INT NOT NULL +); + +ALTER TABLE ongeki_user_skin + ADD CONSTRAINT FKU_ONGEKI_USER_SKIN FOREIGN KEY (user_id) REFERENCES ongeki_user_data (id); \ No newline at end of file