From dd9560186ae6b1322398dda77e7923d2b7f7e234 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 15:45:30 +0900 Subject: [PATCH 1/5] =?UTF-8?q?refactor:=20transactional=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/petlog/diary/service/DiaryService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/petlog/diary/service/DiaryService.java b/src/main/java/com/petlog/diary/service/DiaryService.java index f7136ec..e6c16d6 100644 --- a/src/main/java/com/petlog/diary/service/DiaryService.java +++ b/src/main/java/com/petlog/diary/service/DiaryService.java @@ -64,6 +64,7 @@ private PetGroupMember getPetGroupMember(final Member member, final PetGroup pet .orElseThrow(() -> new IllegalArgumentException("그룹에 존재하지 않는 회원입니다.")); } + @Transactional(readOnly = true) public List getAllDiaries(final Long memberId, final Long groupId) { final Member member = getMember(memberId); final PetGroup petGroup = getPetGroup(groupId); From 3d4e5f88be613219cd5eb60fb6557342e4b91c90 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 16:02:18 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=EC=9D=BC=EA=B8=B0=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diary/controller/DiaryController.java | 12 ++++++++-- .../dto/response/GetDiaryResponseDto.java | 17 ++++--------- .../petlog/diary/service/DiaryService.java | 24 +++++++++++++++++++ .../petlog/diary/service/dto/GetDiaryDto.java | 15 ++++++++++++ .../com/petlog/docs/DiaryControllerDocs.java | 2 +- 5 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/petlog/diary/service/dto/GetDiaryDto.java diff --git a/src/main/java/com/petlog/diary/controller/DiaryController.java b/src/main/java/com/petlog/diary/controller/DiaryController.java index b7eab4c..37b52c1 100644 --- a/src/main/java/com/petlog/diary/controller/DiaryController.java +++ b/src/main/java/com/petlog/diary/controller/DiaryController.java @@ -8,6 +8,7 @@ import com.petlog.diary.controller.dto.response.GetDiaryResponseDto; import com.petlog.diary.service.DiaryService; import com.petlog.diary.service.dto.CreateDiaryDto; +import com.petlog.diary.service.dto.GetDiaryDto; import com.petlog.diary.service.dto.GetDiaryInfoDto; import com.petlog.docs.DiaryControllerDocs; import lombok.RequiredArgsConstructor; @@ -21,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.time.LocalDate; import java.util.List; import static com.petlog.diary.controller.DiarySuccessCode.CREATE_DIARY; @@ -71,10 +71,18 @@ public ResponseEntity> getAllDiary( @GetMapping("/{diaryId}") public ResponseEntity> getDiary( + @Authenticated final Long memberId, @PathVariable final Long groupId, @PathVariable final Long diaryId ) { - final GetDiaryResponseDto response = new GetDiaryResponseDto("제목", "내용", List.of("이미지"), LocalDate.now(), "서은"); + final GetDiaryDto dto = diaryService.getDiary(memberId, groupId, diaryId); + final GetDiaryResponseDto response = new GetDiaryResponseDto( + dto.title(), + dto.content(), + dto.images(), + dto.writtenAt(), + dto.writerName() + ); return ResponseEntity.ok( ApiResponse.successWithData(GET_DIARY, response) diff --git a/src/main/java/com/petlog/diary/controller/dto/response/GetDiaryResponseDto.java b/src/main/java/com/petlog/diary/controller/dto/response/GetDiaryResponseDto.java index 994198f..4715a62 100644 --- a/src/main/java/com/petlog/diary/controller/dto/response/GetDiaryResponseDto.java +++ b/src/main/java/com/petlog/diary/controller/dto/response/GetDiaryResponseDto.java @@ -1,6 +1,8 @@ package com.petlog.diary.controller.dto.response; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; import java.util.List; @@ -16,22 +18,11 @@ public record GetDiaryResponseDto( @Schema(description = "0~6장") List images, + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd") + @DateTimeFormat(pattern = "yyyy.MM.dd") LocalDate writtenAt, String writerName ) { - public GetDiaryResponseDto( - final String title, - final String content, - final List images, - final LocalDate writtenAt, - final String writerName - ) { - this.title = title; - this.content = content; - this.images = images; - this.writtenAt = writtenAt; - this.writerName = writerName; - } } diff --git a/src/main/java/com/petlog/diary/service/DiaryService.java b/src/main/java/com/petlog/diary/service/DiaryService.java index e6c16d6..eda8341 100644 --- a/src/main/java/com/petlog/diary/service/DiaryService.java +++ b/src/main/java/com/petlog/diary/service/DiaryService.java @@ -5,6 +5,7 @@ import com.petlog.diary.repository.DiaryImageRepository; import com.petlog.diary.repository.DiaryRepository; import com.petlog.diary.service.dto.CreateDiaryDto; +import com.petlog.diary.service.dto.GetDiaryDto; import com.petlog.diary.service.dto.GetDiaryInfoDto; import com.petlog.member.entity.Member; import com.petlog.member.repository.MemberRepository; @@ -84,4 +85,27 @@ public List getAllDiaries(final Long memberId, final Long group )) .toList(); } + + public GetDiaryDto getDiary(final Long memberId, final Long groupId, final Long diaryId) { + final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroup(groupId); + getPetGroupMember(member, petGroup); + + final Diary diary = getDiaryDetail(diaryId); + + return new GetDiaryDto( + diary.getTitle(), + diary.getContent(), + diary.getImages().stream() + .map(Object::toString) + .toList(), + diary.getWrittenAt(), + diary.getMember().getName() + ); + } + + private Diary getDiaryDetail(final Long diaryId) { + return diaryRepository.findById(diaryId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 일기입니다.")); + } } diff --git a/src/main/java/com/petlog/diary/service/dto/GetDiaryDto.java b/src/main/java/com/petlog/diary/service/dto/GetDiaryDto.java new file mode 100644 index 0000000..f681e86 --- /dev/null +++ b/src/main/java/com/petlog/diary/service/dto/GetDiaryDto.java @@ -0,0 +1,15 @@ +package com.petlog.diary.service.dto; + +import java.time.LocalDate; +import java.util.List; + +public record GetDiaryDto( + + String title, + String content, + List images, + LocalDate writtenAt, + String writerName + +) { +} diff --git a/src/main/java/com/petlog/docs/DiaryControllerDocs.java b/src/main/java/com/petlog/docs/DiaryControllerDocs.java index a1c21f2..70309ca 100644 --- a/src/main/java/com/petlog/docs/DiaryControllerDocs.java +++ b/src/main/java/com/petlog/docs/DiaryControllerDocs.java @@ -25,7 +25,7 @@ public interface DiaryControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "일기 상세 조회에 성공하였습니다.") @Operation(summary = "일기 상세 조회 API") - ResponseEntity> getDiary(@PathVariable final Long groupId, @PathVariable final Long diaryId); + ResponseEntity> getDiary(@Authenticated final Long memberId, @PathVariable final Long groupId, @PathVariable final Long diaryId); @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "일기 상세 내용 수정에 성공하였습니다.") @Operation(summary = "일기 상세 내용 수정 API") From a6058a764ded1b1bda9b6747c5ca2a925ddf2f70 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 16:02:30 +0900 Subject: [PATCH 3/5] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/petlog/diary/service/dto/GetDailyDiaryDto.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java b/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java index 6528593..17cdf7b 100644 --- a/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java +++ b/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java @@ -1,19 +1,15 @@ package com.petlog.diary.service.dto; +import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDate; import java.util.List; public record GetDailyDiaryDto( + @DateTimeFormat(pattern = "yyyy.MM.dd") LocalDate writtenAt, List diaryInfo ) { - public GetDailyDiaryDto( - final LocalDate writtenAt, - final List diaryInfo - ) { - this.writtenAt = writtenAt; - this.diaryInfo = diaryInfo; - } } From 379af40bc421a2fae99dc9087d63c1d2a1675ed9 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 16:11:26 +0900 Subject: [PATCH 4/5] =?UTF-8?q?refactor:=20API=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?=ED=98=95=EC=8B=9D=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=20=ED=98=95=ED=83=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/petlog/diary/service/dto/GetDailyDiaryDto.java | 2 ++ src/main/java/com/petlog/diary/service/dto/GetDiaryInfoDto.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java b/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java index 17cdf7b..0eb9775 100644 --- a/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java +++ b/src/main/java/com/petlog/diary/service/dto/GetDailyDiaryDto.java @@ -1,5 +1,6 @@ package com.petlog.diary.service.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; @@ -7,6 +8,7 @@ public record GetDailyDiaryDto( + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd") @DateTimeFormat(pattern = "yyyy.MM.dd") LocalDate writtenAt, List diaryInfo diff --git a/src/main/java/com/petlog/diary/service/dto/GetDiaryInfoDto.java b/src/main/java/com/petlog/diary/service/dto/GetDiaryInfoDto.java index 0e9501a..e57d721 100644 --- a/src/main/java/com/petlog/diary/service/dto/GetDiaryInfoDto.java +++ b/src/main/java/com/petlog/diary/service/dto/GetDiaryInfoDto.java @@ -1,5 +1,6 @@ package com.petlog.diary.service.dto; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDate; @@ -13,6 +14,7 @@ public record GetDiaryInfoDto( String image, + @JsonIgnore LocalDate writtenAt ) { From daec84c7d27a12704bf226b08eacad4d91b186e3 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 16:13:42 +0900 Subject: [PATCH 5/5] =?UTF-8?q?refactor:=20=EC=98=AC=EB=B0=94=EB=A5=B8=20u?= =?UTF-8?q?rl=EC=9D=84=20=EB=B0=98=ED=99=98=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/petlog/diary/service/DiaryService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/petlog/diary/service/DiaryService.java b/src/main/java/com/petlog/diary/service/DiaryService.java index eda8341..6332ec6 100644 --- a/src/main/java/com/petlog/diary/service/DiaryService.java +++ b/src/main/java/com/petlog/diary/service/DiaryService.java @@ -97,7 +97,7 @@ public GetDiaryDto getDiary(final Long memberId, final Long groupId, final Long diary.getTitle(), diary.getContent(), diary.getImages().stream() - .map(Object::toString) + .map(DiaryImage::getImageUrl) .toList(), diary.getWrittenAt(), diary.getMember().getName()