From 372deb252405b01f09a1414aa8ff95e2bacaa912 Mon Sep 17 00:00:00 2001 From: 10Hyuna Date: Sat, 1 Mar 2025 03:59:08 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20image=20base64=20=EC=9D=B8=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=ED=9B=84=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/CheckDiaryResponse.java | 19 ++++++++++++----- .../response/GetDiariesOfMonthResponse.java | 5 +---- .../diary/service/diary/DiaryServiceImpl.java | 21 ++++++++++--------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/bamboo/log/diary/dto/response/CheckDiaryResponse.java b/src/main/java/com/bamboo/log/diary/dto/response/CheckDiaryResponse.java index ad365f7..152e4db 100644 --- a/src/main/java/com/bamboo/log/diary/dto/response/CheckDiaryResponse.java +++ b/src/main/java/com/bamboo/log/diary/dto/response/CheckDiaryResponse.java @@ -1,13 +1,22 @@ package com.bamboo.log.diary.dto.response; +import com.bamboo.log.diary.domain.Diary; import jakarta.validation.constraints.NotEmpty; import lombok.Builder; - import java.time.LocalDateTime; +import java.util.Base64; @Builder -public record CheckDiaryResponse(@NotEmpty(message = "Date shouldn't be empty") LocalDateTime date, - @NotEmpty(message = "Diary Description shouldn't be empty") String diaryDescription, - @NotEmpty(message = "Summary Image shouldn't be empty") byte[] summaryImage +public record CheckDiaryResponse( + @NotEmpty(message = "Date shouldn't be empty") LocalDateTime date, + @NotEmpty(message = "Diary Description shouldn't be empty") String diaryDescription, + String summaryImage // πŸ‘ˆ Base64 λ¬Έμžμ—΄λ‘œ λ³€κ²½ (byte[] λŒ€μ‹  String) ) { -} \ No newline at end of file + public static CheckDiaryResponse from(Diary diary, byte[] imageData) { + return new CheckDiaryResponse( + diary.getCreatedAt(), + diary.getContext(), + imageData != null ? Base64.getEncoder().encodeToString(imageData) : null + ); + } +} diff --git a/src/main/java/com/bamboo/log/diary/dto/response/GetDiariesOfMonthResponse.java b/src/main/java/com/bamboo/log/diary/dto/response/GetDiariesOfMonthResponse.java index 96285a3..6440971 100644 --- a/src/main/java/com/bamboo/log/diary/dto/response/GetDiariesOfMonthResponse.java +++ b/src/main/java/com/bamboo/log/diary/dto/response/GetDiariesOfMonthResponse.java @@ -1,7 +1,6 @@ package com.bamboo.log.diary.dto.response; import lombok.Builder; - import java.time.LocalDateTime; import java.util.List; @@ -11,12 +10,10 @@ public record GetDiariesOfMonthResponse( String date, List diaries ) { - @Builder public record DiaryOfMonth( LocalDateTime createdAt, String context, - byte[] summaryImage + String summaryImage ) {} - } diff --git a/src/main/java/com/bamboo/log/diary/service/diary/DiaryServiceImpl.java b/src/main/java/com/bamboo/log/diary/service/diary/DiaryServiceImpl.java index 462588a..2857652 100644 --- a/src/main/java/com/bamboo/log/diary/service/diary/DiaryServiceImpl.java +++ b/src/main/java/com/bamboo/log/diary/service/diary/DiaryServiceImpl.java @@ -25,6 +25,7 @@ import java.time.LocalDateTime; import java.time.YearMonth; import java.time.format.DateTimeFormatter; +import java.util.Base64; import java.util.List; import java.util.Map; import java.util.Optional; @@ -64,19 +65,21 @@ public ResponseEntity getDiariesByMonth(String date) { UserEntity user = userRepository.findByUsername(userContextUtil.getUsername()); try { - List diaries = diaryRepository.findByUserAAndCreatedAtBetween(user, + List diaries = diaryRepository.findByUserAndCreatedAtBetween(user, parseYearMonth.getStartOfMonth(), parseYearMonth.getEndOfMonth()); List diaryIds = diaries.stream().map(Diary::getId).toList(); - Map summaryImageMap = todaySummaryRepository.findByDiaryIdIn(diaryIds) + Map summaryImageMap = todaySummaryRepository.findByDiaryIdIn(diaryIds) .stream() - .collect(Collectors.toMap(TodaySummary::getDiaryId, TodaySummary::getImageData)); + .collect(Collectors.toMap( + TodaySummary::getDiaryId, + summary -> Base64.getEncoder().encodeToString(summary.getImageData()))); // βœ… Base64 λ³€ν™˜ List diaryOfMonthList = diaries.stream() .map(diary -> new DiaryOfMonth( diary.getCreatedAt(), diary.getContext(), - summaryImageMap.getOrDefault(diary.getId(), null) + summaryImageMap.getOrDefault(diary.getId(), null) // Base64 λ¬Έμžμ—΄ 전달 )) .toList(); @@ -98,7 +101,8 @@ public ResponseEntity getDiaryByDate(LocalDateTime date) { UserEntity user = userRepository.findByUsername(userContextUtil.getUsername()); try { - List diaries = diaryRepository.findByUserAAndCreatedAtBetween(user, date, date); + List diaries = diaryRepository.findByUserAndCreatedAtBetween(user, date, date); + if (diaries.isEmpty()) { throw new RuntimeException("ν•΄λ‹Ή λ‚ μ§œμ— μž‘μ„±λœ 일기가 μ—†μŠ΅λ‹ˆλ‹€."); } @@ -107,11 +111,7 @@ public ResponseEntity getDiaryByDate(LocalDateTime date) { Optional summaryImage = todaySummaryRepository.findByDiaryId(diaryByDate.getId()); return ResponseHandler.create200Response(new ResponseForm(), - CheckDiaryResponse.builder() - .date(diaryByDate.getCreatedAt()) - .diaryDescription(diaryByDate.getContext()) - .summaryImage(summaryImage.map(TodaySummary::getImageData).orElse(null)) - .build()); + CheckDiaryResponse.from(diaryByDate, summaryImage.map(TodaySummary::getImageData).orElse(null))); } catch (RuntimeException e) { return ResponseHandler.create404Error(new ResponseForm(), new IllegalArgumentException("ν•΄λ‹Ή λ‚ μ§œμ— μž‘μ„±λœ 일기가 μ—†μŠ΅λ‹ˆλ‹€.")); @@ -120,6 +120,7 @@ public ResponseEntity getDiaryByDate(LocalDateTime date) { } } + private Diary saveDiary(CreateDiaryRequest createDiaryRequest, LocalDateTime localDateTime) { UserEntity user = userContextUtil.getUserEntity();