From db419b566d63c7d642fc7d75c6e4583d18cffc41 Mon Sep 17 00:00:00 2001 From: phjlia2430 Date: Sun, 17 May 2026 17:37:50 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix:=20=ED=8E=B8=EC=A7=80?= =?UTF-8?q?=EC=A7=80=20=EC=95=84=EC=9D=B4=ED=85=9C=20=EA=B5=AC=EB=A7=A4/?= =?UTF-8?q?=EC=B0=A9=EC=9A=A9=20URL=20=EA=B2=BD=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20letter=5Fpaper=20path=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EC=B2=98=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/shop/service/AdminShopService.java | 2 ++ .../domain/shop/service/ShopService.java | 22 ++++++++++++++----- .../global/loader/ItemInitializer.java | 14 ++++++++++++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/egobook_be/domain/shop/service/AdminShopService.java b/src/main/java/com/example/egobook_be/domain/shop/service/AdminShopService.java index 6b2ae060..63ef76df 100644 --- a/src/main/java/com/example/egobook_be/domain/shop/service/AdminShopService.java +++ b/src/main/java/com/example/egobook_be/domain/shop/service/AdminShopService.java @@ -40,6 +40,8 @@ public AdminItemResDto createItem(AdminItemReqDto reqDto) throws IOException { path = path.equals("decor_two") ? "decor2" : path; path = path.equals("decor_one") ? "decor1" : path; + path = path.equals("letter_paper") ? "letter" : path; + // 이미지 s3에 업로드 String imageUrl = s3ImageService.upload(reqDto.file(),path); diff --git a/src/main/java/com/example/egobook_be/domain/shop/service/ShopService.java b/src/main/java/com/example/egobook_be/domain/shop/service/ShopService.java index 55b9f031..8452803f 100644 --- a/src/main/java/com/example/egobook_be/domain/shop/service/ShopService.java +++ b/src/main/java/com/example/egobook_be/domain/shop/service/ShopService.java @@ -93,7 +93,7 @@ public SliceResponse getItemSlice(Long userId, ItemCategory */ return SliceResponse.of(sliceEntity, item -> { Boolean isPurchased = userItemMap.containsKey(item.getId()); - return itemMapper.toShopItemInfoResDto(item, getShopCloudFrontDomain(), getMyCloudFrontDomain(), isPurchased, userItemMap.getOrDefault(item.getId(), false)); + return itemMapper.toShopItemInfoResDto(item, getCloudFrontDomainByCategory(item.getCategory()), getMyCloudFrontDomain(), isPurchased, userItemMap.getOrDefault(item.getId(), false)); }); } @@ -131,7 +131,7 @@ public ItemInfoResDto purchaseItem(Long userId, PurchaseItemReqDto reqDto){ log.info("[ShopService] purchaseItem End - userId: {}", userId); // 4. 아이템 구매 후, 해당 아이템에 대한 정보를 반환한다. - return userItemMapper.toItemInfoResDto(userItem, item, getShopCloudFrontDomain()); + return userItemMapper.toItemInfoResDto(userItem, item, getCloudFrontDomainByCategory(item.getCategory())); } /** @@ -157,7 +157,8 @@ public ItemInfoResDto equipItem(Long userId, EquipItemReqDto reqDto) { // 2. 멱등성 체크: 이미 원하는 상태라면 DB 변경 없이 바로 반환 (불필요한 쿼리 방지) if (targetUserItem.getIsEquipped() == targetStatus) { - return userItemMapper.toItemInfoResDto(targetUserItem, targetUserItem.getItem(), cloudfrontDomain); + return userItemMapper.toItemInfoResDto(targetUserItem, targetUserItem.getItem(), + getCloudFrontDomainByCategory(targetUserItem.getItem().getCategory())); } /* @@ -187,7 +188,8 @@ public ItemInfoResDto equipItem(Long userId, EquipItemReqDto reqDto) { log.info("[ShopService] equipItem End - userId: {}", userId); // 4. 변경된 정보 반환 - return userItemMapper.toItemInfoResDto(targetUserItem, targetUserItem.getItem(), getMyCloudFrontDomain()); + return userItemMapper.toItemInfoResDto(targetUserItem, targetUserItem.getItem(), + getCloudFrontDomainByCategory(targetUserItem.getItem().getCategory())); } /** @@ -202,7 +204,8 @@ public List getEquippedItems(Long userId){ log.info("[ShopService] getEquippedItems End - userId: {}", userId); // 2. 조회해온 각 아이템을 dto로 변환 (Fetch Join 썼으므로 N+1 발생 안함) return equippedItems.stream() - .map(userItem -> userItemMapper.toItemInfoResDto(userItem, userItem.getItem(), getMyCloudFrontDomain())) + .map(userItem -> userItemMapper.toItemInfoResDto(userItem, userItem.getItem(), + getCloudFrontDomainByCategory(userItem.getItem().getCategory()))) .toList(); } @@ -212,4 +215,11 @@ private String getShopCloudFrontDomain(){ private String getMyCloudFrontDomain(){ return cloudfrontDomain+"/my"; } -} + + private String getCloudFrontDomainByCategory(ItemCategory category) { + return switch (category) { + case LETTER_PAPER -> cloudfrontDomain + "/letter"; + default -> cloudfrontDomain + "/shop"; + }; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/egobook_be/global/loader/ItemInitializer.java b/src/main/java/com/example/egobook_be/global/loader/ItemInitializer.java index 26296c0c..021e79ba 100644 --- a/src/main/java/com/example/egobook_be/global/loader/ItemInitializer.java +++ b/src/main/java/com/example/egobook_be/global/loader/ItemInitializer.java @@ -35,6 +35,7 @@ public class ItemInitializer implements ApplicationRunner { String PATH_DECOR_TWO = "decor2"; String PATH_BACKGROUND = "background"; + String PATH_LETTER_PAPER = "letter"; @Override @Transactional @@ -170,9 +171,22 @@ private List getInitItemList(){ items.add(buildBackgroundItem("Blossom.png", 750)); items.add(buildBackgroundItem("Beach.png", 1000)); + + + items.add(buildLetterPaperItem("Blue.png", 150)); + items.add(buildLetterPaperItem("Green.png", 100)); + items.add(buildLetterPaperItem("Pink.png", 75)); + items.add(buildLetterPaperItem("Purple.png", 175)); + + return items; } + + private Item buildLetterPaperItem(String name, Integer price) { + return buildItem(PATH_LETTER_PAPER, ItemCategory.LETTER_PAPER, name, price); + } + /** * 1. Back 아이템 생성 함수 */