From 5b6a456c3020a78e2b818b09a49cbd8cd1b5ee4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8E=E1=85=AC=E1=84=8C=E1=85=AE=E1=86=AB=E1=84=92?= =?UTF-8?q?=E1=85=A9?= Date: Mon, 8 Apr 2024 19:55:33 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20isEvent=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ownershop/dto/OwnerShopsResponse.java | 20 +++++++----------- .../ownershop/service/OwnerShopService.java | 8 ++++++- .../koin/domain/shop/dto/ShopsResponse.java | 21 +++++++++++-------- .../koin/domain/shop/service/ShopService.java | 8 ++++++- 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/main/java/in/koreatech/koin/domain/ownershop/dto/OwnerShopsResponse.java b/src/main/java/in/koreatech/koin/domain/ownershop/dto/OwnerShopsResponse.java index ea310908e9..6f412f6617 100644 --- a/src/main/java/in/koreatech/koin/domain/ownershop/dto/OwnerShopsResponse.java +++ b/src/main/java/in/koreatech/koin/domain/ownershop/dto/OwnerShopsResponse.java @@ -9,27 +9,23 @@ @JsonNaming(value = SnakeCaseStrategy.class) public record OwnerShopsResponse( - Long count, + Integer count, List shops ) { - public static OwnerShopsResponse from(List shops) { - return new OwnerShopsResponse( - (long) shops.size(), - shops.stream() - .map(InnerShopResponse::from) - .toList() - ); + public static OwnerShopsResponse from(List shops) { + return new OwnerShopsResponse(shops.size(), shops); } @JsonNaming(value = SnakeCaseStrategy.class) - private record InnerShopResponse( + public record InnerShopResponse( Long id, - String name + String name, + boolean isEvent ) { - public static InnerShopResponse from(Shop shop) { - return new InnerShopResponse(shop.getId(), shop.getName()); + public static InnerShopResponse from(Shop shop, boolean isEvent) { + return new InnerShopResponse(shop.getId(), shop.getName(), isEvent); } } } diff --git a/src/main/java/in/koreatech/koin/domain/ownershop/service/OwnerShopService.java b/src/main/java/in/koreatech/koin/domain/ownershop/service/OwnerShopService.java index 0475f07e78..4107c9654d 100644 --- a/src/main/java/in/koreatech/koin/domain/ownershop/service/OwnerShopService.java +++ b/src/main/java/in/koreatech/koin/domain/ownershop/service/OwnerShopService.java @@ -12,6 +12,7 @@ import in.koreatech.koin.domain.owner.repository.OwnerRepository; import in.koreatech.koin.domain.ownershop.dto.OwnerShopsRequest; import in.koreatech.koin.domain.ownershop.dto.OwnerShopsResponse; +import in.koreatech.koin.domain.ownershop.dto.OwnerShopsResponse.InnerShopResponse; import in.koreatech.koin.domain.shop.dto.CreateCategoryRequest; import in.koreatech.koin.domain.shop.dto.CreateMenuRequest; import in.koreatech.koin.domain.shop.dto.MenuCategoriesResponse; @@ -68,7 +69,12 @@ public class OwnerShopService { public OwnerShopsResponse getOwnerShops(Long ownerId) { List shops = shopRepository.findAllByOwnerId(ownerId); - return OwnerShopsResponse.from(shops); + var innerShopResponses = shops.stream().map(shop -> { + Boolean eventDuration = eventArticleRepository.isEvent(shop.getId(), LocalDate.now(clock)); + return InnerShopResponse.from(shop, eventDuration); + }) + .toList(); + return OwnerShopsResponse.from(innerShopResponses); } @Transactional diff --git a/src/main/java/in/koreatech/koin/domain/shop/dto/ShopsResponse.java b/src/main/java/in/koreatech/koin/domain/shop/dto/ShopsResponse.java index 80cc141fe1..5af110bb7d 100644 --- a/src/main/java/in/koreatech/koin/domain/shop/dto/ShopsResponse.java +++ b/src/main/java/in/koreatech/koin/domain/shop/dto/ShopsResponse.java @@ -18,15 +18,13 @@ public record ShopsResponse( @Schema(description = "상점 정보") List shops ) { - public static ShopsResponse from(List shops) { - return new ShopsResponse( - shops.size(), - shops.stream().map(InnerShopResponse::from).toList() - ); + + public static ShopsResponse from(List shops) { + return new ShopsResponse(shops.size(), shops); } @JsonNaming(value = SnakeCaseStrategy.class) - private record InnerShopResponse( + public record InnerShopResponse( @Schema(example = "0", description = " 속해있는 상점 카테고리들의 고유 id 리스트") List categoryIds, @@ -49,9 +47,13 @@ private record InnerShopResponse( boolean payCard, @Schema(example = "041-000-0000", description = "전화번호") - String phone + String phone, + + @Schema(example = "true", description = "삭제 여부") + boolean isEvent ) { - public static InnerShopResponse from(Shop shop) { + + public static InnerShopResponse from(Shop shop, boolean isEvent) { return new InnerShopResponse( shop.getShopCategories().stream().map(shopCategoryMap -> shopCategoryMap.getShopCategory().getId() @@ -62,7 +64,8 @@ public static InnerShopResponse from(Shop shop) { shop.getShopOpens().stream().map(InnerShopOpen::from).toList(), shop.getPayBank(), shop.getPayCard(), - shop.getPhone() + shop.getPhone(), + isEvent ); } } diff --git a/src/main/java/in/koreatech/koin/domain/shop/service/ShopService.java b/src/main/java/in/koreatech/koin/domain/shop/service/ShopService.java index 13f9bc9c38..7118a16df0 100644 --- a/src/main/java/in/koreatech/koin/domain/shop/service/ShopService.java +++ b/src/main/java/in/koreatech/koin/domain/shop/service/ShopService.java @@ -14,6 +14,7 @@ import in.koreatech.koin.domain.shop.dto.ShopMenuResponse; import in.koreatech.koin.domain.shop.dto.ShopResponse; import in.koreatech.koin.domain.shop.dto.ShopsResponse; +import in.koreatech.koin.domain.shop.dto.ShopsResponse.InnerShopResponse; import in.koreatech.koin.domain.shop.model.EventArticle; import in.koreatech.koin.domain.shop.model.Menu; import in.koreatech.koin.domain.shop.model.MenuCategory; @@ -70,7 +71,12 @@ public ShopMenuResponse getShopMenus(Long shopId) { public ShopsResponse getShops() { List shops = shopRepository.findAll(); - return ShopsResponse.from(shops); + var innerShopResponses = shops.stream().map(shop -> { + Boolean eventDuration = eventArticleRepository.isEvent(shop.getId(), LocalDate.now(clock)); + return InnerShopResponse.from(shop, eventDuration); + }) + .toList(); + return ShopsResponse.from(innerShopResponses); } public ShopCategoriesResponse getShopsCategories() {