diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/request/PostRequest.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/request/PostRequest.java index 400eccf3..5696eebc 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/request/PostRequest.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/request/PostRequest.java @@ -45,6 +45,9 @@ public record PostRequest( @Valid SavedPlaceInfo place, + @Schema(description = "상세 장소 (예: 310관 B301호)", example = "310관 B301호") // 추가됨 + String detailedLocation, + @Schema(example = "2025-04-10T18:00") @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm") LocalDateTime startDateTime, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetLikedPostResponse.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetLikedPostResponse.java index 6bf1bd71..018e52f0 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetLikedPostResponse.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetLikedPostResponse.java @@ -2,8 +2,11 @@ import java.time.LocalDateTime; +import com.fasterxml.jackson.annotation.JsonInclude; + import io.swagger.v3.oas.annotations.media.Schema; +@JsonInclude(JsonInclude.Include.NON_NULL) public record GetLikedPostResponse( @Schema(description = "게시글 id", example = "1") Long postId, @@ -14,6 +17,9 @@ public record GetLikedPostResponse( @Schema(description = "게시글 장소", example = "투썸 플레이스") String place, + @Schema(description = "상세 장소", example = "가천관 301호") + String detailedLocation, + @Schema(description = "시간(끝나는 시간 or 행사날짜)", example = "2026-01-10T18:00:00") LocalDateTime dateTime, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostForUserResponse.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostForUserResponse.java index 98b39099..4571e8a4 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostForUserResponse.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostForUserResponse.java @@ -22,6 +22,7 @@ public record GetPostForUserResponse( String title, String content, String place, + String detailedLocation, LocalDate startDate, LocalDate endDate, LocalDateTime startDateTime, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostListForCouncilResponse.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostListForCouncilResponse.java index 294333fd..fb18afa2 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostListForCouncilResponse.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostListForCouncilResponse.java @@ -4,9 +4,11 @@ import com.campus.campus.domain.councilpost.domain.entity.PostCategory; import com.campus.campus.domain.councilpost.domain.entity.ThumbnailIcon; +import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.v3.oas.annotations.media.Schema; +@JsonInclude(JsonInclude.Include.NON_NULL) public record GetPostListForCouncilResponse( @Schema(description = "게시글 id", example = "1") Long postId, @@ -20,6 +22,9 @@ public record GetPostListForCouncilResponse( @Schema(description = "장소", example = "310관 1층") String place, + @Schema(description = "상세 장소", example = "가천관 301호") + String detailedLocation, + @Schema(description = "시간(끝나는 시간 or 행사날짜", example = "2026-01-10T18:00:00") LocalDateTime dateTime, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostResponse.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostResponse.java index 76c9a213..e9624a33 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostResponse.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetPostResponse.java @@ -23,6 +23,7 @@ public record GetPostResponse( String title, String content, String placeName, + String detailedLocation, LocalDate startDate, LocalDate endDate, LocalDateTime startDateTime, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetUpcomingEventListForCouncilResponse.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetUpcomingEventListForCouncilResponse.java index cd62e6ec..d418e0cf 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetUpcomingEventListForCouncilResponse.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/GetUpcomingEventListForCouncilResponse.java @@ -20,6 +20,9 @@ public record GetUpcomingEventListForCouncilResponse( @Schema(description = "장소", example = "310관 1층") String place, + @Schema(description = "상세 장소", example = "가천관 301호") + String detailedLocation, + @Schema(description = "시간(끝나는 시간 or 행사날짜", example = "2026-01-10T18:00:00") LocalDateTime dateTime, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/PostListItemResponse.java b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/PostListItemResponse.java index 585bef2d..bc6a4bb6 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/PostListItemResponse.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/dto/response/PostListItemResponse.java @@ -4,12 +4,15 @@ import com.campus.campus.domain.councilpost.domain.entity.PostCategory; import com.campus.campus.domain.councilpost.domain.entity.ThumbnailIcon; +import com.fasterxml.jackson.annotation.JsonInclude; +@JsonInclude(JsonInclude.Include.NON_NULL) public record PostListItemResponse( Long id, PostCategory category, String title, String placeName, + String detailedLocation, LocalDateTime endDateTime, String thumbnailImageUrl, ThumbnailIcon thumbnailIcon, diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/mapper/StudentCouncilPostMapper.java b/src/main/java/com/campus/campus/domain/councilpost/application/mapper/StudentCouncilPostMapper.java index 8b5c7c1b..5e1ca0c5 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/mapper/StudentCouncilPostMapper.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/mapper/StudentCouncilPostMapper.java @@ -34,9 +34,8 @@ public PostListItemResponse toPostListItemResponse(StudentCouncilPost post, bool post.getCategory(), post.getTitle(), post.getPlace().getPlaceName(), - post.isEvent() - ? post.getStartDateTime() - : post.getEndDateTime(), + post.getDetailedLocation(), + post.isEvent() ? post.getStartDateTime() : post.getEndDateTime(), post.getThumbnailImageUrl(), post.getThumbnailIcon(), isLiked @@ -49,6 +48,7 @@ public GetPostListForCouncilResponse toGetPostListForCouncilResponse(StudentCoun post.getCategory(), post.getTitle(), post.getPlace().getPlaceName(), + post.getDetailedLocation(), post.isEvent() ? post.getStartDateTime() : post.getEndDateTime(), post.getThumbnailImageUrl(), post.getThumbnailIcon() @@ -61,6 +61,7 @@ public GetUpcomingEventListForCouncilResponse toGetUpcomingEventListForCouncilRe post.getCategory(), post.getTitle(), post.getPlace().getPlaceName(), + post.getDetailedLocation(), post.getStartDateTime(), post.getThumbnailIcon() ); @@ -86,6 +87,7 @@ public GetPostResponse toGetPostResponse(StudentCouncilPost post, List i .title(post.getTitle()) .content(post.getContent()) .placeName(post.getPlace().getPlaceName()) + .detailedLocation(post.getDetailedLocation()) .thumbnailImageUrl(post.getThumbnailImageUrl()) .thumbnailIcon(post.getThumbnailIcon()) .images(images != null ? images : Collections.emptyList()); @@ -111,6 +113,7 @@ public GetPostForUserResponse toGetPostForUserResponse(StudentCouncilPost post, .title(post.getTitle()) .content(post.getContent()) .place(post.getPlace().getPlaceName()) + .detailedLocation(post.getDetailedLocation()) .thumbnailImageUrl(post.getThumbnailImageUrl()) .thumbnailIcon(post.getThumbnailIcon()) .isLiked(isLiked) @@ -139,6 +142,7 @@ public GetLikedPostResponse toGetLikedPostResponse(StudentCouncilPost post) { post.getId(), post.getTitle(), post.getPlace().getPlaceName(), + post.getDetailedLocation(), post.isEvent() ? post.getStartDateTime() : post.getEndDateTime(), post.getThumbnailImageUrl() ); @@ -152,6 +156,7 @@ public StudentCouncilPost createStudentCouncilPost(StudentCouncil writer, Place .title(dto.title()) .content(dto.content()) .place(place) + .detailedLocation(dto.detailedLocation()) .startDateTime(startDateTime) .endDateTime(endDateTime) .thumbnailImageUrl(dto.thumbnailImageUrl()) diff --git a/src/main/java/com/campus/campus/domain/councilpost/application/service/StudentCouncilPostService.java b/src/main/java/com/campus/campus/domain/councilpost/application/service/StudentCouncilPostService.java index 1efd1536..d91e749b 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/application/service/StudentCouncilPostService.java +++ b/src/main/java/com/campus/campus/domain/councilpost/application/service/StudentCouncilPostService.java @@ -221,6 +221,7 @@ public GetPostResponse update(Long councilId, Long postId, PostRequest dto) { dto.title(), dto.content(), place, + dto.detailedLocation(), normalized.startDateTime(), normalized.endDateTime(), dto.thumbnailImageUrl(), diff --git a/src/main/java/com/campus/campus/domain/councilpost/domain/entity/StudentCouncilPost.java b/src/main/java/com/campus/campus/domain/councilpost/domain/entity/StudentCouncilPost.java index d0de71fd..0ce3fa0d 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/domain/entity/StudentCouncilPost.java +++ b/src/main/java/com/campus/campus/domain/councilpost/domain/entity/StudentCouncilPost.java @@ -50,6 +50,9 @@ public class StudentCouncilPost extends BaseEntity { @JoinColumn(name = "place_id") private Place place; + @Column(name = "detailed_location") + private String detailedLocation; + private LocalDateTime startDateTime; private LocalDateTime endDateTime; @@ -62,6 +65,7 @@ public void update( String title, String content, Place place, + String detailedLocation, LocalDateTime startDateTime, LocalDateTime endDateTime, String thumbnailImageUrl, @@ -71,6 +75,7 @@ public void update( this.title = title; this.content = content; this.place = place; + this.detailedLocation = detailedLocation; this.startDateTime = startDateTime; this.endDateTime = endDateTime; this.category = category; diff --git a/src/main/java/com/campus/campus/domain/councilpost/presentation/StudentCouncilPostController.java b/src/main/java/com/campus/campus/domain/councilpost/presentation/StudentCouncilPostController.java index 3946f0d9..51e95235 100644 --- a/src/main/java/com/campus/campus/domain/councilpost/presentation/StudentCouncilPostController.java +++ b/src/main/java/com/campus/campus/domain/councilpost/presentation/StudentCouncilPostController.java @@ -92,6 +92,7 @@ public class StudentCouncilPostController { "https://maps.googleapis.com/maps/api/place/photo?maxWidth=800&photo_reference=example3" ] }, + "detailedLocation": "대운동장", "startDateTime": "2025-04-10T18:00", "thumbnailIcon": "EVENT", "imageUrls": []