Skip to content

Commit 20948ea

Browse files
Merge pull request #346 from RealMatchTeam/fix/#140-get-my-campaign
fix(#140): 캠페인 정보 조회에 dday, 카테고리 추가
2 parents 77089fe + fb1aee2 commit 20948ea

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/main/java/com/example/RealMatch/campaign/application/service/CampaignQueryService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.example.RealMatch.campaign.application.service;
22

3+
import java.time.LocalDate;
4+
import java.time.ZoneId;
35
import java.util.List;
46

57
import org.springframework.stereotype.Service;
@@ -40,6 +42,7 @@ public CampaignDetailResponse getCampaignDetail(Long userId, Long campaignId) {
4042

4143
String imageUrl = attachmentUrlService.getAccessUrl(campaign.getImageUrl());
4244

43-
return CampaignDetailResponse.from(campaign, imageUrl, isLike, tags);
45+
LocalDate today = LocalDate.now(ZoneId.of("Asia/Seoul"));
46+
return CampaignDetailResponse.from(campaign, imageUrl, isLike, today, tags);
4447
}
4548
}

src/main/java/com/example/RealMatch/campaign/presentation/controller/CampaignController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ public class CampaignController {
3131
description = """
3232
캠페인 상세 정보를 조회합니다.
3333
34+
* dday가 -1인 것은 dday가 지난 상태를 말합니다.
35+
* 카테고리는 브랜드의 카테고리를 따라갑니다. (데모데이 이후 캠페인 카테고리로 수정 예정)
36+
3437
formats : 형식,
3538
categories : 종류,
3639
tones : 톤,

src/main/java/com/example/RealMatch/campaign/presentation/dto/response/CampaignDetailResponse.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import java.time.LocalDate;
44
import java.time.LocalDateTime;
5+
import java.time.temporal.ChronoUnit;
56
import java.util.ArrayList;
67
import java.util.EnumMap;
78
import java.util.List;
89
import java.util.Map;
910

11+
import com.example.RealMatch.brand.domain.entity.enums.IndustryType;
1012
import com.example.RealMatch.campaign.domain.entity.Campaign;
1113
import com.example.RealMatch.campaign.domain.entity.CampaignContentTag;
1214
import com.example.RealMatch.tag.domain.enums.ContentTagType;
@@ -19,10 +21,11 @@
1921
@Builder
2022
public class CampaignDetailResponse {
2123

22-
private Long campaignId;
24+
private Long campaignId;
2325
private String title;
2426
private String description;
2527
private String imageUrl;
28+
private IndustryType category;
2629

2730
private String preferredSkills;
2831
private String schedule;
@@ -42,6 +45,7 @@ public class CampaignDetailResponse {
4245

4346
private LocalDateTime recruitStartDate;
4447
private LocalDateTime recruitEndDate;
48+
private int dday;
4549

4650
private Integer quota;
4751

@@ -51,13 +55,19 @@ public static CampaignDetailResponse from(
5155
Campaign campaign,
5256
String imageUrl,
5357
boolean isLike,
58+
LocalDate today,
5459
List<CampaignContentTag> tags
5560
) {
61+
int dday = (int) ChronoUnit.DAYS.between(
62+
today, campaign.getRecruitEndDate().toLocalDate()
63+
);
64+
5665
return CampaignDetailResponse.builder()
5766
.campaignId(campaign.getId())
5867
.title(campaign.getTitle())
5968
.description(campaign.getDescription())
6069
.imageUrl(imageUrl)
70+
.category(campaign.getBrand().getIndustryType())
6171
.preferredSkills(campaign.getPreferredSkills())
6272
.schedule(campaign.getSchedule())
6373
.videoSpec(campaign.getVideoSpec())
@@ -68,6 +78,7 @@ public static CampaignDetailResponse from(
6878
.endDate(campaign.getEndDate())
6979
.recruitStartDate(campaign.getRecruitStartDate())
7080
.recruitEndDate(campaign.getRecruitEndDate())
81+
.dday(Math.max(dday, -1))
7182
.quota(campaign.getQuota())
7283
.contentTags(toContentTagResponse(tags))
7384
.build();

0 commit comments

Comments
 (0)