diff --git a/src/main/java/com/example/RealMatch/brand/domain/repository/BrandAvailableSponsorRepository.java b/src/main/java/com/example/RealMatch/brand/domain/repository/BrandAvailableSponsorRepository.java index b242ea00..0ac97954 100644 --- a/src/main/java/com/example/RealMatch/brand/domain/repository/BrandAvailableSponsorRepository.java +++ b/src/main/java/com/example/RealMatch/brand/domain/repository/BrandAvailableSponsorRepository.java @@ -1,6 +1,7 @@ package com.example.RealMatch.brand.domain.repository; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -14,4 +15,6 @@ public interface BrandAvailableSponsorRepository extends JpaRepository findByBrandIdWithImages(@Param("brandId") Long brandId); + + Optional findByBrandIdAndId(Long brandId, Long id); } diff --git a/src/main/java/com/example/RealMatch/business/application/service/CampaignProposalQueryService.java b/src/main/java/com/example/RealMatch/business/application/service/CampaignProposalQueryService.java index 698e4ddb..4f45871c 100644 --- a/src/main/java/com/example/RealMatch/business/application/service/CampaignProposalQueryService.java +++ b/src/main/java/com/example/RealMatch/business/application/service/CampaignProposalQueryService.java @@ -1,8 +1,12 @@ package com.example.RealMatch.business.application.service; +import java.util.Optional; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.example.RealMatch.brand.domain.entity.BrandAvailableSponsor; +import com.example.RealMatch.brand.domain.repository.BrandAvailableSponsorRepository; import com.example.RealMatch.business.domain.entity.CampaignProposal; import com.example.RealMatch.business.domain.repository.CampaignProposalRepository; import com.example.RealMatch.business.exception.BusinessErrorCode; @@ -17,6 +21,7 @@ public class CampaignProposalQueryService { private final CampaignProposalRepository campaignProposalRepository; + private final BrandAvailableSponsorRepository brandAvailableSponsorRepository; public CampaignProposalDetailResponse getProposalDetail( Long userId, @@ -24,7 +29,14 @@ public CampaignProposalDetailResponse getProposalDetail( ) { CampaignProposal proposal = campaignProposalRepository.findByIdWithTags(proposalId) .orElseThrow(() -> new CustomException(BusinessErrorCode.CAMPAIGN_PROPOSAL_NOT_FOUND)); + + // TODO: 데모데이 이후에 해당 제품이 없으면 에러 던지는 방향으로 수정 필요!! + 조회 권한 로직 추가 필요(본인만 조회 가능) + String productName = Optional.ofNullable(proposal.getProductId()) + .flatMap(productId -> brandAvailableSponsorRepository + .findByBrandIdAndId(proposal.getBrand().getId(), productId)) + .map(BrandAvailableSponsor::getName) + .orElse(null); - return CampaignProposalDetailResponse.from(proposal); + return CampaignProposalDetailResponse.from(proposal, productName); } } diff --git a/src/main/java/com/example/RealMatch/business/presentation/dto/response/CampaignProposalDetailResponse.java b/src/main/java/com/example/RealMatch/business/presentation/dto/response/CampaignProposalDetailResponse.java index 7e0e695d..4236b296 100644 --- a/src/main/java/com/example/RealMatch/business/presentation/dto/response/CampaignProposalDetailResponse.java +++ b/src/main/java/com/example/RealMatch/business/presentation/dto/response/CampaignProposalDetailResponse.java @@ -25,6 +25,7 @@ public class CampaignProposalDetailResponse { private Long rewardAmount; private Long productId; + private String productName; private LocalDate startDate; private LocalDate endDate; @@ -36,7 +37,7 @@ public class CampaignProposalDetailResponse { private CampaignContentTagResponse contentTags; - public static CampaignProposalDetailResponse from(CampaignProposal proposal) { + public static CampaignProposalDetailResponse from(CampaignProposal proposal, String productName) { Campaign campaign = proposal.getCampaign(); return CampaignProposalDetailResponse.builder() @@ -49,6 +50,7 @@ public static CampaignProposalDetailResponse from(CampaignProposal proposal) { .description(proposal.getCampaignDescription()) .rewardAmount(Long.valueOf(proposal.getRewardAmount())) .productId(proposal.getProductId()) + .productName(productName) .startDate(proposal.getStartDate()) .endDate(proposal.getEndDate()) .status(proposal.getStatus().name())