From c32627c2e5a99f0e776be1e1e76ff4dd66a24d70 Mon Sep 17 00:00:00 2001 From: ParkJiYeoung8297 Date: Tue, 10 Feb 2026 00:17:45 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(#140):=20=EC=BA=A0=ED=8E=98=EC=9D=B8=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=EC=97=90=20dday,=20?= =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=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 --- .../application/service/CampaignQueryService.java | 4 +++- .../presentation/controller/CampaignController.java | 3 +++ .../dto/response/CampaignDetailResponse.java | 13 ++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java b/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java index 0600689b..e9ab3d44 100644 --- a/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java +++ b/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java @@ -1,5 +1,6 @@ package com.example.RealMatch.campaign.application.service; +import java.time.LocalDate; import java.util.List; import org.springframework.stereotype.Service; @@ -40,6 +41,7 @@ public CampaignDetailResponse getCampaignDetail(Long userId, Long campaignId) { String imageUrl = attachmentUrlService.getAccessUrl(campaign.getImageUrl()); - return CampaignDetailResponse.from(campaign, imageUrl, isLike, tags); + LocalDate today = LocalDate.now(); + return CampaignDetailResponse.from(campaign, imageUrl, isLike, today, tags); } } diff --git a/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java b/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java index 441dda9b..59cf4ad2 100644 --- a/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java +++ b/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java @@ -31,6 +31,9 @@ public class CampaignController { description = """ 캠페인 상세 정보를 조회합니다. + * dday가 -1인 것은은 dday가 지난 상태를 말합니다. + * 카테고리는 브랜드의 카테고리를 따라갑니다. (데모데이 이후 캠페인 카테고리로 수정 예정) + formats : 형식, categories : 종류, tones : 톤, diff --git a/src/main/java/com/example/RealMatch/campaign/presentation/dto/response/CampaignDetailResponse.java b/src/main/java/com/example/RealMatch/campaign/presentation/dto/response/CampaignDetailResponse.java index 90b56668..97d23f68 100644 --- a/src/main/java/com/example/RealMatch/campaign/presentation/dto/response/CampaignDetailResponse.java +++ b/src/main/java/com/example/RealMatch/campaign/presentation/dto/response/CampaignDetailResponse.java @@ -2,11 +2,13 @@ import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; +import com.example.RealMatch.brand.domain.entity.enums.IndustryType; import com.example.RealMatch.campaign.domain.entity.Campaign; import com.example.RealMatch.campaign.domain.entity.CampaignContentTag; import com.example.RealMatch.tag.domain.enums.ContentTagType; @@ -19,10 +21,11 @@ @Builder public class CampaignDetailResponse { - private Long campaignId; + private Long campaignId; private String title; private String description; private String imageUrl; + private IndustryType category; private String preferredSkills; private String schedule; @@ -42,6 +45,7 @@ public class CampaignDetailResponse { private LocalDateTime recruitStartDate; private LocalDateTime recruitEndDate; + private int dday; private Integer quota; @@ -51,13 +55,19 @@ public static CampaignDetailResponse from( Campaign campaign, String imageUrl, boolean isLike, + LocalDate today, List tags ) { + int dday = (int) ChronoUnit.DAYS.between( + today, campaign.getRecruitEndDate().toLocalDate() + ); + return CampaignDetailResponse.builder() .campaignId(campaign.getId()) .title(campaign.getTitle()) .description(campaign.getDescription()) .imageUrl(imageUrl) + .category(campaign.getBrand().getIndustryType()) .preferredSkills(campaign.getPreferredSkills()) .schedule(campaign.getSchedule()) .videoSpec(campaign.getVideoSpec()) @@ -68,6 +78,7 @@ public static CampaignDetailResponse from( .endDate(campaign.getEndDate()) .recruitStartDate(campaign.getRecruitStartDate()) .recruitEndDate(campaign.getRecruitEndDate()) + .dday(Math.max(dday, -1)) .quota(campaign.getQuota()) .contentTags(toContentTagResponse(tags)) .build(); From fb1aee28417efe73be3585e08be7f72da6c06a87 Mon Sep 17 00:00:00 2001 From: ParkJiYeoung8297 Date: Tue, 10 Feb 2026 00:23:04 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix(#140):=20=EC=BA=A0=ED=8E=98=EC=9D=B8=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=EC=A1=B0=ED=9A=8C=EC=97=90=EC=84=9C=20Loc?= =?UTF-8?q?alDate.now=EB=A5=BC=20=EC=84=9C=EC=9A=B8=20=EA=B8=B0=EC=A4=80?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../campaign/application/service/CampaignQueryService.java | 3 ++- .../campaign/presentation/controller/CampaignController.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java b/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java index e9ab3d44..3015a217 100644 --- a/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java +++ b/src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java @@ -1,6 +1,7 @@ package com.example.RealMatch.campaign.application.service; import java.time.LocalDate; +import java.time.ZoneId; import java.util.List; import org.springframework.stereotype.Service; @@ -41,7 +42,7 @@ public CampaignDetailResponse getCampaignDetail(Long userId, Long campaignId) { String imageUrl = attachmentUrlService.getAccessUrl(campaign.getImageUrl()); - LocalDate today = LocalDate.now(); + LocalDate today = LocalDate.now(ZoneId.of("Asia/Seoul")); return CampaignDetailResponse.from(campaign, imageUrl, isLike, today, tags); } } diff --git a/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java b/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java index 59cf4ad2..ba0d41be 100644 --- a/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java +++ b/src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java @@ -31,8 +31,8 @@ public class CampaignController { description = """ 캠페인 상세 정보를 조회합니다. - * dday가 -1인 것은은 dday가 지난 상태를 말합니다. - * 카테고리는 브랜드의 카테고리를 따라갑니다. (데모데이 이후 캠페인 카테고리로 수정 예정) + * dday가 -1인 것은 dday가 지난 상태를 말합니다. + * 카테고리는 브랜드의 카테고리를 따라갑니다. (데모데이 이후 캠페인 카테고리로 수정 예정) formats : 형식, categories : 종류,