diff --git a/src/main/java/in/koreatech/koin/domain/benefit/repository/BenefitCategoryMapRepository.java b/src/main/java/in/koreatech/koin/domain/benefit/repository/BenefitCategoryMapRepository.java index 1555fc1731..3115293a37 100644 --- a/src/main/java/in/koreatech/koin/domain/benefit/repository/BenefitCategoryMapRepository.java +++ b/src/main/java/in/koreatech/koin/domain/benefit/repository/BenefitCategoryMapRepository.java @@ -4,17 +4,25 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.Repository; +import org.springframework.data.repository.query.Param; import in.koreatech.koin.domain.benefit.model.BenefitCategoryMap; public interface BenefitCategoryMapRepository extends Repository { - List findByBenefitCategoryId(Integer benefitCategoryId); + @Query(""" + SELECT bcm FROM BenefitCategoryMap bcm + JOIN FETCH bcm.shop s + WHERE bcm.benefitCategory.id = :benefitCategoryId + AND s.isDeleted = false + """) + List findActiveShopMapsByBenefitCategoryId(@Param("benefitCategoryId") Integer benefitCategoryId); @Query(""" SELECT bcm FROM BenefitCategoryMap bcm JOIN FETCH bcm.shop s JOIN FETCH bcm.benefitCategory bc + WHERE s.isDeleted = false """) List findAllWithFetchJoin(); diff --git a/src/main/java/in/koreatech/koin/domain/benefit/service/ShopBenefitService.java b/src/main/java/in/koreatech/koin/domain/benefit/service/ShopBenefitService.java index 9d41fb04fd..b9aae96dec 100644 --- a/src/main/java/in/koreatech/koin/domain/benefit/service/ShopBenefitService.java +++ b/src/main/java/in/koreatech/koin/domain/benefit/service/ShopBenefitService.java @@ -35,7 +35,8 @@ public BenefitCategoryResponse getBenefitCategories() { } public BenefitShopsResponse getBenefitShops(Integer benefitId) { - List benefitCategoryMaps = benefitCategoryMapRepository.findByBenefitCategoryId(benefitId); + List benefitCategoryMaps = + benefitCategoryMapRepository.findActiveShopMapsByBenefitCategoryId(benefitId); LocalDateTime now = LocalDateTime.now(clock); List innerShopResponses = benefitCategoryMaps.stream() diff --git a/src/test/java/in/koreatech/koin/acceptance/domain/BenefitApiTest.java b/src/test/java/in/koreatech/koin/acceptance/domain/BenefitApiTest.java index 8975e05bf9..afc29ebd52 100644 --- a/src/test/java/in/koreatech/koin/acceptance/domain/BenefitApiTest.java +++ b/src/test/java/in/koreatech/koin/acceptance/domain/BenefitApiTest.java @@ -101,6 +101,23 @@ void setup() { benefitCategoryMapFixture.혜택_추가(마슬랜, 배달비_무료); benefitCategoryMapFixture.혜택_추가(영업중인_티바, 배달비_무료); benefitCategoryMapFixture.혜택_추가(영업중이_아닌_신전_떡볶이, 배달비_무료); + Shop 삭제된_굿모닝살로만치킨 = shopFixture.builder() + .owner(현수_사장님) + .name("굿모닝살로만치킨") + .internalName("굿모닝살로만치킨") + .phone("010-0000-0000") + .address("천안시 동남구 병천면 1600") + .description("삭제된 상점입니다.") + .delivery(true) + .deliveryPrice(3000) + .payCard(true) + .payBank(true) + .isDeleted(true) + .isEvent(false) + .remarks("비고") + .hit(0) + .build(); + benefitCategoryMapFixture.설명이_포함된_혜택_추가(삭제된_굿모닝살로만치킨, 배달비_무료, "배달비 무료"); shopReviewFixture.리뷰_4점(성빈_학생, 마슬랜); shopReviewFixture.리뷰_4점(성빈_학생, 영업중인_티바);